見出し画像

AI駆動型開発02:コードの生成から実行まで


現時点(2024年)でできること(マルチモーダル)

例えばChatGPT4以降ではPython(パイソン)というプログラムでプログラムを生成→実行できるようになっていて、ChatGPT上でプログラムプログラムの実行から結果までを得ることができます。例えば

問い:「ハートのグラフを描画してください」
とプロンプトを入力すると次のようなハートの図形を描いてくれます。

このようにChatGPTではバックグランドでPythonのプログラムを実行し、実行結果を表示させることが可能です。次のようにプログラム(コード)を表示することも可能です。

ChatGPTではこれを分析と呼んでいます。これはデータ分析の一環のようでChatGPTは次の図のようにあらゆるデータを分析しプロンプトに沿う分析結果を生成するというところを目指しているようです。

最近のニュースで「ChatGPT、GoogleドライブやOneDriveとデータ連携可能に」というものがありました。データサイエンスやデータ分析の世界ではChatGPTの利用画面ですべて完結できそうなところまで進んでいます。

注意点

ただし、「問い」によっては画像生成になる場合があります。例えば「グラフ」を「図形」とすると図形を画像描画しようとします。
これはChataGP4

次はCopilotです。Copilotはプロンプトに「グラフ」というキーワードを入れても「描画」を意識したのか、画像描画になりました。

Geminiは数学的な回答を生成しました。

Claude3では、アスキーアートで出力されました(ハートでなくひし形でした、涙)

現状でもChatGPT4以降はプロンプトを工夫することとでPythonのプログラムを実行し、その結果を出力することが可能ですが、他の生成AIはまだ対応していないようです。
AI駆動型開発の理想としては次の図のように生成AIの画面でプロンプトをいれるとプログラムが生成され、そのプログラムを実行・検証することができて、必要であればアプリをダウンロードとして使えるようになることですが、まだそこまでの状態にはなっていないようです。

現状のAI駆動開発の概略

生成AIの画面内で全て完結するのは現状難しそうですが、生成AIはプログラミング苦手かというと全く逆で得意です。生成AIにプログララムを記述してもらうには、プロンプトに「プログラム言語名」を入れればOKです。
例えば「Python」というプログラム言語でなにかやりたい場合は「Python+やりたいこと」をプロンプトに記述すればよく、例えばよくあるHelloを出力するというプログラムを生成したければ「PythonでHelloと出力するプログラムを生成してください。」と記述すればOKです。

生成されたプログラムは実行可能な状態で生成されるので、プログラムの文法はあまり考えずに生成されたプログラムを如何に実行するかを考えるのが重要になります。多くの生成AIには生成したプログラムの近傍に「コードをコピーする」といったボタンがあります。このボタンをコピーするとプログラムをコピーすることができます。
ではどうやって実行するのか? これが今後プログラマーに求められるスキルの一つだと考えています。もちろんどうやって実行するかをChatGPTなどの生成AIに聞いてもOKです。概略としては次の通りです。

生成AIで生成したプログラムをコピーし、実行環境にペースト(貼り付けて)実行する。実行結果を確認し、エラーがあった場合は生成AIにフィードバックを行い、エラーの原因を探ったり、修正したプログラムを生成してもらう。AI駆動開発ではこの繰り返しにより思ったように動作するプログラムを生成していくのです。私はこの「生成AIでプログラムを生成し、コピーしてペースとして実行する」の流れを「コピペ道」と呼んでいます。
コピペ道では極力、プログラムを記述したり修正したりする作業は行わないようにします。プログラミング初学者にとっては文法の意味がわかっていないために、全角と半角、例えば)と)の違いなどが意識できず自分でプログラムを入力した場合はエラーになる場合があり、それがプログラミング習得するときの挫折の原因になると考えているからです。コピペに集中することでプログラムの入力ミスから開放されます。
また、生成AIが生成したプログラムが文法的に間違っていなくても実行環境によって動いたり動かなかったりすることがあります。実行環境にはブラウザ上で動かす「クラウド」の環境とPC上に環境を構築して動かす「PC(ローカル)」の環境があります。
「PC(ローカル)」の場合は自分のPC上に実行環境をインストール設定する必要がありますのでPC初心者の方は設定につまずく場合がありますし、OSのバージョンやネットワークの関連でうまくいかない場合があります。こういった環境構築もプログラミング初心者の人には大きな壁になっているように思います。
一方「クラウド」ではブラウザのみで開けば実行できる環境が手に入りますのでお手軽です。しかしクラウドであるがゆえにいろいろな制限がある場合があり、生成AIが生成したプログラムがそのまま動かない場合があることに注意しましょう。

演習1:プログラムを生成してみよう

問い:Pythonでハートのグラフを描いてください

演習2:コードをコピーして実行してみよう

ChatGPTの場合は右上の「コードをコピーする」をクリックしてコードをコピーします。次にGoogleの検索エンジンでGoogle Colab(グーグルコラボ)と検索します。Google Colabはクラウド上でPythonを実行する環境でGoogleアカウントがあれば簡単にPythonのプログラムを実行することができます。

Google Colabを開いたら「ノートブックを新規作成」をクリックします。

すると実行環境が開きますので、コピーしたプログラムを貼り付けます。

クリックするとプログラムを入力することができます。ただし、次のように右クリックで貼り付けができないことに注意しましょう。

コードを貼り付ける場合は、Windowsの場合はCtl+v、Macの場合はCommand+vで貼り付けましょう。

コードを実行する場合は、実行ボタンをクリックします。Google Colabの画面を開いて初めて実行する場合は少し時間がかかります。生成されたプログラムを貼り付けて実行すると次のように結果が表示されます。

演習3:コードを解説してもらおう

生成AIにコードの解説をしてもらうこともできます。プロンプトは「このコードを解説してください」などとすると解説してくれます。

「中学生に分かるようにこのコードを解説してください」のようにレベル感をいれると解説を調整してくれます。

プログラムがある程度わかってくるとコードの解説はとても有効なのですが、全くの初心者の方はコードの解説を呼んでもわからないという状況だと思います。まずは次のようなコメント入れてもらいましょう。コメントはプログラムの実行結果に影響がない解説などをいれる機能です。
コメントをいれることでプログラムの命令(各行)が何をやっているのかわかりやすくなりますし、コピペで実行環境にプログラムを貼り付けたときも実行環境の方に解説が残るので後の確認も楽になります。

実行画面ではコメントは次のように表示されます。

演習4:コードを改造してもらおう

解説やコメントの他に、コードの理解を深めるために生成AIにコードを改造してもらうという方法があります。例えば、「色を青色にして」とすると色が青くなります。
※このとき生成AIは前の会話を覚えていて、1. ハートのグラフを描く、2.コメントを入れるは何も言わなくても続いていることを確認しましょう。

実行結果は次のとおりです。

この場合、色が変わっただけなので違いを見つけるのは簡単ですが、違いが見つかりにくい場合は、比較ツール(Diff)を使います。検索エンジンでDiffとすると次のようなサイト(https://difff.jp/)にたどり着きます。ここに変更前のコードと変更後のコードを貼り付けて比較するのです。

すると次のように変更点がハイライトされます。

実行結果とプログラムの変更点を見比べながらプログラムの理解を深めていくとよいでしょう。

その他の変更点候補

  1. 塗りつぶしてください

  2. 横軸縦軸を描いてください

演習5:エラーがあった場合に修正してもらおう

グラフとしてハートの図形を描く場合は、Google Colabでうまくいきますが、図形としてハートを描く場合はうまくいかない場合があります。例えばGeminiの場合、ハートの図形を描く方法を3パターン提示してくれましたが、Geminiが生成した最初の例ではTurtleというものを使っています。これはローカルのPythonの実行環境では動きますが、Google Colab上では動きません。

そのため次のようなエラーになります。

エラーが出た場合はエラーメッセージを生成AIに投げることで、原因を教えてくれたり解決策を教えてくれたりします。エラーメッセージを生成AIに投げる場合は、「Google Colabで実行したところ「TclError: no display name and no $DISPLAY environment variable 」となりました。」のように実行している環境を伝えてあげると良い回答が帰ってきます。

また、グラフのタイトルを日本語にしようとすると次のような出力になります。

実行すると次のようになり思った結果となりません。この場合は、「Google Colabで実行した結果、日本語が白い四角形で表示されてしまいました」などと結果を生成AIに伝えてあげると改善案を教えてくれます。

再度生成されたコードを実行すると日本語が表示できるようになりました。このようにAI駆動型開発では実行結果を生成AIにプロンプトとしてフィードバックすることでより良い結果を得ようとしていきます。

※英語に比べると日本語はローカルな言語ですので、トラブルが多いことを意識しておきましょう。

演習6:色々な出力に挑戦してみよう

使う生成AIによってはうまくいかなかったり違う図形になったりと色々なことが起こると思います。生成AIに何度も出力結果を伝え、プログラムを修正してもらってみましょう。
Google Colabでの図形描画はグラフとして図形を描画するものなので、キャラクターなどの絵を描くのは苦手です。プログラムは基本何でもできるように作られていますが、実行環境によってはできないことや苦手なことがあること知りましょう。
実はこんなプロンプトでもOKです。「Google Colabで実行可能なおもしろ図形を描いてください」

参考リンク

今回利用したGoogle Colabの画面


この記事が気に入ったらサポートをしてみませんか?