忍者ブログ

denchi-pc

ChatGPTでプログラミングのフラット化がはじまっている

 MITテクノロジーレビューによると、囲碁AIの「アルファ碁」で有名な、ディープマインドが新しいアルゴリズムを発見したそうだ。アルゴリズムというのは、NHKの『ピタゴラスイッチ』でやってる「アルゴリズム体操」ではないが、コンピューターを内部的に動かす手順のことだ。
 コンピューターで、ある問題を解きたいときにプログラムをどう書くか? 言葉で何かを表現するときにさまざまな言い方があるように、アルゴリズムもさまざまだ。アルゴリズムでは、とくに正確で速いことに意味がある。同社は、2022年にも「行列演算」を高速化するアルゴリズムを50年ぶりに記録更新しているが、今回は、プログラマーなら誰でも知っている「ソート」(並べ換え)のアルゴリズムだそうだ。
 記事には、「それまで最善とされていた手法よりも最大70%速くリスト内のアイテムをソートする手法を発見した」とあって、「暗号化に使用される重要なアルゴリズムの速度を30%も向上させる手法も発見した」ともある。ソートや暗号という重要なのに時間のかかるアルゴリズムが、そんなに高速化されるとは計り知れない価値がある。ユーザーの待ち時間が短くなるだけでなく地球環境にもよいはずだ。
 新しいアルゴリズムを発見するためにとられた手法は、アセンブラ命令を配置することをゲームに見立て、それが正確かつ高速ならAIがゲームに勝つというものだそうだ。これは、いわゆる「ゲーミフィケーション」(バズワードとしてのではなく、ウィルスの酵素の構造をオンラインゲームをプレイしてもらうことで解析したといった事例)の世界ともいえる。
 今回のディープマインドのAI「アルファデブ」は、3項目のソートに必要な命令数を18から17にした。4項目については従来の28を減らせなかったが、5項目については、これまでの46命令を42命令にまで削減した。これをC++に実装してインテルの第6世代CPU「Skylake」で走らせたところ、実に70%高速化した。
 AIによるプログラムといえば、2022年11月にChatGPTがリリースされたとき、私は、「超話題の人工知能ChatGPTに“小説”や“詩”を書いてもらい、“プログラム”は実行してみた」という記事を書いた。
 半年ほどの時間が経過しているわりには、ChatGPTによるコード生成は、それほど話題になっていないように見える。しかし、どうも世の中ではこっそりと(?)、あるいはようやく(?)、ChatGPTにコードを書かせることが行われていることが分かってきた。
 ユカイ工学のカレー食堂というイベントに出かけたら《新人がChatGPTだけで作った》というソフトをデモしてもらった。GClueの佐々木陽さんによると、ある大学で教えていると、ChatGPTを使う学生と使わない学生で、まるでパフォーマンスが違ってきているとのこと。それは、プログラムを書く必要のある授業だそうだ。
 Unreal Engineのプラグインのコードは、もうChatGPTでしか書いていないなんて話も聞いた。ということで、ここのところ私がゆるゆると書いているChatGPTプログラミングの世界を紹介したいと思う。
 いま、世の中はAIの未来についての議論がかまびすしいが、コード生成の世界は、いま見ておいてしかるべきものだとも思う。
60秒でちゃんと遊べるゲームをChatGPTでつくる
 まずは、どんな具合になるかをザッと眺めてみていただくことにする。1個めのサンプルは、私の最近の持ちネタなのだが、「60秒でちゃんと遊べるゲームをChatGPTでつくります」というものだ。やることは、ChatGPTの入力欄から以下のようにお願いするだけ。

 すると「もちろんです!簡単なPythonコードの例を提供いたします。以下の例は、秋葉原をテーマにしたクイズゲームです。」という陽気なノリで、10秒たらずの間にChatGPTがコードを書き出してくる。

 しかし、こんなテキストゲームではもうひとつ見栄えもしないので「シューティングゲームを作って。Pythonで動くコードを書いて」とお願いしてみると、これまた10秒かそこらでコードがスルスルと魔法のようにでてくる。出てきたコードを game01.py など適当なファイル名に入れてコマンドラインから「python game01.py」とやると次のようなゲームを遊ぶことができる。
 興味深いのは、コードと同時に「このコードを実行するには、《Pygame》 ライブラリがインストールされている必要があります。もしインストールされていない場合は、以下のコマンドを使用してインストールしてください。」などと、アドバイスを適宜してくることだ。
 スピードが速すぎるなど、ゲームバランスがよくない場合は、そのあたりを伝えることになる。つい「相手のスピードがはやすぎるんです」と不満をぶつけるように言ってしまったのだが、またまた、あくまで陽気に、次のように対応してくる。

 これで、本当に60秒以内でちゃんと遊べるゲームが作れてしまう。さらに60秒もあれば、追加要素をそれなりに足してオリジナルゲームといえるものにもなりうる。もちろん、これの動作環境としてPythonをインストールしておく前提。Pythonのインストールは難しくはないが、文字コードはUTF-8で保存のこと。《Pygame》は、コマンドラインから「pip install pygame」と1行打ち込めばよい。このあたりで不明点もあれば、適宜、ChatGPTに聞けばよい。
 アクション性のないプログラムなら、Googleが機械学習の教育および研究用に提供しているクラウドベースの動作環境《Colab》(Colaboratory)を使うとよい。ChatGPTに、Colabを使いたいのですがと質問してやれば、インストール不要で5分後にはPythonが使える状態になっているはずだ。この種の質問に関しては、ChatGPTは、本当に凄い。
「調整さんいらっしゃい!」は、もはや便利で手放せないアプリ
 もう少し込み入ったプログラムの例を紹介しよう。「パソコンのカメラが捉えた人物の表情によって、画面に表示するイラストの顔も変化するプログラム」をお願いしてみた。
 やることは基本的に同じなのだが、さすがに少し凝った設定のプログラムでは、そうすんなりとは動かない。以下の動画は、実際にプログラムが動くまでのようすを数倍速にしたものだ。
 ここでよく見てほしいのは、まず、私は、「Voice Control for ChatGPT」というChromeブラウザ用のプラグインを入れているので、音声で指示を出している。映画監督か、現場監督か、ハワイの浜辺でデッキチェアに座ったままプログラミングをしているような気分になってくる。
 次に、エラーが出たときにそのエラーメッセージを「こんなエラーメッセージが出ました」という言葉も添えずに、ChatGPTに返してやると、「申し訳ありません」などという謝罪のあと1秒もおかずに、新しいコードを返してくる。修正箇所しか言ってこないときは、「コード全体をお願いします」と言えば出てくる。
 これは、ちょっと熟練の同僚プログラマーがすぐ横にいて、その日は、ひたすら私に尽くして作業してくれている感じである。こうした連続した作業をChatGPTとともにやるための同僚ならぬエージェントも注目されているので興味のある方は調べてみるとよい。
 簡単なプログラムが作れるのは分かったけど、実用で使えるプログラムまで作れるのか? という指摘もでてきそうなので、ChatGPTで作った「Googleカレンダー空き時間サーチ」(別名「調整さんいらっしゃい!」)といういまじゃ手放せなくなっているアプリを紹介することにしよう。どんなものかは、次のビデオを見ていただくとわかりやすい。
PR

コメント

プロフィール

HN:
angel
性別:
非公開

カテゴリー

P R