4.4K Views
April 12, 24
スライド概要
開発業務でAIの 活きるシーン、活きないシーン @ampersand̲xyz 2024/04/12 DIST.43 Web制作の現場のためのAI活用術
自己紹介 安藤 真衣子 @ampersand̲xyz DevRel / Engineer ストックマーク株式会社でDevRelをやらせてもらっています。 弊社はAI自体を作っている&そのAIを自社プロダクトに組み入れ た開発をしている会社ですので、AI活用や開発にご興味がある 方はぜひお話しましょう!
業務でAIを使うとは
業務でAIを使うとは AIの生成物を責任を持って利用すること
つまり業務でAIを活かすには 求める成果物の正解の内容が およそ自明であり、かつ、 その結果を検証可能である必要がある …という前提を踏まえる必要があると考えています。 大事なことなので先に言いました。
ということを踏まえて、個人的によく使っている AIが活きるシーン - 環境構築方法の提案やスクリプトの作成 関数・処理の作成 docコメントの作成 モックなどのデータの生成 テストコードの作成 簡単な画面・コンポーネントの作成 CLIでやりたいことをテキストからコマンドに変換して実行 コードリーディングの補助
環境構築方法の提案・スクリプト生成 2024年4月現在でのおすすめは ChatGPT、GPT4を利用する形。 zero-shotプロンプトでも使える精 度があることと、不足ナレッジをオ ンラインで検索する機能があるため 最新のリファレンスなどの情報を参 照して結果提案を行うことができる
環境構築方法の提案・スクリプト生成 割と精度は実用レベルではある が、正直プロンプト1発で完璧な 手順はなることはほぼない。 何が必要なのかを把握する足が かりにし、リファレンスをあわ せて読みながら作業するのが良 い。
関数・処理の作成 Github Copilotは [ Command + i ] で呼び出し Copilotのチャットインタフェー スや、コードコメントに「XXXX する」という形でAIに分かる形で 指示を行うことで関数を即時に 生成することができる
関数・処理の作成 余談として、このOutputとして例示さ れた値は実行結果として間違えてい る。AIは「次に来る確率が高い文字 列」を連続させて生成しているだけ で、考えて作っているとか、作ったも のを実行して検証して出力していると いうわけではないということを人間が 認識しておく必要がある。
関数・処理の作成 fue-shotプロンプティングのようなコメントやチャットでの指示を行うことで、より意図 したコードを出力させることができる。(こういう1行で色々やる場合、指示は守られ るが既存処理の別のことが抜けるケースなどあるので、修正都度きちんと動作確認する こと)
docコメントの作成 copilotのコマンド「/doc」を入 力することでdocコメントを生成 できる
docコメントの作成 チャットインターフェースでは なく、コード入力補完でdocコメ ントを補完させると、コード内 のコメントの言語に合わせてく れる
モックなどのデータの生成 画面内に「それらしい値」を入れ て確認したいときなど、人力で用 意するのがちょっと面倒なデータ 量産などを行わせる事ができる。 ただし生成する内容が巨大になる 場合うまくコード保管できないこ とがある。
テストコードの作成 Github Copilotの /tests コマンド で関数に対してテストコードの自 動生成を行える (左図は@types/jestが入ってい ないことにより警告が出てい る。そういうのは適宜対応す る)
テストコードの作成 なお生成されたテストコードの toBeの値は普通に間違たものも 出力されるので自分での検証が 必要。 テストコードの雛形作成や、とり あえずテストをどうして良いのか 悩んだときに有用。
簡単な画面・コンポーネントの作成 こういう目的の場合、生 成物のコードが大きくな りがちなので、Copilotよ りClaudeやChatGPTのほ うが適任。
簡単な画面・コンポーネントの作成
コードリーディングの補助 Github Copilotの /explain を用いる ことで、既存のコードやライブラ リのコードなど、パッと見で読み解 くのが難しいコードの説明を作成 できる。理解できるかどうかは人 間の能力に依存するが、Chatで壁 打ちしながら読み進める事ができ る
コードリーディングの補助 関連するファイルを開いておくことで、依存するコードのコンテキストにつ いてもGithub Copilotが読み取ってくれる。 ※ 伴って、関係ないファイルは閉じておく方が良い
AIを活かすのが難しいシーン - 独自のDSLなどの生成 - Whyを加味すべきこと全般 - 自分がわからない領域のこと ※ある程度はプロンプティングでカバーできることもある
独自のDSLなどの生成 多くの汎用LLMは一般に存在するものを広く膨大な量を学習し、その 結果、トークンのあとに続くトークンとして可能性が高いものを選出す るという挙動をしているに過ぎない。 そのため、一般知識でないもの(独自DSLや社内ルールのような閉じた 文化圏にしかないもの)については取り扱うことは難しい。 世間のみんなが知らんもんはAIも知らんしわからん。 なんとかしたければファインチューニングしよう。
Whyを加味すべき事項全般 Github CopilotはDiffの内容からコミットコメントを自動生成してくれる
Whyを加味すべき事項全般 Github CopilotはDiffの内容からコミットコメントを自動生成してくれる が、基本的にファイル変更内容の事実ベースの内容にしかならない。 「なぜ」その変更をしたのかまではもちろんAIが知る由がないため。 コミットコメントの生成はあくまで変更内容に付いての記載の補助に留 める使い方ぐらいが良い。
自分がわからない領域のこと
自分の能力を大きく超えたことを AIにさせるのは難しい😢
なぜかといえば 成果物が正しいか判断できない →責任を持った利用をする能力が足りない 成果物に至るための発想ができない →AIに求める成果物を作らせるための指示ができない
AIとは自分のやりたいことを ある程度品質や速度について カバーしてくれる存在・ツール
使いこなせるかは 結局のところ自分次第だ! 技術筋鍛えていくぞ!!🦾🦾
ありがとうございました🙏 懇親会とかで細かい話とかたくさん話しましょう!!