設計と構築
3-27
親子アプリ
- 状況
-
アプリを作成する上で、入力項目を追加しようとしている。その中で、「見積書アプリ」の宛名欄など、同じデータを再利用するケースが多い一方、そのデータの更新頻度も比較的高い入力項目について検討している。フィールドタイプを「文字列一行」と「ドロップダウン」のどちらを利用すべきか迷っている。
- 問題
-
毎回手入力にすると手間が多く入力ミスの原因にもなってしまう一方で、ドロップダウンだけではすべてのケースに対処できず使い勝手の悪いシステムになってしまう。
見積書の宛名(顧客名)のように、同じデータを繰り返し入力するケースがある場合、フィールドタイプを「文字列一行」に設定すると、毎回の入力に手間がかかる上に、入力ミスが発生しやすい。同じ顧客名でも、利用者によって入力内容が微妙に異なる「表記ゆれ」が発生してしまう恐れもある。
一方、フィールドタイプ「ドロップダウン」では、内容を変更するにはアプリ管理者が都度その設定変更をする必要があり、顧客名のように増減や変更が頻度高く発生するデータには向かない。そもそもデータ数が多いと、「ドロップダウン」では画面から項目が見えづらく、使いづらいシステムになってしまう。
再利用することが多いが更新頻度も高いデータについて、効率的かつミス無く再利用・情報更新できる運用方法はないか。
- 解決
-
親子関係にあるデータは、親データを管理するアプリと、子データを生成するアプリに分ける。
上記の例の場合、「顧客データ」1件にたいして「見積書データ」が複数件紐づくため、この二つのデータは「親子関係」にあると表現される。親データを管理するアプリを別途立て、子データを生成するアプリと「ルックアップ」や「関連レコード一覧」、「アプリアクション」で繋げて利用する。
今回であれば、顧客データを管理するアプリ「顧客リストアプリ」を用意して、顧客名などはそちらに保管する。その上で「見積書アプリ」の方では、宛名を「ルックアップ」フィールドで用意し、「顧客リストアプリ」の「顧客名」フィールドをルックアップするように設計する。
加えて、「顧客リストアプリ」には「関連レコード一覧」フィールドを用意し、「見積書アプリ」のデータを参照する構成を取るとよい。また、「見積書アプリ」に「アプリアクション」で「新規顧客登録」ボタンを用意するのもよいだろう。
- 結果
-
アプリの利用者が入力の手間が減ることに加え、入力ミスが少なく、後から活用しやすい形でデータを保管できる。親子データでアプリが分かれた場合も、アプリ間を繋ぐ機能によってシームレスにそれぞれのデータにアクセスできるため、より柔軟なアプリ設計が可能になる。