Movatterモバイル変換


[0]ホーム

URL:


Sansan Tech Blog

Sansanのものづくりを支えるメンバーの技術やデザイン、プロダクトマネジメントの情報を発信

マネジャーから再びエンジニアへ。Claude CodeとContainer環境で実現するAI駆動開発

こんにちは、技術本部 Contract One Engineering UnitでAI契約データベース「Contract One」の開発をしている中川泰夫です。

私は2024年9月からContract One Devグループのマネジャーを担当してきました。マネジャーとして組織の立て直しに取り組む中で、社内ハッカソンの開催やエンジニアイベントの主催など、さまざまな成果を残すことができました。

buildersbox.corp-sansan.com

sansan.connpass.com

しかし、Contract OneがPMF(Product Market Fit)を達成した今、私自身が発揮できる価値は現場でのプロダクト開発にあると確信しました。そのため、2025年5月をもってマネジャーを退任し、再びエンジニアとして現場での開発へ戻ることになりました。

この記事では、実際に体験したマネージャーからエンジニアへの転向について、どんな工夫をしてきたかを具体的な数字とともにお話しします。

PMF後の成長フェーズで直面した課題

エンジニアとして現場復帰する際に直面したのは、運用業務、採用業務、技術改善の並行作業という課題でした。

これまで担当してきたサブタスクがすぐになくなるわけではありません。同時に、エンジニアとしてのキャッチアップやプロダクト開発への貢献も求められます。

限られた時間の中で、多くの役割を効率的にこなし、Contract Oneの成長に貢献する。これは私にとって大きな挑戦でした。

AIコーディングを活用した生産性革命

この課題を解決するために、私はClaude Codeを活用したAIコーディングを取り入れました。

Claude CodeはAnthropic社が開発したAI開発支援ツールで、単なるコード生成ツールではありません。コードレビュー、リファクタリング、デバッグ、テスト作成まで、開発プロセス全体をサポートしてくれる強力なパートナーです。

特に効果的だったのは以下の活用方法です。

  • コードレビューの効率化: AIが初期レビューを実施し、人間のレビューでは重要な設計判断に集中
  • リファクタリングの自動化: 大規模なコード変更を安全かつ高速に実行
  • テストコードの生成: 網羅的なテストケースを短時間で作成
  • ドキュメント作成: コードから自動的に分かりやすいドキュメントを生成

Container環境での並列処理戦略

さらに工夫したのが、Container環境を活用した並列処理です。

従来の課題

当初はGit worktreesを使って並列でAIエージェントを動かしていましたが、以下の問題が発生していました。

  • ホストマシンで立ち上げているローカルDBが変更のボトルネックになる
    • DBへの変更を含む場合、それぞれの変更が衝突してしまう
    • AIエージェントが作業をやりきれず、結局直列の作業になってしまう
  • PRのレビュー対応での切り替えが手間

container-useの導入

これらの課題を解決するため、container-useを導入しました。

github.com

container-useは「一度に1つのエージェントを監視する状態から、複数のエージェントが安全かつ独立して作業できる環境を実現する」ことを目的としています。

Dagger(CI/CDパイプラインをコードで管理するプラットフォーム)と Git worktrees(同一リポジトリの複数ブランチを同時にチェックアウトする機能)を組み合わせた抽象化です。これにMCP(Model Context Protocol)サーバーとして動作し、AIエージェント用の分離された環境を生成します。

AIエージェントの作業領域をホストマシンではなく、独立したContainer環境で実行することで、以下のメリットを実現しました。

  • 完全な環境分離: 各AIエージェントが独自のGitブランチで新しいコンテナを取得
  • 真の並列実行: 複数のエージェントが衝突せずに安全に動作
  • リアルタイム可視性: すべてのコマンド履歴とログを確認可能
  • 直接介入機能: 任意のエージェントのターミナルにアクセス可能
  • 標準的なGitワークフロー: ブランチ切り替えやレビューが容易
  • 瞬時の失敗作業破棄: 失敗した作業を即座に破棄可能

セットアップ手順

1. 前提条件の確認

container-useを使用するには、以下が事前にインストールされている必要があります。

  • Docker
  • Git

2. container-useのインストール

詳細なインストール手順は公式インストールガイドをご参照ください。

3. AIエージェントとの統合設定

container-useはModel Context Protocol(MCP)を通じて、Claude Codeを含むさまざまなAIエージェントと統合できます。各AIエージェントごとの詳細な設定手順は公式エージェント統合ガイドをご参照ください。

4. gitignoreへの追加

Container環境固有の設定ファイルを除外。

# .gitignore.container-use/

運用の工夫点

Claude Codeのスラッシュコマンド機能を活用し、container-useの利用を任意選択できるようにしました。これにより、作業内容に応じて柔軟に Container環境を使い分けることが可能です。

# container-use Command (.claude/commands/container-use.md)container-use環境でのファイル操作、コード変更、シェル操作を実行するためのコマンドです。隔離された環境での開発作業を自動化します。## 入力-`$ARGUMENTS`: 実行したいタスクの説明(日本語)## 出力- Environment ID - 作業内容の詳細 - ログ確認とチェックアウト方法## 手順### 0. 前提条件確認1. container-useがインストールされているか確認2. インストールされていない場合は、以下を実行してインストールを促す- macOS:`brew install dagger/tap/container-use`- 他のプラットフォーム:`curl -fsSL https://raw.githubusercontent.com/dagger/container-use/main/install.sh | bash`- Claude CodeのMCPサーバー追加:`claude mcp add container-use -- container-use stdio`### 1. 環境準備1.`TodoWrite`ツールを使用してタスクリストを作成2.`mcp__container-use__environment_create`で新しい環境を作成3. 必要に応じて`mcp__container-use__environment_add_service`でサービスを追加### 2. 開発作業実行1.`mcp__container-use__environment_file_read`でファイル内容を確認2.`mcp__container-use__environment_file_write`でファイルを編集3.`mcp__container-use__environment_run_cmd`でコマンドを実行4. 必要に応じて`mcp__container-use__environment_file_list`でディレクトリ構造を確認### 3. 結果確認1. 作業完了後、Environment IDを提供2. ログ確認方法を説明:`container-use log <env_id>`3. チェックアウト方法を説明:`container-use checkout <env_id>`## エラーハンドリング### container-use未インストール時の対応1.`mcp__container-use__*`ツールでエラーが発生した場合2. 以下のメッセージでインストールを促す:```container-useがインストールされていません。以下のコマンドでインストールしてください。macOS: brew install dagger/tap/container-use他のプラットフォーム:curl -fsSL https://raw.githubusercontent.com/dagger/container-use/main/install.sh | bashClaude CodeのMCPサーバー追加:claude mcp add container-use -- container-use stdio詳細は公式ドキュメントを参照してください:https://github.com/dagger/container-use```### 環境作成エラー時の対応1. 権限エラーや依存関係エラーが発生した場合2. ユーザーに具体的なエラーメッセージと解決方法を提示3. 必要に応じて代替手段を提案## 必須ルール**ALWAYS use ONLY Container-use Environments for ANY and ALL file, code, or shell operations—NO EXCEPTIONS—even for simple or generic requests.****DO NOT install or use the git cli with the environment_run_cmd tool.****You MUST inform the user how to view your work using `container-use log <env_id>` AND `container-use checkout <env_id>`.**

実際の使用方法

スラッシュコマンドを使用することで、以下のように簡潔にcontainer-use環境での作業を指示できます。

/container-use Protocol Bufferの再生成を実行して

このコマンドにより、隔離された環境で自動的に以下の処理が実行されます。

  • 新しいContainer環境の作成
  • 必要なファイルの読み込み
  • Protocol Bufferの再生成処理
  • 結果の確認とログ出力
  • 環境IDとチェックアウト手順の提供

運用上の考慮点

なお、Container環境特有の運用上の考慮点もありました。

  • SSHキーを別途渡す必要がある
  • 作業環境固有の設定ファイルがPRに含まれないよう.gitignoreでの除外が必要

特に、各エージェントが独自の環境を持つことはcontainer-useの核となる機能です。これにより複数のエージェントは互いに干渉することなく並列作業が可能になります。

この仕組みにより、他の作業を進めながら、バックグラウンドでコーディング作業を並列実行できるようになりました。

実際の成果と効果

私自身の開発活動を分析したところ、マネジャーからエンジニアへの転向前後で劇的な変化が確認できました。

こちらの図もClaude Codeに作ってもらいました

これらの数値は、AIコーディングとContainer環境による並列処理が、限られた時間でも高い開発生産性を実現していることを示しています。

Contract Oneの成長への貢献

エンジニアとして現場に戻った今、私の目標は明確です。Contract Oneを ARR10億規模まで成長させ、いずれはSansanやBill Oneに続く第3の事業の柱として決算資料に載せられるレベルまで育てることです。

AIコーディングと並列処理を武器に、開発スピードと品質の両立を実現し、プロダクトのエッジをさらに尖らせていきます。

組織全体でのAI駆動開発の推進

また、これらの取り組みは私個人に留まらず、開発組織全体でもAI駆動開発を推進しています。毎日のように新しい取り組みが生まれており、メンバー間でのナレッジ共有が活発に行われています。

現在、「LLM Week」という組織全体でコードやドキュメントをすべてAIに書かせる取り組みを実施しており、組織全体のAI活用レベル向上を目指しています。Claude Codeだけでなく、CodeRabbit(AI コードレビュー)、GitHub Copilot、Notion AI、Figma Code Connectなど、様々なAIツールを組み合わせて開発プロセス全体を最適化しています。

今後の展望と読者へのメッセージ

PMF達成後の成長フェーズでは、一人ひとりがより高い生産性で価値を生み出すことが求められます。AIコーディングは、そんな時代の強力な武器になると確信しています。

重要なのは、AIに仕事を奪われるのではなく、AIを活用して自分の能力を拡張することです。私たちエンジニアの本質的な価値は、技術を使って事業課題を解決することにあります。

まとめ

本記事では、マネジャーからエンジニアへの転向という挑戦を通して、以下の取り組みをご紹介しました。

  • Claude Codeを活用したAIコーディングによる開発効率化
  • Container環境を使った並列処理による業務の両立
  • 実際の成果として直近AI変更割合82.3%を達成

Contract Oneの成長と共に、私自身もエンジニアとして新たな挑戦を続けていきます。同じようにキャリアの転換点にいる方、AIコーディングに興味のある方、ぜひ一緒にこの成長の旅を楽しみましょう。


Contract Oneで一緒に働きませんか
PMF 達成後のグロースフェーズで、あなたの力を発揮してください。

open.talentio.com

カジュアル面談
Search
mini
注目記事

© Sansan, Inc.

引用をストックしました

引用するにはまずログインしてください

引用をストックできませんでした。再度お試しください

限定公開記事のため引用できません。

読者です読者をやめる読者になる読者になる

[8]ページ先頭

©2009-2025 Movatter.jp