GenAIで効率よくコーディングする

GenAIで効率よくコーディングする

Clock Icon2024.07.09 06:04

Introduction

みなさん、生成AI(GenAI)使ってますか?
私はコーディングをはじめ、何をするにもChatGPT/Gemini/Claudeを毎日のように使ってます。
実際に他の人がどうやって使ってるのか知らないのですが、
ここでは私が(主にコーディングするときに)気をつけていることや使い方について紹介します。

GenAI Environment used

代表的なGenAIはWebUIやクライアントアプリを用意してますし、
それらを用いたサードパーティのサービスも多々あります。
私の場合は弊社のサービスである、AI-Starterを使っています。
AI-Starter は、クラスメソッド株式会社が提供する生成AI環境構築サービスです。
Claude、GPT、Geminiなど、複数の生成AIサービスを1つのプラットフォームでシームレスに利用できるので便利です。
また、お客様のAWSアカウントにデプロイされるため、データはセキュアに管理されプライバシーも安心です。
パッケージでの提供のため、導入もスムーズです。
ご興味がございましたら、ぜひお問い合わせください。

A little Technique

実際に私がGenAIを使うとき(主にコーディング時)にやっている手法です。

環境・何を作りたいかについては詳細に書く

当たり前ですが、どんな環境・条件で何を実現したいか
詳細に書いたほうが精度が高いです。
使用するライブラリやフレームワークなども指定したほうがより確実です。

数日前にリリースされたようなものはデータにないので、
なるべく枯れた技術のほうが無難です。
新しすぎるものはハルシネーション起こして
それっぽい名前のクラスや関数などを提案してくることがあるので注意してください。
(知らないなら正直に言って欲しい)

エラー貼り付けるだけだけだとハマる

エラー内容を貼り付けただけで「修正してー」って依頼するだけだと、
↓のようにハマることがあります。

ビルドしてなんかエラー出たのでエラー内容貼り付け  
↓  
[GenAI] Aを試してみてください  
↓  
Aを試したらまたエラー出たので内容貼り付け  
↓  
[GenAI] Bを試してみてください  
↓  
Bを試したらまたエラー出たので内容貼り付け  
↓  
[GenAI] Cを試してみてください  
↓  
Cを試したらまたエラー出たので内容貼り付け  
↓  
[GenAI] Aを試してみてください  
(以下ループ)

修正のたらい回し状態。
この状況になったら、自分である程度の提案や指摘をするといけるかもしれません。
「この関数/ライブラリをつかってみたらいけるんじゃない?」
とか
「この部分の処理がおかしいのでは?」
みたいに言うといける場合があります。

自分の感覚ではそういった提案を行い、
GenAIに「おっしゃるとおりです!」とか「鋭い指摘です」
とか言われると、進展ありのフラグ。

「リファクタリングして」でうごかなくなることがけっこうある

ある程度動いたところで「リファクタリングしてください」と
依頼したことがあったのですが、
けっこうその後動かなくなります。
それでなくてもGentAIとtry&errorで進めている場合、
どの時点で動いてどこから動かなくなったのか見失いがちなので、
git等でコード管理しながら進めていきましょう。

一気にやろうとするとめちゃくちゃになる

いっぺんにやろうとすると大概うまくいきません。
まずはHelloWorldレベルのコードを生成し、
1つずつ実現したい機能を依頼していきましょう。
その際、テストも同時に作成して確認していくのがよいかと思います。
最後にコメントやドキュメントを忘れずに作成するのも大事です。

ときにはGenAIの種類を変えてみる

多少新しいからといって、ずっとそのGenAIだけを使用しているとハマる場合があります。
どうもうまく動かない、エラーループが解消しない場合は
GenAIを変えてみて同じ質問をしてみるとよいかもしれません。
(ex. Claude3.5→4oとか)

公式ドキュメントから引用

もし公式ドキュメントが存在する場合、
そこから引用(コピペ)して、「これを参考に実装して!」と
依頼するとうまくいく場合があります。
AWSなんかは公式ドキュメントが充実しているので、
それを引用して依頼してみるとうまくいくかもしれません。

code2prompt使うと情報提供が楽

何度か紹介しているcode2prompt
コードベース情報を丸ごと提供したいときに使ってます。
-fでフィルタリングして必要な情報だけ抽出することもできます。

先日諸事情によりSDKを使わずAWSサービスにアクセスするコードを記述したのですが、
これらの手法を組み合わせてなんとか実装することができました。

Appendix

仕事の合間にGenAIを使う

プロジェクトにおいて実装したり設計するときにGenAIを使用しますが、
メインタスクの合間、もしくはそれ以外のタスク(ミーティング、ドキュメントの整備、経費精算や各種申請などなど)の間にGenAIメインのサブプロジェクトを行います。

作業の合間にGenAIに依頼&動作確認を繰り返していると、
メインタスクを進めつつ、いつの間にかプログラムが完成してます。
実装を一切しなくても通常業務をしながら
ソフトウェアを作成できます。

Summary

今回はGenAIを使うときの自分的小技について紹介しました。
(こんなことしなくても問題ないように すぐ進化する気がしますが)
参考までに。

References

この記事をシェアする

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.