💻 システム開発

2026-08-13_現在地と再開手順

最終更新 2026年08月13日 / 31_システム開発部/SCALE_Rec/2026-08-13_現在地と再開手順.md

SCALE Rec — 現在地と再開手順(2026-08-13)

Googleカレンダーの会議・商談を「全部、自動で」録画する社内ツール。
参考システム = tl;dv。/system-flow で構築中。

正本

  • リポジトリ: ~/dev/scale-rec/(GitHub scale-group-jp/scale-rec private)
  • スタートカード: ~/dev/scale-rec/CLAUDE.md(現在地・地雷・構成はここが最新)
  • 本番: https://scale-rec.pages.dev/ (PW: ●●●●●●

今日できたこと

状態
参考システムの完全再現(20画面)+確認① 完了(大串「バッチリすぎる」)
SCALE Recオリジナル化(ブランド痕跡0件)+確認② 完了
管理画面・API・D1・録画率ダッシュボード 本番稼働
納品ロゴ適用(サイドバー・ログイン・ファビコン) 完了・ブランドカラー #413A2A
Googleカレンダー連携 実データ29件を同期・会議URL有りだけ録画対象と判定
bot用アカウント scalerec@scale-group.co.jp Cloud Identity Free・¥0・組織部門 Bot
bot参加の実測成功 「今すぐ参加」で入室/ロゴタイル表示/終了時刻で自動退出
録画・スケジューラ・Dockerコンテナ 実装済み(ARM/x86両対応)未検証

止まっている理由

botを24時間動かすサーバーが確保できていない。それだけ。

Oracle Cloud Always Free の東京ARM枠が Out of host capacity
1コア/6GBでも取れない。Always Freeはホームリージョン(東京)でしか使えず、変更不可なので他リージョンへ逃げられない。

5分おきの自動リトライを launchd で常駐させたinfra/oci_retry.sh)。
取れた瞬間にMacへ通知+infra/instance_ip.txt にIP保存。大串の操作は不要。

  • 見込み: 数時間〜数日。1週間取れないこともある(東京は激戦区)
  • 大串の判断: お金をかけたくないのでOracle待ち(VPS 月1,700〜2,000円は見送り)

再開手順

# 1. サーバーが取れたか確認
cat ~/dev/scale-rec/infra/instance_ip.txt        # あればIPが入っている
tail -20 ~/dev/scale-rec/infra/oci_retry.log     # リトライ状況

# 2. 取れていたら接続
ssh -i ~/.ssh/scale_rec_oracle ubuntu@<IP>

# 3. 続きの作業
#   Docker導入 → botコンテナをビルド → profile/ を転送 → スケジューラ常駐
#   → Zoom参加テスト(Meetは実測済み・Zoomは未検証)

リトライを止めたい時:

launchctl unload ~/Library/LaunchAgents/com.scale.rec.ocitry.plist

未検証で残っているもの(正直な状態)

  1. Dockerコンテナは一度も動かしていない。仮想ディスプレイ+仮想オーディオ+ffmpegの組み合わせはサーバー上で初検証になる
  2. Zoomへのbot参加は未検証(Meetのみ実測済み)。実データの商談はZoomだったので必須
  3. 文字起こし・AI要約は v1 では作らない(大串決定)

決まっている方針

  • 録画方式 = bot参加型(tl;dv同様。担当者のPCに依存しない/自分が出ていない会議も録れる)
  • 相手には 参加者「SCALE Rec」+映像枠にロゴ+「● 録画中」 が見える(告知も兼ねる)
  • マイクは常時ミュート・botのChromeには実カメラ/実マイクが存在しない(機械検証済み)
  • 動画は Google Drive、メタデータは Cloudflare D1
  • 権限の既定は「チーム内で見える」/採用面談・1on1は非公開
  • 録画漏れ対策として 死活監視・未録画検知・録画率ダッシュボード を実装済み

今日踏んだ地雷(同じ轍を踏まないため)

症状 原因
OCIコンソールで4コア/24GBが1/1に戻る・トグルが押せない Chrome拡張がReact状態を壊す。シークレットウィンドウで操作する
録画率が常に0件 ISO形式(T/Z)のままD1に入れ、datetime('now') との文字列比較が常に外れていた
APIが認証なしで200を返す Pages Functions はプロジェクト直下の functions/ に置く
botの参加リクエストがホストに届かない Meetの匿名参加は組織ポリシーで拒否。ログイン必須
OAuthの認可コードが届かない 固定ポート+localhost で他プロセスがIPv6側を掴んでいた。空きポート自動選択+127.0.0.1 に変更
APIが403 既定のUser-Agent(Python-urllib)がCloudflareに弾かれる。UAを明示する