
Claude Codeで「成長するAI秘書」を作ってみた 〜事業企画の仕事をオーケストレーションで回す〜
こんにちは。リテールアプリ共創部で事業企画を担当しているかめだです。
過去2本、「AIにチームで考えさせる」「企画業務をAI化した記録」という記事を書いてきました。今回はその延長線上の話です。
AIは「今この瞬間の答え」は出せても、「昨日の失敗を踏まえた答え」は出せない。この問題を解決するために、Claude Codeのサブスクリプション範囲内(Claude Codeの月額固定)だけで、失敗から学んで自分で賢くなっていくAI秘書「Nina」を作りました。
1. 事業企画という仕事の問題
私の仕事を一言で表すと「仮説を作って、ぶつける相手を見つけて、検証して、サービスにする」です。インプット → 仮説ストック化 → 顧客マッチング → 提案アクション。この4フェーズを一人で回しています。
問題は、情報収集に追われて「考える時間」がどんどん削れていくことです。朝ニュースを読んで仮説を思いつく。企業調査を始める。途中でSlackに問い合わせが来て午前が終わる。午後に提案書を書こうとしたら、朝読んだ記事の内容をもう忘れている。
情報収集・仮説の素案・提案書の下書きまでを誰かに任せて、自分は「判断と関係構築」に集中したい。でもそれを頼めるチームメンバーはいない。だからAIに任せようと思いました。
2. OpenClawからClaude Codeへ
最初に試したのは、AIエージェントオーケストレーションツール「OpenClaw」でした。複数のAIにそれぞれ役割を与えてチームとして動かす仕組みです。5日間試したところ、動くことは確認できました。
しかし運用は大変です。自分でサーバーを用意してツールを設定する必要がある。設定を変えるたびにJSONを手で直す。非エンジニアの私には「動かし続けること」自体のコストが高すぎました。
そこで、普段使っているClaude Codeで同じことができないかと考えました。
OpenClawで学んだチーム設計のコンセプトを、Claude Code単体のサブスクリプション範囲内で実現できるのでは?
3. Claude Codeの機能
Claude Code サブスクリプションは月額固定でClaude Codeが使い放題になるプランです。(もちろん5時間制限などはありますが)API従量課金が不要なので、エージェントを何回動かしてもコストが変動しません。
Claude Codeには以下の機能があります。
| 機能 | 役割 |
|---|---|
| CLAUDE.md | AIのアイデンティティ、判断基準、ワークフローを定義するファイル |
| agents/ | 専門エージェントの定義。役割・ツール権限・行動方針を設定 |
| skills/ | 繰り返し実行するワークフローの定義 |
| hooks/ | 特定イベント(セッション開始・終了等)で自動実行されるスクリプト |
| memory/ | セッションをまたいで保持する記憶・学習内容 |
これらを駆使して、Ninaのプロジェクトのフォルダ構成は以下の通り設計しました。
ai-nina/
├── .claude/
│ ├── CLAUDE.md ← Ninaの人格・判断基準・学習プロトコル
│ ├── agents/
│ │ ├── researcher.md ← 情報収集エージェント(Sonnet)
│ │ ├── writer.md ← コンテンツ作成エージェント(Sonnet)
│ │ └── reporter.md ← 日報・レポートエージェント(Haiku)
│ ├── skills/
│ │ ├── morning-news/SKILL.md ← 朝のニュース収集+仮説生成
│ │ └── nina-daily-report/SKILL.md ← 日報+成長記録更新
│ ├── hooks/
│ │ ├── guard-dangerous-bash.sh ← 危険コマンド・資格情報ブロック
│ │ ├── log-action.sh ← 全ツール実行ログ
│ │ └── session-end-log.sh ← セッション終了マーカー
│ ├── memory/
│ │ ├── nina-level.md ← スキルレベル・判断パターン・業界パターン
│ │ ├── boss-patterns.md ← 上司の修正指示パターン
│ │ └── guardrails.md ← 失敗から生まれたルール
│ └── rules/
│ └── domain-knowledge.md ← 事業企画の業務コンテキスト
├── hypotheses/ ← 仮説ストック
├── logs/ ← 実行ログ・セッションサマリー
│ └── nightshift/ ← 夜間自律運転ログ
├── outputs/ ← 成果物
│ ├── news/ ← 朝のニュース収集結果
│ ├── research/ ← 調査レポート
│ ├── drafts/ ← ブログ・提案書の下書き
│ └── reports/ ← 日報・週報
├── tasks/ ← タスク管理・夜間キュー
├── nina-nightshift.sh ← 夜間自律運転スクリプト
└── nina-tmux.sh ← tmux可視化スクリプト
4. やったこと① Ninaの人格・チーム・運用を設計した
CLAUDE.mdで人格を定義する
CLAUDE.mdに以下を書きました。
You are Nina, AI secretary for kamedas,
business planner at Classmethod's Retail App Co-creation Division.
kamedas's job: "仮説を作って、ぶつける相手を見つけて、検証して、サービスにする"
この定義で、Ninaは上司が誰で、上司の仕事が何かを知った状態で動きます。加えて判断の優先順位(安全性 > 倫理 > ルール遵守 > 有用性)、アクセスできるディレクトリ範囲、タスクの分類ロジックを定義しました。
3つのサブエージェントを編成する
Ninaは自分では作業をせず、タスクを3つのサブエージェントに委託するオーケストレーターとして設計しました。
| エージェント | 役割 | モデル |
|---|---|---|
researcher |
情報収集、競合分析、企業調査。growthpack MCPで製品情報を取得 | Sonnet |
writer |
ブログ記事、提案書、ホワイトペーパーの作成 | Sonnet |
reporter |
日報、週次レポート、状態サマリー | Haiku |
researcherにはWeb検索・MCP連携のツール権限、writerにはファイル書き込み権限、reporterにはログ読み取り権限をそれぞれ付与しています。reporterはコストを抑えるためにHaikuモデルを使っています。
日中の運用は、私が指示してNinaが動く
日中はClaude Codeのセッションで私がNinaに指示を出します。「この企業を調査して」「この仮説でブログの下書きを書いて」といった依頼に対して、Ninaがresearcherやwriterに委託して結果を返す。私は結果を確認して判断する、という流れです。
よく使うワークフローは「スキル」として定義しました。
/morning-news— 業界ニュース3本を検索し、仮説を生成してストックに追加/nina-daily-report— ログを分析し、日報を作成、スキルレベルやガードレールを更新
/morning-newsを実行すると、researcherエージェントが3つの検索クエリでニュースを収集し、各記事からGrowth Pack for LINEに関連する仮説を生成し、ファイルに保存します。
夜間の運用はシェルスクリプトで自律稼働
夜間はnina-nightshift.shというシェルスクリプトで自律運転します。連続でセッションを起動するとAPIレート制限に引っかかるリスクがあると考え、タスク間に10分の間隔を入れています。
INTERVAL=600 # タスク間の休憩(秒)= 10分
MAX_RUNS=20 # 1晩の最大実行回数(レート制限保護)
動作の仕組みはこうです。
結果
日中は私の指示ベースで動き、夜間はGitHub Issueを自動消化する体制ができました。
大変だったこと
夜間自律運転にはMacBookのスリープ制御が必要でした。caffeinate -i -w $$で、スクリプト実行中だけアイドルスリープを防止し、終了後は自動解除される設定にしました。
Claude Code Maxには5時間のローリングウィンドウによるレート制限があります。朝から仕事で使えるように、夜中1時起動・6時前完了のスケジュールにしました。
5. やったこと② 「成長する仕組み」を入れた
レベルシステムの再設計
OpenClawのPoCでは「ニュース投稿3回連続成功 → レベルアップ」という成長モデルを使っていました。これをClaude Codeに移植しようとして、Claudeに相談したところ「今のレベルシステムでは事業企画の秘書として成長しない」と返ってきました。
ニュースを3回正しく投稿できたかどうかは「作業の正確性」であって、「仮説の質」や「提案の精度」とは関係がありません。
| OpenClawのレベル(作業の正確性) | 本来測るべき成長(判断の質) |
|---|---|
| ニュース3本投稿できた? | 仮説の打率 — 上司が「使える」と言った割合 |
| 日報のフォーマット正しい? | 業界理解 — 適切な企業×課題×機能をマッチできるか |
| ファイル保存できた? | 提案の精度 — 下書きの修正回数が減っているか |
そこでレベルの測定対象を「作業の正確性」から「業務別の判断の質」に再設計しました。「仮説生成」「企業調査」「ブログ下書き」など業務ごとにスキルレベルを分けて追跡し、3回連続で上司が「修正不要」と判断したら昇格する仕組みです。
5トリガーの学習プロトコルを設計した
レベルの再設計に加えて、CLAUDE.mdに「Learning Protocol」として5つのトリガーを定義しました。
| トリガー | 発火条件 | 記録先 |
|---|---|---|
| 上司フィードバック | 承認・修正・却下時 | nina-level.md, boss-patterns.md |
| 判断を変える発見 | 調査中に重要な事実を発見 | logs/learnings-YYYY-MM-DD.jsonl |
| 失敗→ガードレール | 失敗発生時 | guardrails.md |
| 業界パターン抽出 | 同業種3社以上を調査した時 | nina-level.md「業界パターン」 |
| 仮説の結果記録 | 仮説が使われた/使われなかった時 | hypotheses/tracker.md |
トリガー1〜3は防御的な学習(同じ失敗を繰り返さない)、トリガー4〜5は攻撃的な学習(パターンを見つけて次の提案に活かす)です。
たとえば上司フィードバック(トリガー1)では、私が承認したらnina-level.mdの「良い成果物の基準」に何が良かったかを記録し、修正指示を出したらboss-patterns.mdに追記します。次のセッションからNinaはこれらを参照して動きます。
## 上司の判断パターン
| 日付 | 状況 | ニナの提案 | 上司の判断 | 学び |
|------|------|-----------|-----------|------|
| 03-31 | エージェント構成 | Skill自作で頑張る | 却下→Agent委託方式 | ニナは作業者ではなくオーケストレーター |
| 03-31 | タスク完了時 | 「進めますか?」と確認 | 却下 | 自明な次ステップで確認しない |
| 03-31 | コンテンツのトーン | 軽めの語り口 | 修正指示 | 事業企画者の重み・判断根拠を含める |
ガードレールの自動蓄積
失敗が起きるとguardrails.mdに自動記録されます。現時点で4つのガードレールがあり、「事実確認の徹底」「成果物の実在確認」「進捗の定期報告」「機密情報のマスク処理」。全て運用中に起きたインシデントへの対策で、事前に想定して書いたものはありません。ガードレール追加後、同じカテゴリの失敗は再発していません。
結果:Observe → Learn → Improve のループ
セッション中に5つのトリガーに基づいてメモリファイルを即時更新し、次のセッションでNinaがそれを参照して判断する。夜間の学習セッションでは、各Issueの調査で得た発見ログをメモリに転記し、業界パターンとして昇格させます。
大変だったこと
hooksの設計に試行錯誤がありました。最初はセッション終了時(Stop hook)にAIが学習処理を実行する設計にしようとしましたが、hookにはcommand型・prompt型・agent型があり、それぞれできることが違います。prompt型はファイル操作ができず、agent型はセッション終了後にさらにAIを動かすためコストがかかる。
最終的に採用したのは、学習記録はセッション中にNinaが即時実行する設計です。CLAUDE.mdのLearning Protocolに「フィードバックを受けたら次のアクションに移る前に書く」と定義し、hookは command 型のシェルスクリプト3つに絞りました。
- PreToolUse — 危険なBashコマンド(
rm -rf等)と資格情報の露出をブロック - PostToolUse — 全ツール実行をログに1行記録
- Stop — セッション終了マーカーをログに書き込み
Claude Codeのhookには command 型と agent 型の2種類があります。agent 型はセッション終了後にさらにAIを起動するためコストがかかる。hookをシンプルな command 型に保ち、学習のロジックはCLAUDE.mdに集約する設計にしました。
6. 結果
事業企画の仕事で変わったことは3点です。
1. 情報収集の工程がなくなった
/morning-newsでresearcherが3本のニュースと仮説候補を用意します。私がやるのは「使える/使えない」の判断だけです。従来30〜60分かかっていた情報収集の工程がなくなりました。
2. 提案書をゼロから書かなくなった
企業調査 → 課題仮説 → 構成案 → ドラフト。このフローをNinaに指示して、researcherとwriterに委託させ、私はドラフトの修正・加筆をする形に変わりました。
3. 同じミスの再発がなくなった
ガードレール追加後、同じカテゴリの失敗は再発していません。ガードレールに書かれたルールをNinaは必ず守ります。
一方で、仮説の質は「使える」と判断できるものがまだ半分程度です。3つのガードレールと6つの判断パターンしかない現状では当然の結果です。フィードバックの蓄積とともに精度は上がっていく設計なので、運用を続けながら改善していきます。
7. まとめ
Ninaの開発でやったことは、CLAUDE.mdで人格を定義し、3つのサブエージェントを編成し、日中は指示ベース・夜間はシェルスクリプトで自律稼働する運用を組み、5トリガーの学習プロトコルで成長ループを実装した、という4つです。
振り返ると、やっていることは新人育成と同じでした。役割を明確にして、専門知識を渡して、失敗したらフィードバックして、成功パターンを記録して、次に活かす。AIは一度記録したことを忘れないので、フィードバックが蓄積するほど判断の精度が上がります。
コードが書けなくても、Claude Code Maxのサブスクリプション範囲内で、設定ファイル(MarkdownとJSON)だけで「成長するAI秘書」は構築できます。事業企画に限らず、情報収集と仮説構築を繰り返す仕事なら同じアプローチが使えるはずです。
最初から完璧に設計する必要はありません。Ninaも最初はレベルシステムという間違った設計から始まりました。失敗して、学んで、作り直す。そのプロセスをAIにも組み込んだことが、今回の一番の成果だと考えています。
では、おつかめ!







