🌞

Claude Codeサブエージェントを使った、多角的なエントランスブックレビューの試み

に公開

こんにちは、ハコベル開発チームの@akgwです。この記事は「Hacobell Developers Advent Calendar」15日目の記事です。

ハコベルでは2025年、採用活動の一環として初めてエンジニア向けエントランスブックを作成・公開しました。
https://note.com/hacobell/n/n80517b08ec22

エントランスブックとは

採用候補者向けに会社の技術スタック、開発文化、チーム体制、事業内容などをまとめたドキュメントです。採用のミスマッチを減らし、面談等でより質の高い対話を実現することを目的としています。

また、投稿当時の採用ポジションを掲載していますので、最新の募集状況については是非直接お問い合わせください。
https://hrmos.co/pages/hacobell/jobs?category=1796496597040508928

ハコベルのエントランスブックでは、Notionを利用しています。初版のエントランスブックを公開後、社内外からフィードバックをいただく中で、いくつかの課題が見えてきました。

課題と打ち手

1. 候補者の理解度・関心度による情報ニーズの違い

採用候補者は一人ひとり背景が異なります

  • 経験豊富なシニアエンジニアは、技術的なチャレンジやアーキテクチャの意思決定プロセスを重視
  • 若手エンジニアは、成長機会や学習支援制度に関心が高い
  • ワークライフバランスを重視する候補者は、働き方の柔軟性や福利厚生に注目
  • 選考ステップがカジュアル面談時と最終面接時で知りたい情報の優先度が変わる

このように、候補者の状況によって「エントランスブックで知りたいこと」は大きく異なります。しかし、一つのドキュメントですべての候補者の期待に応えることは困難でした。

2. 伝えたい情報の分散と優先順位付け

ハコベル側としても、伝えたいメッセージは多岐にわたります:

  • 物流業界の社会的意義
  • 技術的なチャレンジの魅力
  • チーム文化と働き方
  • キャリア成長の機会
  • 待遇と福利厚生

これらをどのような順序で、どの程度の分量で記載すべきか、また読みやすさとのバランスをどう取るかが難しい問題でした。

3. Claude Codeのサブエージェントによる解決アプローチ

このような「多様な視点からの評価が必要だが、人手では難しい」という課題に対して、私たちはClaude Code(Anthropic社のClaude CLI)のサブエージェント機能を活用することにしました。
この仕組みにより、人間では困難な「複数の異なる視点からの同時評価」を実現し、エントランスブックの改善に活かすことができたので紹介していきます。

アプローチ手順

今回構築したシステムのディレクトリ構成を紹介します:

entrancebook-review/
├── .claude/
│   └── commands/
│       └── review-all-candidates.md    # 全ペルソナ並行レビューコマンド
├── personas/                            # 候補者ペルソナ定義
│   ├── candidate-tanaka.md             # 田中太郎:社会的インパクト重視
│   ├── candidate-yamada.md             # 山田次郎:技術的チャレンジ重視
│   ├── candidate-suzuki.md             # 鈴木花子:ワークライフバランス重視
│   ├── candidate-sato.md               # 佐藤健:キャリアパス重視
│   ├── candidate-watanabe.md           # 渡辺美咲:待遇・安定性重視
│   ├── candidate-nakamura.md           # 中村大輔:組織文化重視
│   └── candidate-lee.md                # 李明:グローバルキャリア重視
├── reviewed/                            # レビュー結果の保存先
│   ├── tanaka-evaluation-20251207.md
│   ├── yamada-evaluation-20251207.md
│   └── ...
├── evaluation-criteria.md               # 評価基準の定義
└── .claude.md                           # Claude Code設定

このシステムは以下の3つのステップで動作します:

  1. ペルソナの作成 - ハコベルの求人情報から想定される多様な候補者ペルソナを定義
  2. Claude サブエージェントによる並行評価 - 各ペルソナの視点でエントランスブックを独立して評価
  3. フィードバックの分析と改善 - 得られた評価をもとにエントランスブックを改善

それでは、各ステップを詳しく見ていきましょう。

1. ペルソナの作成

ハコベルの求人情報から候補者ペルソナを作成

エントランスブックを多角的に評価するために、まず「どのような候補者が応募してくるか」を具体的にイメージする必要がありました。ハコベルの公開求人情報(募集要項)を参考に、以下のような多様な候補者ペルソナを作成しました:

ペルソナの設計方針

各ペルソナは、以下のような詳細なプロフィールとしてMarkdownファイルで定義しています

# 採用候補者エージェント
## 基本情報
## キャリア経歴
### 現職
## 技術スキル詳細
### 得意な領域
## パーソナリティと価値観
### 仕事に対する価値観
## エントランスブック評価基準(100点満点)
### 1. 社会的インパクト(xx点)
### 2. 技術的魅力度(xx点)
### 3. 組織文化・働き方(xx点)
### 4. キャリアパス(xx点)
### 5. 待遇・条件(xx点)
田中太郎のプロフィールサンプル

採用候補者エージェント: 田中太郎

基本情報

  • 氏名: 田中太郎
  • 年齢: 30歳
  • 現職: 中規模SaaS企業(従業員200名)のバックエンドエンジニア
  • 役職: シニアエンジニア(5年目)
  • 経験年数: 7年(Web系企業2社経験)
  • 学歴: 早稲田大学 基幹理工学部 情報工学科卒
  • 居住地: 東京都世田谷区
  • 家族: 既婚、子供1人(3歳)

キャリア経歴

現職: 株式会社クラウドワーキング(仮名)2019年4月〜現在

シニアバックエンドエンジニア

  • BtoB SaaSプロダクトの開発・運用
  • MAU 10万人規模のサービス基盤開発
  • 決済システムのリニューアルプロジェクトをリード
  • 新卒エンジニアのメンター(3名指導)

主な実績:

  • APIレスポンスタイムを平均200ms→50msに改善
  • 決済システムの可用性を99.9%→99.99%に向上
  • Railsアップグレードプロジェクトをリード(5.2→7.0)

前職: 株式会社ウェブスタート(仮名)2017年4月〜2019年3月

ジュニアエンジニア → ミドルエンジニア

  • ECサイトの開発・運用
  • 在庫管理システムの構築
  • フロントエンド開発も担当

技術スキル詳細

得意な領域

# バックエンド開発が最も得意
class TanakaSkills
  PRIMARY_SKILLS = {
    backend: {
      ruby: { years: 5, level: "Expert", version: "3.2" },
      rails: { years: 5, level: "Expert", version: "7.0" },
      rspec: { years: 4, level: "Advanced", tdd: true }
    },
    database: {
      postgresql: { years: 5, level: "Advanced" },
      mysql: { years: 3, level: "Intermediate" },
      redis: { years: 3, level: "Intermediate", usage: "Cache, Queue" }
    }
  }

  SECONDARY_SKILLS = {
    frontend: {
      javascript: { years: 3, level: "Intermediate" },
      typescript: { years: 1, level: "Beginner" },
      vue: { years: 2, level: "Intermediate", version: "2.x" }
    },
    infrastructure: {
      aws: {
        years: 3,
        services: ["EC2", "RDS", "S3", "CloudFront", "Lambda"],
        certification: "SAA (2022年取得)"
      },
      docker: { years: 3, level: "Intermediate" },
      terraform: { years: 1, level: "Beginner" }
    }
  }
end

パーソナリティと価値観

性格特性

  • 強み: 論理的思考、責任感、チームワーク重視
  • MBTI: ISTJ(実務家タイプ)
  • コミュニケーション: 丁寧で誠実、技術的な議論を好む
  • 学習スタイル: ハンズオンで実践しながら学ぶ

仕事に対する価値観

1. **社会的インパクト**
   - コードを書くだけでなく、社会に価値を提供したい
   - 自分の仕事が誰かの課題を解決していることを実感したい

2. **技術的成長**
   - 新しい技術への挑戦機会を重視
   - 優秀なエンジニアから学びたい

3. **ワークライフバランス**
   - 家族との時間も大切にしたい
   - 効率的に成果を出すことを重視

エントランスブック評価基準(100点満点)

田中太郎の価値観に基づく評価項目と配点:

1. 社会的インパクト(35点)

最重要項目 - 転職の最大の動機が「社会に価値を提供したい」

  • 物流業界への貢献度
  • 社会課題解決への寄与
  • 事業の将来性と成長性
  • 自分の仕事の社会的意義の実感

2. 技術的魅力度(25点)

重要項目 - 技術的成長と新しい挑戦を求めている

  • Ruby/Rails開発の機会の豊富さ
  • 技術的チャレンジの大きさ
  • スキル向上の可能性
  • 最新技術への触れる機会
  • アーキテクチャレベルの改善への参画

3. 組織文化・働き方(20点)

重要項目 - チームワーク重視、家族との時間も大切

  • チーム開発の充実度
  • ペアプロ・モブプロの文化
  • ワークライフバランス(週2出社、フレックス)
  • 心理的安全性
  • 学習する組織文化

4. キャリアパス(10点)

標準項目 - 着実な成長を望むが、極端な野心はない

  • メンタリング経験を活かせるか
  • Tech Lead/EMへの道
  • スキルの幅を広げられるか
  • 長期的なキャリア形成の見通し

5. 待遇・条件(10点)

標準項目 - 家族を支えられる水準であれば満足

  • 給与水準の妥当性(現職750万→希望800万)
  • 福利厚生の充実度(特に育児支援)
  • 技術書購入支援等の学習支援
  • 副業(OSS活動)の可否

ポイントとしては各ペルソナごとにエントランスブックの評価基準(配点)が異なるという点です。このペルソナファイル自体もClaudeに作成してもらいます。

──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
>  エントランスブックを多角的にレビューするために、様々な価値観やキャリアのペルソナを作成したいです。ハコベルの募集要項を読み込んだ後、テンプレートに沿って./personas配下にペルソナファイルを配置してください。
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────

2. サブエージェントの並列呼び出しによる同時評価

ペルソナを作成したら、次はClaude Codeのカスタムslash commandを使って、各ペルソナの視点でエントランスブックを評価する仕組みを構築します。

カスタムslash commandとは

Claude Codeでは、.claude/commands/ ディレクトリにMarkdownファイルを配置することで、独自のslash commandを定義できます。これにより、繰り返し実行するタスクをコマンド化し、効率的に作業を進められます。

ペルソナの数が増えると加速的に評価時間が伸びるため、今回は全候補者ペルソナで並行評価を実行する /review-all-candidates コマンドを作成しました。

Notion MCPの設定

エントランスブックはNotionで管理しているため、Claude CodeからNotionのコンテンツを取得できるようにする必要があります。これはMCP(Model Context Protocol) というAnthropicが提供する標準プロトコルを使って実現しました

MCPとは

Anthropicが提供する、AIモデルが外部システム(Notion、GitHub、データベースなど)とやり取りするための標準プロトコルです。MCPサーバーを介して、Claudeが様々な外部サービスのデータにアクセスできるようになります。
Notion MCPの設定は、claude_desktop_config.json に以下のように記述します:

{
  "mcpServers": {
    "notion": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-notion"
      ],
      "env": {
        "NOTION_API_KEY": "your-notion-integration-token"
      }
    }
  }
}

これにより、Claude Codeから mcp__notion__notion-fetch ツールを使ってNotionのページを取得できるようになります。

レビューコマンドの実装

複数のペルソナで同時に評価を実行するため、Claude Codeのサブエージェント機能 を使って並行起動します。

.claude/commands/review-all-candidates.md の実装:

---
description: 全候補者のエントランスブックを並列評価
---

# 全候補者のエントランスブックを並列評価

## 概要
personasディレクトリ内の全候補者ペルソナファイルを読み込み、
サブエージェントを使って並列で評価を実行します。

## 制約事項
**重要**: 各サブエージェントは他の候補者の情報を一切参照しません。
完全に独立したコンテキストで評価を実施します。

## 実行手順

1. **全ペルソナファイルを取得**
   - ./personas/*.md のファイル一覧を取得

2. **各候補者ごとにサブエージェントを並列起動**
   - 各サブエージェントに以下のタスクを実行させる:
     - ペルソナファイルを読み込む
     - Notion ID: xxxxxxxxxxxxxxxxxxxx のエントランスブックを取得
     - ./evaluation-criteria.md を読み込む
     - ペルソナファイルの独自配点に従って100点満点で評価
     - ./reviewed/[候補者名]-evaluation-[timestamp].md に結果を保存

3. **全評価結果をまとめる**
   - 各サブエージェントの評価結果を収集
   - 総合評価点数でランキング化
   - 選考意向(◎/○/△/×)別に分類

実行例:

/review-all-candidates

サブエージェント並列呼び出しの動作イメージ

Claude Codeのサブエージェント機能を使うと、以下のように7つのサブエージェントが並行して動作します:

メインエージェント
    │
    ├─→ サブエージェント1(田中太郎)
    │    ├ ペルソナ読み込み
    │    ├ Notion取得
    │    ├ 評価実施
    │    └ レポート保存
    │
    ├─→ サブエージェント2(山田次郎)
    │    ├ ペルソナ読み込み
    │    ├ Notion取得
    │    ├ 評価実施
    │    └ レポート保存
    │
    ├─→ サブエージェント3(鈴木花子)
    │    ...
    │
    └─→ サブエージェント7(李明)
         ...

各サブエージェントは完全に独立したコンテキストで動作するため、他のペルソナの評価結果に影響されることなく、純粋にそのペルソナの視点からエントランスブックを評価できます。

3. フィードバックの分析と改善

結果は全体評価と、個人評価にわけて出力されます。ちなみに今回は志向性が大きく外れているタイプも意図的にペルソナとして追加しています。

順位 候補者 総合評価 選考意向 主な特徴
🥇 1位 田中太郎 79/100点 ○ 前向きに検討 社会貢献重視、家族持ち、Ruby/Rails経験者
🥈 2位 佐藤健 78/100点 ○ 前向きに検討 成長意欲高、フルスタック、チーム開発志向
3位 山田次郎 58/100点 △ 保留 VPoE/CTO志向、技術深度重視、キャリアパス不明
4位 李明 52/100点 △ 保留 Google出身、技術卓越性重視、D&I懸念
5位 鈴木花子 52/100点 △ 保留 安定志向、妊娠中、待遇条件不明で判断不可
6位 中村大輔 38/100点 × 辞退 自信不足、手取り足取り希望、カルチャーミスマッチ
7位 渡辺美咲 28/100点 × 辞退 技術オタク、協調性ゼロ、完全ミスマッチ

⚠️ 候補者から指摘されたエントランスブックの改善点

  1. 待遇情報の透明化(最多指摘)
    - 給与レンジの明記
    - ストックオプションの条件
    - 昇給制度の説明
  2. キャリアパスの具体化
    - Tech Lead/EM/VPoEへの道筋
    - 評価制度の透明性
    - 昇進基準の明確化
  3. 技術的深さの詳細化
    - 配車最適化アルゴリズムの具体例
    - SRE/Observabilityの取り組み
    - 技術的負債への対応状況
  4. 多様性への配慮
    - 女性エンジニアの活躍事例
    - 育児中メンバーの働き方実例
    - D&Iへの取り組み

改善提案の実装における制約

ペルソナから得られた改善提案は非常に有益ですが、すべてをそのままエントランスブックに反映できるわけではありません。例えば、ストックオプションの詳細条件や配車最適化アルゴリズムの内部実装(競合優位性の観点)といった開示できない情報や、技術的負債の対応状況(継続的に改善中)や開発中の機能といった変動の大きい情報は、エントランスブックに記載すると更新頻度が上がりすぎてメンテナンスが困難になります。

また、ダイバーシティへの取り組み、SRE領域の取り組みなど現時点で実例がないものを記載できないのは仕方ありません。一方で、評価制度や女性エンジニアの活躍事例など、実際には取り組んでいるのにエントランスブックに記載されていなかったことが、今回のレビューを通じて気づきとして大きく得られました。

今回あえて多くのペルソナのパターンを配置しました。すべての意見を取り入れるよりも採用ポジションごとにマッチ度の高そうなペルソナの意見を優先的に修正していくのが望ましいと考えています。

まとめ

今回の記事では、Claude Codeのサブエージェント機能を使ったエントランスブックのレビューに焦点を当ててご紹介しました。

実は、エントランスブック自体の執筆にもAIを活用しています。ただし、会社のビジョンやチームへの熱い思いといった部分は人間が書くことにこだわっています。AIは優れたツールですが、メンバーの想いは、やはり人間の言葉で伝えるべきだと考えているからです。

このレビューを通じて、候補者がよりハコベルの魅力に気づきやすくなり、採用のミスマッチが減ることを願っています。エントランスブックは今後も継続的に更新していく予定ですので、ハコベルに興味を持っていただいた方は、ぜひこまめにチェックしてみてください。

https://complete-justice-8bb.notion.site/hacobell-engineer-entrancebook

最後までお読みいただき、ありがとうございました!

Hacobell Developers Blog

Discussion