Chat GPTをプログラミングの相棒にする

Chat GPTをプログラミングの相棒にする

Chat GPTの概観

Chat GPTとは

「Chat GPTとは何か?」ということを説明するまでもないほどあまりにも有名な存在ですが、「Chat GPTとは何ですか?」という質問をChat GPT本人に投げかけてみました。

Chat GPTはOpenAIが開発した自然言語処理(NLP)モデルの一つです。Chat GPTは、言語モデルGPT(Generative Pre-trained Transformer)の応用形であり、会話型の対話をサポートすることに特化しています。
GPT(Generative Pre-trained Transformer)は、大規模なテキストデータセットを用いて事前学習されたニューラルネットワークモデルです。Chat GPTはこのGPTをベースにしており、さらに会話の文脈を理解し、自然な対話を生成する能力が強化されています。
Chat GPTは、コンピュータプログラムとユーザーの対話を通じて情報を提供し、質問に答える、タスクを実行する、指示に従うなどの対話型タスクに適用されます。Chat GPTは、顧客サポート、チャットボット、仮想アシスタント、自動応答システムなど、さまざまな応用に利用されています。
Chat GPTは、OpenAIが開発したGPT-3とその前のGPT-2をベースにしており、より高度な対話型能力を持つことが特徴です。ただし、Chat GPTは言語モデルであるため、知識のカットオフがあるため、最新の情報やリアルタイムの状況に対応することはできません。

私は自然言語処理モデルについて興味がありつつも勉強不足でほとんど語れないため、本記事はChat GPTをプログラミングの相棒として活用してみた事例と、最後に(余談程度に)私がAIに期待することを述べたいと思います。

回答の傾向

どんな質問にも答えてくれるChat GPTに、ここ数か月の間に様々な質問を投げかけ、対話を試みてきました。
私がChat GPTの返答に関して抱いた印象を一言で言うと、官僚の作成した文書のようだと感じました。
具体的には、以下のような一定の傾向を感じました。

客観的である

AIなので当たり前と言えば当たり前なのですが、何かを説明する際には情報を箇条書きで列挙したりするなど、物事を淡々と記述する構成になっているように感じられました。

優等生的である

倫理コードがあるため、倫理的に問題がありそうな話題に関してはそもそも回答しないか、回答をするとしても極めて穏当な回答をします。

留保を忘れない

Chat GPTが作成する返答の構成は以下のようなパターンが多いです。

【概論】
○○とは、△△です。
【詳細】
○○は、□□であり、××です。
【留保】
ただし、▽▽という限界があることには注意が必要です。

最初に「Chat GPTとは何か?」という質問に対するChat GPTの回答を引用しましたが、そこでも最後にただし書きで留保がされていました。
また、最初の段落でいきなり「時と場合によりますが」というような文言を付けてくることも多いです。

ところで、官僚や大企業の社員は、膨大な量のペーパーワークをこなしています。
そのときに恐れるのは、自分の作成した文書が勝手に解釈されて独り歩きしてしまい、ありもしない責任を負わされてしまうことです。
それに対する対策として、上記のような留保を徹底します。
課長→次長→部長…と稟議を進めていく上で留保がどんどん膨らんでいくなどということもあったりします。
私がChat GPTに対して抱いた印象として官僚の作成した文書のようだと感じた所以は、まさにこの点にあります。

プログラミングの相棒

Chat GPTをプログラミングの相棒として活用してみた事例をいくつか紹介したいと思います。

辞書代わりに使う

「一度学んだので体系的に理解しているが、細かい点を思い出すのが面倒」ということは多いと思います。
例えば正規表現でメールアドレスを抽出したくなったとき、正規表現の記法をいちいち調べなおすのはなかなか手間なのですが、Chat GPTに聞くと即時に解決します。

また、ReactのComponentのボイラープレート生成器としてもよく使っています。
私はComponentのPropsの型定義の仕方や、そもそもPropsを渡すやり方についていつも混乱してしまうのですが、これもChat GPTに聞けば即時に解決します。

他にもよく忘れることとして、イベントハンドラのTypeScript型定義がありますが、これもChat GPTに聞けば即座に回答してくれます。

ラジオボタンのonChangeで発火する関数の引数eventReact.ChangeEvent<HTMLInputElement>型だということを覚えている人は少ないと思いますので、これは有用だと思います。

注意点として、上記は正規表現やReactといった普及度が高い技術だからこそChat GPTが正確な回答をすることができたということです。
これがマイナーな技術、例えば私が使用しているゲームライブラリであるPhaserについてだと、途端に回答の精度が低下します。
また、正確な回答が来るからと言ってコピペしてばかりではいわゆるコピペプログラマーになってしまいますので、コピペする場合は「理解はしているが忘れてしまったことを辞書代わりに聞く」といった用途に留めておくべきだと考えます。

補助アプリを開発させる

ゲームやアプリを開発していると、「開発のための開発」をすることがあります。
例えば私は、あるCSSライブラリからクラス名とコードポイントの対応表を作成したいときがありました。
そのとき、CSSファイルからクラス名とコードポイントを対応させるJSONファイルを作成するアプリをChat GPTに作成させたことがあります。

上記のように、正規表現を用いてクラス名とコードポイントを抽出し、それをJSONデータで出力するアプリを開発してくれました。
このアプリでは、

  • 正規表現の記法
  • 16進数の数値を10進数に変換する方法
  • GASでGoogle Driveのファイルを操作する方法

などのいくつかのつまづきポイントがあるため、自分で作成すると意外と時間がかかることが想定されます。

このように、小規模なアプリならすぐに開発してくれることが多いです。
また、Chat GPTに要件を分かりやすく伝えないと希望するアプリを開発してくれないので、要件定義の勉強にもなったと感じました。

補遺:私がAIに期待すること

私がAIに期待すること、それは労働からの解放に他なりません。

偉大な経済学者であるジョン・メイナード・ケインズは、1930年に書いた「孫の世代の経済的可能性」というエッセイで、「2030年の世界では人々は週15時間ぐらいしか働かなくなるだろう」と予言したとされます。
本記事の執筆時点でその2030年まであと7年しかありませんが、我々の労働時間は週15時間よりも遥に多く、その予想は悪い方向に外れる可能性が極めて高いです。
1930年から実に93年もの時が経ち、その間で科学技術は飛躍的に発展してきましたが、どうにも科学技術は我々の労働時間を減らす方向には寄与しなかったようです。
少々乱暴な議論であることは承知なのですが、この傾向に照らすとAIが我々の労働時間を減らしてくれるとはあまり思えません。

昨今のAIブームで、「AIにより仕事が無くなる」という趣旨の記事を多数見かけますが、本当にそうでしょうか?
現時点のChat GPTは、例えばある程度の規模のアプリを丸ごと作らせようとしても結局は人間が細かいチェックをしなければならず、丸投げするには程遠いように感じられます。
むしろ、アイデア出しのようなクリエイティブで楽しい工程だけAIがやって、その後の神経を使う細かいチェックは人間がやるという方向になってしまうことを恐れています。
また、AIが得意そうなペーパーワークも、組織内のデータや独自のルールなどを知らないAIにとっては意外とうまくこなせないようです。

ただ、希望の光はあります。
例えば自動運転は既に実用段階にあり、2023年4月1日に改正道路交通法が施行され、自動運転レベル4の公道走行が解禁されました。
自動運転の段階はレベル5までなので、完全自動運転まであと一歩ということになります。
「Chat GPTが仕事を代替する」という話と違って、こちらはかなり具体的なビジョンを伴っているように思えます。
生活をするための労働から解放され、「余暇」という言葉がもはや死語になる社会を、私は夢見ています。

目次

Feedback

あなたの一言が大きなはげみとなります!

有効な値を入力してください。
有効な値を入力してください。
有効な値を入力してください。