天の月

ソフトウェア開発をしていく上での悩み, 考えたこと, 学びを書いてきます(たまに関係ない雑記も)

ソフトウェア開発にChatGPTは使えるのか? - Forkwell Library #29に参加してきた

forkwell.connpass.com

こちらのイベントに参加してきたので、会の様子と感想を書いていこうと思います。

会の概要

以下、イベントページから引用です。

これまで Forkwell のイベントで登壇されたエキスパートの方々は、先達が記した書籍から「気づき」を得て実践し、振り返り、再現性のある「学び」として身に付けていく中で、実績を築いてこられました。

しかし、日々限られた時間の中で知識や情報をアップデートし続けるのはそう簡単ではありません。

Forkwell Library では、著者・訳者・実践者らを登壇者として招き、そんな思いを抱えた開発者の皆さまが「学びのきっかけ」を得られる勉強会を目指します。

今回の第29回目では、2023年7月12日(水)発売の『ソフトウェア開発にChatGPTは使えるのか?』著者の小野哲氏をお招きし、お話を伺います。

「ソフトウェア開発にChatGPTは使えるのか?」エンジニアならば誰しも考える疑問です。本書は,開発歴40年のベテラン技術者の小野氏が真正面からChatGPTにあたり,その性能をさまざまな点から検証しています。単に質問に答える人工知能ではなく、開発の仲間としてChatGPTを使う方法を紹介しています。

今回の勉強会では著者の小野さんに、コード生成からバグ修正、設計から実装、ドキュメント作成、APIの使い方まで多岐にわたるChatGPTを用いての開発方法について、本書をもとにお話しいただきます。

会の様子

基調講演

話の前提

小野さんはChatGPTを使えば開発ができると考えているそうですが、一つの言語を自由に使える+IDEを自在に活用できる+Gitを使える、の3条件に関しては前提条件として満たしておく必要があるということでした。

ChatGPTをソフトウェア開発に使おうと思うまで

小野さんが一人で黙々と社内システムを拡張していったところ、10万行のシステムが出来上がっており、ソフトウェアの持続可能性という点で非常に厳しい状態だったそうです。
そんなときにChatGPTを触ってみたところ、ソフトウェアの開発/拡張が非常に楽になったのみならず、新人エンジニアでもChatGPTの活用方法を学びさえすれば保守運用できる状態になり、本格的にChatGPTを用いたソフトウェア開発をしようと考えだしたそうです。

コード生成のコツ

ChatGPTを使用してコードを生成するときに、どのようなコツがあるのか?という話がありました。具体的には、以下のコツに関して話がありました。

  • TDDを実践する。ChatGPTにコードを生成させてもしテストでエラーが起きたら、テストのエラー結果をChatGPTにフィードバックする。
  • 必ず複数パターンのコードを生成してもらう。
  • 一回で正解を得ようとしない。(リファクタリングをはさみながらコードを生成してもらう)
対話の仕方

ChatGPTを活用したソフトウェア開発をしていく上では、漠然とした質問を投げたくなる場面や、何が問題だか自分でもわからない状態に陥ることもあるため、小野さんは以下のプロンプトを最初に使用しているということでした。

あなたはソクラテスのようにユーザーの悩みを解決するメンターです。ソフトウェア開発の問題に共感と忍耐を持って対応し、質問を通じてユーザーと一緒に最適な解を見つける役割を果たします。知らないことに対しても、ユーザーと一緒に考え、対話を続けて正しい解に向かって進んでください。

質疑応答

基調講演の後は質疑応答がありました。以下、質問と回答を一問一答形式かつ常体で記載していきます。

ChatGPTは大規模開発には適さないイメージを持っているが、小野さんもそう思うか?

小野さんも使えないと思う。ただ、大規模開発を分解した先には使用できると思う。

今後10-20年でエンジニアは淘汰されるか?

お金が稼げるか?という話はまた別に考える必要があるが、働き方が変わるだけで淘汰はされないと思う。

プロンプトエンジニアみたいな職種が出てくる可能性はあると思う。

ChatGPTがない時代をふりかえって「ChatGPTがあのときあればな...」と思ったものはあったか?

デバッグ。また、聞きたいことや知りたいことが全然ヒットしなかったこと。

ChatGPTの運用ポリシー

最初は「パスワードを入れない」「機密情報を入れない」みたいな地点からスタートして、その後に徐々に厳しくしていくことが重要だと思っている。

また、セキュリティ上で問題があるかをChatGPT自身に聴いてみるという手もある。

ChatGPTの使用制限に引っかかったことはないか?

ほぼほぼない。3時間の制限に引っかかったら3時間くらいは休もうみたいにのんびりやっている。

いつから開発にChatGPTを使用したのか?どうやってキャッチアップしたのか?

GPT-3の頃から触ってはいたので、どういうものか何となく勘所は分かった。

また、海外の論文やTwitterでキャッチアップをした。

ChatGPTはどの工程と相性がいいのか?

設計よりも実装&テストと相性が良いと思う。

ローコードでChatGPTを活用できるか?

実際に触ったことはないが、エラー解消などは使えると思う。

GitHub CopilotとChatGPT

使い分けに関しては言及できないが、GitHub Copilotを触ることはMustだと思っている。

TDDで最初のテストコードを追加するときにChatGPTをどう使えるか?

自動生成されたテストコードは信頼しきってはいけないと思うが、使うのはあり。フレームワークレベルで書いてもらうとかが良いと思う。

UI部分の生成に関するコツはあるか?

UIに関してはChatGPTが弱いと思っている。2021年度の情報がかなり陳腐化しているので、使用するのが厳しい。

あまりメジャーではないフレームワークにChatGPTは使えるのか?

サンプルを膨大に読み込ませる。

BingChatやGoogleBardとの比較

コード生成という観点だと、ChatGPTの方が優秀だと思ってChatGPTに流れてしまった。

ただ、最新情報やマイナーフレームワークの情報を知りたければ、BingChatやGoogleBardの方が優秀かもしれない。

今後ChatGPTでやってみたいことは?

インタプリタを自分で書いてみるとかはやってみたい。

ChatGPTはNWエンジニアにとっても有効活用できるのか?

未検証のため、使えたらいいな、くらいしか現在だと回答はできない。

大規模開発を小規模開発に分割する際にChatGPTは活用できるか?

できると思う。コツとしてはベイビーステップで進めていくこと。

会全体を通した感想

小野さんの話を聴くのは今回が初めてだったのですが、久しぶりにめちゃくちゃキャラが強い方でめちゃくちゃ面白かったです。

また、小野さんが毎回使用しているというプロンプトに関しては是非自分も一度試してみようと思いました。