見出し画像

ChatGPTのCode Interpreterでテトリスをゼロから作ってみて分かったこと

はじめに

巷で話題のChatGPTのCode Interpreter
かなり色々なことができるようだが、ツイッターでゲームを作ったよーみたいなのをちらほらみかけたので、検証がてら、じゃあ試しに何か作ってみるかということで、ちょっと触ってみた。
お題としては、思いつきで、テトリス。なんとなくパズルゲームとか作りやすそうだったので。


そもそもChatGPTのCode Interpreterってなに?

と、その前に、Code Interpreter(コード・インタープリター)って何??という人に簡単に説明しておくと、普通のChatGPTが基本テキストのやり取りなのに対して、Code Interpreterは、それプラス、Pythonというプログラム言語を裏で実行することができる。
(2023年7月15日現在、Plus(課金)ユーザのみ利用可能)

これの何がすごいのかというと、ChatGPT側で、一時的にディスクスペースやコンピューターリソースを提供し、さらにPythonのライブラリも使えるということなのだが、そのライブラリには、ファイルの読み込み、画像処理、グラフの描画、ファイルの出力などを可能にするものもある。

つまり、より幅広い応用的なタスクをこなすことができるようになったということだ。言ってみれば、ChatGPTに強力な武器を持たせたようなものである。

これにより、以下のようなことが可能になってくる。

  • 入力として、ファイルをアップロードできる

  • アップロードされたファイルを解析し、プロンプトで命令された出力を解析内容を基に生成することができる

  • 出力として、ファイルやグラフを生成することができる

例えば、今まではCSV(テーブル形式)のデータがあっても、それをベタッとプロンプトに命令と一緒にテキストとして貼り付けていたのが、今回、CSVファイルをそのままアップロードできるようになった。
アップロードできるファイル形式は多種多様だが、音声ファイルや画像ファイル、映像までも対応している模様で、こちらのツイートに、紹介されている。

上記ツイートで、OCRの例が紹介されていたので、自分でも検証してみたけど、日本語はまだ未対応のようだ。
(が、中身が日本語で書かれていることは理解しているらしい。。)

Code Interpreterを使ってゲーム開発

ツイッターでちらほら見かけたのが、ゲーム作ってみたぜ!系。
たとえばこんなやつ。

他にもいくつかあったけど、面白そうだったので、自分もなにか作ってみようかと、パッと思いついたのが、冒頭に述べたテトリス。

テトリスのコードをCode Interpreterに書かせてみた結果

あまり何も考えずに、ぱっとやってみたのだが、思ってたより苦労したというのが正直なところ。
最初はテトリスってゲーム知ってるか確認して、知ってたので、あまり、詳細に仕様を伝えず、目的の動作環境だけ伝えて開始したところ、最初は、正方形のブロックがただ落ちてくるだけのシンプルなコードが生成された。

で、そこから、ブロックを動かせるようにしたり、ブロックが埋まったら消えるようにしたりと、仕様を少しずつ追加していき、生成されたコードを貼り付けてテストプレイしては、GPTにフィードバックするというプロセスをひたすら繰り返す作業。

途中、直したバグが再発したり、思った通りに動いてくれなかったりと、まぁ、実際の開発でもよくあるようなプロセスを経て、ようやく、まともに遊べるようになるまでに要した時間は、おそらく3時間程度(すきま時間に、ちょっとずつやってたので、あまり覚えてないけど)。

とりあえず、できたプログラムはこちらで遊べるので、暇つぶしにどうぞ。
(一応、モバイルでも動作可能。デスクトップの方がやりやすいけど)

ちなみに、現在の最高スコアはこちら。(挑戦者求む)


実際にテトリスを開発して苦労したこと

上で紹介したツイートはどれも、10分以内にできたーって言ってるから(多少盛ってそうだが)、それに比べると、結構時間かかったかなーというところだけど、意外にテトリスの仕様が複雑だったのと、変なところにこだわって時間がかかってしまったのと、あとは、テストプレイで、結構時間を食ってしまったかもしれない(というか、しばらく普通にゲームしてたw)。

というか、まず、GPTにテトリスの仕様をかなり詳細に書かせて、それをベースに実装を開始すれば、もっと効率的に進められたはず。

あとは、バグの再発が多かったのと、コード管理が若干面倒だったかも。
今回、単に、ChatGPTと、コードの実行環境(今回はOpenProcessingを利用)の往復だったのだが、ある程度コードが複雑化してきた後では、間にエディタとGIT(変更管理ツール)挟めば、どこがどう変わったかが管理できて、こっちの方が楽だったかも?

それと、ある程度動いてきたら、単体テストを書かせても良かったかなぁと。今回Pythonでなくて、JavaScriptだったので、テスト実行まではやってくれないけども。

・・・と、これを書いてて思ったのが、Pythonじゃないなら、別にCode Interpreter使わなくても良くね?ということ。

そもそも、Pythonでないなら、GPT-4で良かった説

前述したとおり、Code Interpreterの一番の特徴として、Pythonコードの実行環境を持っていることがある。しかし、今回、参考にしたツイートが、OpenProcessingという実行環境を使っていたので、自動的にJavaScriptというプログラミング言語が対象になった。その場合、Code Interpreterの特徴を活かせないので、別にGPT-4でよくね?という話になる。

これがPythonなら、たとえば、上に書いた通り、単体テストのコードも書かせて、それもInterpreter側で実行させて動作検証してから、アウトプットしてね、みたいなこともできたかもしれない。

実際、GPT-4に同じようなプロンプトを入力してみたところ、それっぽいコードを書いてきた。さすがに、ここからまた同じような作業をしたくないので、これ以上は検証しないが、まぁ、できなくはなさそうである。

というか、今思い出したが、途中で別のチャット開いて、テトリスの仕様をGPT-3.5を使ってまとめさせていたのだが、寝ぼけてたのか、そのまま、そこでコードを書かせてしまっていて、しばらく気づかずに、3.5でコードを書いていたので(あほ)、多分、GPT-4で最初から書かせてもいけるはず。。

Code Interpreterが真価を発揮するのは・・

Code Interpreterが強力なところは、多種多様なファイル形式を入力と出力でサポートしているところ。これで本当にいろんなことができる。が、今のWebインタフェースでは、結局人間が色々やってあげる必要がある。

これが本当に真価を発揮するのは、この機能がAPI経由で使えるようになってからだと思う。もし、これが実現すれば、本当に色んなサービスを作れるようになるはず。実際、このInterpreterが出てきた時に、これAPIで使えれば、あれできるなぁとか、色々と考えていた。

それこそ、これを使えば、我らがGenesisに、あんなことやこんなことまでお願いできるようになるはずだ。

まだ、Plusユーザのみ利用可能なレベルなので、API開放はもう少し先になると思うが、今後に期待したい。(利用料めっちゃ高そうだけど)

まとめ

というわけで、今回は、Code Interpreterについて簡単な紹介と、実際に使ってみた所感を書いてみた。結果的に、あまり、Code Interpreterの良さを引き出せなかったので、時間があれば、また色々と試してみようと思う。

本当は、他にも、データ食わせて、ビジュアライズしてすげーとか、画像食わせて、解析させてすげーとかやっても良かったけど、とりあえず今回は、コード実装の部分だけ。もし、ニーズがあれば、他のところも色々触って紹介できればと思っているので、フィードバックなどあれば是非!

おまけ

せっかくなので、この記事の内容を、Code Interpreterに食わせて、ブログのタイトルと、ヘッダー画像のMidjourney用のプロンプトを考えてもらった。PDFだとなぜかうまく読んでくれなかったけど、テキストファイルとして食わせたら、ちゃんと読んでくれたみたい。タイトルはうーんって感じだったので、結局自分で考えたけど、画像プロンプトはそのままMidjourneyに突っ込んで、適当に選んだ。

参考までに、やり取りはこんな感じ。
https://chat.openai.com/share/4e99ab11-4969-4ac4-b658-6150a13e8154

よろしければサポートお願いします!すごく励みになります!