Uninote:AI議事録・ミーティングプラットフォーム

技術スタック:
ReactTypeScriptFastAPIPostgreSQLPlaywrightWebSocket

オンライン会議を自動録音し、文字起こしを生成、会議後のナレッジをチーム全体で整理・共有するミーティングインテリジェンスプラットフォーム

Uninote:AI議事録・ミーティングプラットフォーム

プロジェクト概要

Uninoteは、オンライン会議の録音、トランスクリプト(文字起こし)の取得、会話から再利用可能なチームナレッジの生成に特化したミーティングインテリジェンスプロダクトです。Webアプリ、バックエンドAPI、カレンダー連携、ストレージパイプライン、会議に参加してメディアを処理する自動録音ボットで構成されています。

私はフルスタック開発者として2025年6月から2026年2月までこのプロジェクトに参画し、Reactフロントエンド、FastAPIバックエンド、録音・文字起こし・ミーティングワークフロー周辺の支援サービス全般に貢献しました。

プロダクトへのリンク: Uninote

Uninote プロジェクト

使用技術スタック

  • フロントエンド: React 19, TypeScript, Vite, Material UI, Jotai
  • バックエンド: Python, FastAPI, SQLAlchemy, PostgreSQL
  • リアルタイム / メディア: WebSocket文字起こし, ブラウザベースの会議録音, トランスクリプションサービス
  • 自動化: TypeScript, Playwright, 会議録音ボット
  • プラットフォーム & インフラ: AWS S3, ストレージおよびオーケストレーション用AWSサービス, Docker, Terraform
  • 外部連携: Google / Microsoft カレンダーフロー, Stripe, ブラウザ拡張機能対応

プロダクトの背景

ミーティングプロダクトは一見シンプルに見えますが、実際のエンジニアリングの難所は境界部分にあります。

  • 適切なタイミングで正しい会議に参加する
  • 不安定なブラウザやメディア条件に対処する
  • 大容量の録音データを安全に保存する
  • 許容可能なレイテンシでトランスクリプトをストリーミングまたは処理する
  • それらすべてを明確なUIでユーザーに還元する

フロントエンドの体験がバックエンドのワークフロー、外部連携、バックグラウンド自動化の正常動作に直接依存するため、非常にやりがいのあるフルスタックプロジェクトです。

担当内容

フルスタック領域全般にわたって以下を担当しました。

  • ミーティング、文字起こし、コラボレーションワークフロー向けのフロントエンド画面の構築と改善
  • 録音、会議、共有、外部連携のためのバックエンドエンドポイントとドメインロジックのサポート
  • カレンダー連携フローとスケジュール録音動作の改修
  • 録音データ、文字起こしデータ、製品UIを接続するシステムの構築への貢献
  • 単一のモノリスではなく、複数サービスにまたがるプロダクトフローの維持・運用

主な技術的決定

1. 責任範囲によるプロダクトの分離

アーキテクチャは、ユーザー向けWebアプリ、バックエンドAPI、録音ボットに意図的に分離されています。会議のキャプチャ作業は通常のCRUD機能とは実行時の要求レベルが大きく異なるためです。アプリ側は管理と表示に集中し、録音サービスがブラウザ自動化とメディアキャプチャを分担します。

2. ポーリングでは不十分な部分にWebSocketリアルタイムチャネルを採用

文字起こしやライブ状態の同期において、リクエスト/レスポンスパターンでは不十分です。単なる定期更新ではなく継続的な変更更新をユーザーが期待する場合、リアルタイムチャネルが適しています。これにより、録音・処理中の製品のライブ感を保つことができます。

3. 大容量メディア処理を通常のリクエストから分離する

録音ファイルは非常に大きくエラーが起きやすいため、標準的なフォーム送信のように扱うことはできません。専用のアップロードフローとクラウドストレージを使用することで、APIレイヤーの負荷を軽減し、再試行や処理ステージの管理を容易にしました。

4. プラットフォーム非依存ロジックと特定プラットフォーム処理の分離

Google Meet、Teams、Zoomにまたがる録音は移植性の課題を生みます。共通のオーケストレーションロジックを中心に保持しつつ、プラットフォーム固有のセレクター、動作、終了条件を分離するパターンを採用しました。これにより、ある会議プラットフォームがUIや参加フローを変更した際の影響範囲を最小限に抑えられます。

フルスタックにおける課題

  • クロスプラットフォームでの会議キャプチャ: 外部UIの変更に対してブラウザ自動化は脆弱になりがちです
  • リアルタイム状態同期: ユーザーを混乱させずにUIに録音および文字起こしの状態を正確に反映させる必要があります
  • カレンダー駆動のワークフロー: スケジュール設定と自動参加動作は信頼性の高い連携に依存します
  • メディアライフサイクル管理: 録音、文字起こし、要約、権限設定を整合させる必要があります
  • アクセス権とコラボレーション: 単なる録音を超えて、会議の共有、招待、組織機能が複雑さを追加します

成果

Uninoteは、単なるUI作業やAPI作業にとどまらない総合的な成果を示すプロジェクトです。ユーザーインターフェース、バックエンドサービス、外部連携、自動化、メディアパイプラインにまたがるプロダクトエンジニアリングを体現しています。

得られた知見

  • 録音および文字起こしプロダクトの肝は、統合の境界における信頼性にあります。
  • 優れたプロダクトUXは、バックグラウンド処理およびリアルタイムプロセスの正確な状態モデリングに依存します。
  • 障害によってメインアプリに不要な複雑さが漏れないよう、自動化サービスは分離されるべきです。
  • フロントエンドのフロー、バックエンドの契約、バックグラウンドワーカーを俯瞰して思考できると、フルスタック開発の価値が飛躍的に高まります。

添付資料

会議一覧 / ワークスペース

Uninote ワークスペース

会議詳細 / AI要約

Uninote AI要約

会議詳細 / トランスクリプトビュー

Uninote トランスクリプト