毎週の会議後に議事録作成で残業…そんな悩みをLaravelとOpenAI APIで解決した中小企業の実例を、コード付きで詳しく解説します。
「議事録、誰が書くの問題」に終止符を打てますか?
こんな悩み、心当たりはありませんか?
- 週3回の社内会議のたびに、議事録作成で1〜2時間が消える
- 書き起こしが終わる頃には内容がうろ覚えになっている
- 「誰が議事録担当か」で毎回空気が重くなる
- 外注先との打ち合わせ内容を後でメールで確認する羽目になる
特に人手の限られる中小企業では、こうした「会議まわりの非生産的な作業」が積み重なって、月間で数十時間が失われているケースも珍しくありません。神奈川で20年以上Webシステム開発を手がけてきた弊社Fivenine Designでも、クライアントから「議事録業務をどうにかしたい」という相談が急増しています。
本記事では、実際にLaravelとOpenAI APIを組み合わせて「AI議事録自動生成システム」を導入し、会議コストを約60%削減した中小企業の事例を、実装コードも交えながら紹介します。
なぜ「議事録」はこんなにコストがかかるのか
会議そのものの時間だけに目が向きがちですが、実は会議の「前後」にこそ隠れたコストが潜んでいます。
上図のように、議事録関連(作成・確認・修正)だけで70分かかっているケースが実際にあります。週3回の会議があれば、月に換算すると約840分=14時間が議事録業務に消えていく計算です。時給換算すれば、年間で数十万円規模のコストとなります。
さらに深刻なのが「情報の劣化」です。会議終了から数時間後に書き起こした議事録は、発言の微妙なニュアンスや意思決定の背景が失われやすく、「言った・言わない問題」の温床になりがちです。
実案件レポート:神奈川県内の製造業B社の場合
弊社がシステム導入を支援したのは、神奈川県内に拠点を持つ従業員数40名ほどの製造業B社です。週4〜5回の社内・取引先との打ち合わせがあり、議事録担当が持ち回りで疲弊しているという状況でした。
導入前の課題:
- 議事録担当者が月15〜20時間を消費
- 書き起こしミスによる認識齟齬が月2〜3件発生
- 議事録の書式がバラバラで検索性が低い
選定した技術スタック:
- バックエンド:Laravel 10
- 音声文字起こし:OpenAI Whisper API
- 議事録生成:OpenAI GPT-4o
- フロントエンド:Blade + Alpine.js
Laravelを選んだ理由は、既存の社内システム(在庫管理)がLaravel製だったこと、そしてキューシステム(Laravel Queue)を使って音声処理を非同期で実行できる点が大きな決め手でした。
システムの実装:コアロジックを解説
システムの処理フローは以下のとおりです。
flowchart TD
A[会議音声をアップロード] --> B[Laravelがファイルを受け取る]
B --> C[Queueジョブに投入]
C --> D[Whisper APIで文字起こし]
D --> E[GPT-4oで議事録フォーマット化]
E --> F[DBに保存・PDF出力]
F --> G[担当者にメール通知]Step 1:音声ファイルのアップロードとキュー投入
// app/Http/Controllers/MeetingController.php
public function upload(Request $request)
{
$request->validate([
'audio' => 'required|file|mimes:mp3,mp4,wav,m4a|max:51200',
'title' => 'required|string|max:100',
]);
$path = $request->file('audio')->store('meetings/audio', 'local');
$meeting = Meeting::create([
'title' => $request->input('title'),
'audio_path' => $path,
'status' => 'pending',
'user_id' => auth()->id(),
]);
// 重い処理はQueueで非同期実行
ProcessMeetingTranscript::dispatch($meeting);
return response()->json([
'message' => '音声を受け付けました。処理完了後にメールでお知らせします。',
'meeting_id' => $meeting->id,
]);
}
Step 2:Whisper APIで文字起こし → GPT-4oで議事録生成
// app/Jobs/ProcessMeetingTranscript.php
public function handle(OpenAIService $openai): void
{
$this->meeting->update(['status' => 'processing']);
try {
// 1. Whisper APIで音声を文字起こし
$transcript = $openai->transcribe(
storage_path('app/' . $this->meeting->audio_path)
);
// 2. GPT-4oで議事録としてフォーマット
$minutes = $openai->generateMinutes($transcript, [
'title' => $this->meeting->title,
'date' => now()->format('Y年m月d日'),
]);
$this->meeting->update([
'transcript' => $transcript,
'minutes' => $minutes,
'status' => 'completed',
]);
// 3. 担当者へ通知
Notification::send(
$this->meeting->user,
new MeetingMinutesReady($this->meeting)
);
} catch (\Exception $e) {
$this->meeting->update(['status' => 'failed']);
Log::error('議事録生成失敗: ' . $e->getMessage());
throw $e;
}
}
Step 3:OpenAIサービスクラス(核心部分)
// app/Services/OpenAIService.php
public function generateMinutes(string $transcript, array $meta): string
{
$prompt = <<<PROMPT
以下の会議の文字起こしを、ビジネス議事録として整形してください。
【会議名】{$meta['title']}
【日付】{$meta['date']}
【フォーマット要件】
1. 参加者(発言から推測)
2. 議題一覧
3. 各議題の議論内容(要点のみ)
4. 決定事項
5. 次回アクション(担当者・期限付き)
文字起こし:
{$transcript}
PROMPT;
$response = $this->client->chat()->create([
'model' => 'gpt-4o',
'messages' => [
['role' => 'system', 'content' => 'あなたは優秀なビジネス秘書です。簡潔・正確な議事録を作成します。'],
['role' => 'user', 'content' => $prompt],
],
'temperature' => 0.3, // 再現性を重視するため低めに設定
]);
return $response->choices[0]->message->content;
}
temperatureを0.3に設定しているのがポイントです。 創造性より正確性が求められる議事録では、値を低くすることで出力が安定します。デフォルト値(1.0)のまま使うと、毎回表現が変わりすぎて品質にバラつきが出ます。
導入後の変化:数字で見るビフォー・アフター
B社では導入から3ヶ月で、以下の変化が生まれました。
- 月間議事録作業時間:18時間 → 7時間(約61%削減)
- 議事録完成までのリードタイム:平均90分 → 8分
- 認識齟齬に起因するトラブル:月3件 → ほぼゼロ
- 「誰が書くか問題」によるストレスが解消
担当者からは「会議が終わって席に戻るころにはメールが届いている。最初は半信半疑だったが、品質も想定以上だった」という声をいただきました。
やりがちな失敗パターンと対処法
実装を進める中でいくつかの落とし穴に直面しました。同じ過ちを繰り返さないよう、正直に共有します。
API利用コストの現実感
「AI導入はコストが高そう」という懸念をよく耳にします。実際の費用感をお伝えすると、1時間の会議音声を処理する場合のAPIコストは概算で以下のとおりです。
| 処理内容 | 使用API | 概算コスト(1回) |
|---|---|---|
| 音声文字起こし(1時間) | Whisper API | 約$0.36(約55円) |
| 議事録生成(GPT-4o) | Chat API | 約$0.10〜0.20(約20〜30円) |
| 合計 | - | 約80〜90円/会議 |
月20回の会議で月間API費用は約1,600〜1,800円。議事録担当者の人件費と比較すれば、投資対効果は明らかです。
このAI技術、御社の業務にも導入できます
AI導入・業務自動化
ChatGPT活用や業務自動化など、最新のAI技術を御社に合わせてご提案します
※ 通常1営業日以内にご返信します
まとめと次のステップ
LaravelとOpenAI APIの組み合わせは、議事録自動化において非常に相性の良い選択肢です。LaravelのQueue・Notification・Storage機能がAI処理の非同期化・通知・ファイル管理をスムーズにカバーしてくれます。
まず取り組むべきステップを整理します。
「まず自分たちで試してみたい」という方は、上記のステップ1〜3から始めるのがおすすめです。一方で、「既存システムとの連携が必要」「セキュリティ要件がある」「音声データの管理ポリシーを整備したい」といった場合は、設計段階からの検討が重要になります。
弊社Fivenine Designでは、Laravel×AI連携のシステム設計から実装・運用サポートまで一貫してお手伝いしています。「うちの会議フローに合わせた形で作れるのか?」という段階からのご相談も歓迎ですので、まずはお気軽にお声がけください。