1. PHPオンライン
  2. 仕事
  3. 怠け者の大学生が始めた「100日チャレンジ」 ChatGPTで毎日新作アプリを作る試み

仕事

怠け者の大学生が始めた「100日チャレンジ」 ChatGPTで毎日新作アプリを作る試み

大塚あみ(ソフトウェアエンジニア)

2025年02月27日 公開

怠け者の大学4年生がChatGPTに出会い、ノリでプログラミングに取り組んだら、教授に褒められ、海外論文が認められ、ソフトウェアエンジニアとして就職できた――。現在はSEとして働く大塚あみさんが、大学時代に始めた「#100日チャレンジ」について、書籍『#100日チャレンジ』より紹介します。

※本稿は、大塚あみ著『#100日チャレンジ 毎日連続100本アプリを作ったら人生が変わった』(日経BP)を一部抜粋・編集したものです。

 

1つの投稿

10月27日(金)夕方、私はベッドに横たわり、ぼんやりとスマートフォンをいじりながら、X(旧Tツイッターwitter)のタイムラインをスクロールしていた。

ひとつの投稿が目に留まった。

#いいねの数だけ勉強する

それを見た瞬間、私の中で何かがカチッと音を立てて動き出した。そのポスト(ツイート)の投稿者は、「いいね」やフォロー、リポストの数に応じて勉強時間を設定し、それを公開している。フォロワーが1人増えれば、勉強する時間が1日増え、リポスト1回につき6時間追加される。みんながノリでリポストやフォローをしてくれるので、結果として数百時間もの勉強を約束させられる。

どこかマゾヒスティックな印象もあるが、楽しそうでもある。私には、自ら他人に勉強を強制される状況を作るという発想自体が斬新だった。

「これ、プログラミングでやったらどうなるのだろう......?」

私は今、プログラミングを独学で勉強し始めているものの、どうしてもモチベーションが続かないことがある。ソフトウェア開発の世界では、毎日少しずつでも成長し続けることが大事だと言われているけれど、気づくと数日、時には数週間も何もしないまま過ぎ去ってしまうことがある。むしろ勉強しない日の方が多く、だいたいはベッドに横たわってゲームをしたり動画を見たりして1日が終わる。

「どうせ1人では続かないなら、みんなに見てもらえばいいんじゃないかな?」

プログラミング学習の進捗を投稿し、それをフォロワーに見てもらうことで、強制的に続けられるようにしたら? 周囲から注目を浴びることで、モチベーションも上がるかもしれない。あるいは、技術力を証明するチャンスにもなるかもしれない。

あるアイデアが浮かぶ。

「100日間、毎日『何か』を作り続けるってどうだろう?」

単なる勉強じゃない。実際にコードを書いて、アプリを作る。それをXで公開し、進捗を報告する。結構面白そう。1週間とかだとよくある罰ゲームみたいで新鮮味がないけれど、100日だったら、やる人はほとんどいないだろう。いつかフリーランスとして独立したときに、「100日チャレンジをやった人です」と言えれば、私の実力や継続力を証明できるかもしれない。

「暇だし、やってみようか......」

私は既に1000時間ほどChatGPTを使っている。ChatGPTの使用時間で私に勝る人はいない。ChatGPTをうまく使えばアプリを簡単に作れるだろう。サクッとやってサクッと実績を残そう。すぐさま私はXに投稿した。

-----------------------------------------
私のプログラミング学習に付き合って♡
-----------------------------------------

私の「100日チャレンジ」が始まった。

 

ホッケーゲームを作ってみる

まずはChatGPTに頼んで、ホッケーゲームの基礎を作ってもらおう。

-----------------------------------------
Pygameでホッケーゲームを作って。
-----------------------------------------

そう入力すると、いつものようにずらずらとPythonのコードが生成される。衝突判定のことは何も言っていないのに、衝突判定が既に実装されていた。ChatGPTは出力するごとに違う文章やプログラムを出力するので、こういうことはよくある。今回は当たりを引いたのだろう。

「土曜日に3時間もかけたのは何だったんだろう……」

そう思いながら、コードをエディタに貼り付け、試しに実行してみる。すると、画面上に簡単なホッケーのコートが表示され、パックが滑り出した。画面に表示されたのは、簡素なホッケーのパドルとパック。

キーボードでパドルを操作し、パックを打ち合う基本的な動作は既にできている。しかし、コートの端が画面の端になっており、ゴールもなかったので、これはホッケーではない。リアルなホッケーコートにしなければ。もう一度指示する。

-----------------------------------------
ホッケーコートの外枠を作って。
-----------------------------------------

しかし、返ってきたコードは期待していたものとは程遠かった。ゴールの位置が左上と右下に配置されたり、枠が極端に太すぎたりと、どうにも違和感が残る。ChatGPTは論理的な計算やアルゴリズムには強いが、画面のデザインやオブジェクトの微妙な配置は苦手のようだ。

結局、私は自分でゴールや枠の位置を一つひとつ修正することにした。地味で時間がかかる作業だが、納得できる形にするためには避けて通れない。作業を続けていく中で、ChatGPTの長所と短所が少しずつ見えてきた。

ChatGPTはプログラムの骨組みを作るのには非常に便利だが、デザインの微調整や人間が感じる美しさのような主観的な要素は、やはり自分で作らなければならない。数学的な美しさや対称性はChatGPTで表現できるものの、ゲームのビジュアルや操作感といった直感的な部分は人間の感覚が不可欠なのだ。

ホッケーコートのデザインも落ち着き、気づけば時間はお昼を過ぎ、午後の授業の時間が近づいていた。単位取得に出席点が必要な授業には出なければならない。その授業に出席したものの、私は席に着くなりノートパソコンを開き、ホッケーゲームのテストに没頭する。

ゲームの大部分はうまく機能していたが、プレイ中に気になるバグがいくつかある。そのうちの1つは、パックが壁の一部をすり抜けるという問題だ。何度かプレイしていると、パックが特定の角度で壁にぶつかったとき、そのまま壁をすり抜けてしまうことがあるようだ。

いろいろと試してみる。すると、衝突判定の設定ミスと斜め衝突の処理漏れに気がついた。設定ミスは、さっき作ったデザインのコートに衝突判定用のコードがきちんと書かれていなかっただけだった。斜め衝突の処理漏れは、衝突判定がうまく機能しない場合があったためだった。パックと壁の衝突角度が鋭いと、衝突判定がうまくいかず、パックが壁をすり抜けてしまっていたのだ。

私は斜め衝突の反射計算を、数学的に入射角・反射角を計算できる法線ベクトルに基づいた方法に変更し、プログラムを作り直した。修正が完了し、再度テストプレイを行うと、今度はすべての角度でパックが正しく跳ね返り、すり抜けることはなくなった。

今回は、先週末に作ったインベーダーゲームとは異なり、しっかりと自分の手で問題を解決し、納得のいく形に仕上げることができた。ようやくゲームとしての体裁と機能を整えることができたのがうれしい。

「やっとできた。これで投稿できる!」

伸びをしながら周りを見渡すと、教室には誰もいなかった。出席点をもらうために授業に出ていたんだっけ。午後6時を回り、外はかなり暗くなっていた。ちょうど投稿の時間だ。私はホッケーゲームのスクリーンショットを撮り、簡単な説明文を添えてXに投稿した。今回は、前回のインベーダーゲームのようなハリボテではない。実際にプレイ可能な、ちゃんとしたホッケーゲームが完成したという自信があった。

https://x.com/Luna_SE_Jp/status/1721453114824225272

投稿を終えたのち、少しだけホッとした気持ちになった。やっと企画の目標通りの、プレイ可能なゲームを作ることができた。大学をあとにし、夜風を受けながら帰路につく。空はすっかり暗くなり、風が一段と冷たく感じる。

 

関連記事

アクセスランキングRanking