AIプログラミング個人的キャッチアップ
AIプログラミング色々
AIコーディング(=コーディングサポート)
コード補完(≒パワードスーツ)
チャットアシスタント(≒家庭教師/検索の代わり)
Copilot Chat / Cursor Chat 等
コーディングエージェント(≒ペアプロ(指示/指導側))
Cline / Cursor Composer / Copilot Edits / Copilot Workspace / WindSurf Cascade
AIエージェント(= 完全自律型)
コード補完/チャットアシスタント
コーディング中に何文字か入力するとその先のコードを予測して書いてくれたり(コード補完)、自然言語による指示で特定の部分についてのコード片を生成したり間違いを指摘してくれたりができる(チャットアシスタント)。
基本的に人間主導のコーディングの補助としてAIを使う場合はこれ
Copilotを皮切りに2022年くらい(うろ覚え)から盛り上がってた。
この辺はすでに当たり前のように仕事でも使われてると思うので省略。
AIエージェント
まだ使ったことないのでスキップ
ただし巷の利用者のX/記事とかを読んでると細かく切ったタスクや人間がやりたくないような単純作業を非同期でやってくれるアルバイトみたいな使い方なら結構ワークしてそう。逆にいうとそれ以外ではまだ途上段階っぽい
コーディングエージェント
コーディングエージェントがやってくれること
既存コードを検索してきて理解する
自動でファイル生成し実装する
エラーが出ればAI自身で修正する
コマンドの実行もAI自身で行う
MCPサーバーから情報取得する
途中、人間側にとって気に食わない点や追加の指示があれば割り込むことも可能
AIのtry&errorを見つつ、人間が軌道修正してstep by stepで実装を進められる
ペアプロっぽい
AI主導のコーディングを人間が補助する形
LLM API
コーディングエージェントは実際に実装を進める体としての機能(ComposerやCline)と脳の役割の機能(各種LLM API)が必要
LLM API比較
結論からいうと精度を出すにはClaude 3.5 Sonnetが強そう https://scrapbox.io/files/67bbf42580f47570e6d659e0.png
Xのリアルタイム系の情報やindexされてないようなXの投稿も学習データになってそうなので一部の情報の精度についてはかなり良さそう
Grok3はbetaでAPIがまだ使えないっぽい(2/20現在)
MCP
https://scrapbox.io/files/67bc03d75e81c58f48ab38ab.png
MCP = Model Context Protocol AIツールが外部ソースにアクセスするための標準規格
MCPホスト
ユーザーの指示を受けるAIツール(Claude DesktopやClineなど)
AIツールが参照したい外部ソースへのインターフェースとなるサーバー
具体的には外部ソースへのアクセスをproxyするローカルサーバだったりCLIだったり。
MCPサーバーの参照実装例
なんでMCPが必要?あるとなぜ嬉しい?
AIモデルには基本的に知識のカットオフ(学習データの鮮度)がある
社内に閉じたデータはAIモデルに反映されてない
こうした最新の情報やAIの知らないデータをモデルが適宜参照できるようにすると出力の精度が上げられる
2/20にClineがMCP Marketplaceをリリース
マニュアルで設定ファイルを書いたりサーバー書いたりしなくてもインストールするだけで(登録されているものなら)MCPサーバーが使えるようになる
どうやってMCP Marketplaceにプラグインを登録できる?
精度を上げる
明確な指示
形にしたいものを漏れなく言語化して伝える
頭の良いモデル(やツール)は指示が多少曖昧でも良い感じにハンドリングしてくれたりする
Chain of Thoughts
問題を細かく分解->解いてもらう->出力
その出力結果を次の問題解決の際の入力に利用する
コンテキストがブレずに出力を制御できる
構造化出力
スキーマ/型に合わせたI/Oを指示すると完全自由出力より安定
Chain of Thoughtsのワークフローを組みやすくなる
コンテキストを定義
.cursorruleやglobal_rules.mdや.windsurfrulesなどにコーディングのルールや独自のドメイン知識を定義しておくことでAIの生成結果に意図が反映されやすくなる
設計のアウトプット
エージェントがコードを書き始める前に今から実装しようとしているコードのディレクトリ構成やファイルやシステム設計をREADME.mdに吐き出させてから、それを以後の実装フローで参照させることで出力のブレを減らす
そもそも吐き出したREADME.mdをレビューして微妙なら、追加で軌道修正の指示を出したりすればコスト節約にもなる
Cline
cline/clineはOSSのコーディングエージェントでVSCodeの拡張機能として提供されてる。コードもGitHubで公開されている。 複雑なシステム開発にも耐えうる機能
柔軟なコンテキスト管理
モデルの切り替え
チェックポイント機能
実行時認識
Plan/Actモード
Model Context Protocol(MCP)
clineのシステムプロンプト
Windsurf
Windsurfがなぜコードベース理解に強いか
実際に使ったけどCursor + Clineの方が小回りが効く感じがある。
デモ
TODO: 個人開発プロダクトの改善
ドキュメント作成
テスト作成
リファクタリング
業務にどう活用できるか
コード補完/チャットアシスタントに関しては既存のあらゆるコーディングでシンタックスハイライトレベルでデフォになってて損はない機能。活用するかどうか悩む余地はないはず。
AIエージェントはまだわからん。うまく使いこなせる余地が業務内にあればワークしそうだけどいかんせん個人レベルで私用するにはオーバースペックな感じ。かといって業務で使うには物足りなさや工夫が必要そう。もう少し各社実験orブレークスルーが必要そう。
コーディングエージェントに関してはCursorがv0.46でChatとComposerを統合することからも分かる通り、AIプログラミングの主戦場はコード補完/チャットアシスタントから次のフェーズに移行してる。
実際にある程度使い倒してみた感じ、今の時点でも実際の業務で使える箇所もそれなりにあるという印象。
ゼロイチのPoC開発
ドキュメント作成
テスト作成
リファクタリング
依存やレガシーコードのアップデートとか
逆にインフラ構築ではあまり使えるところがまだ少なそう
インフラの業務領域的に必要なコンポーネントが多い(& GUIが必要な部分が結構ある)
IaCが進んでいる部分のリファクタ/コードリーディング/レビューには使えるかも
Try&Errorが直接インフラコストを増やす(無駄にサーバーを建てたり落としたり繰り返しちゃうとか)
ミスった時の代償がDevsのコーディングに比べてデカい(DNS設定やDB削除しちゃうとか)
プロジェクト横断で使えるProjectRulesの作成
参考
試行錯誤が必要そう
結局どれ使えばいいの?
皆「一番良いやつを使いたい!」と考えると思うんだけど、AIプログラミングの現状は1ヶ月単位(下手したら数週間)で一番良いやつが変わっていくようなスピード感で進んでいる。なのでどれを選んでも正直成功にも失敗にもならなそう。
むしろ何を使うか迷ってる時間がもったいないので適当にまずは使ってみる。そんでAIプログラミングの基本的なマインドセットを身につける。
それさえ身につければあとは日々変化する情報をインプットするだけ。まずはそれらの膨大な情報を判断する目を養う土台を自身の中に作り上げておきたい。
あとは実際に業務や日常コーディングの中で使い倒す。どれだけ良いツールが世の中に溢れていても自分自身が現実の問題に応用出来なければ意味がない。
自分の範囲の諸問題に対してどう適用できる(もしくは出来ないのか?)といった実践知の共有が各方面でなされていくことが望まれている。
Next Action
Claude Code触る(定員overになってた...)
ProjectRules/Custom Instructionの改善
他のLLM API比較
既存アプリへの適用はどこまでできるか
Railsの既存アプリをGoやTSスタックに書き換えはできるか
コード品質上げる系できるか
リソース