プログラミング勉強してみたけど、よくわからない…。
途中でつまづいてそのままフェードアウト…。
そう思ったことがある人は、この記事を読んでみてください。

こんにちは!コンじゃぶろーです!
プログラミングは単なる技術や言語の習得以上のものです。それは問題解決能力を鍛え、創造性を解放し、未来を形作る力を身につける過程です。しかし、この過程は時に厳しく、複雑な課題に直面することもあります。では、どのようにしてこの学習過程をより魅力的で、参加しやすいものに変えることができるでしょうか?
この記事では、学習のモチベーションを高め、プログラミングの楽しさを最大限に引き出す「面白いプログラミング例題」を紹介します。これらの例題は、初心者から上級者まで、すべてのレベルの学習者が新しいスキルを身につけ、既存の知識を深めるのに役立ちます。目標を設定し、それを達成するためのステップバイステップの課題を解決することで、プログラミングの世界での成長と自己実現の旅を開始しましょう。
学習の旅は、個々の目標設定から始まります。目標があれば、その達成に向けた課題が見えてきます。課題を一つずつクリアしていくことで、あなたのプログラミング能力は着実に向上します。そして、ゲーム制作などのプロジェクトを通じて、実際のアプリケーションの開発過程を体験することができます。このようにして、プログラミングは単なるコーディング以上のものになり、創造的な表現と問題解決の手段へと変わります。
この記事を通じて、あなたもプログラミング学習の新たな可能性に目を向け、自分自身の能力を高める楽しみを見出すことができるでしょう。一緒に、プログラミングを通じて、無限の可能性を持つこのデジタルな世界を探検しましょう。
本日の記事、重要なポイント
- 目標(アウトプット)を決めてから、プログラミングする
- プログラミング、ゲームで課題を見つける
実践で学ぶ:面白いプログラミング例題

プログラミングの勉強方法は色々あると思います。参考書を買ったり、スクールに通ったり。最近では、ブログや動画で勉強できたりもします。いい時代ですね。
最初にぶつかる難問は、「どの言語で学ぶか?」だと思います。本当に始めて勉強するなら、Nintendo Switchソフト「ナビ付き、はじめてゲームプログラミング」(以降はじプロ)がおすすめです。それ以外であればWebプログラミングと関係が深い「JAVA」がいいと思います。(今、見ているこのブログもそうですが)ブラウザで動くプログラムだからです。
ARもVRも、このブラウザ上で動くようになっていますし、5Gなど、通信回線の発達で、タブレットでも高解像度のゲームが遊べるようになっています。Webプログラミングの将来性はとても高いです。
ただ、言語はなんでもいいと思います。
1つ覚えれば、どの言語でもできる事(アウトプット)は同じだからです。
大切なのは、「目標を決めて、どれだけ課題を突破するかです。」
効果的な学習の始め方:目標設定の重要性


プログラミングの勉強をする上で、いちばん大切なのは、何を作るか?という目標(アウトプット)の部分です。
何を作るかが明確になっていない状態で、プログラミングでできることを学習しても、座学で疲れ果てて、何も入って来ません。とても覚えることが多く、それまでプログラミングをしたことがない人にとっては、異次元すぎて眠たくなります。(僕も、専門学校1年の頃、盛大に落ちこぼれました)
目標(アウトプット)を知れば、プログラミングで何ができるか分かり、勉強すべきことも見えてきます。
見つかりにくい目標の見つけ方


と、言っても、何を作りたいかはなかなか分かりません。
世の中に、なくてはならないプログラミングですが、具体的に何がどう作られているかイメージできないからです。
そこで、僕がオススメするのが、ゲーム作りです。
ゲームであれば、すぐ遊ぶことができるので、完成形を想像しやすくなります。極端な話、画像を表示して、コントローラーで動かすことができれば、ゲームを作ることは可能です。
ゲームソフトの「はじプロ」であれば、画像や音楽の素材は全て揃っているので、1時間もあれば簡単なゲームを作ることができます。
目標が明確にする課題の発見


「空を自由に飛べるゲーム」「大量にご飯を食べるゲーム」「未知の世界を探検するゲーム」目標が決まった状態でプログラミングをすると、「課題」が出現します。
「空を飛ぶ時に、どんな操作方法が気持ちいいかな?」とか「どれくらいの量食べたらお腹いっぱいになるんだろう?」だとか、作る為に問題が立ち上がってきます。
これは、ゴール地点からスタート地点へ逆算的に、内容を決めていくことによって具体的になっていくからです。
課題解決の回数が成長を加速


「課題」が出ると、それを「解決」する為に知恵を絞ります。
この知恵を絞った数が、プログラマーの力になります。プログラミングの勉強をしていると、自然に最先端の技術へと進んでいきます。そうなると、誰に聞いても分からなくなってきます。
そういった状態になった時、自分で課題をクリアする力があれば、たとえ出てくる最新情報が全て英語であっても、誰かが教えてくれなくても解決できるようになります。
目標がなければ、課題も出づらいので、この「課題」をクリアする経験が乏しくなります。
実際、大きな会社に入社すると、社内にあるプログラムの仕組み(先人達が築いたシステム・ライブラリ)を、そのまま流用したり、一部変更するだけで対応できたりします。この状態が普通だと思っていると、会社を辞めた時に、力が発揮できなかったりします。
これからは、フリーランスが増える時代。かなりデメリットですよね。
そして、課題さえ見えていれば、参考書やスクールに通った時の効果も爆あがりするので、まずゲームを作るというのはオススメです。
- ゲームは完成系が想像しやすい
- 目標に向かってプログラミングすると、学びが多い
- 課題を解決した数だけ、強くなる
ゲーム制作で学ぶプログラミング


プログラミングをする上で、ゲーム作りはとても有効です。そして、課題を見つける手段としてもかなり効率が良いという説明をして来ました。
それでは、どういったゲームを作れば、どのような課題が出やすいかを解説したいと思います。
どうせだったら、面白いテーマを選んだ方が、やってて楽しいと想うので、極力楽しくなるようなものを選んでみたいと思います。
初級:文字だけで何ができる?


ゲームは、画像を表示して、コントローラーで動かせるようになったら作れると解説しましたが、その画像の表示が難しかったりします。
なので、最初は、「文字表示」「文字入力」と「上下左右キー」「決定キー」だけで作れるゲームを目指して見ましょう。
それだけでゲーム作れる?と思われる方いるかも知れませんが、可能です。
「制限時間内に、○○する」「判断したリアクションを楽しむ」「1位を予測する」といった形をとっていて、なおかつ、最後に「ゲーム」とついていれば、なんでもゲームっぽくなるからです。
- コマンド入力ゲーム:制限時間内に、上下左右キーを入力する。
- アンケートゲーム:YES(Yキー)・NO(Nキー)のみ使ってアンケートに答えると、面白いリアクションが文字で表示される。
- 算数ゲーム:制限時間内に、足し算や割り算の答えを入力する。
- 数字レース1位予想ゲーム:1〜4を入力すると、画面左端から1〜4の数字が右端まで移動する。選んだ数字が1位になったら「予想的中!」と表示される
- 数字避けゲーム:上から降ってくる数字を、左右キーで避ける
このような感じで、文字だけでゲームは作れます。最後のレースゲームと避けゲームだけ、少し難しい要素を足していますが、作ってみるとその難しさに気づけると思いますので、挑戦してみてください。
あと、スコア(得点)の要素と表示ができれば完璧ですね。
文字で実現できたら、画像は、すぐに対応できると思います。ここまでくれば、文字を自由自在に動かすよりも、画像を簡単に動かす方法が用意されていることに気づけるはずだからです。
後から、いろんな要素を思いついたら、全部入れてしまいましょう。最初に想定していない要素をつけたす訓練も非常に勉強になるからです。あとからいくらでも変更できるのが、ゲーム開発の醍醐味といえます。
中級:ユーザー操作をどう取り入れる?


文字や画像を自由自在に動かせるようになったら、操作方法から考えてみましょう。
「避ける」とか「食べる」とか「走る」とか、動詞はそのままゲームになりますので、操作から考えるとゲームを作ることはできます。
1つの操作方法から、ゲームをイメージすると、シンプルで直感的なゲームになります。直感的なゲームになるからこそ、「演出」に力が入るようになります。
- ジャンプゲーム:決定ボタンをタイミングよく押して、障害物を避ける
- 早押しクイズゲーム:1〜4キーの早押し操作
- 連打100m走ゲーム:左右キーを交互に連打
- 弾幕シューティングゲーム:上下左右キーでひたすら避ける
- 椅子取りゲーム:音楽がなっている間だけ立つ。音楽がなり終わったら座る。
操作から考えると、急にゲームっぽくなりますね。こういったシンプルなゲームは、ゲーム会社にて新入社員のプログラミング教育にも使われている(販売されるケースもある)ので、とても勉強になります。
最後の椅子取りゲームに関しては、何を基準に「立っている」か、「座っているか」判断するかで、その難易度が変わります。上下キーで切り替える場合は比較的に簡単に対応可能ですが、モーションセンサー(センサーカメラで自分を撮影して、自分の状態を判定する方法)を利用すると難易度は上がります。
モーションセンサーに関してヒントをいうと、「簡単に利用できるパッケージ」が存在します。ただ英語サイトなのでちょっと難しいかも?という感じです。しかし、プログラム未経験の新卒エンジニアでも出来たので、プログラム未経験でもいけると思います。
自分の技術に合わせて挑戦してみてください。上下左右キーや、決定ボタンだけでできる形で作る事ができれば、あとで「センサーカメラ」への変更も比較的簡単にできます。
上級:新しい技術をどう活用する?


ここまでくれば、ゲーム作りで出てくる障害のほとんどは解決ができるようになっていると思います。あと一息です。
プログラミングの力を鍛える上で、誰に聞いても分からない状況という経験はしておいた方が良いです。英語サイトを調べながら学ぶ経験をすれば、どんな課題が来ても楽勝でしょう。
最近は、解説サイトも増えてきて、英語の翻訳も違和感が無いのでそこまで大変では無いかも知れませんが、そういう自分で「調べる」という経験は、将来必ず役に立つ事でしょう。
- 表情リアクションゲーム:カメラで表情を読み取る機能を使う。素早く指定された表情をするゲーム
- AR360度シューティングゲーム:スマホのAR関連の技術(ARkit等)を使う。360度から飛んでくる敵を撃ち落とす。
- NFT発掘ゲーム:NFTの技術を使う。フィールド上を採掘して、アイテムを掘り起こす。掘り起こしたアイテムを販売できるようにする。
カメラやARを使った技術が新技術ですか?と言われるとちょっと困る部分はありますが、今までやった事ない技術に挑戦するというのはとても大事です。
初級・中級・上級になるにつれて、出てくる「課題」の難易度は鰻登りですが、初級をクリアできれば、いつの間にか上級もクリアできるようになっていると思います。
課題を解決する力というのは、初級も上級も変わりがないからです。
- 初級:文字だけで考えるゲーム
- 中級:操作から考えるゲーム
- 上級:新しい技術で考えるゲーム
まとめ:目標設定が課題を明らかにする


目標を設定する事で、様々な課題が出現しますが、1度は目標を決めずにやってみてもらいたいという気持ちもあったりします。
それは、僕も、プログラミングを理解するまで、そうしていたからです。
座学でひたすら泣きながら勉強しました。「どうしてこれが存在するのか?」という意味を知らなくても、ある程度は理解できるようになってくるのがプログラミングです。
今思えば、目標なく学ぶのはとても効率が悪い事でしたが、あの時の経験から学べることも少なくはありませんでした。(「目標なく学ぶと効率が悪い」と学べただけでも良かったです。)
色んな角度から、学んでほしいという思いと、心から楽しめる環境づくりをしてほしいなと思います。
以上、さしあたり、今思う事でした。
ここまで読んでいただけてありがとうございます。
皆様の良い人生の一助になれば。
コメント