AIコーディングをまだ使ったことがない人へ【食わず嫌い解消】
AIコーディング(エージェント)は数年前から流行していますが、私は実はまだ使ったことがなく、ChatGPTに軽い質問をするくらいでした。
この週末に晴れてAIコーディングデビューしましたので、同じようにまだ使うことを躊躇している人へ、私が使ってみた感想を書きたいと思います。
もしかしたら私が最後の一人だった可能性もあります。その場合、この記事には何の価値もないのでただの独り言になります。
AIコーディングを使っていなかった理由
まだAIコーディングをやったことがない人は私と同じで次のような理由ではないでしょうか。
- 漠然と新しいことが怖い
- AIは間違いが多い
- 結局自分で書いたほうが早い
- プログラミングは厳密にしなければならないのに嘘ばかりつくAIにやらせるとは何ごとか
- コードを盗まれる恐れがある
- 料金が高い
さて、これらはAIコーディングを使ってみたあとでも、ほとんど正しいと思います。正しいので、認識の改めや対策、諦めを活用して無理やり一つ一つ解消していきます。
AIコーディングのメリット
「漠然と新しいことが怖い」というのは、AIコーディングで何ができるのか分からない無知から来るものだと思います。AIコーディングを使って何ができるのか知れば解消できるはずです。私が使ってみてAIコーディングでできることは主に次のことだと分かりました。というかまだこのくらいしか使いこなせていません。
- オートコンプリートしてもらう
- 繰り返しタスク(マクロ)をやってもらう
他にも何かの使い方を教えてもらったり、命名を考えてもらったり、頭を整理するのを手伝ったりしてもらったりもできますが、それはChatGPTのHPにアクセスしてチャットを送ったほうが良い回答が得られると思います。
オートコンプリートしてもらう
私はAIエージェントを使うにあたって、Cline(Azure o3-mini)とGithub Copilotを使ってみました。Clineはモデルの選択が悪かったのか、精度は良いのですがレスポンスが遅くてストレスだったのでGithub Copilotにしました。
さて、このGithub Copilotはコードを書いている途中で、次に書くことを推測して提案してくれます。
こちらの画面キャプチャの10行目「が」の後ろは書いていないのにすでに書きたいことが表示されています。
べ、便利ですね・・・。全く見当違いのことを提案されることも多いのですが、感覚的に4割くらいは妥当な提案をしてきます。
使ったことがなかった理由のうち「AIは間違いが多い」「結局自分で書いたほうが早い」ということに対してここで述べると、仮に正答率が4割だとしてもオートコンプリートによって4割のコーディングが削減できることが分かります。
この機能を使っていると、如何に今までの自分の仕事が、AIに推測されてしまうような創造性の低い作業に時間をかけてしまっていたのだと実感します。
繰り返しタスクをやってもらう
AIコーディングの花形といえば、0からAIに指示を出すだけでアプリケーションを作るということではないでしょうか。でも私はそれはあくまで挑戦的なことで、今の時点で実務でやるにはかなり難しいのではないかと思います。
ChatGPTに「こんにちは」と声をかけると、毎回違う答えが返ってきます。そんな曖昧なものを正しながら欲しいアプリケーションを0から作るなんて労力に見合うか疑問です。「プログラミングは厳密にしなければならないのに嘘ばかりつくAIにやらせるとは何ごとか」なのです。
しかしこれは生成AIの創造的な側面しか見ていないから起きる誤解です。ChatGPTに次のように伝えます。
「こんにちは」と声をかけられたら「こんにちは」とだけ返してください
すると次からは何回「こんにちは」と言っても「こんにちは」しか返してきません。生成AIにはこんな特徴もあります。
- 言われたことを割と守ってくれる
- 自然言語で指示できる
このAIの力をどう活かすかというと、答えは一つしか思いつきません。
マクロ
です。
マクロというのは繰り返し行うタスクを記録しておいて次からはコマンド一発でできるようにする機能で、多くのテキストエディタや業務アプリケーションが備えているものです。
とはいえマクロを使っている人というのはかなり少ないと思います。
なぜなら登録のための操作を覚えないといけなかったり、ファイルによる違いがあっても同じ処理ができるようにマクロを作ることは非常に難しいからです。
その点、生成AIは登録の操作は自然言語で「この手順でやって」と伝えるだけです。しかも文脈を理解してやってくれるのでファイルが違ったらそれを考慮してやってくれます。
便利!
Github Copilotの場合、.github/copilot-instructions.md
ファイルにあらかじめこんなふうに書いておきます。
このプロジェクトはTypeScriptでフレームワークにExpressを使っています。
エンドポイントを追加する指示がきたらこの手順で実行してください。
1. ...
2. ...
細かくルールを書けば書くほどタスクの精度が上がったり、複雑なことができたりするようです。あとはチャット欄で「POST userエンドポイントを追加して」と指示すればエンドポイントを追加してくれます。
追加してくれたコードは、未完成のものなので、ちゃんと中身を自分で確認して足りないところを補っていきます。スニペット的な使い方とも言えますね。
自然言語で書けるマクロ。最強です。
便利なのは分かったけど
まだいくつかの不安が解消されていませんね。
セキュリティ
私たちがプログラミングしたコードというのは財産です。AIが文脈を理解するためには当然そのコードをAIに読んでもらわないとなりませんので、AIを提供している企業にコードを渡す必要があります。さらにそれをAIの学習データとして使われてしまうと、そのAIを利用する第三者に使われてしまう可能性があります。「コードを盗まれる恐れがある」のです。
これはもうChatGPTと同じで半分諦めるしかありません。私たちが選択できるのは誰に渡すかです。
日本企業を探すか、メジャーな欧米の企業にするか、安く提供している中国企業にするのか。
私の場合はよくよく考えると、リポジトリをGithubに置いていますし、ほとんどの業務ファイルをOneDriveに置いていますので、もうすでにMicrosoft社にすべて預けている状態でしたので、Microsoft社へならばコードを渡すこと自体は新たな懸念になりませんでした。だからMicrosoft系のAIを選択しました。
後は学習データとして使われるかどうかですが、最悪使われても、そのまま誰かにコピーされるわけではありませんし、AIをより良くすることで他の誰かの役に立つためと割り切りました。
どうしても渡したくないコードを持っているのであれば、AIは使わないほうが無難ですね。
料金
「料金が高い」ということに関しては、従量課金や高額のプランで恐ろしいほどコストが嵩むものだと誤解していました。多くのAIエージェントは無料枠がありましたし、定額で使えるものもあります。Github Copilotは無料枠があって、有料だと月10ドル(1500円くらい)です。
この記事で書いたオートコンプリートと繰り返しタスク作業において、AIの精度の良し悪しは単に手作業が少し減るかどうかに過ぎませんので、本質ではありません。AIコーディングを導入するかしないかが大きな差になります。無料版でもセキュリティの懸念だけよく考えてすぐに導入することをおすすめします。
おわりの雑記
プログラミングの入力デバイスとして「キーボード」と「マウス」がありますが、私はこのうち「マウス」のほうが重要だと考えていました。というのも、コーディングの作業の大部分は狙ったコードのコピー&ペーストの作業が占めていたからです。ショートカットキーをマウスのボタンに割り当てればキーボードを触る時間は激減します。よっぽど記憶力がよく頭の回転が早くタイピングが早い人でもなければコピー&ペーストよりも早くコードを書くことは難しいと考えています。その上、動作テストやWeb検索などを行いますのでキーボードを触っている時間よりもマウスを触っている時間のほうが長くなります。
もちろん、業務連絡のチャットやメールではキーボードを多用しますが、それはプログラマに限った話ではありません。
しかし今回、オートコンプリートと繰り返しタスク作業をAIに任せられることが分かりました。これはコピー&ペーストを削減するものです。そのため、もしかしたら「キーボード」のほうが重要かもしれないと考えを改めるきっかけとなりました。
Discussion