Claude Code の Agent Skills を活用してリポジトリのオンボーディングを効率化する | Wantedly Engineer Blog
こんにちは。ウォンテッドリーでバックエンドエンジニアをしている小室 (@nekorush14) です。今回は、Claude Code の Agent Skills を活用してリポジトリのオンボー...
https://www.wantedly.com/companies/wantedly/post_articles/1045343
こんにちは。ウォンテッドリーでバックエンドエンジニアをしている小室 (@nekorush14) です。今回は、日々の業務におけるAIとの向き合い方についてお話しします。具体的な技術の話というよりも、読み物としての側面が強い話です。
はじめに
AI は How に強いが Why と What は教えてくれない
ツール活用の先にある「本来の課題」に目を向ける
まとめ
これまで「Claude Codeをリポジトリのオンボーディングで活用する話」や「NotebookLMで登壇資料の作成をする話」などを紹介してきました。私自身、日常的なコーディングからドキュメント作成、技術的な壁打ちなど、AIの恩恵をフルに享受して日々の開発サイクルを高速に回しています。
AIの進化によってエンジニアの業務効率は確実に向上しており、ツールの活用や効率化を推進していくことは大前提だと考えています。一方で、日々の開発に没頭する中で、「AIを活用して効率化すること」自体が目的になっていないかと立ち止まることがあります。AIは非常に強力ですが、「本来解くべきだった課題」を見失えば、見当違いなコードや技術的負債を高速で量産してしまう怖さも感じています。
本稿では、AIという手段を手に入れた上で改めて大切にしたい「本質的な課題解決」について、私が日々の業務で意識しているスタンスを共有します。
AIツールは「この処理を書いてほしい」という手段 (How) の解決においては優れたパフォーマンスを発揮します。しかし、実務のプロダクト開発において、システム全体の設計意図や厳密なビジネス要件をAIが自発的に汲み取るわけではありません。私自身、このギャップに直面し試行錯誤することがこれまで何度もありました。
例えば、2026年2月末にリリースした「キャリアAIエージェント」の開発では、LangGraphに着想を得たアプローチでAIチャット機能を実現しました。Claude Codeを活用して開発を進めましたが、初期は単一責任原則を考慮しない、煩雑で重複の多いコードが生成されがちでした。AIは「とりあえず動く機能」を作ることは容易にできますが、適切なコンテキストを与えなければ保守性は適切に考慮されないことが多いです。そこで私は、「対話フローの状態と遷移先」を図示して渡し、「どのクラスがどんな役割を持つのか」「どんなデータを何のために保持しているのか」をプロンプトで詳細に説明しました。これにより、意図通り、かつ保守性のある実装とすることができました。
また、通常のRailsバックエンド開発においても同様の経験があります。Claude Codeを用いてgRPCサービスを実装させた際、AIは直近の要件を満たすためにActiveRecordから直接データを取得するコードを作成しました。一方で、そのままではN+1問題を引き起こすリスクがありました。弊社ではパフォーマンスの問題を回避するためにcomputed_modelという内製ライブラリを採用しています。局所的なHowの解決に走るAIに対し、「N+1問題を回避するためにこのライブラリを使うべきである」という指示を出し、現在はCLAUDE.mdへの記載やAgent Skills化を通じて、チームのコンテキストとしてAIに認識させるようにしています。
AIは強力な推論エンジンですが、現時点において最終的なコードの品質担保やアーキテクチャの意思決定は、ドメイン知識とコンテキストを持つ人間にしかできない領域だと実感しています。
前述した「単一責任原則をどう守るか」「N+1をどう回避するか」といったミクロな問いも、将来の開発スピードを落とさないために重要です。しかし、これらはあくまで実装上の課題にすぎません。
AIの進化によって実装の課題を解くスピードが上がったからこそ、私はより一歩引いて「何のために、誰のために開発するのか」という本質的な問いに立ち返る時間が増えたと感じています。 例えばウォンテッドリーでは、「究極の適材適所によりシゴトでココロオドルひとをふやす」というミッションを掲げています。このミッションを日々の開発に落とし込む際、私は機能の仕様を設計・実装する前に、「今作ろうとしている機能は、働く人が『明日が楽しみ』と思える世界を作るための障壁を本当に取り除けているか?」と、自分なりに解釈して問い直すようにしています。
私はよく「AIで作業をブーストする」という表現を使います。AIツールは目下の具体的な課題解決を加速させるエンジンです。もし、人間が本来達成したかった目的を見誤ったまま突き進むと、間違った方向に全力疾走することになります。 ゆえに、AIを単なる「作業の代行者」として使うのではなく、「なぜこの課題を、何のために解くのか」という目的の解像度を上げ、そのために手元のツールを「どのように」活用するのか、という逆算の思考が大切だと考えています。(もちろん、WhyやWhatの壁打ち相手としてもAIは優秀なパートナーになります。)
AI技術が進化しても、「解くべき課題を正しく定義し、システムのあるべき姿を設計する」というプロセスは変わりません。コードを書くスピードが上がったからこそ、その目的をじっくり考える時間がより大切になっていると感じます。
AIによる目下の作業効率化を追求しつつ、その先にある本来の目的やユーザーへの価値創造から目を逸らさないことが、今の私が日々の開発で大切にしているAIとの向き合い方です。