コンテンツにスキップ

データプライバシーとセキュリティ

プライバシーは DevLingo の核心的な価値です。データがどのように流れ、どこに保存され、誰がアクセスできるかを詳しく説明します。

シナリオ 1:単発クエリ(クラウド同期なし)

Section titled “シナリオ 1:単発クエリ(クラウド同期なし)”
Step 1: Slack で "idempotent" を選択
Step 2: ⌘⇧D を押す
Step 3: Mac アプリがローカルライブラリとキャッシュをチェック
Step 4: ヒットしなかった場合、Cloudflare Workers にクエリを送信(HTTPS 暗号化)
リクエストに含まれるもの:
• 選択テキスト:"idempotent"
• コンテキスト(前後のテキスト)
• アプリ識別子(Slack)
• モード:Word
Step 5: Workers が Claude API を呼び出す
Step 6: Claude が構造化 JSON 結果を返す
Step 7: Mac アプリが結果を受信
Step 8: ユーザーが「保存」をクリックしない限り、結果は保存されない
(フローティングウィンドウを閉じるとデータは消える)
Step 1-7: 上記と同じ
Step 8: ユーザーが "Save to Word Book" をクリック
Step 9: データがローカルの SwiftData に保存される
(完全にデバイス内、クラウドにアップロードされない)
Step 10: 単語帳同期スイッチがオフ → 完了(ローカルのみ)
単語帳同期スイッチがオン → Step 11
Step 11: ユーザーのデバイスが Cloudflare D1 に同期
(ユーザー専用データベース、認証付き)

テキストはモデルのトレーニングに使用されません

Section titled “テキストはモデルのトレーニングに使用されません”

重要:DevLingo が Claude API を通じて送信するテキストは、Claude やその他のモデルのトレーニングには使用されません。Anthropic のデフォルトポリシーに従っています。

✓ テキストは一回限りの使用
✓ Claude が処理後すぐに破棄(保存されない)
✓ いかなる形式のデータマイニングにも使用されない

:::note 検証方法 Anthropic Claude API のすべてのリクエストは “user=” でマークされ、「これはエンドユーザーデータであり、トレーニングに使用すべきではない」ことを示します。 :::

ローカルストレージはデフォルトでクラウド同期オフ

Section titled “ローカルストレージはデフォルトでクラウド同期オフ”

単語帳(Word Book)はデフォルトで Mac にのみ保存され、SwiftData を使用します:

~/Library/Containers/com.devglish.com/Data/
└── default.store/
└── word_entries.db (ローカル SQLite)

このデータベースはデバイス専用で、DevLingo アプリのみがアクセスできます。

複数の Mac で単語帳を同期したい場合は、クラウド同期を明示的に有効にできます:

Settings → iCloud Sync → Toggle ON

有効にすると、単語帳は暗号化されて Cloudflare D1 にアップロードされます:

暗号化:クライアント側暗号化(Curve25519)→ サーバーに保存
認証:ユーザーの JWT token(セキュリティトークン)
アクセス制御:各ユーザーは自分のデータのみアクセス可能
分離:データベースの行レベル分離、クロスユーザーアクセスを防止

:::caution データ移行 クラウド同期を有効にした後、サブスクリプションをキャンセルまたはアカウントを削除すると、クラウドデータは 30 日後に自動的に削除されます。ローカルの SwiftData は影響を受けず、デバイスに残ります。 :::

DevLingo は「最小限の収集」原則を厳守しています:

✗ コード内容(Xcode で使用している場合でも)
✗ 完全な閲覧履歴やアプリ使用履歴
✗ チャットログやメール内容
✗ Git 履歴
✗ デバイス上の他のプライベートファイル
✓ クエリのために選択したテキスト自体
✓ 前後 50 文字のコンテキスト(AI の理解のためのみ)
✓ 現在のアプリの Bundle Identifier(AI のスタイル調整を支援)
✓ 母語の設定(L1 干渉ヒント用)
✓ 単語帳の内容(クラウド同期を明示的に有効にした場合のみ)

DevLingo のバックエンド(Cloudflare Workers)が Claude API キーを保持します。Mac アプリはキーを直接公開する必要がなく、Workers を通じてすべての API リクエストをプロキシします。

Mac App Workers (edge)
↓ (HTTPS) ↓
│── Bearer: user_jwt ────────→ │
│ │
│ (有効期間 1 時間) │ (Claude API Key)
│ │
│← Structured Response ←────── Claude API

メリット:

  • キーがローカルに保存されない(漏洩しない)
  • すべての API コールが信頼された Cloudflare エッジで処理される
  • Mac が攻撃されてもキーは安全

ユーザーがログインすると短期 JWT トークン(1 時間の有効期間)を取得します:

アルゴリズム:HS256(HMAC SHA-256)
署名キー:Cloudflare Secret(ローカルに保存されない)
保存場所:macOS Keychain(システム暗号化)
更新:トークンの期限切れが近づくと自動更新

Keychain のセキュリティレベル:

🔒 Mac の iCloud ロック解除キーにバインド
🔒 アクセスのたびにシステムがユーザーの確認を求める
🔒 ハードドライブを盗まれてもデータは読めない

ネットワーク転送のセキュリティ

Section titled “ネットワーク転送のセキュリティ”

Mac から Cloudflare Workers へのすべての通信は HTTPS で暗号化されます:

TLS 1.3(最新プロトコル)
証明書:LetsEncrypt(自動更新)
完全前方秘匿性(Perfect Forward Secrecy)

DevLingo の階層化クエリシステムにより、オフラインでも使用可能です:

機内モードで "idempotent" を選択
ローカル技術語彙ライブラリをクエリ(85 以上の単語)→ 成功!
結果がすぐに表示、ネットワーク不要

以下の場合のみネットワークが必要です:

✓ ローカルライブラリにない新しい語彙のクエリ
✓ 単語帳のクラウド同期
✓ 最新の TTS 音声キャッシュの取得

その他 95% のクエリは完全にオフラインで完了できます。

DevLingo アカウントを削除する場合:

Step 1: 設定 → アカウント → Delete Account
Step 2: システムが再確認を求める
Step 3: Cloudflare が削除:
• ユーザーアカウント
• クラウド上の単語帳
• ログイン履歴
• API 使用ログ
(30 日後に完全削除)
Step 4: ローカルデータは影響を受けない
(Mac に残る。ユーザー自身で削除可能)

:::caution データの永続性 アカウントを削除すると、クラウドデータは復元できません。ただし、ローカルの単語帳を CSV にエクスポートして永久に保存できます。 :::

DevLingo は以下の規制に準拠しています:

地域規制ステータス
EUGDPR(一般データ保護規則)✓ 準拠
米国CCPA / CPRA✓ 準拠
日本個人情報保護法✓ 準拠

:::note データ保護担当者 プライバシーに関するご質問は、[email protected] までご連絡ください。24 時間以内に対応いたします。 :::

DevLingo のエンジニアリングチームは定期的に以下を実施しています:

• コードセキュリティ監査(OWASP Top 10)
• 依存関係スキャン(npm audit, Xcode security)
• 侵入テスト(第三者)
• データベースアクセス監査(誰が何にアクセスしたか)

監査レポートは四半期ごとにユーザーに対して透明に公開されます。


まとめ:DevLingo のプライバシー設計は「ゼロトラスト」原則に従っています — ネットワークが監視されていると仮定し、デバイスが攻撃されていると仮定しますが、暗号化、認証、最小限の収集によって、データが常にあなたのコントロール下にあることを保証します。