iPhone上でカード一覧と保護されたカード詳細を表示するHolderカード保管庫。

Holder:iPhoneとMacのためのプライベートなオフラインカード保管庫

Holderは、デバイス上のスキャン、Keychain保存、任意のiCloud Keychain同期で、決済カードや身分証、会員カードなどの情報をプライベートに保管します。

要点
  • Holderは決済カード、身分証、会員カード、ポイントカードなどを整理するための小さな保管庫です。
  • 通常の導入先はApp Storeで、iPhone、iPad、Macに対応し、iOS 17以降、iPadOS 17以降、macOS 15.6以降が必要です。
  • スキャンはデバイス上で実行され、機密フィールドは直近の生体認証で保護されます。任意のiCloud Keychain同期を使ってもHolderのサーバーアカウントは不要です。
  • 公開リポジトリは確認や開発に役立ちますが、CC BY-NC 4.0のため、商用再利用を無条件に許可するオープンソースライセンスではありません。

ウォレットアプリは、銀行口座や支出ダッシュボード、別のクラウドプロフィールになる必要はありません。Holderはもっと狭い役割に徹します。手元に置きたいカード情報を、デバイス上のスキャン、生体認証による保護、iPhone・iPad・Mac向けのネイティブなSwiftUI画面で管理するプライベートな保管場所です。

実際にインストールするなら、現在のApp Store版が現実的なリリースです。表示上のバージョンは2.3で、iPhone、iPad、Macに対応しています。一方、公開リポジトリのmainブランチにはマーケティングバージョン2.5が設定されています。この違いは重要です。通常の利用者はApp Store版を使い、リポジトリは確認、開発、ソースビルドのために使います。

できること

Holderは決済カードや、カードに近い情報を一つの保管庫にまとめます。クレジットカード、デビットカード、その他のタイプを扱い、Visa、Mastercard、American Express、Discover、JCB、UnionPayなどのネットワークも記録できます。会員カード、ポイントカード、身分証、保険証など、実物を常に持ち歩くより参照用の控えを持っておきたいものにも使えます。

日常の操作は意図的に小さくまとめられています。カードを追加し、詳細を確認し、必要なときに番号やセキュリティコードをコピーし、使わなくなった記録をアーカイブします。カード画像は任意の視覚的な手がかりとして表示できますが、中心になるのは機密性のあるテキストフィールドです。

iPhoneとiPadでは、追加フローからVisionKitを使って物理カードをデバイス上でスキャンできます。スキャナーは番号、名前、有効期限を入力の起点として読み取り、保存前に確認する画面を表示します。手入力も利用でき、MacではデスクトップアプリがMacのカメラでカードをスキャンしないため手入力が基本です。

インストール方法

公式のHolder App Storeページを使います。Xcodeを開かずにiPhone、iPad、Mac向けの署名済みプロダクション版を導入できるため、これが推奨経路です。必要条件はiOS 17以降、iPadOS 17以降、macOS 15.6以降です。

# Install the production app from the App Store:
open https://apps.apple.com/us/app/offline-card-vault-holder/id6475649492

初回起動後に、任意のiCloud Keychain同期を有効にするか、カード画像をiCloud Documentsに保存するかを決めます。どちらもローカル保管庫の利用に必須ではありません。ソースからビルドするのはHolderを確認または変更したい場合だけにし、通常利用のインストール経路とは考えない方がよいでしょう。

最初のカードを追加する

iPhoneまたはiPadで追加操作をタップし、手元に物理カードがあるならScanを選びます。カードをカメラフレーム内に置き、認識された値をすべて確認し、読み取りに失敗した箇所を直してから保存します。VisionKitの認識は便利な出発点であり、番号、名前、有効期限、セキュリティコードの確認を省く理由にはなりません。

カードが手元にない場合、カメラで読めない場合、または決済用でない記録を作る場合はManual Entryを選びます。Macでは手入力が想定されたフローです。表示名を分かりやすく付け、タイプとネットワークを選び、別のカードと区別する必要があれば説明を加えます。

# Normal user path:
# App Store → Install Holder → Add a Card
# On iPhone/iPad, choose Scan or Manual Entry.

Holderではセキュリティコードを保護されたフィールドとして扱います。直近の認証が完了するまでマスクされ、カード情報を共有する操作ではコードを除外するか、認証後に明示的に含めるかを選べます。プレーンテキストのメモより参照しやすく、それでも何を共有するかは利用者が決められます。

# Build a development copy only when you need to modify Holder:
git clone https://github.com/swiftlysingh/Holder.git
cd Holder
open cards.xcodeproj

Holderの使い方

よく使うカードでは、アプリを開いて必要なフィールドをコピーするまでの手順を減らせることが価値になります。カードを選び、保護された値を求められたら認証し、コピーまたは共有操作を使います。ウィジェットとネイティブなMac体験も用意されているため、ホーム画面やメニューバーを完全なウォレット画面にせず、カードを近くに置けます。

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

HolderではHolderのサーバーアカウントを作る必要がなく、リモートのカード保管庫も提供されません。カード記録はApple Keychainを通じて保存され、同じAppleアカウントを使うデバイスでは、任意で同期可能なKeychain保存を利用できます。ローカル優先の設計ですが、デバイス、Appleアカウント、Keychain設定の安全性には依存します。

スキャナーはデバイス上で動作します。プロジェクトのプライバシー説明によれば、スキャンのためにカメラ画像や認識したカード値がHolderの分析、クラッシュレポート、購入サービスへ送信されることはありません。一方で、機能や設定によっては、診断、スキャナー性能、購入に関する限定的なメタデータがPostHog、Sentry、RevenueCat、Appleなどへ送られる場合があります。

内部の設計

このプロジェクトはSwiftとSwiftUIで作られ、iOSとmacOSに別々のターゲットを持ちます。カード記録には番号、名前、有効期限、セキュリティコード、説明、タイプ、ネットワーク、アーカイブ状態などが含まれます。一般的な金融データベースを目指すのではなく、カード保管庫としてモデルを絞っている点が特徴です。

任意のカード画像はテキストフィールドとは異なる保存経路を使います。画面には、画像がKeychainではなくiCloud Documentsに保存されるという注意が表示されます。ウィジェットがアプリグループ経由で受け取るのは、表示名、下4桁、カードタイプ、ネットワークなどに絞られた概要で、完全な番号、セキュリティコード、有効期限は渡りません。

セキュリティの境界

Holderは機密操作の周囲にいくつかの小さな境界を置いています。バックグラウンドへ移るとプライバシーカーテンで画面を覆い、機密値へのアクセスは短い認証ウィンドウの後に期限切れになります。Face IDやTouch IDはロック状態を守りますが、別のアプリへコピーしたカード番号がそのアプリの管理下に入る事実までは変えません。

コピーにはシステムクリップボードを使い、プロジェクトはクリップボードを自動消去しません。コピーした番号やセキュリティコードは一時的な機密データとして扱い、必要な場所へ貼り付けた後、貼り付け先アプリ、クリップボード管理アプリ、Macの連係機能が保持していないか確認してください。

導入前に確認すること

実際のカード情報をHolderへ移す前に、App Storeの販売元、デバイス要件、選択したい同期方法を確認します。まず重要度の低いカードを一枚だけ登録し、スキャン後の番号と有効期限が正しいことを確認してください。Apple KeychainやiCloudの設定を有効にしたデバイスだけに記録が現れるかも確認します。

ウィジェットを使うなら、ロック画面やデスクトップに見える概要を確認します。ウィジェットのデータは意図的に絞られていますが、下4桁とカード名も個人情報になり得ます。スクリーンショットやカード画像は、想定より広くバックアップ・共有される場所に置かないようにします。

できないこと

Holderは銀行アプリ、決済アプリ、自動的にウォレットを置き換えるアプリではありません。銀行口座との連携、支出分析、支払い、ホスト型の復旧アカウントは提供しません。取引履歴、不正利用通知、残高、発行会社が管理するカード発行が必要なら、それを提供する銀行や決済サービスを使います。

ローカル優先のモデルでは、復旧の責任も利用者にあります。任意のKeychain同期はAppleデバイス間で役立ちますが、独立したエクスポートや、どのプラットフォームからでも復元できるアカウントと同じではありません。カード画像には別のiCloud Documents経路があり、Mac版はカメラのスキャンではなく手入力に依存します。

最後に、公開リポジトリはライセンスと一緒に読む必要があります。確認や開発には利用できますが、付属するCC BY-NC 4.0の条件はデフォルトで商用利用を禁止しています。公開GitHubリポジトリだからといって、MITやApacheのプロジェクトと同じ再利用権があるとは考えないでください。

ライセンス

HolderはCreative Commons Attribution-NonCommercial 4.0 Internationalライセンスで公開されています。帰属表示が必要で、デフォルトの条件では商用利用できません。変更版を再配布したり、別のプロジェクトでソースを使ったりする場合は、全文を確認し、必要な表示を残してください。

App Storeの掲載物とソースリポジトリは、異なる配布コンテキストです。署名済みApp Store版をインストールすれば、サポートされた利用者向け経路になります。リポジトリをクローンすれば、ライセンスの範囲でコードを確認・ビルドできます。Appleのフレームワーク、分析SDK、コピーしたアセットには、それぞれの条件も適用されます。

インストールすべき人

大きな金融ダッシュボードではなく、小さくプライベートなカード参照ツールが欲しいならHolderを試す価値があります。まずはApp Store版で数枚のカードをスキャンまたは手入力し、保護されたフィールドを確認し、Keychain同期とカード画像が自分の環境に合うか判断してください。通常利用ではApp Store版で十分で、実装を確認・変更したいときにGitHubプロジェクトを開けばよいでしょう。

プロジェクト情報

ライセンス
CC BY-NC 4.0
対応環境
iOS 17以降 / iPadOS 17以降 / macOS 15.6以降
実装言語
Swift、SwiftUI
確認したバージョン
App Store 2.3、source mainのマーケティングバージョン 2.5(2026-09-21)

インストール

# Install the production app from the App Store:
open https://apps.apple.com/us/app/offline-card-vault-holder/id6475649492

ライセンスの概要

リポジトリはCreative Commons Attribution-NonCommercial 4.0 Internationalで公開されています。帰属表示が必要で、デフォルトのライセンスでは商用利用できません。