KinArchiveの構築を開始した際、私たちには根本的な選択がありました:最も幅広いユーザーに最速でリーチするためにクロスプラットフォームフレームワークを使用するか、私たちの価値観に合致する単一エコシステムのためにネイティブで構築するか。私たちはAppleを選択しました—この記事はその理由を説明します。
KinArchiveは100% Appleテクノロジーで構築されています。React Nativeなし。Flutterなし。Electron Webビューなし。純粋なSwift、SwiftUI、CloudKit、そしてAppleが提供するネイティブiOSフレームワークです。その決定の背後にある技術的および哲学的な理由は以下の通りです。
プライバシーアーキテクチャ
家族の書類は、人々が持つ最も機密性の高いデータです。パスポート、医療記録、保険証書、遺言書—これらは写真やメモではありません。このデータの取り扱いを誤ることは、単なるプライバシー侵害ではありません。なりすまし、保険詐欺、またはそれ以上の被害を可能にする可能性があります。
私たちが必要としたアーキテクチャは以下の通りです:
- ユーザーデータは私たちのサーバーに触れない
- 私たちが望んでもユーザーの書類にアクセスできない
- ユーザーは私たちを信頼する必要がない—Appleだけを信頼すればよい
CloudKitプライベートデータベース
CloudKitの仕組み
CloudKitは3種類のデータベースを提供します:
- パブリックデータベース:すべてのユーザーに表示されるデータ(私たちは使用していません)
- 共有データベース:特定のユーザー間で共有されるデータ
- プライベートデータベース:所有者のみが表示できるデータ—Apple IDで暗号化されています
KinArchiveはすべての書類をユーザーのプライベートデータベースに保存します。これは、あなたの書類があなたのApple ID資格情報で暗号化されることを意味します。Appleでさえそれらを読むことはできません。そして確かに私たちにもできません。
KinArchiveを使用する場合、あなたの書類はあなたのiCloudアカウントに保存され、あなたのiCloudストレージクォータを使用し、あなたのApple IDで暗号化されます。私たちはあなたの書類を持つサーバーを持っていません。機密ファイルのデータベースバックアップも持っていません。文字通りあなたのデータにアクセスできません。
これはポリシーの選択ではありません—アーキテクチャの制約です。プライベートデータベースはエンドツーエンドで暗号化されており、ユーザーの認証されたデバイスのみがそれを復号化できます。
サードパーティ分析なし
多くのアプリには、ユーザーの行動を追跡し、外部サービスにデータを送信するサードパーティの分析SDKが含まれています。これらのSDKは、開発者が認識している以上のものを収集することがよくあります—デバイス識別子、位置情報データ、使用パターンなどです。
KinArchiveにはサードパーティの分析は一切含まれていません。Firebase Analytics、Mixpanel、Amplitude、またはその他の追跡サービスは使用していません。私たちが受け取る唯一の分析は、Appleの匿名化された集約されたApp Storeメトリックです。
私たちがあなたについて知らないこと
- あなたが持っている書類の数
- 保存している書類の種類
- 家族メンバーが誰か
- アプリを使用するタイミング
- あなたの位置情報、デバイスID、または閲覧履歴
生体認証セキュリティ:Face IDとSecure Enclave
KinArchiveは認証にFace ID(または古いデバイスではTouch ID)を使用します。しかし、技術的にはそれは実際にどういう意味でしょうか?
Secure Enclave
AppleデバイスにはSecure Enclaveと呼ばれる専用のセキュリティプロセッサが含まれています。これは独自の暗号化メモリを持つ別個のチップで、メインプロセッサから隔離されています。あなたの生体認証データ—顔や指紋の数学的表現—はSecure Enclaveを離れることはありません。
Face ID認証の仕組み
- KinArchiveはLocalAuthenticationフレームワークを介して認証を要求します
- iOSがユーザーにFace IDを促します
- Secure Enclaveがスキャンを保存された生体認証データと比較します
- 一致した場合、Secure EnclaveがiOSに成功信号を返します
- iOSがKinArchiveに認証が成功したことを伝えます
重要なポイント:KinArchiveはあなたの生体認証データを見ることはありません。私たちはiOSから はい/いいえ の応答のみを受け取ります。あなたの顔スキャンはSecure Enclaveに留まり、ハードウェア暗号化によって保護されています。
これは、独自の生体認証スキャンを実装するアプリとは根本的に異なります。私たちは生体認証情報を処理、保存、または送信しません。私たちは単にiOSに尋ねます:「これは認証されたユーザーですか?」そしてiOSが はい または いいえ と答えます。
決済処理:StoreKit 2
KinArchiveはApp Storeを通じてサブスクリプションプランを提供しています。私たちはAppleの最新のアプリ内購入フレームワークであるStoreKit 2を使用しています。
これがあなたの決済データにとって何を意味するか
決済フロー
- ユーザーがKinArchiveで「サブスクライブ」をタップします
- StoreKitがAppleの決済シートを表示します
- ユーザーがFace IDまたはApple IDパスワードで認証します
- Appleが決済を処理します
- AppleがKinArchiveにサブスクリプションを確認する領収書を送信します
欠けているものに注目してください:私たちはあなたのクレジットカード番号、請求先住所、または決済の詳細を見ることはありません。Appleが取引全体を処理します。私たちは、あなたが有効なサブスクリプションを持っていることを証明する暗号的に署名された領収書を受け取るだけです—それ以上のものはありません。
これはAppleの標準的なApp Storeモデルですが、強調する価値があります:機密性の高い家族の書類を扱うアプリにとって、決済データに決して触れないことは重要なセキュリティ特性です。
ネイティブが重要な理由
React NativeやFlutterのようなクロスプラットフォームフレームワークにより、開発者は一度コードを書いて複数のプラットフォームにデプロイできます。それらは正当な理由で人気があります—開発が速く、コードベースを共有でき、コストが低くなります。
しかし、機密文書を扱うセキュリティ重視のアプリにとって、ネイティブ開発には重要な利点があります:
セキュリティAPIへの直接アクセス
クロスプラットフォームフレームワークは、ネイティブAPIを抽象化レイヤーでラップします。これらのレイヤーはバグを引き起こし、OSアップデートに遅れを取り、ネイティブコードには存在しないセキュリティ脆弱性を時々露出させる可能性があります。
ネイティブで構築することにより、私たちは以下に直接アクセスできます:
- LocalAuthentication:完全なSecure Enclave統合を備えたFace ID/Touch ID
- Security.framework:資格情報ストレージ用のKeychainサービス
- CloudKit:iCloudの暗号化との直接統合
- CryptoKit:Appleのネイティブ暗号化ライブラリ
JavaScriptブリッジの脆弱性なし
React Nativeアプリは、「ブリッジ」を介してJavaScriptとネイティブコード間で通信します。このブリッジは歴史的にセキュリティ脆弱性の源となってきました—JavaScriptインジェクション、ブリッジハイジャック、ブリッジレイヤーを介したデータ漏洩などです。
KinArchiveにはJavaScriptもブリッジもWebビューもありません。デバイス上で直接実行されるコンパイルされたSwiftコードです。
OSレベルの最適化
ネイティブアプリは、クロスプラットフォームアプリが完全に活用できないOSレベルの最適化から恩恵を受けます:
- バックグラウンドアプリ更新:iOSの電力管理との適切な統合
- メモリ管理:SwiftのARCはiOSメモリハンドリングとシームレスに機能します
- 起動パフォーマンス:フレームワーク初期化のオーバーヘッドなし
- ウィジェット統合:ホーム画面の有効期限アラート用のネイティブWidgetKit
SwiftUIインターフェース
KinArchiveのUIは完全にSwiftUIで構築されています。これはAppleの最新の宣言的フレームワークです。これは以下を意味します:
- 自動アクセシビリティ:VoiceOverサポート、動的タイプ、その他のアクセシビリティ機能が標準で機能します
- ネイティブのルックアンドフィール:ボタン、ナビゲーション、インタラクションがiOSの規則に一致します
- 自動ダークモード:システム表示設定が自動的に尊重されます
- パフォーマンス:SwiftUIはiOSレンダリングパイプライン用に最適化されています
トレードオフしたもの
Appleネイティブで構築することは、コストなしではありませんでした:
- Android版なし:Androidユーザーにサービスを提供できません(まだ)
- Webアプリなし:デスクトップユーザーがブラウザから書類にアクセスできません
- 開発コストの増加:ネイティブ開発はクロスプラットフォームよりも時間がかかります
- 対応可能な市場の縮小:iOSはグローバルモバイル市場の約27%です
私たちはこれらのトレードオフを意識的に行いました。機密性の高い家族の書類を扱うアプリにとって、Appleエコシステムのセキュリティとプライバシー特性は、クロスプラットフォームアプローチのリーチを上回ると信じています。
Appleエコシステムとの整合性
Appleのために構築することは、テクノロジーだけではありません—価値観の整合性についてです。
Appleはプライバシーをブランドの賭けにしています。「プライバシーは基本的人権です」は単なるマーケティングではありません。それはiOS全体のアーキテクチャ決定に反映されています:App Tracking Transparency、プライバシー栄養ラベル、SiriとPhotosのデバイス上処理、そしてSecure Enclaveです。
KinArchiveを使用する場合、あなたは2つのエンティティに信頼を拡張しています:私たち(アプリロジックのため)とApple(プラットフォームのため)。完全にAppleテクノロジーで構築することにより、私たちは信頼の表面を最小限に抑えます。あなたのデータはAppleのエコシステムに留まり、Appleのセキュリティモデルによって保護され、Appleの暗号化で暗号化されます。
私たちは、サードパーティのクラウドプロバイダー、サードパーティの分析会社、またはサードパーティの決済プロセッサを信頼するようお願いしていません。私たちはAppleを信頼するようお願いしています—それはあなたがiPhoneを使用することですでに信頼しています—そして、その上で実行されるアプリケーションロジックのために私たちを信頼してください。
信頼スタック
ハードウェア:AppleのSecure Enclave
オペレーティングシステム:サンドボックス化されたアプリを備えたiOS
クラウドストレージ:CloudKitプライベートデータベース(ユーザーのiCloud)
認証:Face ID / Apple ID
決済:App Store / StoreKit 2
アプリケーション:KinArchive(ネイティブSwift/SwiftUI)
将来への備え
Appleのプラットフォームは進化し続けています。ネイティブで構築することにより、新しいテクノロジーがリリースされるとすぐに採用できます:
- 新しいセキュリティ機能:iOSのセキュリティが向上すると、KinArchiveはそれらの改善を継承します
- 新しいAPI:クロスプラットフォームサポートを待つことなく、新しいフレームワークに直接アクセスできます
- パフォーマンスの向上:SwiftとiOSの最適化により、自動的に恩恵を受けます
- 新しいデバイス:iPad、Mac(CatalystまたはネイティブVia)、Apple Watch統合
結論
AppleのためにKinArchiveを構築することは、最速の道でも最も簡単な道でもありませんでした。しかし、家族の最も機密性の高い書類を委託されたアプリにとって、それは正しい道でした。
パスポートをKinArchiveに保存する場合、未知のクラウドプロバイダーにデータを信頼しているわけではありません。自分のiCloudアカウントに保存し、自分のApple IDで暗号化し、自分のFace IDで保護しています。私たちは、Appleのセキュリティ基盤の上にガバナンスレイヤー—有効期限追跡、権限、監査証跡—を構築しました。
それが私たちがAppleのために構築した理由です。それがあなたのデータが安全である理由です。
Appleネイティブのドキュメントセキュリティを体験
KinArchiveをダウンロードして、ネイティブiOS開発があなたの家族の書類セキュリティにとって何を意味するかをご覧ください。
KinArchiveをダウンロード