- 格安航空券を探すたびに、ビザ、パスポート、税務上の居住要件など複数の規則を同時に確認しなければならない複雑な手順がある
- 各国の移民・税務システムがそれぞれ異なる基準で「滞在日数」を計算するため、混乱が生じる
- これを解決するため、旅行記録と規則を**コンパイラのように検証するアプリ「Residency」**を開発
- アプリはローカルで計算し、パスポートの有効期限・ビザ・IDP・税務上の居住要件などを自動でチェックする
- 個人の移動履歴と行政ルールを一貫して管理し、国境通過前にリスクをあらかじめ把握できるツールとして機能する
航空券購入前の20分
- 筆者はアイスランド行きの超格安航空券を見つけたとき、ビザ・パスポート・運転免許・税務上の居住要件などを即座に確認する必要があった
- この作業には約20分かかり、単なる価格比較ではなく、複数の行政条件を同時に検討する手続きだった
- 過去10年間の旅行履歴を記録したスプレッドシートをもとに、各種ビザ・市民権申請を処理してきた
- しかしこの方法は非効率だと判断し、「この旅行は問題を引き起こすだろうか?」を自動で判断するシステムを構想した
システムが教えてくれない「状態(State)」
- Schengen、英国、税務上の居住、パスポートの有効期限など、各システムがそれぞれ異なる基準で個人の状態を判断する
- Schengen は90/180日ルール、英国は税年度基準の深夜通過回数、パスポートは有効期限・空白ページ数などを基準にする
- こうした情報はユーザーに直接公開されておらず、国境審査官だけがアクセスできる
- 筆者はこれを「State をパースする問題」と定義した — 政府の視点とシステム状態を同時に解釈しなければならない
行政の例外ケース
- 英国市民権の申請では、申請日を基準にちょうど5年前の同じ日に英国にいたことを証明しなければならない
- 1日でも外れると、数か月待った末に申請却下と再申請費用の発生につながる
- 英国の空港で乗り継ぐ際、**旅行と無関係な活動(例: 軽食の購入、公演の鑑賞)**をして初めて「滞在」と認められる
- **モロッコのラマダン期間中の時間帯変更(UTC↔UTC+1)**によって、滞在日数の計算が変わることがある
- こうした規定は複数の政府サイトやPDFに散在しており、利用者が自分で解釈しなければならない
「コンパイラ警告」としての旅行シミュレーション
- 筆者は旅行計画を**「コンパイル可能か?」という観点で検証するリンター(linter)**の概念を導入した
- 例の経路(DUB→EWR→MEX→LHR→TFS)を通じて、各国の滞在日数計算の違いを比較
- アイルランド 0日、米国 0日、メキシコ 2日、英国 0〜1日、Schengen 1日
- 各結果はタイムゾーンデータベースのバージョンによって変わる可能性があるため、バージョンを固定し、変更時に再計算する
- 目標は国境審査官と同じ判断基準を備えた自動検証システムの構築だ
Residencyアプリの構造と機能
- アプリは「この行動をすると何が起きるか」をさまざまな形でシミュレーションする
- 例: アルプス旅行を予約した際に Schengen の滞在日数を超過するか、税年度終了前の出国がどんな影響を与えるか
- 各国ごとのルールは**バージョン管理された解釈データ(blob)**として保存され、規定変更時にも過去の記録を維持する
- パスポート・ビザ・IDP の有効性も状態機械(state machine)として処理する
- 例: ドバイ経由時に「到着時は有効」だが「出発時には無効」に変わるケースを自動検知する
- ユーザーは**自分で目標(例: 特定の国の滞在日数制限)**を設定でき、アプリはそれに基づいて警告を出す
ローカル優先設計とプライバシー保護
- すべての計算は端末内で実行され、ネットワーク接続がなくても動作する
- サーバー通信を排除することで、速度・プライバシー・法的責任の問題を回避する
- クラウド同期には対応しないが、代わりにファイルとして直接エクスポートできる
- 当初は Schengen の日数計算だけをサポートしていたが、その後英国の税務ルール・書類の失効・シミュレーション機能などが追加された
- アプリを公開した理由は、ほかの利用者にも同じ20分の不確実性を減らしてほしかったからだ
実際の利用結果と結論
- アイスランド航空券の購入前に、アプリはIDP不要・Schengen の残り34日・税務上の居住終了時点などを正確に計算した
- 実際の入国時も、ケプラヴィーク空港の審査官の判断とアプリの結果が一致した
- アプリ名はResidencyで、iOS向けに提供され、サブスクリプションなしの買い切りとなっている
- 結論として「国境は cURL で呼び出せないが、自分の状態を追跡することで政府と同じ答えを得られる」というメッセージで締めくくられる
1件のコメント
Hacker Newsの意見
EU市民でない人にとって、旅行にこれほど複雑な手続きが必要だとは知らなかった
英国市民権の申請では、申請日からちょうど5年前の同じ日に実際に英国にいたことを証明しなければならないという規則があまりに滑稽だ
1日でも外れると、何か月も待った末に却下され、また高額な手数料を払わなければならない
こういう規則がどうやって生まれたのか気になる
Royal Mailの配送速度次第で数日のずれが生じうる
私は申請前にHome Officeに自分の出入国記録を請求したが、彼らは5年前の私の所在をほとんど把握していなかった
旅行の半分ほどしか記録されておらず、しばしば片道分しか残っていなかった。管理はずさんだった
今の世代はEU市民権の恩恵をあまりに当然視しているように思う
それ以上滞在する人は「デジタルノマド」だが、ほとんどは不法就労している
不便さを少し誇張しているかもしれない
15分で済む話だ。もちろんここは英国ではなく大陸ヨーロッパだったが
「Greggsでソーセージロールを買って食べる」が空港での乗り継ぎ中の最初の発想なら、その人は市民権を得る資格が十分にある
記事自体は素晴らしかったが、タイトルが変だ
税務上の居住地、ビザ、市民権など国ごとの要件についての話なのに、「Downloading a border」という表現は意味が曖昧だ
おそらく「公式情報が複数のPDFやサイトに散らばっていて、自分で集めなければならない」という意味の比喩なのだろう
私の親戚の何人かはヨーロッパに観光ビザで入り、帰国便の航空券を捨てて不法滞在した
数年後に合法化されて市民権まで得たのに、私は法律を守っているせいで今も足踏みしている
合法的に働くためのビザ要件を満たせないのがもどかしい
観光ビザで入って働き、後で合法化された人を大勢見てきた
一方で正式な就労ビザで入った高学歴者は、会社のリストラでスポンサーシップを失い、30日以内に新しい仕事を見つけなければならなかった
こうした政策が意図された不均衡のように感じられる
著者の細かい作業ぶりには感心した
私もSchengenの90/180日計算機と税務上の居住地トラッカーを作ろうとしてClaudeで試したが、数学的な計算が難しすぎた
結局、自分で新しいプロジェクトを作らなければならなかった
アプリの結果が正確かどうか、手動で検証したのか気になる。こういうアプリではテスト検証が核心だ
ルールを簡単に修正できるし、単体テストが特に有用だ
入力→アルゴリズム→出力という構造ではエッジケースが多いからだ
記事では明示的には触れられていなかったが、著者が作ったアプリは誰でもダウンロードできる
https://drobinin.com/apps/residency/
Androidでなければ自分で試してみたかった
この著者が以前、Apple Watchでジムの入退館システムを作った人だと気づいた
そのときの記事も良かったし、今回の記事も気に入った
以前の記事リンク
あまりにも「国際的で洗練された自分」を演出しようとする自己顕示的な文体が鼻についた
公式アプリはいまいちなので、わざわざスマホを取り出す必要がない
この記事を読んで、自分のパスポートが許すビザ免除渡航の価値をあらためて実感した
不可能ではないが、あまりに非効率で時間のかかるプロセスだ
なぜ一部の国は入国時に、パスポートの有効期限がnか月以上残っていることを求めるのか気になる
滞在期間より短くパスポートの残存期間があると何が問題なのか分からない
こうした規則が実際にどんな違法行為や経済的問題を防いでいるのか疑問だ
けがなどで帰国が遅れた場合でもパスポートが有効である必要があるし、ビザ期間もシステム上一定単位でしか発給されない
パスポートの有効期限は事前に分かっているのだから、単に責任を持って管理しろという意味かもしれない
この記事は印象的だった
だからこそ、たいていの合理的な規則に**行政裁量(administrative discretion)**が含まれている理由をよく示している