AI のおかげで、macOS の Unity で ChatGPT を使用すると、開発者以外の人がアプリを作成することがいくらか簡単になりましたが、一夜にしてジョン・カーマックになれるわけではありません。
ChatGPTのようなAIチャットボットの成長は、知識中心の産業に大きな変化をもたらしました。何年もかけて難しいタスクを実行する方法を知る必要はなく、アプリに頼むだけで、ある程度の仕事をこなせるようになりました。
ライターとして生計を立てている者として、AIが特定のテーマに関する文章作成においてどれほど優れた能力を発揮するかはよく知っていますが、私はAIのファンではありません。AIは完璧ではなく、Googleの要約はイライラさせられるほどほとんど間違っています。しかも、検索ユーザーは、ほとんど出典が明記されていない要約をそのまま目にしてしまうのです。
そうは言っても、Apple の Writing Tools などは、文章を書かない人にとって簡単な文章作成作業を実行するのに非常に優れています。
AIサービスは多くのことを可能にし、大規模なタスクのほぼ完了を支援してくれることは明らかです。しかし同時に、AIサービスを学習ツールとして活用することで、より大きなメリットが得られ、同じタスクを自分で実行できるようになるかもしれません。
上司の Mike Wuerthele からの外部からの働きかけのおかげで、私は ChatGPT での自身の経験を活かして、何十年もやりたいと思っていたことに取り組むことになりました。
ゲームを作る。
ゲームを変える教育
ChatGPTをゲーム制作に使い始めたのは、パートナーの影響です。彼女はゲーム開発の修士課程に在籍しており、彼女のグループにゲーム制作の課題が与えられました。
この小さな家庭の中で、技術に詳しい私の方が、そして過去の経験から、いつか彼女が開発について私に質問してくるだろうと予想していました。必然的に、私は答えも、質問をどう答えればいいのかも分からず、自分が役に立たない人間だと感じることになります。
彼女はコースの一環としてグループで Unity を使って小さなゲームを作る予定だったので、私は少なくとも彼女を助けるために Unity の使い方を学ぶべきだと考えました。
開発経験は全くないのですが、完全にゼロからスタートというわけではありません。2004年にグラモーガン大学で「コンピューティング」のHND(高等専門技術学位)を取得しており、PHP、C++、そしてごく基本的なプログラミング概念など、ある程度の実務経験があります。
ChatGPT は私のリクエストに基づいて、何をコード化する必要があるかを理解することができました。
一般的な方法としては、Unity自体の使い方やC#の書き方を学ぶために、YouTubeやオンラインガイドを数多く見ることが挙げられます。しかし、Unityで利用できる様々な機能についてはマニュアルページが多数存在するため、この方法では習得に長い時間がかかります。
前進するための最良の方法の一つは、自分で小さなゲームを作ることだと考えました。規模が小さいアプリで、開発を進めながら基礎を学び、徐々に完成度の高い製品へと仕上げていくのです。
そのプロジェクトはワードゲームです。初心者にとってずっと魅力的な、もっと難しい3Dベースのゲームにいきなり飛びつくのではなく、2Dのゲームです。
Google fu を使うのは昔ながらのやり方ですが、実際のチューターの力を借りてみるのもいいかもしれないと思いました。あるいは、今回の場合は ChatGPT に助けを求めるのもいいでしょう。
良い雰囲気のコーディング
ChatGPTはコードを記述する機能に加え、ゲームエンジンを理解する能力も備えています。インターネット上のUnityのマニュアルやガイドのほぼすべてのページをスキャンしているため、非常に高度な知識を備えた開発者アシスタントとなるでしょう。
ChatGPTに小さなタスクのやり方を尋ね、その背後にある思考プロセスを説明するよう依頼することで、学習を手伝ってもらうというアイデアでした。ChatGPTは概念や、なぜ特定の方法で作業を行うのかを説明し、プロジェクトを徐々に構築していきます。
私は ChatGPT に単語ゲームの基本的なアイデアの概要を説明し、基本的なアイデアが何であるかを理解させ、ゲームの基本を整えるための基本的な行動計画を立てるように依頼しました。
その代わりに、各セクションの一般的な手順を含む、段階的な計画が提示されました。驚いたことに、自分で書いたり、スクリプトファイルに直接コピー&ペーストしたりできるコードスニペットも含まれていました。
実際、コードに直接触れたくない場合は、ChatGPTにファイルを直接編集させることも可能です。3月のアップデートで、ChatGPTはXcodeで開いているファイルを読み取り、コードに直接変更を加えることができるようになりました。
必要に応じて、ChatGPT はコードを Xcode に直接入力できます。
これは、勇敢なプログラマーにとっても、怠け者のプログラマーにとっても、間違いなく大きな労力を節約できます。ChatGPTに何をさせたいかを簡潔に説明すれば、Xcodeが自動的に実行してくれます。
これはバイブコーディングと呼ばれるもので、開発者がアプリ自体の「雰囲気」に重点を置き、実際の実装を AI に任せるという最近登場した手法です。
Vibeコーディングは、経験の浅いユーザーでも自分でアプリを作成できる機能を提供します。経験豊富なコーディング者だけでなく、初心者でも、シンプルなアプリを作成するためにVibeコーディングが利用されることは容易に想像できます。
しかし、この手法には危険性が伴います。AIにすべてのコードを任せれば、開発者は確かに作業を完了できますが、新人開発者は必ずしもその経験からコーディングについて多くを学べるとは限りません。
これは学習の練習として考えたものなので、バイブコーディングを完全には使わないようにしました。試しに何度かコードを実装してみましたが、その魅力は理解できましたが、学習の観点からはあまり良いものではありません。
壊れたものを直す - あるいは、「終了間近または終了前にエラーが発生する」という状況がなくなった理由
ChatGPTにアプリを全部書いてもらうつもりはなかったのですが、ゼロからゲームを少しずつ作っていく過程をガイドしてもらいました。文字の生成、タイマー、勝敗条件、さらには単語リストとの照合まで、ChatGPTは手伝ってくれました。
段階的に作業を進めることで、各段階でゲームをテストすることができました。この方法を選んで良かったと思っています。ChatGPTが別の形で輝くことができたからです。
問題が発生した際は、ChatGPTに問題を伝え、アプリに説明をしてもらうことができました。問題はChatGPTのコードに不具合があった場合もあれば、人為的なミスによる場合もありました。
ChatGPTは開発中の過去のステップを記憶し、障害の考えられる原因とチェックすべき点を診断します。さらに、Unity内でエラーが発生した場合は、ログをコピーしてChatGPTに貼り付けることで、何が起こったのかを判断するためのデータポイントが増えます。
ChatGPT はトラブルシューティングにも役立ちました。
コードの問題の場合、ChatGPT はコピー可能なスクリプトの更新を提供し、それを貼り付けて問題を修正できます。
Xcodeとの連携も便利で、自分で書いたコードをチェックしてもらえました。エラーチェックだけでなく、改善方法も説明付きで教えてくれました。
プロジェクト全体を通して確認していたのは、おそらく良い判断だったと思います。全てうまくいくことを期待して作業をすべて終えたのに、最後に見つけるのが非常に難しいエラーが見つかるなんて、誰も望まないことです。
針を探すときは、干し草の山を小さくした方が良いでしょう。ChatGPTの助けを借りても。
ChatGPT をバイブコーディングに使用することの比較的容易さを無視したとしても、コードの問題や改善点のチェックを ChatGPT に依頼することは、状況を一変させる可能性があります。
何千行ものコードをチェックして、全てを失敗させる原因となっているたった一つのミスを見つけるなんて、想像もできません。その仕事を任せられるインターンはいないかもしれませんが、ChatGPTは私にとってデジタルなインターンシップのような役割を果たしてくれます。
良いスタート
数晩かけておそらく6時間ほどの努力を重ねた結果、技術的にゲームと呼べるものがようやく完成しました。ゲームオーバーの条件があり、入力された単語が許容される単語リストに含まれているかどうかをチェックし、文字がランダムにラックに追加されるという仕組みです。
ChatGPTのおかげで完成したゲームは、いわゆる「完全なゲーム体験」とは程遠いものでした。画面はシンプルで、派手さはなく、サウンドや音楽も欠けており、ゲームに期待される多くの要素が欠けていました。
技術的には、これは機能的なゲームです。目を細めて、ちょうどいい具合に頭を傾ければ。
それは、ゲームの核となる部分であり、完全に具体化されたバージョンではありません。
Xcode と ChatGPT を使用して作成された、(非常に)シンプルな Unity ゲームの始まり。
プロジェクトの現段階では、ゲームを作ったとは言えますが、リリースしたとは言えません。自信を持って世界にリリースできる段階に到達するには、まだまだ多くの努力が必要です。
楽しいプロジェクトでした。最後までやり遂げることで、可能性を感じています。そうすれば、UnityとC#の学習が充実し、パートナーからの避けられない質問にもより的確に対応できるようになるでしょう。
ゲームプレイを洗練させ、お馴染みの便利な機能を追加することで、今後も開発を続けていきます。基本的なメニューも追加しておくと良いでしょう。このプロセスについては、おそらくiPhone 17の発売後に改めてお話しする予定です。
しかし、そうするには、数週間、あるいは数ヶ月かけて、本格的なゲーム体験を作り上げていく必要があるでしょう。完成度が上がれば、iPhone対応ゲームとしてリリースできる可能性もあるでしょう。
すぐにApp Storeで億万長者になるわけでも、1000ドルの富豪になるわけでもありません。でも、ほとんどのプログラマーはそうでしょう。
ゲームを作りたかった15歳の私にとって、とても幸せなことです。