「東京都府中市」は「京都府」なんですこうしす! こちら京姫鉄道 広報部システム課 @IT支線(40)

情報セキュリティの啓発を目指した、技術系コメディー自主制作アニメ「こうしす!」の@ITバージョン。第40列車は「住所の整合性」です。※このマンガはフィクションです。

» 2023年09月06日 05時00分 公開

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

こうしす!」とは

ここは姫路と京都を結ぶ中堅私鉄、京姫鉄道株式会社。

その情報システム(鉄道システムを除く)の管理を一手に引き受ける広報部システム課は、いつもセキュリティトラブルにてんてこ舞い。うわーん、アカネちゃーん。

こうしす!@IT支線」とは

「こうしす!」制作参加スタッフが、@IT読者にお届けするセキュリティ啓発4コマ漫画。


今回の登場人物

akane

祝園アカネ(HOSONO Akane)

広報部システム課 係員。情報処理安全確保支援士。計画的怠惰主義者で、有休取得率は100%。しかし、困っている人を放っておけない性格が災いし、いつもシステムトラブルに巻き込まれる

mei

英賀保芽依(AGAHO Mei)

広報部広報課係員。天才的トラブルメーカーで、システム課やシステム子会社からは「アルティメットバグトリガー」として知られる。アカネの同期


mei

女鹿 梨(MEGA Rin)

蔵王電鉄の広報&DX担当。何事も猪突(ちょとつ)猛進。高校時代の成績は情報以外の科目はオール2。人事交流で京姫鉄道とつながりがある




第40列車:まあ、東の京都やからね
















※Live2Dモデル:Live2D 高嶋るみあ、背景3D:OPAP-JP contributors


井二かけるの追い解説

 マンガのテーマは、「住所」です。

 自動処理では一筋縄ではいかないのが、住所の入力チェックや照合です。マイナンバーカードに関わる諸問題により、住所の正規化の難しさが注目されました。

 こうした正規化の問題だけではなく、マンガで取り上げた「部分一致」と「同音異字」のような問題も、住所の難しさの一つです。

部分一致のワナ

 日本語表記で正しく都道府県名から入力されていたとしても、部分一致で偶然他県の住所が一致してしまうことがあります。例えば、「京都府」は「東京都府中市」に部分一致します。その結果、京都府で検索したはずなのに東京都府中市の店舗が現れるというのは、よくある不具合です。場合によっては、マンガのように京都府民チェックをすり抜けたりすることもあるかもしれません。

 もし住所が必ず都道府県名から始まっているという前提があるのならば、先頭一致の条件で検索やチェックを行う必要があります。

市区町村名のワナ

 同じ読みで字が異なる自治体は、思いの外多くあります。例えば、「さすがに『やまがたし』は1つしかないだろう」と思っていても、「山形市」(やまがたし)と「山県市」(やまがたし)のように同じ読みの市区町村名が存在します。「都道府県名が省略された住所の可能性や、漢字の書き間違いも考慮して、住所のフリガナをチェックしたらいいだろう」と思っていたら、思いも寄らない自治体と一致(部分一致)してしまいます。

 さらに、同音同字の自治体が存在していることも有名です。

 マンガに登場した「府中市」も、広島県と東京都に存在します。北海道と福島県の「伊達市」の例もあります。

横着できない住所処理

 このように、単純にどこの都道府県かをチェックするだけでも、住所にまつわる処理は横着できません。

 住所の正規化のためのオープンソースのライブラリが存在しますが、その「都道府県名が省略されている住所の正規化」というプルリクエストの内容を読むだけでも、文字列一致だけで確認できるような単純な処理ではないことが分かります。

 マンガの事例では、先述のような住所正規化ライブラリを使用するのも1つの方法ですが、そもそもとして、申し込みフォームでは、都道府県名、市区町村名の部分をあらかじめ決まった選択肢のドロップダウンリストからユーザーに入力してもらうという方法もあります。ただ、都道府県名に「京都府」を選んだ際に、市区町村名の選択肢に「東京都府中市」が現れては意味がありません。それを防ぐためには、ドロップダウンリストの抽出条件に全国地方公共団体コードを用いるという方法があるかもしれません。

他にもいろいろ

 マンガは比較的簡単な事例ですが、住所には他にもいろいろなワナがあります。幾つかの例を紹介しましょう。

 「都道府県名が含まれていること」をチェックする場合、ありがちなのが、「都」「道」「府」「県」のいずれかの文字が存在すること、という条件で横着してしまうケースです。

 これはうまくいきません。なぜなら、「京都市」には「都」、「尾道市」には「道」、「府中市」には「府」、「山県市」には「県」の文字が含まれるからです。

 このワナは、慎重に条件を絞り込むことにより、ある程度簡単に回避できるかもしれません。

 しかし、簡単に回避できるワナばかりとは限りません。もし「同じ住所の人は一度しか申し込めない」という申し込み制限が要件の場合はどうでしょうか?

 これを実現するのは相当に困難です。

 まず問題となるのが、京都市内の通り名を含む住所です。どの通りを基準にするかで「西入」か「東入」、「上る」か「下る」を複数通りの表記にでき、さらに角の建物であれば「角」の表記があります。極論としては、もし東西南北の通りに囲まれたブロックが丸ごと1つの建物であれば、理論上は同じ建物に少なくとも16個の住所表記が存在します。

  1. X京区M条通A東入Y町123
  2. X京区M条通B西入Y町123
  3. X京区N条通A東入Y町123
  4. X京区N条通B西入Y町123
  5. X京区A通M条下るY町123
  6. X京区A通N条上るY町123
  7. X京区B通M条下るY町123
  8. X京区B通N条上るY町123
  9. X京区M条通A角Y町123
  10. X京区M条通B角Y町123
  11. X京区N条通A角Y町123
  12. X京区N条通B角Y町123
  13. X京区A通M条角Y町123
  14. X京区A通N条角Y町123
  15. X京区B通M条角Y町123
  16. X京区B通N条角Y町123

 しかし、町名と番地さえ合っていればいいだろうと考えて、単純に通り名を除去し「X京区Y町123」としてしまうと、別の問題を引き起こします。「X京区」には同名で異なる「Y町」が複数存在するために、通り名なしでは場所を一意に特定できなくなってしまう可能性があるからです。それによって、異なるY町の同じ番地の住所に住む別人が申し込み制限を受けてしまうかもしれません。

 表記揺れは京都市内以外でも起こり得ます。例えば、地番と住居表示による表記揺れ問題です。

 番地の表記にはいろいろありますから、ハイフン区切りの住所表記にそろえて比較するという方法を真っ先に思い付きます。例えば「○○1丁目2-3」などの表記を「○○1-2-3」にそろえるなどです。

 しかし、「○○1番地2 ハイツ3号室」という意味の「○○1-2-3」と、「○○1丁目2番3号」という意味の「○○1-2-3」は別の場所を意味します。前者は土地の地番、後者は住居表示であり、住居表示は地番とは関係なく後から割り振られるためです。

 住居表示が設定された後は、新しい住所を使わなければなりませんが、実際の所、住居表示設定前の地番表記の旧住所を使い続けても郵便物は届くために、住所変更手続きなどを怠って、旧住所を使い続けてしまう人もいるようです。もしそのような人が住居表示設定前の地番表記の旧住所で申し込んでしまうと、同じ番号の住居表示の住所に住む別人が申し込み制限を受けるという事態が発生してしまうことでしょう。

 このような事態を自動的に防ぐことは容易ではありません。一定の精度で妥協して運用でカバーするか、要件自体を再検討する必要があるかもしれません。

 本稿で全ての事例を取り上げることは不可能ですが、数限りないこうしたワナが存在するのが、住所の奥の深さです。住所をチェックしたり、住所で名寄せしたりするプログラムを開発する際は、簡単な方法はどこにもないと肝に銘じ、横着しないように心掛けましょう。

筆者プロフィール

原作:井二かける

アニメ「こうしす!」監督、脚本。情報処理安全確保支援士。プログラマーの本業の傍ら、セキュリティ普及啓発活動を行う。

著書:「こうしす!社内SE 祝園アカネの情報セキュリティ事件簿」(翔泳社)

ハックしないで監査役!! 小説こうしす!EEシリーズ 元社内SE祝園アカネ 監査役編 [1]」(京姫鉄道出版)

dアニメストアにて、アニメ『こうしす!EE』配信中。

解説:京姫鉄道

「物語の力でIT、セキュリティをもっと面白く」をモットーに、作品制作を行っています。


原作:OPAP-JP contributors

オープンソースなアニメを作ろうというプロジェクト。現在はアニメ「こうしす!」を制作中。


Copyright © ITmedia, Inc. All Rights Reserved.

スポンサーからのお知らせPR

注目のテーマ

Microsoft & Windows最前線2025
AI for エンジニアリング
ローコード/ノーコード セントラル by @IT - ITエンジニアがビジネスの中心で活躍する組織へ
Cloud Native Central by @IT - スケーラブルな能力を組織に
システム開発ノウハウ 【発注ナビ】PR
あなたにおすすめの記事PR

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。