公開日:
「マスタを直したのに反映されない」その混乱、身に覚えありませんか?
取引先マスタや商品マスタをkintoneで作り、ルックアップで他のアプリから呼び出す。多くの企業がやっている、ごく普通の使い方です。
ところが、こんな経験はないでしょうか。
たとえば、顧客マスタに担当営業の名前を登録しておき、案件管理アプリではその担当営業をルックアップで取得していたとします。ある顧客の担当が山田さんから佐藤さんに変わったので、顧客マスタの担当営業を書き換えた。ところが、すでに登録されている案件の担当営業欄は、山田さんのまま変わりません。すると佐藤さんが「自分の担当案件」で絞り込んでも、引き継いだはずの案件が一覧に出てこない―といったことが起こります。
実はこれ、不具合でも設定ミスでもありません。ルックアップというフィールドの「仕様」そのものです。この仕組みを正しく理解しないまま運用していると、担当を引き継いだつもりが現場に伝わっておらず対応が漏れてしまったり、「マスタさえ直せば全部直る」という誤解が現場に広がってしまったりします。
今回は、ルックアップの基本的な仕組みと、運用でつまずきやすいポイント、そしてそれを防ぐための仕組み化のコツを整理してご紹介します。
ルックアップの仕組みと得意な使い所
ルックアップは、別アプリに登録されているマスタデータから、対応する値をコピーして取得できる機能です。取引先マスタアプリと連携させれば、取引先コードを入力するだけで会社名や住所、担当者名などを埋めることができますし、商品マスタアプリと連携させれば、商品コードから商品名や単価を呼び出せます。
これによって、次のようなメリットが得られます。
- 手入力によるミスや表記ゆれを防げる
- コードなど1つの入力で、商品名や単価など複数の項目をまとめて取得できる
- 毎回同じ情報を手で入力する手間が大幅に減る
この「コピーして取得する」という仕組みだからこそ、ルックアップが特に力を発揮するのは、取引先マスタや商品マスタのように「その時点の値をレコードに記録として残しておきたい」場面です。受注時点の単価のように、あとから変わっては困る値をそのレコードに固定するのに向いています。過去の受注レコードを見返したときに、当時の単価がそのまま残っているのは、いわば正しい挙動です。逆に言えば、ルックアップは「今この瞬間の最新値」を保証する機能ではない、ということでもあります。

ルックアップ運用でよくある3つの落とし穴
便利な機能である一方、ルックアップは仕組みを正しく理解しないまま使ってしまうと、思わぬトラブルの原因になります。
よくある落とし穴を3つご紹介します。
落とし穴1:「コピー取得」であることを知らずに「参照」だと思っている
もっとも多い誤解が、これです。ルックアップは、名前や見た目から「マスタの値を常にリアルタイムで参照している」ような印象を受けますが、実際に行われているのは、ルックアップを実行した時点の値をレコードに「コピー」する処理です。
つまり、いったんコピーが完了すれば、そのレコードとマスタとの間にリアルタイムの連携はありません。マスタ側のデータをその後どれだけ更新しても、すでに作成済みのレコードには一切反映されないのです。
先ほどの「取引先の担当者」の例で言えば、受注レコードのルックアップ項目には、レコード作成時点の担当者名がそのままコピーされています。あとから取引先マスタの担当者を新しい方に書き換えても、すでに作成済みのその受注レコードを開き直したときのルックアップの担当者名は、変わりません。この前提を知らないまま設計・運用してしまうアプリは、実は少なくありません。

落とし穴2:関連レコード一覧との使い分けができていない
kintoneには、ルックアップとよく似た機能として「関連レコード一覧」があります。こちらは値をレコードにコピーするのではなく、条件に合致する他アプリのレコードをその都度検索し、一覧として表示する機能です。
この二つの使い分けができていないと、「常に最新を見たい」のにルックアップで固定値をコピーしてしまい情報が古いまま放置されたり、逆に「記録として残したい」のに関連レコード一覧を使ってしまい、マスタが変わるたびに表示内容も変わって記録として使えなくなったりします。目的と機能の組み合わせを誤ったために起きるトラブルです。
もうひとつ見落とされがちなのが、関連レコード一覧に表示している項目は、kintoneの一覧画面に表示するフィールドとしては選べないという制約です。絞り込みの条件としては使えますが、一覧に表示するフィールドに加えたり、その値で並び替えたりすることはできません。一覧に表示するフィールドとして使いたい項目には、そもそも関連レコード一覧は使えない、という判断基準にもなります。
実際に、同じ受注レコードにルックアップ項目と関連レコード一覧の両方を並べて置き、商品マスタの単価を10万円から12万円に変更してみると、この違いは一目瞭然です。保存後にレコードを開き直すと、ルックアップの単価は10万円のまま固定されている一方、関連レコード一覧の方はマスタと同じ12万円に切り替わっています。同じ商品マスタを見ているはずなのに、片方は古い値、片方は最新の値。この二つを併用しているアプリほど、「結局どっちが正しいの?」という混乱が起きやすくなります。

落とし穴3:ルックアップのキーに「変わりうる値」を使ってしまっている
ルックアップを設定する際、見落とされがちなのがキーに指定するフィールドの選び方です。たとえば顧客マスタから担当営業を取得する場合、キーとなるフィールドに顧客コードではなく「顧客名」を使ってしまっているケースをよく見かけます。
同名の顧客が複数存在する場合、検索候補に似た名前の別レコードが並ぶことになり、誤って別の顧客のレコードを選んでしまう、といったミスが起こり得ます。
さらに厄介なのが、顧客名はあとから変わりうる、という点です。社名変更に合わせて顧客マスタ側の顧客名(=キー)を書き換えると、すでにルックアップ済みの他アプリのレコードには古い顧客名がキーとして残ったままになります。この状態でCSVエクスポート→編集→インポートという一括更新を行うと、レコード側のキーと最新のマスタのキーが一致せず、インポートに失敗してしまいます。
つまり、ルックアップのキーは「あとから変更してはいけない」値であることが前提です。顧客名や商品名のように、あとから変わりうる項目をキーに使ってしまうと、この前提が崩れます。キーには顧客コードや商品コードのように、変更されることのない一意な項目を使うのが基本です。
ルックアップを正しく使うための仕組み化ポイント
こうした落とし穴は、事前の設計と社内での認識合わせによって、十分に防ぐことができます。
まず大切なのは、そのフィールドで何を実現したいのかを最初に整理することです。
ルックアップは実行時点の値を保持する機能なので、過去の値をそのまま残したい用途に向いています。一方、取引先の現在の担当者や商品の現在の在庫数のように、常に「今どうなっているか」を知りたい項目には、そもそもルックアップではなく関連レコード一覧を使うのが基本です。フィールドごとに、どちらが向いているか仕分けておきましょう。
そして、マスタを更新しても既存レコードには自動反映されないという仕様を、関係者に周知しておくことも重要です。「マスタさえ直せば全部直る」という誤解を防げます。なお、「マスタの更新を既存レコードにも反映したい」という要件がある場合、基本機能だけでは実現できません。gusuku Customineのようなノーコードカスタマイズツールを使えば、マスタ更新時に関連レコードを自動更新する仕組みも構築できるので、必要に応じて検討してみてください。
合わせて、ルックアップを使うと決めたフィールドについては、キーの選び方にも注意が必要です。顧客名や商品名のように変わりうる項目をキーにすると、同名レコードの誤選択や、キー変更にともなうCSVインポートエラーの原因になります。キーには、顧客コードや商品コードのように、表記が変わらず必ず一意になる項目を使うのが基本です。マスタを設計する段階で、どのフィールドをキーにするかをあらかじめ決めておきましょう。
最後に大切なのが、これらを個人の判断に任せず、チームのルールとして明文化することです。「記録として固定したい項目」「常に最新を見たい項目」の仕分けと、キーにするフィールドの基準を、設計段階でルール化しておくことで、あとから場当たり的に機能が混在するのを防ぎ、担当者が変わっても一貫した運用ができるようになります。

まとめ
ルックアップは、マスタ管理を効率化してくれる便利な機能ですが、その仕組みを正しく理解していないと、かえって混乱の種になってしまいます。
フィールドごとに「記録用」か「常に最新用」かを仕分け、ルックアップを使う場合はキーに変更されない一意な項目を選び、これらをチームのルールとして明文化しておく。
今回ご紹介した内容を、ぜひ運用の見直しに役立ててください。
「うちのアプリ、ルックアップの使い方がそもそも合っているんだろうか?」
「マスタと実際のレコードがずれてしまっている気がする」——そんな不安をお持ちの方は、お気軽にご相談ください。
📺動画でチェック!
本コラムと連動した動画を公開しています。こちらも是非ご覧ください!

