業務システムで住所のマスターをどのように保持するか、というのはいつでも悩ましい問題です。
今回は、マスターデータをアプリに持ってそれを参照し、ごく簡単な住所の入力支援プルダウンを作る方法をご紹介します。
都道府県を選択したら、次にその都道府県で絞り込まれた市区町村を選択するという動きの、いわゆる多段プルダウンです。
Customineの基本的な事柄は、こちらの「はじめてのカスタマイズ」をご参照ください。
利用想定シーン
今回は、総務省が提供している「全国地方公共団体コード」をマスターとして利用し、都道府県と市区町村名のプルダウンを作成するカスタマイズをCustomineで作成してみます。都道府県のプルダウンを選択すると、それに基づいて絞り込まれた市区町村名のプルダウンが作成される、というカスタマイズです。
Customineでは住所に限らず、大項目を選択したら中項目を選択肢として表示し、中項目を選択したら小項目を表示するような、多段階のプルダウンを作成することができます。
事前準備
まず、カスタマイズを行う前に事前準備として住所マスターアプリを作成し、カスタマイズ対象アプリを作成します。
事前準備1:住所マスターアプリの準備
総務省のサイト:総務省|地方行政のデジタル化|全国地方公共団体コード (soumu.go.jp)
上記URLより、「都道府県コード及び市区町村コード」のExcelファイルをダウンロードして下さい。このExcelファイルを使って、新しくアプリを作成し、これをマスターとします。
まず、2023年4月の時点のファイルには、不要な2列(F、G列 ※空欄の列)が含まれていますので、これを削除します。
次に、A列(団体コード)の書式を文字列に設定します。この手順をせずにCSV出力してしまうと、団体コードの先頭の0が失われ、結果的に「北海道」ではなく「群馬」が先頭に来る状態になってしまいます。ご注意ください。
続いて、ダウンロードしたExcelファイルの「R●.●.●現在の団体(※注:シートの名称の年月日はダウンロードされたタイミングで変わります)」というシートの1行目を編集して改行を削除します。
修正前
修正後
その後に、一旦文字エンコーディングUTF-8のCSVファイルで保存し直して下さい。
※Excelファイルの場合はkintoneへの読み込みに最大1000行の制限があり、これを回避するため
CSVファイルとアプリの準備ができたら、「CSVファイルからkintoneアプリを作成する」で新たにアプリを作成し、次の要領でCSVファイルを読み込みましょう。
(2)プレビューを確認する の文字コードを「Unicode(UTF-8)」に変更
(3)アプリの作成を開始する のフィールドタイプを全て「文字列(1行)」に変更
アプリが完成したら、そのアプリの設定に進み、アプリ名を「都道府県コード及び市区町村コード」という名前に変更しておきます。
また併せて、フィールドコードをフィールド名と合わせるなど、分かりやすいものに変更しておきましょう。ここでは次のように設定しました。
【フィールド名】:【フィールドコード】
団体コード:団体コード
都道府県名(漢字):都道府県名_漢字
市区町村名(漢字):市区町村名_漢字
事前準備2:kintoneアプリ側の設定
用意した住所マスターを使ってプルダウンを生成するためにkintoneアプリを作成し、必要なフィールドを設定しておきます。
以下のようなフォームをあらかじめ用意しておきます。今回は2つのプルダウンを作成しますので「pref」「city」という2つのスペースと、選択した結果の都道府県と市区町村名を入れておくフィールド、そしておまけですが団体コードを入れておくフィールドを用意しました。
こちらのアプリはそれぞれのフィールド名とフィールドコードは同一です。
※スペースフィールドはフィールドコードのみ
pref:スペースフィールド
city:スペースフィールド
団体コード:文字列(1行)フィールド
都道府県:文字列(1行)フィールド
市区町村:文字列(1行)フィールド
Customineの設定
続いて「事前準備2:kintoneアプリ側の設定」で設定したアプリに対し、カスタマイズを設定していきます。
都道府県のレコード取得
このアプリに対して、Customineを使ってプルダウンを作成していきます。まずは都道府県のプルダウンを作成するためのレコードを取得します。
「都道府県コード及び市区町村コード」のデータを見ると、都道府県をあらわす行は市区町村名が空白になっており、市区町村名が空という条件でデータを取得すると、都道府県をあらわす情報のみを取得できそうです。
そこで次のように設定します。
やること
「条件を組み立ててレコードを取得する」を使います
「取得先アプリ」には先程追加した「都道府県コード及び市区町村コード」のアプリを選択します。もしkintoneにアプリを追加したばかりで一覧になければ「追加」をクリックしてアプリを追加して下さい
「検索条件」には
市区町村名(漢字)(フィールドコード:市区町村名_漢字)が空のものを対象に
団体コード で昇順に並び替え
となるように指定します。
条件
「条件」には、「追加画面・編集画面を表示した時」を選択しておき、「一覧画面の鉛筆を押した時」は「含めない」を選択しておきましょう。
設定は次のようになります。
都道府県のプルダウンの作成
次に、このレコードを利用して都道府県のプルダウンを作成します。
やること
「フィールド値をレコードから選択するプルダウンを作成する」を使います
「データ保存フィールド」に「都道府県」を選択
「スペース」に「pref」を選択
「レコード」に先程設定したレコード取得のアクションを選択
「表示するフィールド」と「値となるフィールド」にはそれぞれ「都道府県名(漢字) (フィールドコード:都道府県名_漢字)」を選択
これで取得したレコードでプルダウンが作成されます。
条件
「条件」は「他のアクションが完了した時」で、アクションには先程設定したレコード取得のアクションを選択しておきます。
設定は次のようになります。
ここまでで一旦、「kintoneアプリへ登録」して動きを確認してみてください。
次のようなプルダウンが作成されましたでしょうか?
市区町村名のプルダウンの作成
続いて、選択された都道府県に基づいて、市区町村名のプルダウンを作成します。こちらも「条件を組み立ててレコードを取得する」を利用するのですが、少し検索条件が変わってきます。以下のように設定します。
やること
「条件を組み立ててレコードを取得する」を選択します
「取得先アプリ」には先程と同じく「都道府県コード及び市区町村コード」のアプリを選択します
「検索条件」には
都道府県名(漢字)(フィールドコード:都道府県名_漢字)が選択された都道府県(「都道府県」フィールドの値)と一致するものを対象に
かつ、市区町村名(漢字)(フィールドコード:市区町村名_漢字)が空でないものを対象に
団体コード で昇順に並び替え
となるよう指定します。
やることの設定はこれで完了です。
これを都道府県の選択に基づいてレコード取得するようにしたいので、「条件」には、「フィールドの値を編集して値が変わった時」を選択します。「フィールド」には「都道府県」を選択しておき、「一覧画面の鉛筆を押した時」は「含めない」を選択しておきましょう。
設定は次のようになります。
続いて、このレコードを元にプルダウンを作成します。先ほど(都道府県のプルダウン作成)とほぼ同じですね。
やること
「フィールド値をレコードから選択するプルダウンを作成する」を選択します
「データ保存フィールド」には「市区町村」を選択します
「スペース」には「city」を選択します
「レコード」には先程設定した市区町村のレコード取得のアクションを選択します
「表示するフィールド」と「値となるフィールド」にはそれぞれ「市区町村名」を選択します
これで取得したレコードでプルダウンが作成されます。
「条件」は「他のアクションが完了した時」で、アクションには先程設定した市区町村名のレコード取得のアクションを選択しておきます。
設定は次のようになります。
これでプルダウンの作成は完成です。「kintoneアプリへ登録」して動きを確認してみてください。
選択した都道府県に対応したプルダウンが作成されましたでしょうか?
編集画面表示時のプルダウン初期表示
ここまでのカスタマイズで、追加画面や編集画面の操作時には正しく動くようになりました。
続けてこれを、編集画面の初期表示時でも動作するようにしたいと思います。編集画面を表示したときは初期値が既に入っていますので、「値が変わった時」にプルダウンのデータを用意するのではなく、表示した段階で用意するようにします。
具体的には「市区町村名のプルダウンの作成」で作った2つのアクションをコピーし、次のように変更します。
やること「条件を組み立ててレコードを取得する」条件「フィールドの値を編集して値が変わった時」のアクション
→条件を「編集画面を表示した時」に変更します。
やること「フィールド値をレコードから選択するプルダウンを作成する」条件「他のアクションが完了した時」のアクション
→やること「フィールド値をレコードから選択するプルダウンを作成する」の「レコード」で指定するアクション番号を、上で設定したアクション(やること「条件を組み立ててレコードを取得する」条件「編集画面を表示した時」のアクション)に変更します。
同様に条件「他のアクションが完了した時」の「アクション」もアクション番号を変更します。
設定は次のようになります。
おまけ:団体コードの取得
これはおまけですが、最後にこのマスタに含まれる団体コードを利用して、住所データを管理することを考えてみましょう。これは、検索条件の書き方の練習にもなりますので、ぜひやってみて下さい。
選択された都道府県と市区町村を元にレコードを取得し、団体コードの値をフィールドにセットします。併せて、団体コードはユーザーが入力、修正できないようにあらかじめ無効化しておくと良いでしょう。
こちらは皆さんで考えていただきたいので、詳細の手順は記述しません。おそらく、次のようなカスタマイズになると思いますので参考にしてみて下さい。
最終的には、以下のような入力支援画面が完成しました。
まとめ
マスターアプリのデータを元に、プルダウンを作成するカスタマイズはこのような形で実現することができます。プルダウンを分類ごとに分けてどんどん絞り込んでいくようなカスタマイズも、簡単に実装できることがお分かりいただけたのではないでしょうか。
マスターを元にプルダウンを作成することで、例えばカラムの並び順や日付によるマスターデータの差し替え(例えば季節ごとに更新されるマスターデータの適切な参照)なども、検索条件を工夫することで柔軟に対応することが可能になります。
この例ではマスターアプリは1つですが、複数のアプリであっても問題なく実行できますので、ぜひお試しください。
また、実際に作成してみられてご不明な点などございましたら、お気軽にチャットでご質問ください。