Claude Codeで議事録管理ツールを作ってみた。一人では動いた、チームでは別の話だった。

AIで議事録を作ること自体は、もはや珍しいことではありません。
ChatGPTでもClaudeでもGeminiでも、会議の文字起こしを貼り付ければ、それなりの要約を返してくれます。
では、そこからもう一歩踏み込んだらどうなるでしょうか。
単に「議事録を作る」だけでなく、「議事録を管理し、過去の会議をいつでも呼び出せる仕組み」をClaude Codeで自作したら何が起きるか。
実際に作ってみました。動かしてみました。そして、いくつかの重要な事実に気がつきました。
この記事は、その試行錯誤の記録です。
まず、何を作ったか
Claude Codeを使って、次のコンポーネントからなる議事録管理ツールを構築しました。
minutes-demo/
├── process.py ← 録音/テキスト → 議事録生成(音声はWhisper → Claude API、テキストはClaude APIへ直送)
├── server.py ← ブラウザ閲覧・全文検索・アップロード処理のAPIサーバー
├── viewer/index.html ← 議事録の一覧・閲覧・検索・アップロードUI
└── minutes/ ← 生成された議事録の保存先
それぞれの役割を順に解説していきます。
1. 録音ファイルをアップロードするだけで議事録が完成する
ヘッダーの「+ 新しい議事録」ボタンを押して録音・録画ファイル、または文字起こしテキストファイルを選ぶ。それだけです。
ファイルを選ぶと処理が走り、画面中央にステータスが表示されます。
実行されていることは、
-
録音ファイルをサーバーに送信
-
内部でWhisperが起動し、音声を日本語テキストに変換
-
テキストをClaude APIに渡し、構造化された議事録を生成・保存
-
処理完了後、サイドバーに自動追加されて議事録が開く
ターミナルは一切使いません。対応フォーマットはmp3 / mp4 / m4a / wavなど主要な音声・動画形式で、ZoomやTeamsの録音ファイルをそのまま渡せます。
Whisperについて OpenAIが公開している無料・オープンソースの音声認識モデルです。ローカルで動作するため、録音データが外部サービスに送信されません。「base」モデルでも日本語の認識精度は実用レベルです。初回のみモデルファイルをダウンロードします(約150MB)。
インストール: pip install openai-whisper
処理が完了すると、サイドバーに議事録が追加され、自動で開きます。タイトル・日付・出席者・概要・決定事項・ToDo(担当者と期限付き)・補足が一度の処理で整います。
内部的にはMarkdownファイルとして保存していますが、ユーザーが直接触ることはありません。またWhisperが起こした文字起こしテキスト(逐語記録)は処理後に破棄されます。PCの容量圧迫を防ぐためです。そのため、UIから動画や文字起こしを参照する手段はなく、元の録音ファイルも削除してしまうと後から元情報を確認する方法がなくなります。これについては後半の「気づき」で触れます。
2. 過去の議事録を全文検索する
ファイルが蓄積されていけば、当然「過去のあの発言を掘り起こしたい」というニーズが出てきます。
ビューワーの検索バーにキーワードを入力するだけで、全議事録ファイルを横断して全文検索できます。コマンドを覚える必要はありません。
検索結果はサイドバーに一覧表示され、マッチした箇所のスニペット(抜粋)が黄色くハイライトされます。クリックすると議事録が開き、本文中のキーワードも自動でハイライト表示されます。
バックエンドでは server.py に追加した /api/search エンドポイントが処理を担います。minutes/ フォルダ内のすべての .md ファイルを走査し、マッチした行とその文脈をJSONで返します。
3. server.py + viewer/index.html ― すべてブラウザで完結させる
コマンドラインとブラウザを行き来するのは手間です。そこで、録音ファイルのアップロードから議事録の閲覧・検索まで、すべてブラウザ上で完結する仕組みに育てました。
python server.py
# → http://localhost:3461 をブラウザで開く
ブラウザを開くと、左サイドバーに議事録一覧が並びます。ヘッダーの「+ 新しい議事録」ボタンを押してファイルを選ぶだけで、あとは自動です。
-
ファイルをサーバーに送信
-
Whisperが文字起こし(音声ファイルの場合)
-
Claude APIが議事録を生成・保存
-
サイドバーに追加され、自動で開く
ターミナルを一切触らずに議事録が生成される。この状態まで作り込めました。
ここまでの所感
録音ファイルをブラウザにアップロードするだけで、Whisperによる文字起こしとClaudeによる構造化が走り、議事録がサイドバーに追加される。この状態まで持ってこられました。ターミナルを一切使わず、ブラウザだけで完結します。
「自作で作れる」という話は、技術的には間違いなく本当でした。
しかし、動かしながら気づいたことがあります。
気づき1. 処理は毎回「手動」で回す必要がある
このツールが動くのは、あくまで自分がファイルを用意してアップロードしたときだけです。
-
会議が終われば、録音データを取り出す。
-
ブラウザを開いてアップロードする。
-
処理が終わるまで待つ。
-
出来上がった議事録に目を通す。
週に1回の定例会議だけなら、これでも回せるでしょう。しかし、会議が日に数本、週に10本と増えてくれば、この「毎回のワークフロー」を自分の手で回し続けることが大きな負担になってきます。
「自動化すればいいのでは?」と思われるかもしれません。もちろん可能です。しかしそれは、また「管理すべき別のツール」を増やすことを意味します。作れるものが増える分だけ、自分が世話しなければならないコードも増えていくのです。
気づき2. ファイルの命名規則と保存設計は「自分」で決めきらねばならない
生成されたファイルは 2026-04-23_週次プロダクト定例.md という名前で保存されます。このルールは、私が設計し、コードに書いたものです。
日付を先頭にするのか、末尾にするのか。案件ごとにフォルダを分けるのか、会議種別で分類するのか。これは単なるネーミングの問題ではありません。後になって「A案件の会議だけを抽出したい」というニーズが芽生えたとき、この初期設計がすべてを左右します。途中でルールを変えようとすれば、既存の全ファイルをリネームするスクリプトを書く必要が出てきます。
気づき3. 「複数会議の横断」が必要になった瞬間に設計コストが跳ね上がる
運用しているうちに、もっと欲張りな需要が湧いてきます。
-
「A案件について、今月行われた3回分の会議の決定事項だけを一気に確認したい」
-
「山田さんに割り振られたToDoだけを、全会議ファイルから抜き出してリスト化したい」
これらは、単純な全文検索では対応不可能です。ロジックを一つ追加するたびに、次の大きな課題が顔を出します。これは「技術的に作れるか」ではなく、「持続的に作り続けられるか」という問いなのです。
気づき4. 文字起こしの原文が残らない
Whisperが起こした逐語テキストは、処理が終わると消えます。保存されるのは構造化された議事録だけです。
これは設計として間違いではありません。ただ、「あの発言を一字一句確認したい」という場面が来たとき、元の録音ファイルを消してしまっていたら再現できません。文字起こしテキストを別途保存するかどうかは、最初に決めておくべき設計判断のひとつです。
こうした「最初から決めておかないと後で困る」判断が、作り込むほど次々と出てくる。
UIで完結した。でも、これは自分のPCの話だった。
ブラウザからファイルをアップロードして議事録が生成される。ターミナルを触らなくていい。この体験は確かに完成しています。
ただ、このサーバーは自分のPCで動いています。URLは localhost:3461、つまり自分のパソコンの中だけのアドレスです。チームメンバーのブラウザから開くことはできません。
「チーム全体で使おう」となった瞬間に、検討すべき事項が一気に膨れ上がります。
一人で動かす分には数時間で完成した。チームで使おうとした瞬間に、別の話が始まる。
🖥 インフラ
サーバーをどこに立てるか
誰が管理・維持するか
月々の費用は誰が負担するか
💾 データ設計
音声・動画も保管するか
文字起こしは誰がするか
何年分保持するか
🔒 セキュリティ
誰がアクセスできるか
会議ごとに閲覧制限するか
退職者の管理をどうするか
📋 運用ルール
処理担当者を決める
新メンバーへの説明
壊れたとき誰が直すか
これはもう「議事録ツールを作る」話ではなく、「プロダクトを開発・運用する」話になっている。
Parrotという選択肢について
ここで、会議管理ツール「Parrot」の存在に触れさせてください。
Parrotは会議を「動画+発話者別文字起こしテキスト」で管理するツールで、AIチャットを使った議事録作成や深掘りが可能です。
複数ファイルを横断したAIチャットも可能で、A社との今月の定例についてタスクをまとめたり、クライアントの温度感をAIに可視化させることもできます。
デスクトップアプリにはレコーディング機能も備わっており、会議の記録〜アップロード〜文字起こし〜議事録作成がParrotで一気通貫で完結します。
今回、Claude Codeで自力で構築・検討した要素と、Parrotの仕様を対比させると次のようになります。
|
自作で実装・検討が必要だったこと |
Parrotの仕様 |
|---|---|
|
文字起こしから議事録を生成する |
レコーディング・文字起こし・要約がシームレスに一体化 |
|
ToDoと決定事項を抽出する |
構造化されたサマリーをAIチャットで生成できる |
|
ファイルの命名規則と保存設計 |
「スペース」単位で最初から整理しやすい構造 |
|
ブラウザで閲覧できるUI |
ユーザーフレンドリーなWebアプリとして提供 |
|
過去会議の横断検索 |
AIチャットを通じて、過去の全ログに質問できる |
|
アクセス権限の管理 |
組織・スペースごとの権限管理がデフォルトで機能 |
最も本質的な違いは、「自分で設計し、決断し、維持し続けなければならないことが、Parrotには最初からほとんど存在しない」という点です。
あるとすればフォルダ設計くらいでしょうか。
Parrotはゴールに向けた設計図が、すでに完成しているのです。
最後に
Claude Codeを使えば、実用レベルの議事録管理ツールを自作することは十分に可能です。しかし、それはあくまで「個人運用の道具」としての話です。それをチームのインフラにしようとした瞬間に、技術以外の重たい課題が押し寄せます。
議事録をチームの資産として機能させ続けるために、どの領域を自分で世話し、どの領域をサービスに委ねるか。その判断こそが、ツール選びの真のスタートラインになります。
自作するなら、その後に続く運用のコストを覚悟して始めること。使い続けることを最優先するなら、最初から運用の思想が組み込まれたツールを選ぶこと。Parrotは、間違いなくその後者の有力な選択肢の一つです。
今すぐ試す!
まずは定例1本から。
初月の基本料金無料で始められます。
-
月5,000円から
-
初月の基本料金5,000円が無料!
-
まずは定例1件をアップロードしてみてください
※初月の基本料金は無料です。翌月以降の基本料金を発生させたくない場合は、当月末までに解約してください。
※月間合計5時間を超える動画の分析には、別途従量課金が発生します。
※法人プランもございます。お申込みはこちらから。
※ご不明な点はお問い合わせください。
※この記事で紹介したデモツールは、Claude Codeを使って実際に構築・動作確認を行ったものです。




