ChatGPT(GPT-4)におまかせ開発やって感じたこと(その1)

まだ完成してないので総評はできませんが、GWのスキマ時間を利用してFlutterのWebアプリケーション開発をやっていました。

ChatGPTを活用した開発スタンス

自分はまだ、Flutterは「書いてあることはなんとなくわかるが、Androidネイティブアプリ開発でやれるレベルは全然できない」という技術レベルです。 ということもあり、せっかくだからChatGPT(GPT-4)にコーディングの大半をお任せしたらどこまで実装できるか試してみよう、と思い立ったのがこの開発の始まりです。

スタンスとしては、次のような形でやっています。

  • 要件定義や設計は自分で考える
  • 基本はChatGPTに「こういうの作りたいからコード書いて」の質問で返ってきたコードをそのまま使う
    • バグ関連もChatGPTに直してもらう
  • 一部の簡易なLint(constの付与など)などの修正は、ChatGPTを使わず自分でやる

開発ルールの追加

ここから開発していく上で、少しずつルールを加えました。

  • ライブラリ(サードパッケージ)の利用などは公式のREADMEやドキュメントに書かれたものを優先して記述する
  • 自分でもわかるような記述は自分でやる

ChatGPTの利点と課題

開発する上で実際に行ったやりとりのメモなどは、Zennのスクラップ記事を使って公開しています。

[WIP]Homete-YO開発記録 〜ChatGPTにコード全部考えてもらう〜

この時点で感じた感想としては、ChatGPTは「優秀だが完璧ではないペアプログラミングのパートナー」だなあということです。 おそらく散々言われているやつです。

現時点で明確に回答からコーディングにおいて詰まった部分は、ルーティングの正規表現対応と、contextの非同期呼び出し対応の2点でした。 前者は普通に存在しないパッケージの利用を出し、後者は問題点を伝えても即座に対応したコードを返してきませんでした。 追加ルールでライブラリのREADMEを優先する。わかりきった記述は自分でやるという追加ルールを加えたのは、この辺が理由です。

追加ルールと今後の展望

この辺もわかりきったことですが、ChatGPTはライブラリや公式ドキュメントの最新版が終えてないと思われる回答を返すフシがあります。 そうしたことからも、あくまでも使う側がきちんと回答をレビューしながら、精度の高いコードを作っていく努力が必要だろうなとあらためて思いました。

ただ今回は思いついたままChatGPTに質問を投げていたので、きちんとしたプロンプトを使えば、もう少し精度が高まる可能性はありそうです。 また、場合によってはコードをそのまま添付して送りつけることも必要なのかなと感じました。

  • 可能な限り、公式のドキュメントや公式の開発チームのブログで提供される情報を使って回答してもらう
    • 参照したかしていないかを明記しつつ、参照した場合はURLを添えるようにしてもらう
  • 追加パッケージが必要な場合は、URLを必ず明記させる
  • コードの表記方法をちゃんとルール化(新規は必ずファイル名から記載、既存の改修はdiff表記を厳密にする等)

こんな感じの内容をプロンプトに落とし込んで、開発を続けていくことにします。

今後の開発計画

いちおう開発しているWebサービスは、今月中のリリースを目標にがんばります。

あとはデザイン周りをどうするかが課題ですね。 ここをChatGPTに限らず、AIによい感じのものを提案してもらいたいのですが…。

yamacraftを支援する

記事への感謝や応援を、コーヒー1杯分の支援で行うことができます。支援を受けると、さらに頑張って記事を書くようになります。