はじめに。
皆さんはプログラミング初心者に対して助言をする場面において、初心者向けの基礎教材を終えた後、次の段階で何をするべきと伝えますか?基本的には何か簡単なアプリを作ることを勧めると思います。しかし、この最初に作るアプリの内容次第では、技術的ハードルの高さや時間がかかり、諦めてしまうことがあるかもしれません。例えばゲーム制作で言えば、RPGゲームを作ろうとするとゲームシステムとストーリーが必要であり、時間が非常にかかります。
特に最初のステップでは、継続して続けられるものにすることが重要であり、それがその後の意欲にも影響します。私はその最初に作る作品としてボードゲーム、特にオセロをお勧めします。
この記事では、そう考える理由を書いて行きます。
あくまで一個人の考えです。参考程度に読んでいただけますと幸いです
想定している対象
- 独学で基礎はやったが、その後何すればいいか迷ってる初心者
- 学校の授業で習った後により力を付けたい学生
- 初心者を指導する立場にある人
ボードゲームで楽しみながら制作する
何事も重視すべき項目は「モチベーションを保つ」ことであり、その観点においてボードゲームは「楽しみながら」制作ができるためモチベーションの維持がしやすいと考えています。
基本的に何らかのツールやゲームを数時間や1,2日で作ることは難しいです。類似したものを作った経験がなければ、経験からアルゴリズムやシステム構成を考えることができないため、制作時間が長期化しやすいです。これに加えてデバッグにも時間がかかり、この間モチベーションを保ち続ける必要があります。
そして、作ったものが自分や他人に使われなければ、やる気をなくすでしょう。
例えばツールであれば特別なアイデアがない限り、途中で「何でこれを作っているのか?」と感じるかもしれません。それは大体の場面において、既に世の中には優れたものがあり、大体の開発が「車輪の再開発」となり、自分でも使わない代物が出来上がる可能性があります。
その点、ボードゲームは以下のメリットがあります。
- 開発期間が短い
- 実用に耐えられるレベルにするのがツールと比べれば容易
- デバッグをゲームしながらできるため楽しい
- 友人などの共有した時に遊んで貰いやすい(体感)
このようなメリットがボードゲームにはあると考える中で、私は特にオセロを勧めます。
オセロ制作のメリット
ルールが簡単で理解しやすい
オセロのルールは非常にシンプルで、多くの人がプレイしているゲームであり、ゲームのルールを説明せずともプログラミングに集中して行えます。
仮に分からなかったとしても、オセロを表すキャッチャーフレーズに「A minute to learn, a lifetime to master(覚えるのは1分、極めるのは一生)」1があるように、誰でも簡単にルールを覚えることができます。
子どもでも理解できるほどゲームルールはシンプルであり、将棋や囲碁のように役がない上に禁じ手はありません。この特徴はプログラムとして書き出すのには最適で、その分だけ状態の数が少ないため条件分岐を減らすことができます。
そして、このような理由からか、インターネットで「オセロのプログラミング」に関する記事を調べてみると多くの記事が見つかります。仮にプログラミングにて詰まったとしても参考にできる記事が多くあるため、完成形に持っていくということはほぼ確実に出来るはずです。
必要なスキルレベルが低め
オセロはゲームルール自体が単純であり、禁じ手がなく、局面数も多くなりません。そのため、コアとして必要な処理は置いたときにひっくり返す処理が一度できれば他に必要な処理はだいたい出来るはずです。そのため、forと標準入出力、配列といった基本的なプログラミング知識さえあれば、高いアルゴリズムの実装能力であったり、その他のサーバーやデータベースなどの知識が無くても作ることができます。
また、基本的な処理が完成した後、AIの実装やオンライン対戦などを追加しようとした際には、インターネットの既にあるゲームから参考にしつつ、自身の興味とスキルに応じて機能の追加できる点も更なるステップが見込めてよい点であると考えています。
他のボードゲームとの比較した時のメリット
まずオセロは、二人零和有限確定完全情報ゲームに分類されるゲームで、これに分類されるゲームとしてはチェス・将棋・チェッカー・囲碁・五目並べなどがあります。わざわざオセロじゃなくても、これらのゲームでもよいと考える人がいるかもしれませんが、実装がめんどくさいと思うので最初に作るものとしては選ばない方がよいです。
チェスや将棋なら駒に種類があり、複雑な動きを再現するために実装の手間が増えます。また将棋は、取った相手の駒が自分の駒として使えるようにする処理も必要です。囲碁だと勝敗を決めるのは「石で囲んだ陣地の数」であるため、その分アルゴリズムは複雑になります。
また、オセロは10^28、チェスは10^44、将棋は10^712、囲碁は10^170局面3であり、AIを作ろうとした場合に実現可能局面数が少ないオセロの方が探索しやすいかと思います。
おわり
今回は、オセロがプログラミング初心者にとって最適な題材である理由についてお話ししました。オセロはルールが簡単で、初心者でも自力で取り組みやすく、楽しみながら制作できるため、モチベーションを維持しやすい点が大きなメリットです。
まだ作ったことがない方も、ぜひオセロの制作に挑戦してみてください。