ルックアップのキー[コピー元のフィールド]って、初心者の方にどう説明されていますか?
(過去から何度も議論されている話題ですが。例:https://kincom.cybozu.co.jp/chats/sfnqkjn03tfhw0ix )
■前提
各部署で必要なアプリはそれぞれの担当者が作成しています。
「やりたい」と言ってくれた人には基本的にアプリ管理権限を付与しているので、アプリ作成者のスキルはまちまちです。
■背景
最近、とある事情によりマスタアプリの切り替え作業があり、参照しているアプリを一通り見直したところ、少しモヤモヤしたことがありました。
例(脚色あり):
ルックアップの「関連付けるアプリ」は【顧客リスト】、
[コピー元のフィールド]が「会社名」になっているケースがチラホラ。
【顧客リスト】には「値の重複を禁止する」に設定した主キー「会社コード」があるので、そちらを使って欲しいのが本音。
このままだとデータ移行時にCSV読み込みがうまくいかないパターンがあり、アプリ修正やデータ加工が少し面倒でした。
■モヤモヤポイント
① 初心者向けガイドの事例設定
公式ガイド「kintone ルックアップの基本を学ぶ|便利に使おうガイドブック」https://kintone.cybozu.co.jp/material/pdf/kintone_guidebook_vol04.pdf を見ると、「値の重複を禁止していない」会社名をキーにする流れになっています。
公式セミナーも同様の傾向で、DBの考え方に慣れていない方だと「会社名」で設定してしまうのは自然な流れかなと思います。
② 重複禁止のフィールドをどうするか
・レコード番号は非推奨
CDNの記事「レコード番号をユニークキーにしない」https://cybozu.dev/ja/id/2151b1e14daba30d495c8c38/#not-use-record-number
にもあるように、レコード番号はご法度。
……となると、プラグイン・カスタマイズ等で自動採番という選択肢になりますが、CSV取り込み時にカスタマイズは動作しない点や、krewSheet等の標準画面以外の動作にも気を使う必要が出てきます。
・複合キー生成
「会社名+電話番号」などの例も見たことはありますが、社名変更リスクを考えると主キーにするのは不安。
基本的には「一生変わらない値」を主キーにしたいところです。
また計算フィールドで結合させると、重複禁止にできない問題もあるある。これもプラグイン・カスタマイズ頼み。
・コードは分かりにくい問題
[コピー元のフィールド]にどうにかして作成したユニークキーを設定できたとして、実際にルックアップ使用する側からするとコードなんて一々覚えてられないので面倒って声が出ます。
……となると、逆引きできるプラグイン・カスタマイズ。
皆さん大好きTISさんの「ルックアップコピーフィールド検索プラグイン」
個人的にはRibbit's worksさんの「関連付けないルックアッププラグイン」が秀逸です。関連付けないけど関連付けることもできる優れもの。(絞り込み条件をクエリで設定させるのだけはどうにかして欲しいですが・・・)。
■本題
キンコミに参加されている皆さんは、上記のようなポイントを理解した上で運用されていると思いますが、
これからアプリ作成を始める初心者の方に、どこまで説明していますか?
現状としては、初期段階ではルックアップの細かい話までは説明していません。初心者レベルの方が作るアプリはある意味シンプルなので修正もどうにかはなるってのもあります。
「痛い目を見て学ぶ」のも成長の一部かなと思うのですが、よくわからんからもうやらない!ってなるのは悪手なので、うまくフォローできる方法がないかと悩んでいます。
(正直なところ、公式が「自動採番フィールド」と「ルックアップ仕様」を改善してくれるのが一番なんですが…笑)
ーーー
たまには質問してみようと思い投稿してみました!
皆さんの運用方針を是非参考にさせてください!!
ミュートしたユーザーの投稿です。
投稿を表示ルックアップ...突き詰めていくと 結局
kintoneの弱点「検索エンジン」の使いにくさ(=めんどくさい!)
に突き当たるんですよね
ユニークCODE(≒英数文字の羅列)を覚えられないのは当然で
データベースは「ユニークCODE」を キー とするのも常識※で
※(○○奉行とか○○会計とか、ほとんどの データベースソフトでの常識)
各社 検索方法を考えているのではないでしょうか?
それを いちいち 説明するのは...
説明しても理解できるかはわからないとおもいます
(データベースの仕組みの説明になる)
なので、
マスタアプリ(ルックアップの参照先)には
① Pluginを利用して、ユニークCODE(一意な№)を取得
トランザクションアプリ(ルックアップフィールドのあるアプリ)の
② ルックアップフィールドは ①で取得した№を指定
③ 関連付けないルックアッププラグイン(Ribbit's works)を
利用して、検索窓フィールドを作る
と云うルールを作り
この①~③の厳守してもらうようにするのが、よいのではないでしょうか?
ご参考_【初心者入門】データベースとは?図解で仕組み・種類を簡単に解説!
---ちなみに、ですが-------------------
「関連付けないルックアッププラグイン」はテーブル内では機能しません
(有料の「拡張ルックアップ プラス」なら機能するみたいですが...)
なので、自分はテーブルの外からドラッグすることで対応してますヨ
ミュートしたユーザーの投稿です。
投稿を表示おはようございます。
弊社も同じような運用をしています。
弊社も同様に[コピー元のフィールド]は【会社名】となっていることが多いです。
基幹システムがあり、取引先マスタアプリは基幹システム内の取引先マスタから
CSVで書き出したものを加工してkintoneに取り込んでおります。
基幹システムでは【会社コード】【会社名】のどちらでも引用できる仕組みになっており
kintoneでも引き続き同じように運用希望とのことでした。
【会社コード】【会社名】のどちらも重複禁止設定にしてあります。
管理側が作成するアプリやCSVで一括更新する予定のあるアプリは
【会社コード】を[コピー元のフィールド]にしています。
【会社名】は同じものが出てきますので、CSVで書き出した後に関数でに加工して
重複したものは【会社名】の語尾に【2】をつけるようにしています
(2社以上あれば3,4など)
kintoneでは伝票発行など、【会社名】が取引先に渡らないため
現状問題にはなっていません。
今後も伝票発行などは基幹システムで運用するのでkintoneの方針も
変更なさそうです。
ルックアップで【会社名】を参照する際に住所も表示されるようになっているので
打ち間違えは今のところ聞いておりません。
【会社名】は変更されますが、ルックアップで取得する際に【会社コードも】
取得されるようにしていますので、関連レコードでも対応可能です。
管理側はkintoneの知識が深い方がアプリを作成しているのですが
営業側(レコード入力者)がアプリを作る場合はあまり知識の深くない方が多いので
作成する際に管理側に質問が入ります。
その際に、どのように運用したいのか聞いて【会社コード】【会社名】のどちらを
[コピー元のフィールド]にするのか決めております。
弊社は管理側でアプリが作成されることが圧倒的に多いので、色々な方が
アプリを作成される場合は考え方を統一させるのは難しいですよね。
こちらのプラグイン知りませんでした!
弊社もコードを覚えているのは事務員くらいなので、便利そうですね!
情報ありがとうございます!調べてみます😊
ミュートしたユーザーの投稿です。
投稿を表示こんにちは。
お話の内容は、ルックアップアプリのあるあるですね。
RDBの仕組みに詳しい方なら当然の考え方ですが、その辺の学習コストが低いのも、kintoneの強みですね。
私は、ユーザー様のレベルに合わせて、以下の様にお願いしています。
レベル1
顧客の電話番号(重複禁止)を、マスターの主キーにして、ルックアップのキーも電話番号にする。会社名は参照フィールドにする。
電話番号なら、顧客を識別する情報として、違和感が少ないです。
レベル2
法人番号又はインボイス登録番号を、マスターの主キーにして、ルックアップのキーも同じにする。
会社名は参照フィールドにする。
インボイス番号は、請求書の確認で見ることが多いので、電話番号の次によく見られる重複の無い会社の属性情報です。
レベル3
自動採番プラグイン(無料版)を導入して、マスタの主キーを顧客番号にする。
いずれの場合も、ルックアップの候補は、会社名のフリガナの昇順でソート表示しています。
ご参考になりましたら。
PS
Ribbit's worksさんの「関連付けないルックアッププラグイン」が秀逸なのは、同意見です。
私も良くお世話になってます。