このページの本文へ

遠藤諭のプログラミング+日記 第166回

ChatGPTプロンプトプログラミング講座(8)

女子大生が100日連続で生成AIで100本のプログラムを書いたらどうなったか?

2024年02月26日 09時00分更新

文● 遠藤諭(角川アスキー総合研究所 主席研究員)

  • この記事をはてなブックマークに追加
  • 本文印刷

ボードゲームやアクションゲーム、各種ツールやシミュレーションなどさまざまなソフトが100日間に作られた

 いままで数えきれないほどのプログラマーに会ってインタビューもさせてもらってきたが、久しぶりに若いプログラマーの話を聞いてきた。ここ1、2年では U22グランプリの男子中学生や全国小中学生プログラミング大会の受賞者たちだが、今回は、ChatGPTを使ってプログラムを書きまくった女子大生である。

 彼女は X(Twitter)の自分のアカウントで1日1本のソフトを100日間連続で作るというイベントをやっていて「おっ、頑張っているな!」と思って応援していた。「こんなゲームを作ってほしい」などとリクエストを出したりもしていたのだが、どうも私が想像していたものと内容もやり方も違っていたようである。

 目下、ソフトウェア産業の最大のテーマは「我々は人間の言葉でプログラムを書くようになるだろうか」ということだ。

 最初のプログラミング言語といわれる「COBOL」(1959年)は、英語をもとにした言葉と文法で作られることが目標の1つだった。AI の原点となった「ダートマス会議」(1956年)開催を呼びかけた前年に出された手紙には「自動コンピュータ」(Automatic Computers)や「言語はどうプログラムされうるか」(How Can a Computer be Programmed to Use a Language)といった言葉がでてくる。

 昨年11月、マイクロソフトのナデラCEOが「将来のプログラミングは自然言語で行うようになる」と発言したが、それは、ほぼ確実な流れになっている。GitHub Copilotは当たり前のように使われているし、GoogleのGemini Advancedでは、コードの実行・編集がサポートされた。ソフトウェア開発においては、プログラミングはその一部でしかないが、要件定義、設計、チーム開発、テスト、デバッグ、品質等の評価、ドキュメンテーションなどでも生成AIの活用が試みられている。

 そんな、2024年春のこのタイミングだが、1日1本のソフトが100日連続で(しかも1日平均9時間以上費やされたというのだが)どのようにして作られたのか? 作者である大塚あみさんに聞いみた。

大塚あみさん(角川アスキー総合研究所の市ヶ谷オフィスにて)

プログラミングを学びたいから100本作ることにした

―― 100日間連続でプログラムを作るってのは、そもそもなぜ始めたんですか?

「去年の4月頃に、大学でICT演習の授業を受けていたんですが、講師の佐々木陽さんからChatGPTがすごいって話を聞いたんですね」

―― 去年の4月頃はコード生成が話題になってましたね。

「授業は、Webを作るとかPythonで簡単なプログラムのやり方を教えてくれるといった演習なんですが、聞いてるぶんにはあまりにも暇なわけですよ。例えば型の定義のやり方とかfor文をどう書くかとか。私は、JavaScriptをやったことがあったので、そういったものについては簡単なので暇だったからです」

―― なるほど。

「暇なので、オセロを作ってみようと。授業で、たまたまMatplotlib(※グラフ描画ライブラリ)のことをやっていたのでそれを使ってオセロを作りました。それが、きっかけで学会で発表することになるのですが」

―― オセロは簡単にできたんですか?

「オセロはChatGPTを使って10時間くらいでできました」

―― それを学会発表することになった?

「ええ、6月に電子情報通信学会というところの研究会で発表したのですが。その間もChatGPTで何ができるかというのを2カ月ぐらいずっとやっていたんですけど」

―― 研究会ってどんな感じでしたか?

「10人くらいの会なのですが、正直、何をしているのか全くよくわからなかったんですよ。授業のときみたいな感覚でプレゼンして、そこにいる方からフィードバックをもらったんですけど」

―― どんな反応だったのですか?

「ソフトウェア工学的な質問が多くて、きれいなコードを書けるのかとか。組織で使うにはどうしたらいいかとか、もっと大きなプログラムで作ったらどうなるかとか。熟練者と初心者ではプログラムが違うけど、誰でも使えるような形に持っていけるかとか、そういったことを聞かれました」

―― そういう質問になりますよね。

「ただ、当時はたいした知識もなかったので、それについてまともな回答もできなかったんですよ。ただ、プログラミング教育という視点では、ある程度の対応ができたと思いました」

1本目のプログラムのXでのポスト

―― なるほど。100日チャレンジはいつ始めたんですか?

「去年の10月28日です」

―― どんな感じで書いて行ったんですか?

「1つ1つ作ると大変なので、再利用できるところは再利用したい。つまり、1度書いたプログラムを再利用して新たなプログラムを作るといったことを、主にこのチャレンジで行いました」

―― ただ頑張って100本のプログラムを書いたんじゃないんですね。

「はい。もともと、ソフトウェア工学的な部分を私が学ばないといけないという動機からはじめたんですね。例えば、オブジェクト思考だったり、コンポーネント設計やデザインパターンとか、そういったものについて学びたかったんですけど、なかなか学びきれなかったので、こういった企画の中で学ぼうと思ったのです」

―― 大学の授業の時間内だと限界がありますよね。

「ただ、やっていくうちに私がやっていたやり方自体がそれなりの価値を持っていくような気がして、先生(※伊藤篤教授)に申し上げたところ、これをそのまま研究にしたらどうかと言われまして、研究にしたんです」

―― 100本チャレンジの途中で論文を書くという話になった?

「はい。20本目のときに言われました」

―― Xだとちょっと萌えなキャラクターで頑張っていましたが。

「はい。X上では完全にエンタメとして、自分の勉強する習慣を確保するためにやっていたんです。あまり表に出していなかったのですが、次にどんなものを作るかは、次に学びたいことがこれだからという形で決めていたんですよ」

「Open AIの活用によるプログラミング学習の提案」と題した大塚さんのメモを見せてもらったのだが、現状の問題として「学習の焦点がコード作成に偏っている」、「上流工程の理解が不十分」などとあり、伝統的な学習方式の課題として「書籍に頼った学習の課題」、「真の理解度の確認の困難さ」、「設計や要件定義に関する教材の不足」などとあった。

プログラムが動いても「改善点」を要求していく

―― 100本と決めたのは何なんですか?

「Xでもよく流れている《いいねした数だけ勉強します》というのがあるんですが。ルールみたいなのがあって、それを、私なりにプログラミングに置き換えて計算したところ950時間ぐらいとなったんですよ。ということは、いいねの数だけ勉強って100日ぐらいなんだってことで100日にしました。実際に1日平均9時間以上プログラミングをやっていたのですよ」

―― それでスタートして、100本目が今年の2月4日に終わったと。ちなみに、1本目は何なんですか?

「原型でやったオセロです」

―― これは、そのコードなんだ。

「そうですね。これはコラボ(※Google Colaboratory)なので、文字とグラフぐらいしか出せないんです。なので、これってゲーム画面というより画像なんですが」

―― 1手ずつ描画させるわけですね。

「以前書いたものを、少し改良したものですが1本目にしました」

―― 基本的にはプロンプトを与えてコードを書かせていくわけですよね。それはどんな感じだったんですか? いきなり「オセロを作って」とか言ったんですか?

「オセロのプログラムをコラボで作りたい。プログラムの関数を1つずつ教えて」といったことをまずは言いました。そのときのやりとりがこれです。ChatGPT の答えは「オセロのプログラムを行うためにはPythonのプログラム言語を使用することができます。基本的な機能を実装するのに必要な関数をいくつか紹介します」と返ってきてます。

―― いかにもChatGPTっぽい反応ですね。

「それで実行するとたいていエラーが出ます。そうしたらエラーメッセージをChatGPTになげて、それを何度も何度も繰り返して10時間くらいやってたらできました。当時は右も左もわからなかったので、ぜんぶやってもらったんですよ」

―― オセロってルールを説明する必要ないからもっと簡単にできたと思ったけど、そうでもなかったんだ。

「ChatGPT 3.5というのもあるんですけど」

―― 基本的には「こういうものを作って」と言って、あとはバグが出たら直してもらうのを繰り返す。なるほどなと思ったのは、まずは関数を教えろと言ったところですね。

「当時はそうやっていました。いまはまったく違うやり方ですが」

―― いまはどうなんですか? それを知りたい人は、結構多いと思います。

「いちばん簡単なものを一度作ってもらうんです。プロトタイプを作ってもらうんですけど、作りたいと思うものについて最も単純なものは何かと考えて作ってもらう」

―― まずは原型になるものを作る。

「たとえば、テトリスを作りたいというとバーっとコードは出てくるんですが、こういう最も単純なものであれば大体作れるので、これに改善点を要求するんです」

―― 改善点を要求する?

「改善点を要求すると、いくつか改善点の案を ChatGPT が上げてきます。その中で、たとえばこの可読性について対応してもらう。メソッドを分割したり、人間に分かりやすいコードを作ってもらうんです」

―― 改善案を出させて、で、そのコードの訂正もしてもらう。

「はい」

―― プログラムの完成を急がずコードのクォリティを上げる。

「そうです。ただ、このやり方というのはですね、落ちものゲームではあまりうまくいかなかったみたいです。なのでもう1回違うやり方で改善を試みたんだと思うんですけど。実行を確認してから、そこでバグが出れば当然バグを潰してもらいますが、仮に動いたとしても、さらに改善点を教えろっていうのです」

―― コードを出してきたChatGPT自身に改善点を聞くという図式が面白いですね。

「1、2、3と番号をつけてあげてきた改善点について、今回の場合はこの2番目のコードの可読性と改善に対応してもらいます」

―― はい。

「この場合、《2について対応》とChatGPTに与えます」

―― 冷たい言い方ですね。お願いすらしてない。

「相手は機械なので、余計なことを書くとそれに影響されてしまうので《2について対応》としか書かないほうが分かりやすいのです。

―― なるほど。

ChatGPTが自ら書いたプログラムについて提示してきた改善点の例。懇切丁寧に説明しながら改善できる点をさまざまな角度からあげてきている。

ひたすらカイゼンを続けるトヨタ式プログラミング(?)

―― 改善点を改善させる。それから?

「で、改善してもらったらもう1回ChatGPTに違う改善点を要求するわけですね」

―― さらに改善させると。そうでしたね。

「ここでの目的はですね、明確にプログラムを分割することなんです。分割しないと改善がしにくいからです」

―― 「分割してって」お願いすれば良さそうな気がするけど、そうじゃないんですね。

「《分割して》というと、どう分割すればいいかという問題がありますよね? このコードを見るとわかると思うんですけど、Tetrisというクラスの中にいろんなメソッドが入っています。逆に言うとこのテトリスというメソッド1つなんですよ。これだと改善がしにくいんですね。クラスが大きすぎるので。ChatGPTは分割できると判断して分割してもらう」

―― 分解がポイントなんだ。

「はい。メソッドへの分割をやってからクラスの分離をした方が ChatGPT的にやりやすいようなので、メソッドの分割をしたものを《いくつかのクラスによってこのプログラムを再構成して》といいます。なので、まずは適当なものを作成させて、それを作り込んでいって、それをさらに分割して、それぞれのクラスで作り込んでといった形でやっています」

―― そういったことを勉強したかったのでそうやってもらう。

「こういうふうにやっていくのも結構たいへんでして、なかなか思うようにはやってくれないんですが」

―― こういうことは、普通だったら本読んで勉強してそれに従ってプログラムを書くと思うんだけど、そうじゃなくて、ChatGPTとのやりとりの中でそれをやっていく」

「設計手法についての勉強はこれをやりながら並行してやっていったんですよ。ChatGPTにコードを書かせた場合、人間が見て分からないといけないですよね。私が、分かってないと、やってくれたものが正しいかどうかすら分からない。なので勉強しないといけないんです。この100本チャレンジンのXのポストでは《これ出来ました》って書いてあるだけですけど。それとは別に、ChatGPTがあげてきた改善点について勉強しないといけないんですよ。たとえば、デザインパターンについて、たくさん学びました」

―― ChatGPTに学ばされる。

大塚さんのChatGPTを使ったプログラミングの大まかな流れ。また、まずメソッドに分解、次にクラスに分解したあとに再構成するようにやりとりするなど、コードの内容を理解しながら改善していくそうだ。

「たえば《イベントリスナーパターンを使ったらいいでしょう》って出てくるけど、イベントリスナーパターンっていうのは何なのか? イベントリスナーパターンが分からなければ、そもそも初めて聞く言葉だったらそれやったらいいかどうかも判断できないですよね。それについて勉強するしかないんです。なので書店に行くことになります」

―― そこは、ChatGPTに「イベントリスナーパターンって何ですか?」って聞けばどうですか?

「そうなんですけど、やはり専門知識ですので本にして数ページにわたるようなやり方というのは、ChatGPTに聞いたところで分かるわけがないんです。やはり文献を読むのが一番重要でして、ちゃんと理解しようとしたら結局のところそうなってしまいますね」

―― 検索しているより本を読んだほうが理解が早いのはありますね。本を読まないプログラマーはダメだというのは事実だと思います。

「ウェブサイトに出てるようなプログラムは、私が求めることに対しては何の役にも立たなかったです」

―― じゃあ、ChatGPTはあなたに使われているコード生成ツールのようにも見えるけれども、同時に、先生じゃないけど、提案をしてくる同僚という感じなんですかね? なかなか立場や関係が何とも言えないものがありますよね。

「ChatGPTは、完全に扱いとしては部下ですね。改善点については部下が進言するような形だと思うんですよね」

―― 上司が改善点を指摘しろと命令している。面白いですね、いいですね。

非対話的にChatGPTにコードを書かせる

―― どのあたりから改善点を聞いていくやり方で作るようになったんですか?

「改善点を聞くようになったのは、第25回くらいです。ちょうど11月末ぐらいにAIのセミナーに参加させてもらったあのあたりです」(※2023年11月24日丸山不二夫さんの「ChatGPTはどう変わろうとしているのか -- マルチモーダル化とカスタム化を中心に基礎から学ぶ」

―― なるほど。

「あと、あのときにプログラマーがChatGPTでコードを書かせるときに、チャットで会話を続けるのではなくて1回ずつプロンプトに対してコードを出すことが推奨されているみたいな話をお聞きしたと思うんですよ」

―― 言いました。OpenAI自身がDeep Learning AIと一緒にやってるエンジニア向けのプロンプト講座では、実はChatGPTを使っていない。OpenAIのAPIを呼び出すプログラムを用意して、プロンプトを修正して非対話的にコードを求めることを推奨している。つまり、プロンプトが完成したときがコードが完成したときであると。でも、大塚さんの作り方は違いますよね。ChatGPTでふつうにチャットしながらコードを生成させていますよね。

「最初はそうだったんですけど途中から切り替えました。先ほどのテトリスみたいに最初に与えたプロンプトと内容が完全に一致しているときは、チャットしながら進めますけど」

―― じゃ、OpenAIの講座みたいにコラボかなにかからChatGPTのAPI使ってやってるんですか? そうじゃなくて、ChatGPTでやっているけど、毎回、最初から書かせてる?

「そうです」

―― そのほうがやっぱいいですよね。対話を続けていくと混乱してきますからね(※ドリフトという現象)。

100本のソフトウェア(1~50)

100本のソフトウェア(51~100)

AIによって、世界は《より過酷な競争社会》になる

「AIが発展するとそれによって、仕事が楽になるととか、AIがあれば勉強しなくていいとか、コードを知らなくてよくなるんじゃないかみたいな話がありますね。AIで、楽な世界になるように見えるかもしれないんですけど、私はそうは思わないんです」

―― おっ、なぜですか?

「私はですね。もっと過酷な競争社会になると思ってます」

―― AIによって競争社会になる?

「たとえばなんですけど、私は、この100日目に書いたプログラムというのは品質がいいと思うのですよ。1日あたり、800から1000ステップ程度のコードを当たり前に書いていますが、オブジェクト指向でクラスを使って、コンポーネントも使って、まともな設計手法を使ってやるわけです。なので自分で見ても、すごいきれいなプログラムになっていると思います。こういったプログラムを書くには、相当な勉強が必要だったんですよ」

―― なるほどなるほど。

「いままでは優秀なプログラマーでも1日当たり書ける行数というのは決まっていたじゃないですか。でも、ChatGPTが使えるようになったことで、プログラマーは、ものすごい行数の品質の高いプログラムを書けるようになってしまいます」

―― 生産性も上がった。

「そうすると学んでない人がプログラムを書くということは何の価値もなくなってしまいます。なのでいよいよ勉強しないといけないということになります」

―― デジタルデバイドみたいな話ですね。デジタルデバイドというのは、単にデジタルを使える使えないではなく、それによって経済格差など笑いごとではない結果を招くという意味ですが。

「そうですね、実力を持つにいたった個人がものすごく力を持つようになり、実力を持とうとしない、つまり勉強しない者については、何の力も持たないものになってしまいます。なので、実力の違いというものがはっきりと分かれるような社会になると思ってます」

―― 他の人もこの同じ手法で、あなたと同じようにできるかもしれないということでもありますよね。チャンスは誰にでもありますよね?

「チャンスを掴み取って技術を身に付けるかですね」

―― 何が必要なんですか? 野心ですかね?

「そうですね」

―― 体質なんですかね? 誰でもなれるんですか?

「誰でもとはいかないと思いますね。私自身の好きなことや得意なことがたまたま合わさってできたのかなと思います」

―― たとえば何と何なんですか?

「たとえば、ChatGPTにやらせる。つまり、上司と部下の関係のような《やらせる》という関係が好きなんです。それからやっぱり、自分が考えたものを作るというその構造自体が好きですね」

―― なんか全ての人がプログラミングをという意見が一時期あったじゃないですか。オバマ大統領が「全国民にプログラミングを学んでほしい」と言っていました。ボクは、それは正しかったと一面思っているんですが。本格的な開発となるとそうはいかないということですか?

「その意味では間違いなくプログラミングは一部の人だけのものです。それ以外の人はやらないほうがいいというふうになると思います」

―― ところで、プログラマーの三大美徳って知ってますか?

「知らないですけど」

―― ラリー・ウォールという人によると、プログラマーが持つべき態度は、《怠慢》《短気》《傲慢》であると。

「それ、まさに私のことです」

―― AIになってもそれは変わらないんだ。

「100日間アルバイトやったら相当お金がたまりましたね」と投げかけたところ「大学生には授業料や生活費などアルバイトの時給に見合わないお金がかかっているのでそれを十分に取り返すにはできれば勉強に費やしたほうがよい」という答えが返ってきた。

受動的に学んだことは何の役にもたたない

―― これからどうするんですか?

「いくつかプランがあるんですけど、まず直近の課題としては学会で発表するというのがあります。電子情報通信学会のネットワークソフトウェア研究会というとこで、「2023年ネットワークソフトウェア若手研究奨励賞」をもらったのですね。それで、2月下旬にスペインで開催されるEurocast 2024で招待講演をすることになったのです」

―― これですね。「ソフトウエア工学の観点から、ChatGPTのプロンプトが上流工程(要求仕様)のドキュメント作成と等価であることを示すとともに、上流工程を意識した今後のソフトウエア教育のありかたにAIを利用すべきという主張を論文にまとめて発表」とありますね。スペインでも、今回うかがったようなこの論文にあるような内容なのですか?

「そうです」

―― あなたのやっている手法って言葉として名前をつけるとするとどうなるんですかね?

「やってることは完全に私が主導権を取っていて、部下に進言してもらってそれをやらせている感じですが」

―― いい経営者みたいな感じですね。

「そうですね。私は経営シミュレーションだったり、戦略系のゲームがとても好きなんですよ」

―― 経営シミュレーションって、自分が持っている部下だったり経営資源を配分してやっていくからね。

「そうですね。『世界の覇者』とかやっていました」

―― ゲーマーなんですかね?

「ゲーマーです」

―― 子どもの頃からゲーマーなんですか?

「中学生くらいからじゃないですか」

―― ニンテンドー Switchとかですか?

「Switchは最近です」

―― パソコンは、いつからやってたんですか?

「パソコンは5歳の時からですね」

―― 英才教育ですね。お父さんはプログラマーなんだ?

「違いますね。普通の会社員ですね。親は別にそこまでパソコンに詳しいとかではないです」

―― とくにはまったゲームというと?

「『ブラウザ三国志』とかやってましたよ」

―― いまもゲームをやるんですか?

「はい」

―― 大学に行って、プログラミングを毎日9時間以上やって、ゲームもさらにやっていて、飯も食ったり睡眠もとらないといけないですよね。

「生活の流れとしては、朝起きて、とりあえずプログラムを書いたりして、学校行ったりしても授業の間にプログラム書いてて、ソフトウェアの設計とかもしたりしてるんですけど、基本的には出席をしています」

―― ほとんどプログラムを書いてるか、それについて勉強しているみたいな感じなんだ?

「そうですね」

―― 夜中も結構起きてるんじゃないですか?

「夜中は、だいたいゲームしながらDiscordで友達と喋ってます。夜11時以降については基本的には何もやらないことにしているんです。プログラムも11時以降は書かないです。それで、1時か2時に寝ています」

―― Discordで何かやっているって言いましたよね?

「それはサーバーの上ですね。Discordのサーバーというのは、サークルみたいな感じなんですが。LINEのグループみたいな感じで、そこに人がたくさんいてゲームしていたりするんです」

―― ああだからあるゲームを何時からやろうぜみたいなイベントになる。

「それを自分でやると大変なので、 監理者とかスタッフとか権限をもってもらっています。男性も女性も、学生も社会人もいます」

―― さっきも話の出てきた昨年11月末のAIセミナーのあと講師の丸山さんとタイ料理屋さんに行ったじゃないですか。そのときにあなたが言った言葉が印象に残っていて、たしか「受動的に学んだことは何の役にもたたない」と言ったんですよ。

「あ、言いましたね」

―― あれは凄いなと思いました。アクティブラーニング的なことなんだけど。

「学校の授業で、オブジェクト思考やったらいいとかデザインパターンが優れてるとか。そういったことを教えられますけど、自分の意思でやってみないとなんでいいのか分からないんですよ」

―― 自分の意思でやらないと分からない。

「大学生は教えてもらわないとできないとか、勉強というのは誰かに教えてもらうものだみたいなことを言いがちじゃないですか。誰かに教えてもらったからできる。そうでなければできない」

―― ありますね。

「よく世の中では××について学校で教えるべきだとかありますよね」

―― はい。

「ヒーターの前にタオルを置いたら火事になる、そういうことを教えるべきだというんだけど、高校でそのくらい教えているんですよ。プログラミングも一緒なんです。いろんなことを教えてもらってるんです。どうやってプログラムを書いたらいいか、でも、それが身についていないことが多いと思うんです」

―― なるほど。

「オブジェクト指向のSOLID原則も、あれはなにを言ってるか最初よく分からなかったんですけど、実際にやってみて分かりました。単一責任の原則は、クラスは単一の責任を持つべきだという考え方です。1つのコードでいろんな機能があったほうがいいと思うかもしれないけどそうじゃないんですね」

―― はい。

「なので一生懸命分離するんですけど、イベントリスナーパターンといったデザインパターンを使って分離させるんですよ。で、なぜでこういうものがあるかというと、こういうものがないと汚いプログラムになっちゃうんです。いらないコードというか、汚いコードをいっぱい集めるようなことになってしまうんです」

―― 受動的にやっているだけだと理解が違ってくるのはあるでしょうね。ちょうどこの同じ部屋で1週間ほど前に河口洋一郎さんが言っていました。「××シンキング」とよく言われるけど、そうじゃなくて自ら「アクション」することが重要なんだと。シンキングはもういいからアクションだと言ってました。

大塚さんのXのアカウントには100日チャレンジ達成の日のポストがトップに固定されている。

 なお、大塚さんのXのアカウントは @Luna_SE_Jp

100本をすべてデモしてもらって感じたこと

 このインタビュー記事をまとめている間にも生成AIに関するニュースが、次々と流れてきている。たとえば、OpenAIが、Text-to-Videoの「Sora」を発表している。動画生成のデモの内容の1年半ほど前のGoogle Phenakiとはくらべものにならない進化に驚かされる。ネットでも動画の自然さが凄いという反応が目立っている。しかし、OpenAIの発表資料をきちんと読むと生成AIに時間軸が入ったとたん「物理現象」(だけでなくゲームのような架空世界も含む)のシミュレーションが可能になることが強調されている。

 物理的なシミュレーションができるということは、AIが、現実世界で活動をはじめる一歩のようにも感じられる。しかし、AIが我々人間の知らないところで勝手に判断して活動を始めることは人間にとってあまり望ましいことではないだろう。社会を動かしているコンピューターは、いままでどおり人間が開発したプログラムで動くべきである。AIは、プロジェクトに参加するメンバーの1人という立場であるべきだ(テクノロジーの歴史はこうした考えをしばしばダメなほうにシフトしてしまうのだが)。

 そのときに、AIがプログラミングを担当したとして、人間がそれを見て理解できないといけないことになる。そうした合意のための言語として、プログラミング言語やモデリング言語は残るのかもしれない(契約書のようなものになる)。AIの書いたプログラムを管理・解釈する仕事がプログラマーという職業というわけだ。考えてみれば、彼女が100日間やっていたことはそれを先取りしていたようなところがある。

 3時間ほどかけて、このインタビューと同時に100本のすべてのソフトを実行しながら説明してもらった(ソフト自体は基本的に公開されていない)。私が、X上で「こんなソフトを作って」とリクエストを出した月面着陸ゲーム(月の重力やロケットによる加速度を使ったシミュレーション=往年のベクタースキャン型ゲーム「ルナランダー」のサブセット)も、ちゃんと遊ぶことができた。

月面着陸ゲーム。1日で作れる範囲なのでどのソフトも大規模なものではもちろんないが、月面着陸ゲームもエッセンスはしっかり組み込まれていた。


 

■ 2024年2月26日(月)18時30分~20時00分 この記事の公開日なのだが《生成AI時代に復習したい「AIの歴史」》と題して株式会社豆蔵の豆寄席でトークをさせていただく。ご興味のある方はご覧いただけると(https://mamezou.connpass.com/event/309155/)。

 

遠藤諭(えんどうさとし)

 株式会社角川アスキー総合研究所 主席研究員。MITテクノロジーレビュー日本版 アドバイザー。プログラマを経て1985年に株式会社アスキー入社。月刊アスキー編集長、株式会社アスキー取締役などを経て、2013年より現職。人工知能は、アスキー入社前の1980年代中盤、COBOLのバグを見つけるエキスパートシステム開発に関わりそうになったが、Prologの研修を終えたところで別プロジェクトに異動。後年、やはりアスキーに転職してきた中村宏美氏(『リコンフィギュアード・アイ』などを担当した)によるとProlog研修でまともにコードが書けたのは私くらいだったと聞いたそうだ。私は、一生書きたくないと思ったので論理プログラムには無理があったということなのか否か? IPA 独立行政法人 情報処理推進機構の『AI白書』の企画協力・編集、『AI白書2023』に執筆。趣味は、カレーと錯視と文具作り。2018、2019年に日本基礎心理学会の「錯視・錯聴コンテスト」で2年連続入賞。その錯視を利用したアニメーションフローティングペンを作っている。著書に、『計算機屋かく戦えり』(アスキー)、『頭のいい人が変えた10の世界 NHK ITホワイトボックス』(共著、講談社)など。

X(旧Twitter):@hortense667

カテゴリートップへ

この連載の記事

注目ニュース

ASCII倶楽部

プレミアムPC試用レポート

ピックアップ

ASCII.jp RSS2.0 配信中

ASCII.jpメール デジタルMac/iPodマガジン