請求書自動化サービスで使われている技術ご紹介(第3回)
私はほぼ毎日かなりの頻度でChatGPTを使用していて、その目的の8割がプログラム開発です。世の中では既に「プロンプトエンジニアリング」(ChatGPTに目的に合ったアウトプットを出させるためのプロセス)についての図書、動画が数多く配信されています。
私はまだそれらを読んだり、視聴したりといった事はしていないのですが、毎日付き合っていて、何となくコツはつかんできました。
それで今日はここまでプログラミング生成にChatGPTを使ってきてその経験をあなたと共有したいと思います。(あくまでも私の経験です)
プログラムを生成するうえで、私の思うChatGPTの特徴は以下の通りです。
1.たまに相手が人間じゃないかと思う時がある(賢いが間抜け。同じ依頼でも答えは毎回違う)
2.依頼文が長いと、しれっと無視することが多い。
(最後の方に書いたことは無視されコードに反映されないことが多い)
3.細かい指示を出せば、精度はかなり上がる
4.頼んでいない提案(新しいコード)を出力することもある。
(プログラムが完成間近でこれを採用しとんでもないことになる場合も)
5.こちらの情報量が少なくても、「それらしいコード」を出してくれる。
(これは便利なようで結構危険)
6.前のチャットの状況は結構覚えている。
(書いても無いのに、前の回のチャット内容で使ったコードをそのまま使う事が多い)
7.ドンピシャの回答はまず無理
(どんなに正確に依頼文を書いたと思っても、自分の想定するアウトプットを作成するプログラムを
一発ではきだしてくれることはまずない)
その対策として、私はChatGPTを使ってプログラムを作成する時は次のような事に気をつけています。
1.とにかく感情的にならない事。回答が的外れな時もあり、そういう場合は本当にがっかりというか腹が 立つ時さえありますが、相手はコンピュータなので、とにかく気を静めて考える。
(私は沸騰しそうになると「相手は機械だ」と思い、立ち上がって深呼吸します)
2.まっさらな状態からコードを書く時、なるべく命令は10行以内の箇条書きで書き、処理内容は関数化するようにして、大枠の流れから細かい処理を詰めていく方式を取ります。
3.どうしてもうまく動作しない時、自分でデバッグ文(pythonであればprint命令)を入れ、その結果を付けて自分の考えを命令に入れます。
(目的のコードサイズが大きい時は、まずChatGPTに「デバッグ文を入れたコードにして」と依頼する時もあります)
4.上手く動作するコードを修正する必要がある時は、既にあるロジックを変えるのでなく、新しいロジックを加える方法を優先します。
(ChatGPTがロジックの修正を提案してきても却下します)
ここまで書いてきて、読み返すと結局ChatGPT無しでプログラムを書いていた時とあまり変わらない気もしますが、あなたはどう思いますか?
それでも私はChatGPTを使ってプログラムを書き始めて、多分プログラムを書く速度は何倍にもなりました。
以前は自分が書きたいプログラムを、今まで書いたプログラムから拾ったり、本に書かれているコードを写したり、ネットで公開されているコードを持ってきて、手作業で修正し、テストしてプログラムを完成させていたわけですが、その部分のほとんどを一気にすっ飛ばしてくれるので、これは当たり前ですよね。
それで今後はさらにお客様にプログラムを提供する仕事が増えると思うので、こんなことを考えています。
1.自分のプロンプト・エンジニアリング力の強化
(今までは何も参考にせず、全く一人でやってきたので、ここらで少し世の中の流れを取り入れるべきところに来ているかなと感じています)
2.ChatGPTを使ってテストを充実させる。
(ChatGPTに色々なパターンのデータを作成してもらい、テストを効率化したいと考えています。)
3.書いたコードの整理と再利用の意識
(ソフトウェア・エンジニアリングの永遠の(?)テーマでプログラムの部品化がありますが、それほど大げさではないにしろ、毎回同じような事をChatGPTに依頼して新しいプログラムを作るのもどうかなと思っています)