AI・機械学習 2026.05.20

Laravel×AI議事録自動作成で会議コスト60%削減!中小企業の実装事例

約15分で読めます

毎週の会議後に議事録作成で残業…そんな悩みをLaravelとOpenAI APIで解決した中小企業の実例を、コード付きで詳しく解説します。

「議事録、誰が書くの問題」に終止符を打てますか?

こんな悩み、心当たりはありませんか?

  • 週3回の社内会議のたびに、議事録作成で1〜2時間が消える
  • 書き起こしが終わる頃には内容がうろ覚えになっている
  • 「誰が議事録担当か」で毎回空気が重くなる
  • 外注先との打ち合わせ内容を後でメールで確認する羽目になる

特に人手の限られる中小企業では、こうした「会議まわりの非生産的な作業」が積み重なって、月間で数十時間が失われているケースも珍しくありません。神奈川で20年以上Webシステム開発を手がけてきた弊社Fivenine Designでも、クライアントから「議事録業務をどうにかしたい」という相談が急増しています。

本記事では、実際にLaravelとOpenAI APIを組み合わせて「AI議事録自動生成システム」を導入し、会議コストを約60%削減した中小企業の事例を、実装コードも交えながら紹介します。


なぜ「議事録」はこんなにコストがかかるのか

会議そのものの時間だけに目が向きがちですが、実は会議の「前後」にこそ隠れたコストが潜んでいます

上図のように、議事録関連(作成・確認・修正)だけで70分かかっているケースが実際にあります。週3回の会議があれば、月に換算すると約840分=14時間が議事録業務に消えていく計算です。時給換算すれば、年間で数十万円規模のコストとなります。

さらに深刻なのが「情報の劣化」です。会議終了から数時間後に書き起こした議事録は、発言の微妙なニュアンスや意思決定の背景が失われやすく、「言った・言わない問題」の温床になりがちです。


無料AI相談

AIで気軽にWeb相談してみませんか?

詳しく見る

実案件レポート:神奈川県内の製造業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件 → ほぼゼロ
  • 「誰が書くか問題」によるストレスが解消

担当者からは「会議が終わって席に戻るころにはメールが届いている。最初は半信半疑だったが、品質も想定以上だった」という声をいただきました。


やりがちな失敗パターンと対処法

実装を進める中でいくつかの落とし穴に直面しました。同じ過ちを繰り返さないよう、正直に共有します。

Whisper APIは1ファイル25MB上限があります。1時間超えの会議音声をそのまま投げると確実に失敗します。対処法は、`ffmpeg`でファイルを10〜15分単位に分割してから送信し、文字起こし結果を結合する方式への変更です。Laravelでは`Process`ファサードでffmpegを呼び出せます。
初期設定のtemperature=1.0のまま運用したところ、実際には発言されていない決定事項がGPTによって「補完」されて出力されるケースが発生しました。0.2〜0.4の範囲に下げることで大幅に改善されます。
本番環境でSupervisorによるワーカー常駐化を設定し忘れ、アップロードしても処理が走らないという事態が発生しました。`php artisan queue:work`はサーバー再起動で止まります。必ずSupervisorかLaravel Horizonで管理してください。
プロンプトに「業務に関係のない雑談は除外してください」という指示を明示的に加えることで解決しました。プロンプトエンジニアリングは実装と同じくらい重要です。

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で気軽にWeb相談してみませんか?

詳しく見る

このAI技術、御社の業務にも導入できます

AI導入・業務自動化

ChatGPT活用や業務自動化など、最新のAI技術を御社に合わせてご提案します

200件以上の制作実績 顧客満足度97% 初回相談無料

※ 通常1営業日以内にご返信します

まとめと次のステップ

LaravelとOpenAI APIの組み合わせは、議事録自動化において非常に相性の良い選択肢です。LaravelのQueue・Notification・Storage機能がAI処理の非同期化・通知・ファイル管理をスムーズにカバーしてくれます。

まず取り組むべきステップを整理します。

「まず自分たちで試してみたい」という方は、上記のステップ1〜3から始めるのがおすすめです。一方で、「既存システムとの連携が必要」「セキュリティ要件がある」「音声データの管理ポリシーを整備したい」といった場合は、設計段階からの検討が重要になります。

弊社Fivenine Designでは、Laravel×AI連携のシステム設計から実装・運用サポートまで一貫してお手伝いしています。「うちの会議フローに合わせた形で作れるのか?」という段階からのご相談も歓迎ですので、まずはお気軽にお声がけください。

この記事をシェア

AI技術の導入・活用をサポートします

業務に合わせたAI活用のご提案が可能です。 初回相談は無料です。

※ 1営業日以内にご返信いたします

この技術でお困りなら

無料でプロに相談できます

相談する
AIに無料相談