世界を動かす技術を、日本語で。

LLM駆動開発の現状

2025年8月10日原文(blog.tolki.dev)

概要

  • 最新のAI開発ツール を約4週間試用した体験談
  • LLM(大規模言語モデル)によるコーディング支援 の利点と限界を整理
  • 主要プロダクト(Copilot, Claude, Gemini等)の比較
  • 最適な利用シーンと苦手分野 の具体例を提示
  • 現時点での推奨ツール や今後の展望について総括

LLM時代のソフトウェア開発支援ツールの実態

  • LLM(大規模言語モデル) の導入は簡単、学習コストほぼ不要
  • 既存フローに合わなければ無理に使う必要なし
  • LLMは魔法の杖ではなく、PoC(検証段階)以降はコード理解力が必須
  • 中規模以上のコードベースでは構成力が弱く、混乱しやすい
  • 成熟し、ドキュメントが充実したコードベースでの性能向上
  • 明確な指示がないと成果が出にくい特性
  • 主流言語・フレームワーク以外ではパフォーマンス低下
  • ドキュメントや仕様理解の時間が減り、開発者スキル低下の懸念

LLMエージェントの仕組みと現状

  • 「エージェント」とはLLMにAPI(ツール)を呼ばせる仕組み
    • LLMにHTTPサーバーリストを渡し、JSONでやり取り
    • サーバーからの応答をLLMに再入力しループ
    • 実態はAPIコールの繰り返し、魔法や自己反省機能は無し
  • エージェントが使う主なツール
    • コードナビゲーション(ファイル読み込み、grep等)
    • ファイル編集
    • シェルコマンド(lint, type check, test実行)
    • Web検索やURL取得
  • MCPサーバー (Githubリポジトリ検索等の構造化データ提供)は、LLMとの相性が良い

プロダクト共通の課題

  • 最大の問題は「安定性」
    • モデルの頻繁なアップデートや価格改定で予測困難
    • ワークフローや設定の都度見直しが必要
    • 長期的な信頼性や再現性に難あり

実際の利用・検証内容

  • Python, TypeScript, Rust, Flutter での開発・リファクタリング
  • PoC以降やレアな部品(FlutterのToken Field等)での失敗例
    • Claude Opus 4.1やGPT 5でも複雑なFlutterウィジェット実装に失敗
    • 定番コンポーネントから外れると途端に弱い

主要モデルの特徴

  • Claude 4 Sonnet / 4.1 Opus :エージェントワークフローに最も強い
  • Gemini 2.5 Pro :Googleの運用体制が不安定で実用性に難
  • GPT 4.1/5 :厳格なガイドライン下でのみ良好、ツール連携で改善可能
  • ローカルモデル :現状では大規模クローズドモデルに敵わず、速度・精度ともに劣る

代表的なプロダクト比較

  • Github Copilot
    • 月額10ドル、GPT4.1無制限・Claude 4等も利用可
    • VSCode依存が強く、設定や機能追加で複雑化
    • カスタマイズ性高いが、毎月の設定見直しが必要
  • Claude Code Pro
    • 月額20ドル、Claude 4 Sonnet無制限(5h毎リセット)
    • ターミナル主体で再現性・環境構築がしやすい
    • UIやVimモードの質は低いが、IDE非依存で安定
  • Gemini CLI / Jules
    • 価格体系が複雑で評価困難
    • モデル自体は優秀だが、Googleのプロダクト運用が不安定
  • AIファーストIDE(Kiro, Cursor, Windsurf等)
    • 価格や中身が不透明、無料トライアルも機能しないケース多発
    • LLMの活用にはフルIDEは過剰

理想的なLLMツール像

  • ターミナル主体+Webビュー併用の軽量クライアント
  • IDEのインターフェースはLLMワークフローには不要
  • 100%ターミナルも情報量が不足しがち

言語ごとのパフォーマンス

  • Rust :コンパイラの出力が明快でLLMと相性抜群
  • Python :型付けが弱いためLLM支援には不向き、型アノテーション必須

LLMの得意な使い方

  • 標準仕様の実装やテストコード生成
    • Rustのtrait実装や統合テストのボイラープレート作成
  • Sentry等のエラー修正サポート
  • 新技術スタックのキャッチアップ
    • 大量ドキュメントの要約・実装支援
  • 小規模なCLIツール等の高速生成

LLMの弱点・課題

  • 複雑化・コード重複・開発者スキル低下を招きやすい
  • フロントエンド(特にFlutter)は保守性・拡張性に難
    • マジックナンバー多用、キーボード操作や複雑UIで破綻しやすい
  • 人気言語・フレームワークへの依存性が強くなる傾向

結論・推奨

  • 型安全・テスト重視のバックエンド開発にはLLMが有効
  • フロントエンドは単純なUIや汎用コンポーネントには強いが、独自性や複雑さには弱い
  • 現時点での推奨ツールはGithub Copilot
    • コストパフォーマンスとカスタマイズ性が高い
    • 機能や設定の見直しが必要な点に注意

LLMツールの導入は、用途・言語・プロジェクトの性質を見極めて選択・運用することが重要。

Hackerたちの意見

これが少数派の意見なのか、主流だけど悲観的な意見なのか、一般的な合意なのか、すごく気になるな。私のLinkedInのフィードや個人的なネットワークを見る限り、少数派っぽいけど、周りの人たちが過度に楽観的なのか、HNコミュニティ全体の経験とズレているのかも気になる。

どの意見の部分?私は、CLI(特に、aider.chatとClaude Code)に対する「不人気な意見」には強く同意する傾向があるよ。前提として(これが重要)、使っている言語やフレームワークをマスターしているなら、25年前のXPプラクティスでCLIツールを使うのはすごく加速剤になる。注意点:- センスと批判的思考は絶対に必要。LLMにはそれがないから。- システム思考も必要。深い奇妙さを「頭に入れておく」ことができないから。つまり、物事がどうあるべきかについての「やられた!」的な二次的・三次的なことを考慮する必要がある。- 最後に、知識のカットオフ日から数ヶ月または1年前の言語やフレームワークに関する新しい情報をまとめて、コンテキストに凝縮した要約を含めるべき。例えば、Swift 6と6.1と、GPT-5が知っている5.10や2024年のWWDCの発表を比較する感じ。この最後の部分では、(a) OpenAIの「Deep Research」を使ってまずギャップをホワイトペーパー化し、次にそれをMarkdownのコンテキストプロンプトに変換して、最後にLLMツールに持っていって必要に応じて仕様書やアーキテクトモードで使うのが便利だと思う。同様に、(b) 新しいコードを作成する際には依存関係のリポマップツールを使って、その作業のためにコンテキストを持っておくべき。これらの明らかなステップが先進的なエージェントツールに組み込まれていないのが不思議だけど、もしかしたらLLMをナイーブで古い「レインマン」タイプとして扱うことが、ほとんどの「AI」スタートアップのメンタルモデルに入っていないのかもしれないし、あるいはバイブコーダーたちが気にしないから優先順位が低いのかもね。どちらにせよ、コンテキストに基づく開発はLeroy Jenkinsよりも優れている。

実際、働くソフトウェアを提供する仕事をしている人たちの間では、結構一般的だと思うよ。LinkedInのMBAタイプの人たちが本当に開発者じゃなかったり、長い間開発から離れていたりするけど、今はちょっとしたReactコンポーネントやPythonスクリプトを作れるようになって、革命的だね。

私の印象では、企業環境(LinkedInも含む)では、AIの楽観主義が基本的に美徳のシグナルとして使われていて、実際に技術に興奮している人と受け入れられたい人を区別するのがすごく難しい。私の個人的な経験では、AIは変化の範囲を小さくターゲットを絞るのが苦手だと思う。ただ、私はGemini 2.5 proしか使っていないから、他のモデルにはアクセスできないんだ。友達はコーディングにはClaudeを使って、ドキュメントにはGeminiを使っているって言ってた。

Linkedinの投稿はあんまり信頼できない情報源だと思う。そこで自分のことを投稿してる人たちは、成功前の人か、パーソナルブランディングが好きな人ばかりだよ。

この意見は、盛り上がってるブログやニュースが言うほど少数派じゃないと思う。俺も同じ質問を同僚にしてみたけど、ほとんどの人が同じ気持ちだし、俺もそう。ただ、そこまで悲観的ではないけどね。LLMやエージェントワークフローを万能薬みたいに言ってる人たちは、使ってるフレームワークや言語の経験が限られてることが多い。今のところ、俺は慎重な楽観主義を持ってる。LLMのワークフローが、盛り上がりが言ってるような安定したポイントに達すると思ってる。今は「LLMは床を上げるが、天井を上げない」という言葉がすごく的を射てると思う。LinkedInは無駄なポーズだらけだから、無視していいよ。

実際の人間(管理職じゃない同僚や友人)と話すと、AIに対して結構冷めた反応が多い。AIツールが生産性を下げるって感じてる人も結構いる。AIに対して非常に楽観的な人も知ってるけど、彼らですらLinkedInで見るような熱狂的な賛美とは程遠い。もっと冷静に考えてるし、常識的にアプローチしてる。もちろん、これは完全に経験則で、どこにいるかやどんなビジネスをしているかによるけど、俺がいる分野(カスタマーサポートソフトウェア)ではAIがある程度意味を持つし、それでもやっぱり幻滅の傾向を感じてる。管理側では、あらゆる種類のAIの義務、ワークショップ、SNSでのAI関連の投稿があって、我々の「プロダクトビジョン」は誰も理解できないAIの幻覚のようなものになってる。まるでこの10年間ずっとAIをやってきたかのように、あらゆる隅に「AI」を押し込もうとしてる。毎日、CxOたちがLinkedInでAIに関する話題を投稿してるのを見かける。GPT-5が発表されたときも、リリースされた数分後に「$COMPANYでGPT-5を使って、今まで解決できなかった問題をどう解決しているか!」って投稿してた(俺たちは早期アクセスを持ってなかったけど笑)。振り返ってみると、幻覚のグラフや面白いエラーがあったことを考えると、あの発表は本当にジョークだった。管理からのあらゆる義務や押し付けがあっても、俺が近いチーム(俺のチームも含めて)は少し反発し始めてる。役に立たないPRコメントを生成するスパム生成PRボットを排除しようとしてるし、使ってないからという理由で与えられたさまざまなサブスクリプションの取り消しを求める人もいる。顧客からのフィードバックの一番のポイントは、誰も求めていない無駄なAIに焦点を当てるのではなく、コアプロダクトを改善すること(当たり前だよね)。一番のファンだったCTOですら、少し引き下がってきてるのを見てる。HNは主にYCとそのスタートアップの広告プラットフォームだってことを忘れないで。YCの最近のバッチをチェックすると、世界に存在する唯一の技術はAIだと思うくらい、どれも何らかの形でAIに言及してる。大半は最低限の努力で、AI APIをラップして製品と呼んでるようなもの。これだけの金がこのハイプにかかってるから、これらのシステムが完璧に動くように見せようとする利害関係者もたくさんいる。LinkedInについては言わない方がいい、そのサイトは死んだインターネット理論の典型だ。

最初の文からほぼ反対だな。> LLMをコーディングワークフローで使うのは簡単だ。学習曲線はない。今のワークフローに合わなければ無視しても大丈夫。LLMをコーディングワークフローで使うのは最初は簡単だけど、ワークフローとそのワークフローの両方を適応させないと、早い段階で悪い印象を持つことになる。簡単に良い結果を得られるけど、その後に失望することが多い。得意じゃないことに取り組もうとして、無価値だと思うのも簡単だ。例えば、カーソルを完全に無視するのは、著者がそれを使いこなせなかったことを意味している。確かに限界はあるし、Claude Codeを好む人もいるけど、それが不公平だとは言ってない。ただ、プロセスの適応が必要なんだ。

「学習曲線はない」というのは、この人があまり進んでいないってことだね。Copilotや他のツールが基本的に同じだと思っているのが裏付けになっている。

もし簡単じゃないなら、価値がない。なぜなら、手動で書くことは通常簡単だけど、面倒だから。LLMの目的は、面倒な作業を簡単に排除することだから、面倒な作業をLLMにやらせるのが面倒なら、何も達成していないことになる。自分でやるには面倒すぎる作業なら、LLMを使うのはたぶん大失敗になる。自分でコードを開発するのにかかる時間とほぼ同じくらいの時間をかけないと、最終的な出力を判断できないからね。だから、何も得られず、得られたのは得られたように見える幻想だけ。人々がLLMを使って非トリビアルな問題に取り組むことで生産性が上がると思う理由は、LLMが「オフィステアター」を生み出すのが得意だから。プロンプトを出してLLMの出力を読んでいる間は忙しそうに見えるけど、深く考えながら空を見つめて、たまに何かを書いたりタイプしたりするのとは違うんだよね。

LLMをコーディングワークフローで使うのは簡単だ。学習曲線はない。今のワークフローに合わなければ無視しても大丈夫。これまでにLLMを成功裏に使っている人がこう言っているのを聞いたことがない。人々のワークフローについて話して学んだことのほとんどは直感に反するし微妙だ。LLMがプログラマーを悪化させるという結論に至る記事を開くのは本当に奇妙だ。「私はこのツールを最適に使う方法を知っているし、だからこのツールはクソだ」と。そうだね。あと、ピアノはひどい、最悪な楽器だね;あんな騒音を立てるなんて。

最初の2つのポイントは互いに矛盾しているね。ツールを学ぶことは、そのツールで生産的になる結果をもたらすべきだよ。「生産的」になるのが簡単じゃないなら、ツールを学ぶのも簡単じゃないってことだ。

Hacker Newsで議論の続きを見る