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

スタッフエンジニアの「Claude Code」との旅

概要

  • Sanity社内ワークショップ でのAI活用事例の紹介
  • AIを「学習しない新人開発者」 として扱う現実的なワークフロー
  • コード生成の80%をAIに委任 し、設計やレビューに集中
  • AI導入による課題と解決策 の具体的共有
  • AIは開発者を置き換えるのではなく、強化するツール であるという結論

サニティ社内AI活用ワークショップ報告

  • Sanity社のStaff Software Engineer であるVincent QuigleyによるAI活用事例の共有
  • 社内ワークショップ でのプレゼンテーション内容に基づく記事
  • 複数のAIエージェント を同時運用し、小規模な開発チームのように活用する手法
  • Claude CodeやCursor を用いたコード生成・レビュー体験の紹介
  • AIは「毎日記憶をリセットする新人開発者」 というメンタルモデルで運用

コーディングワークフローの変遷

  • 初期5年間: 書籍やSDKドキュメント を読み込みながら独学
  • 次の12年間: Google検索によるクラウドソース回答 の活用
  • 直近18ヶ月: CursorによるAI支援コーディング の導入
  • ここ6週間: Claude CodeによるAI完全委任 への移行
  • 技術進化のスピード加速 と、AI活用への適応力

現在のAI開発ワークフロー

  • AIは「考えるための相棒」 として活用、最終的なコード品質に責任を持つ
  • 一発で完璧なコード生成は期待しない、反復的な試行錯誤を前提とする
  • 得られた知見や結果をフィードバック し、次回に活かすプロセス重視
  • AIは前回の学習を保持しない ため、毎回ゼロから説明が必要
  • MCP連携 などでAIに文脈を与えることで、作業効率化

複数AIエージェント運用の実際

  • 複数のClaudeインスタンスを並行稼働、小規模開発チームのマネジメント感覚
  • コード生成だけでなく、コードレビューにもAIを活用
  • Sanity社の方針 :AI生成コードもエンジニアが責任を持つ
  • 自己のコードへの執着が薄れ、冷静なレビュー が可能に

エージェント自動化と今後の展望

  • Slack連携エージェント による単純作業の自動化実験
  • 将来的には、バックログの小チケットをAIが夜間処理 することも視野
  • 全社的にAI活用ノウハウを共有・検証中

コストとROI

  • Claude Code利用コスト はエンジニア月給の数%に相当
  • 月額$1,000~1,500の予算感 でフル活用を想定
  • AI活用に慣れることでコスト効率向上 も期待

AI開発の課題と対策

  • 学習問題 :AIは失敗から学ばないため、繰り返し説明・明示的な指示が必要
  • 自信過剰問題 :AIは誤ったコードも自信満々で生成するため、常に検証が不可欠
  • 文脈制限問題 :大規模コードベースではAIのコンテキストウィンドウが不足しやすい
  • コード所有感の喪失 :自分の手で書かないため、執着がなくなり客観的な評価が可能

技術リーダーへの提言

  • AIワークフローに適応したエンジニア は、複数エージェントを指揮する「オーケストレーター」へ進化
  • 小さな明確な機能を選び、AIに3回実装させ、レビューする というシンプルな導入法
  • 大規模な変革やプロセス変更は不要、段階的な導入が現実的

結論:AIと開発者の未来

  • AIが開発者を置き換えるのではなく、開発者の能力を拡張するツール であるという認識
  • より早く、より良いソリューション実現 のために、最良のツールを活用する姿勢
  • コードそのものではなく、解決すべき課題に価値を置く 開発観へのシフト

Hackerたちの意見

ゴミを防ぐには、エージェントの認知的限界を考慮するだけでいいんだ。例えば… 1) 大きな変更や複雑な変更を求めないこと。計画をお願いするけど、その計画を小さなステップで実行するように頼んで、次のステップに進む前に各ステップをテストするようにモデルにお願いする。 2) 本当に複雑なステップの場合は、問題と解決策を可視化するためのコードを書かせる。 3) モデルが特定のステップで失敗したら、コードにログを追加するように頼んで、ログを保存して、テストを実行し、ログを見直して何が間違ったのかを確認する。これを繰り返して、そのステップがうまくいくまで続ける。 4) モデルに既存のコードを見てもらって、タスクを実装するためにどのように設計されているかを判断させること。時々、モデルはすべての変更を1つのファイルにまとめるけど、あなたのコードはきれいなデザインになっていて、モデルはそれを考慮しないことがある。ほかの人が自分のコツやヒントについてブログに書いているのを見たことがある。ゴミの結果はまだ見かけるけど、95%ほどにはなってないよ。

同じアドバイスを投稿している人を見たことがあるし、確かに効果があると思うけど、そろそろこの一般的な戦略を吸収して、製品の一部として統合してもいいんじゃないかなって思う。

ちょっと真面目な質問なんだけど、「計画を小さなステップで実行するように頼む」ってどういう意味? 一つの選択肢は「この変更を小さなステップで実装してください」とほぼそのまま書くこと。もう一つは、ステップを考えてから「小さなステップでこれを解決してください。最初のステップは、私が興味のある最初の新しいXML要素を処理するためにパーサーにコードを追加することです。この変更Xを行ってください。YとZについては後でやります」と頼むこと。ほかにもいろいろな選択肢があると思うよ。

最近、いくつかの個人プロジェクトで「バイブコーディング」をやってるんだけど、テスト駆動開発がバイブコーディングとすごく相性がいいことに気づいたよ。君が言った通り、問題を小さくてテスト可能な部分に分けて、AIに最初にユニットテストを書かせてから、実際のコードを実装するって感じ。

追加したいことがあるんだけど、開発ドキュメントを何らかの形で保持して、アプリケーションやそのコンポーネントのパターンやアーキテクチャを詳しく説明することが大事だと思う。これをやるだけで信じられないほどの改善が見られたし、正確なプロンプトを使ってClaudeにフルサービスを実装させることができたよ、テストも含めてね。もちろん、後で手動で修正が必要だけど、機能の作業を始める前にClaudeに開発ドキュメントを確認させることで、ほとんどの幻覚を防げる(それと、外部ドキュメント用にContext7 MCPを使うように言うことも)。少なくとも私の経験ではね。これの欠点は、コンテキストウィンドウの30%がドキュメントで埋まっちゃうことだけど、まあ、APIメソッドの幻覚を見たり、再実装しちゃいけないことを完全に忘れたりすることはないから、いいんじゃないかな。私の意見だけど。

大きくて複雑なタスクに対して効果的な戦略は、「今はコードを書かないで。問題の各ステップをもっと詳しく説明するから」と伝えることだと思う。大まかな流れは、1) この入力を読む 2) これらの候補を生成する 3) 候補にスコアを付けるためにヒューリスティックを適用する 4) 候補を優先順位付けしてランク付けする 5) 出力を反映するデータ構造を考える 6) このスキーマでDBに出力を書き戻す、って感じ。そうすると、Claudeはコード内にTODOリストを書いてくれたり(/initを実行していればclaude.mdにも)、各ステージの詳細を尋ねてくれる。実際、これを1時間やったこともあって、「今は止めなきゃ。完成したステージのコードを生成して、コメントを書いておいて、次回はそこから再開できるようにして」とClaudeに言ったら、次回はほとんど手間なく再開できたよ。

その時点で、自分でコードを書けばいいんじゃない?

俺はこういうことを全部やってる気がするけど、大抵は使えないコードになっちゃう。使えるコードができたとしても、結局は手を加えないといけないことが多い。たまにうまくいくこともあって、その時は本当にクールなんだけど、俺の経験では効率が上がる感じはしないな。

いくつかのLLMやエージェントを使ってるけど、まだ有用な出力を得るのに苦労してる。無駄なことをさせないためには、自分で書くよりもプロンプトにエネルギーを使わなきゃいけないんだ。プロンプトの細かいところや言い回し、意図しない関連性に神経質になっちゃう。専門家の交換みたいなものに似すぎると、クソみたいなコードが出てくるんじゃないかって心配になる。ほんとに欲しいのは、LLMのプロンプト用のフロントエンドフレームワークみたいなもので、プロンプトの構造やコード内の何かを見つけるためのベストプラクティス、あるいは新機能の設計やテストを書くのに関する無駄を減らしてくれるものだよ。

個人的には、エージェントが成功基準を使うように強制するのをもっと簡単にするのが、最も大きな改善だと思う。今は、例えばClaude Codeにテストスイートが通るまで修正し続けるように促すのが簡単じゃない。いつも決まった量の作業をして、ほぼ終わったと感じたら止まっちゃうから、テストを通すように本当に言ってるって何度も言わなきゃいけないんだよね。

つまり、すでに高い給料の上に、さらに1,000ドルから1,500ドルも払わなきゃいけないってこと? それで、ちょっとした生産性の向上が得られるかもしれないって? うちの上司は絶対にそれには乗り気じゃないだろうな。

それを忘れないでね。これは補助金価格での話だから。

今は月に20ドルのクレジット(IntelliJのプロAIサブスクリプションを通じたgpt-5の思考)を使えないから、1000ドルって数字には驚いてる。Claudeってそんなに高いの?(ググったら、実際そうみたい)。とはいえ、ある程度のAIへの支出は新しい現実だよね。職場はインターネット代払ってるよね?多分、すごく高い法人向けの速い接続だよね?それに加えて、AIのサブスクリプション代も払わなきゃいけないってことだよ。これが今の現実だね。

今後数年でビジネスがどう進化するか見るのは面白そうだね。確実に言えるのは、君(社員)は測定されるってこと。今後、開発者は何で測定されるのか気になるな。AIにもっとお金を使ったら、解雇や昇進のリスクが高くなるのかな?開発者として、君自身が称賛されるべきだってどう証明するの?

ハードウェア企業は、開発者の給与よりも高い個別のEDAツールのライセンスを日常的に取得してるよ。生産性が測定可能な程度で向上するなら、$1k/年なんて何でもないよ。

そろそろこういう記事には、「オーケストレーションされている」タスクの具体例も載せてほしいよね(著者が書いてるように)。Sanityにはずっとリクエストされてきた機能がたくさんあるし、ここでのメッセージは、これらのエージェントが多くの作業を並行処理しているってことらしい。どんなスタッフエンジニアが「80%のコード」を「学ばないジュニア開発者」に書かせてるんだ?

実際にAIに与えられた具体的なタスクの例とその結果を示すと、幻想が壊れて、みんながその過剰な期待を疑う機会ができちゃうよね。それは避けたいから、実際の例ゼロでClaude Codeがどれだけすごいかっていう投稿が続くんだろうね。

なんか、営業っぽくなっちゃって、「教訓」じゃなくて「これらの学び」とか書いちゃうエンジニアっているよね。技術的なオーディエンスを対象にした記事なのにさ。面白いのは、俺が開発者として成長するにつれて、彼の進化を逆に辿ってる感じ。経験が少なかった頃はGoogleに頼ってたけど、今はドキュメントを読むだけで済むようになった。

この人が初期実装にAIを使うのは面白いね。俺は逆だな。いつも基盤を作るようにしてる。そうすれば、基本的にどう動くかが分かるから。その後、エージェントにボイラープレートのタスクを頼むんだ。彼らはそれに従うのが得意だけど、アーキテクチャにはすごく弱い。

そうだね、LLMはメンテナブルなアーキテクチャを計画するのが苦手だよ。コードが進化してもリファクタリングしないし、コンテキストの制限でそれができないんだと思う。

その人、何も言ってないようなもんだね。生産性が向上したって言ってるけど、AIが人々が気づいてる一般的な欠点に対して不足してるとも言ってるし。誰もClaude Codeにコア機能を委任して作ってるとは思えないね。

同意だね。このAnthropicの記事は、プロトタイピングに焦点を当てていて、現実的な見方だと思うよ。

Claudeや他のエージェントを使ってる人には、ログを強くおすすめするよ。ログがあれば、全ログファイルをAIに突っ込んで、問題を整理すれば、解決策が得られるか次のステップに進める可能性が高い。ログは全てだよ。

AI開発に全力投球するシニアエンジニアのために、月に$1000-1500の予算を組んでるってこと?これって、APIキーを使ってるだけでClaude MAXプランを知らない人のケースかな?$100か$200のプランで、純粋にYOLOで力任せにコーディングしてるなら$100のプランで十分だよ。 https://www.anthropic.com/max

うん、$1k-1.5kは異常に高い気がする。$200/月の20倍プランは、めちゃくちゃ使える量をカバーしてるし、レート制限も5時間ごとにリセットされるからね。毎日何度もそのレート制限を超えるほど必要になるなんて、ちょっと想像できないよ… もしそうなら、トークンごとの支払いに切り替えた方が、$1k以上かかりそうだね。

AnthropicがClaude Codeのクリエイター、ボリス・チェルニーとのインタビューを投稿したよ。彼はそれをどう使うかについてもいくつかアイデアを出してる。「Claude Codeによるエージェント的コーディングの未来」 https://youtu.be/iF9iV4xponk

ボイラープレートを避けるのはソフトウェア開発者の仕事の一部だよね。ボイラープレートを抽象化することで、未来の自分を楽にするんだ。AIに生成させると、すべてのインスタンスに変更が必要なときにボイラープレートが逆に問題になるんだよね。コードベース内でボイラープレートが一貫してないと、さらに厄介だし。

言語によるコードの質の違いに気づいたことがあるよ。Pythonの出力にはいつもがっかりさせられる。基本的なソフトウェア開発の原則(DRYとか)に従うように修正しなきゃいけないし。一方で、TypeScriptは初回でかなり良い感じに仕上がる。完璧ではないけど、アプリケーションに使えるレベルにはなってる。俺の仮説としては、Jupyter Notebookの何十億行のコードでトレーニングされたからじゃないかな :/