レコード番号をアプリ間の紐づけに使わはるなんて…えらい粋なこと思いつかはりましたなぁ

公開日:2025-03-12

はじめに

こんにちは!システム開発グループのやまさです。

皆さんがkintoneを活用する際、複数のアプリを連携させることがありますよね?

例えば、得意先の情報を管理する「得意先マスタアプリ」と、得意先から受注した情報を管理する「受注アプリ」のようなアプリを作って、得意先マスタアプリと受注アプリ を紐づける、というようなケースです。

具体的には以下のようなkintoneアプリのイメージになるかと思います。

このようなケースでアプリ間を紐づける際に、「レコード番号」を使うと後々困ることがあるかもしれませんよ、というのが今回のお話です。

レコード番号とは?

kintoneの「レコード番号」は、レコードが作成されるたびに自動的に割り当てられる、アプリ内で一意の番号です。
例えば、得意先マスタアプリでレコードを登録すると、それぞれのレコードに「1」「2」「3」…といった番号が自動で振られます。

このレコード番号は、アプリ内では一意、という性質も相まって、一見、アプリ間の紐づけに利用しても問題がないように見えます。

しかし、運用を始めた後、困った場面に遭遇する可能性があるのです。

具体例の前に言葉の定義

少し脱線しますが、以降の説明のために、言葉の定義をさせてください。

今回の記事では、アプリ間の紐づけに使うフィールドのことを、「外部キー」と呼ぶことにします。
例えば、冒頭の例でいうと、得意先マスタアプリの「レコード番号」を、受注アプリにて外部キーとして使用する、というような言い方をすることにします。(データベースの文脈における定義とは厳密には異なりますが、ご容赦ください)

レコード番号を外部キーとして使うとどのような時に困るのか

本題に戻ります。

せっかく作ったアプリ間の紐づけが失われてしまう、ということが起きる場合があるんです。
今回は、冒頭にお見せした2つのアプリのうち、得意先マスタアプリのレコードを誤って削除した場合、を例にあげてご説明します。

まず、レコードを削除する前のkintoneアプリのデータとして、それぞれのアプリに以下のようなデータが登録されている状態とします。

受注アプリにて、得意先マスタアプリのレコード番号を外部キーとして使用しています。「得意先マスタのレコード番号」というフィールドがそれに該当します。

得意先マスタアプリ

レコード番号得意先名
1株式会社A

受注アプリ

案件名得意先名得意先マスタのレコード番号
CRMシステム開発株式会社A1
デジタルツインオペレーション最適化検討株式会社A1
ホログラフィックユーザーマトリクス構築推進株式会社A1

得意先マスタアプリから見ると、3件の受注アプリのレコードが紐づいています。
平和なときの状態ですね。

さて、この状態で、とあるユーザーが誤って得意先マスタアプリのレコードを削除してしまったとします。

得意先マスタアプリ

レコード番号得意先名

このままではあきらかにまずいので、焦ったユーザーは得意先マスタアプリに「株式会社A」のレコードをこっそり再登録します。

得意先マスタアプリ

レコード番号得意先名
2株式会社A

これで一件落着、かと思いきや、そうではありません。

別のユーザーが、得意先マスタアプリを見ていたら異変に気づきました。
「株式会社A」のレコード詳細画面を見ると、関連レコードフィールドに受注アプリのレコードが1件も表示されていません。

それもそのはず、アプリ間の紐づけが失われているからです。

どういうことかというと、もともと、受注アプリのレコードで入力した外部キー「得意先マスタアプリのレコード番号」の値は1でした。
しかし、今やレコード番号が1番の得意先マスタアプリのレコードは存在しません。「株式会社A」のレコードのレコード番号は2になっているからです。

得意先マスタアプリ

レコード番号得意先名
2株式会社A

受注アプリ

案件名得意先名得意先マスタのレコード番号
CRMシステム開発株式会社A1
デジタルツインオペレーション最適化検討株式会社A1
ホログラフィックユーザーマトリクス構築推進株式会社A1

これは、前述したポイントである、レコード番号の値は自動で割り当てされる(=kintoneの利用者が任意に設定できない)というkintoneの仕様によるものです。

さて、ユーザーはアプリ間の紐づけを復活させないといけません。
このとき、できることなら得意先マスタアプリのレコード番号を1に変更したいところですが、kintoneの仕様上それはできません。
そこで、紐づけを復活させるためには、受注アプリ側の外部キーの値を2に変える、ということになります。

得意先マスタアプリ

レコード番号得意先名
2株式会社A

受注アプリ

案件名得意先名得意先マスタのレコード番号
CRMシステム開発株式会社A2
デジタルツインオペレーション最適化検討株式会社A2
ホログラフィックユーザーマトリクス構築推進株式会社A2

「得意先マスタのレコード番号」の値を2に変えた結果、得意先マスタアプリとの紐づけが復活して、関連レコードにも表示されました。
めでたしめでたし。

この例では、受注アプリのレコードの数が3件だったのでまだよいのですが、レコード数が多くなると大変な作業となります。
さらに、受注アプリ以外のアプリにて得意先マスタアプリのレコード番号を外部キーとして参照している場合は、
それらのアプリについても同様の修正が必要になってしまいます。

では、どうすればよいのか?

レコード番号は外部キーとして使わないでおきましょう。
代わりに、外部キーとして使うためのフィールドを配置しましょう。その上で、アプリ内で一意となるよう、値を入力してあげましょう。

例えば、先の得意先マスタアプリを例にあげると、レコード番号とは別に、「得意先ID」のようなフィールドを設けます。
そのフィールドにアプリ内で一意な値を設定する、という形です。受注アプリでは、「得意先ID」を外部キーとして使用します。

得意先マスタアプリ

レコード番号得意先名得意先ID
1株式会社A001

受注アプリ

案件名得意先名得意先ID
CRMシステム開発株式会社A001
デジタルツインオペレーション最適化検討株式会社A001
ホログラフィックユーザーマトリクス構築推進株式会社A001

こうすれば、先のケースにてユーザーが得意先マスタアプリのレコードを再登録した場合でも、得意先IDを正しく入力すれば、
アプリ間の紐づけが消えることはありません。受注アプリのレコードを修正することも不要です。

得意先マスタアプリ

レコード番号得意先名得意先ID
2株式会社A001

受注アプリ

案件名得意先名得意先ID
CRMシステム開発株式会社A001
デジタルツインオペレーション最適化検討株式会社A001
ホログラフィックユーザーマトリクス構築推進株式会社A001

まとめ

今回は、kintoneのレコード番号をアプリ間の紐づけに使う際の注意点のお話でした。いかがでしたでしょうか?
もちろん、常にレコード番号を外部キーとして使ってはいけない、というわけではありません。ケースバイケースで使い分けて頂くのがよいかと思います。

余談ですが、弊社がシステム構築をお手伝いしたお客様にて、「手違いで数万件のマスタアプリのレコードを全て削除してしまった」ということは実際にありました。
そのシステムは、レコード番号を外部キーとして使わないようにしていたので、バックアップデータから比較的スムーズに復旧することができました。
もし外部キーにレコード番号を使っていたらと思うと、考えただけで恐ろしいです・・・

今回の記事が、皆様のお役に立てれば幸いです。

キミノマホロ for kintone

アールスリーでは業務改善・システム開発を行うサービスを「キミノマホロ for kintone」として提供しています。

キミノマホロ for kintone」は業務改善のプロセスをイロハで3つのフェーズに分け、フェーズごとに作業をメニュー化しています。

  【イ】業務改善の始まり:業務改善の方向性を決める

  【ロ】業務改善に必要なkintoneアプリ作成:業務改善を実現するための仕組み(kintoneアプリ)を作る

  【ハ】業務改善の実行サポート:業務改善を進める

今回の記事のようなお話は、「【ロ】業務改善に必要なkintoneアプリ作成」にて考慮する内容となります。

お客様の業務や、今回の記事のようなkintoneの特性を考慮しながら、kintoneアプリの設計や開発を弊社にて実施したり、お客様の作業をサポートする、といったことを行っております。

また、システム開発グループではkintoneに関するお悩み相談をお受けする「キントーンよろず相談会」を随時開催しています。kintoneのシステム開発でお悩みの方がいらっしゃいましたらぜひお申し込みください!

投稿者プロフィール

やまさ
やまさ
システム開発グループで働いています