在留カードリーダー

対応するUSB NFCリーダーで在留カードのICチップ情報を読み取り、確認するWindowsアプリです。カード情報は外部へ送信せず、ローカルパソコン内だけで処理します。

在留カードリーダーのアプリ画面
  • 役割: 調査、プロダクト設計、フルスタック開発、ハードウェア連携、テスト、ドキュメント作成、リリース設計
  • 技術: Python, FastAPI, PC/SC, PyCryptodome, Cryptography, ONNX Runtime, OCR, PyWebView

課題:機微なカード情報を、
実務で安全に確認できるようにする

学校や雇用主は、在留資格、在留期間、カード番号、住所、資格外活動許可などを確認する必要があります。これらの情報はカードのICチップに含まれますが、読み取るには対応機器、カード構造の知識、そして個人情報を慎重に扱う仕組みが必要です。

目的は、単にカードを読み取ることではありません。認定された担当者が使いやすく、かつプライバシーの境界が明確なツールをつくることでした。

解決策:用途を絞ったローカルWindowsアプリ

アプリはPC/SCを通じて対応するUSB NFCリーダーと通信します。リーダーを接続・選択し、カードを置き、券面のカード番号を入力して読み取り、表示内容を現物のカードと照合する、というシンプルな流れです。

ICチップの構造化データを読み取り、氏名や住所が画像として保存されている世代ではローカルOCRを使います。対応する信頼情報をアプリに同梱し、電子署名の検証も行います。カードの読み取り中にインターネット接続は必要ありません。

プライバシーを設計の中心に置く

  • ローカル処理のみ:クラウド処理、アカウント、テレメトリー、分析、外部送信、カード情報データベースは使いません。
  • 保存する情報を最小限に:保存する設定は選択したリーダーのみで、IC、APDU、TLV、生体写真、カード全体の画像データは保存しません。
  • 明確な利用範囲:一括スキャン、遠隔操作、マイナンバーやJPKIへのアクセス、在留資格に関する自動判断は提供しません。

目の前のパソコンで、認定された担当者が一枚のカードを確認するための、意図的に範囲を絞った設計です。

検証と、不確実さを隠さない設計

合成データだけを使う自動テストに加え、新世代の実在カード60枚以上と旧世代の実在カード約10枚で検証しました。

OCRの結果は、現物カードと照合するための情報として表示します。電子署名の検証も、完全な有効性判断ではなく暗号学的な確認であることを明示しています。確認を行う人が限界を理解できるよう、画面上でも不確実さを隠さない設計にしました。

結果:複雑な確認作業を、安全でわかりやすい流れへ

技術的に複雑な作業を、認定された担当者が理解しやすい短い手順にまとめました。ローカル処理、明確な制約、日英の案内、実機での検証を組み合わせ、ソフトウェアが保証できないことまで保証するようには見せない設計です。

このプロジェクトは個人で開発したオープンソースプロジェクトであり、出入国在留管理庁または法務省との提携、承認、推奨、認証関係はありません。