郵便番号 住所 双方向検索抽出型ファイルメーカー住所録(その1)

2011年頃市販されていたMac用の住所録ソフトは多数次検索でフリーズしてしまう欠点がありました(最近は問題ないかもしれませんが。)。これでは安心して住所管理が出来ないため、住所録もファイルメーカーで作ることにしました。
開発は現時点で認識している住所録の欠点を克服していることを目標としました。ターゲットは下記です。
1.住所や氏名は高速に検出されること
2.検索抽出が順次リスト型の様な目で追う検索方式を避ける
3.5000件位データがあっても安定していること
4.郵便番号、住所の双方向検索が可能なこと
開発環境は、iMac Late 2009、チェックPCはMacMini Late 2012、OSは10.9.5です。FileMaker は Pro12とPro14 Advanced、検証はMacBook ProとWindows 10 PCで行いました。

双方向検索はノーマルな検索方式しか考えられず、ファイルメーカーの高速検索を使ったオーソドックスな方法としました。
エクセルや他のソフトからインポート、エクスポートが柔軟に行えうことが出来るよう、他のソフトを調べ、フィールドの構成など出来るだけ市販ソフトに合わせ込みました。
開発の短縮化のため、住所管理の部分は前に手がけたファイルメーカー販売管理をベースにしました。

_MG_9690
<Photo Data>2015/06/12 荒神谷遺跡二千年古代ハス
Canon EOS5DMarkII EF24-105mm f/4L IS USM 1/500 f4.0
(5000Kでキャリブレートディスプレイによる現像です。色空間はAdobe)

_MG_9690-1-2
<Photo DATA>同上の写真をWeb用に再現像しました(sRGB)。太陽光が強い日でした。こちらの方が実際に近い画像になっています。

印刷出力はラベルとはがきに印刷出来る様にしました。

下のスクリーンショットは開発初期Verの住所録の入力閲覧画面です。
スクリーンショット 0027-11-01 10.49.41住所データは自宅用、会社用を設け、TABで切り替えて使用するようにしました。名前はひらがなによるAUTO変換を付けました。
対象の方の写真を貼り付けることやコンタクト履歴を文書で記録管理できるようにしました。ファイルメーカーの文書フィールドは一般的なソフトと違って、ある程度のドキュメント記録が可能なことを利用しました。

郵便番号は「ゆうちょ」からKEN_ALL.CSVをダウンロードさせていただき使用しました。
ダウンロードデータは県、市町村が別々のセルに入っています。県と市町村を結合させて使いました。CSVデータをエクセルで開いて文字列結合しました。

郵便番号は前ゼロ付きで桁数をそろえる必要があります。
エクセルは普通に開くと頭のゼロがありません。このため、郵便番号部分は’0001’のように、囲い文字列として扱って頭の0を確保しました。243-0001のような郵便番号のつなぎのハイフンはファイルメーカー側で作成しました。

下記は、「郵便番号から住所」を正逆検索させるスクリプトのベーシックな部分です。
スクリーンショット 0027-12-05 10.29.46

こうした検索ではリレーションしてルックアップするのが一般的です。ルックアップは一致すると瞬時にデータをコピー出来ます。しかし、「243-0」といった様な桁数不足の場合ルックアップは出来ません。
住所から逆変換となると、どこまでの長さの住所データが郵便番号と一致するのかは分かりません。また、郵便番号から住所、住所から郵便番号と両方にルックアップをかけると無限ループとなってフリーズしてしまいます。

結局、最もオーソドックスなノーマルな語句検索方式としました。この方法はあいまいな検索も可能です。データ件数が多いとどうなのかは心配でしたが、実際に5000件のデータで検索チェックを繰り返してみますとほとんど問題になりませんでした。この方式で行くことにしました。(初回の検索時クエリーを構築する時のみ時間がかかります)。

スクリーンショット 0027-11-04 15.33.09 スクリーンショット 0027-11-04 15.31.16
左は郵便番号を住所に変換するスクリプト、下はリレーション図になります。

開発を進めていく内に郵便番号には重複があると知りました。
この対策は困ってしまいましたが、重複候補をヒットした時、候補を書き出し自分で選ぶということにしました。
候補ボックスはポップアップウィンドウを使いました。選択後は消します。

下記の検索候補というスクリーンショットが重複郵便番号出力のポップアップウィンドウです。
例えば、郵便番号に498-0000と入力しますと、一つの郵便番号からスクリーンショットにありますように愛知県と三重県の二つの候補が出てきます。
自分がどちらにするかは分かっていますのでいずれかを選択して決定をします。
スクリーンショット 0027-11-01 10.40.01住所から郵便番号の逆変換をするときも同じ考えです。

ベーシックな検索ですが、あいまい検索が可能です。例えば住所に「海老名市」とだけ入力すると、海老名市の求める町名が分からなくても、市の全ての町名を郵便番号簿から引っ張ってくれます。不明なときの強力な入力補助になります。

リレーション図の郵便番号簿は二つにしました。自宅用と会社用です。二つの郵便番号は自己リレーションさせて使用します。ファイルメーカーのテーブルに取り込んでスピードを上げていますので、ファイル容量は抱きかかえた分大きくなってしまいました。

メインメニューのTAB3は個人データ管理画面です(下記のスクリーンショットです)。この他、スクリーンショット 0027-11-01 10.56.35ファミリー登録は5名、名前、敬称、続柄、生年月日とコメントを記入管理出来るようにしました。
生年月日は、S、M、Hの先頭アルファベット簡易和暦式入力と西暦に対応させました。表示書式は正式和暦(平成XX年式)としました。。

年齢計算の下記の式に訂正します(2018.08/11)。
年齢=Case ( IsEmpty ( 誕生日本人 ) ; “” ; Date ( Month ( Get ( 日付 ) ) ; Day ( Get ( 日付 ) ) ; Year ( Get ( 日付 ) ) ) < Date ( Month ( 誕生日本人 ) ; Day ( 誕生日本人 ) ; Year ( Get ( 日付 ) ) ) ; Year ( Get ( 日付 ) ) – Year ( 誕生日本人 ) – 1 ; Year ( Get ( 日付 ) ) – Year ( 誕生日本人 ))

誕生日フォールドに計算する方の誕生日を定義します。

FileMakerに紹介記事があります。参照ください。
更に、年賀受出に履歴、マークを設けました。(お歳暮、お中元の出し受けは今のところほとんど使っていないため現在のVerでは取り止めました。)。

年度データは初期化機能を設けています。
本年より3年前と翌年を毎年1月が来る度に更新します。更新はボタンの手動ですが、数千件データがあっても自動で更新するようにしました。

インポートについては、市販のWindows住所録からテキスト形式で書き出したファイルをインポートしましたが問題なく取り込めました。

さて、「年賀状が届いてからの行動」は、届いた方のデータを住所録から見つけることです。ファイルメーカーのエンジンを使った検索は高速で見つけやすいと思います。また、とても安定しています。

検索補助機能として、所定のフィールドに検索したい言葉を入力してEnterキーを押しますと、一次候補をドロップダウンさせ、この中から目標の候補を見つけて選択決定させます。
例えば、「安部三郎」の場合、全部入力せずに「安部」とだけ入力しエンターキーを押すと、登録されている「安部」さんが、例えば安部一郎、安部二郎、安部三郎、安部一子などのように表示されます。この中から安部三郎さんを選択するといった具合です。
件数が多くても高速抽出が可能です。

この他、年賀状の表書き印刷はファイルメーカー住所録その2を参照ください

次回は、(その2)として印刷編を予定しています。
ラベル印刷、メールについては別途投稿を考えています。
パーマリンク名を変更しました。リンクかけておられる方、申し訳ありません。

2015/11/02 1st
途中履歴省略
16th 見直し2018/08/11
K.Fukuma

Pocket
LINEで送る