Skip to content

🌍 001 システム全体像 (Overview)

登場人物・技術スタック・データフロー・Vercelの役割

設計書 v1.0 / 2026-04-19

1 登場人物

以下7つの登場人物でこのアプリは構成されています。

凡例ユーザーのもの(PC・iPhone・Drive)開発者のもの(Vercel)外部サービス(APNs・Google OAuth2)

図 1-1 システム全体関係図

登場人物の役割一覧

表 1-1 登場人物の役割一覧

No登場人物一言で言うと何のために使うか
11⃣ 🖥 PC アプリデスクトップ付箋アプリ付箋の表示・編集・保存。iPhone に通知付きで送信。iPhone から受け取って付箋を開く
22⃣ 📱 iPhone PWAホーム画面に追加した Web アプリPC からのノートを受け取り閲覧。メモを書いて PC に送る
33⃣ ⚙️ Service WorkeriPhone の常駐プログラムアプリを閉じていても Push を受信してノートを保存・通知表示。IndexedDB がデータの唯一の保存場所
44⃣ ☁️ Google DrivePC と iPhone の中継所ノートデータを一時的に置く場所。処理したら即削除。開発者はアクセス不可
No登場人物一言で言うと何のために使うか
55⃣ 🌐 Vercel開発者が置いた Web サーバーiPhone PWA を配信。client_secret をブラウザに渡さず保護するための認証 API を置く
66⃣ 🔑 Google OAuth2Drive の鍵を発行する仕組みユーザーが自分の Drive を読み書きするための access_token を取得する
77⃣ 📡 APNs / FCM通知配信サーバーPC からの「通知してください」を受け取り iPhone に届ける。APNs は iPhone/Mac、FCM は Chrome/Android

2 技術スタック

PCアプリ・iPhone PWA・共有インフラの3層に分けて使用技術を整理します。

表 2-1 技術スタック一覧

🖥 PC アプリ
領域技術・役割
フレームワークTauri v2(WebView + Rust)
UINext.js 14 / React 18 / TypeScript / Tailwind
エディタCodeMirror 6(Markdown ハイライト・検索)
バックエンドRust(AppState・ファイル I/O・Win32 API)
データ保存ファイルシステム(JSON / Markdown)
テストVitest(ユニット)/ Playwright(E2E)
📱 iPhone PWA
領域技術・役割
ページNext.js 14 App Router(app/viewer/page.tsx)
配信Vercel(API Routes も同居)
バックグラウンドService Worker(worker/index.js)
ローカル DBIndexedDB(fusen-drafts)
認証Google OAuth2(Vercel API 経由)
通知Web Push / APNs / FCM
🌐 共有インフラ
領域技術・役割
ホスティングVercel(PWA 配信・OAuth2 API)
データ中継Google Drive API(ユーザー所有)
通知基盤APNs / FCM(Apple / Google 運営)
CI / CDGitHub Actions(ビルド・Winget 自動リリース)

3 データフロー概要(2つのフロー)

PCアプリ・iPhone・Driveを結ぶ2つのデータの流れを概観します。

3.1 ➡️ フロー① PC → iPhone(メモを受け取る)

PCで書いたメモが、ロック画面の通知として iPhone に届くまでの全工程です。

図 3.1-1 PC → iPhone データフロー概要

3.2 ⬅️ フロー② iPhone → PC(メモを送る)

図 3.2-1 iPhone → PC データフロー概要


4 なぜ Vercel が必要か

Google OAuth2 の client_secret を安全に保護するためにVercelが必要な理由を説明します。

守っている対象:開発者(アプリ作者)のアプリ自体。 ユーザーの秘密情報ではない。

client_secret は開発者が Google Cloud Console で発行した「このアプリが本物であることを証明する鍵」。漏れると開発者のアプリが停止・悪用されるリスクがある。iPhone のコードに埋め込むと Safari DevTools で誰でも読めてしまう。

表 4-1 client_secret 保護方式の比較

No手法client_secret の場所問題点・利点
1✕ iPhone 直接iPhone のコードに埋め込むSafari DevTools でユーザーが読める → 開発者のアプリが悪用される
2✔ Vercel 経由Vercel の環境変数に置くiPhone(Safari)には届かない。Vercel のサーバー内だけで使われる

5 改版履歴

表 5-1 改版履歴

Noバージョン日付変更内容
11.026-04-19設計書を 001/002/003 に再編。本ファイル(001)は全体像を担当。旧 001_ARCHITECTURE_DESIGN・003_SYSTEM_OVERVIEW の該当部分を統合
21.126-04-24システム全体関係図を graph LR(横向き)に変更。スクロールなしで全体が見えるよう改善。