デプロイット実践編5「関連レコードとルックアップの配布」

公開日:

注意

本記事は情報提供を目的としており、本記事の内容は無保証、サポートの対象外です。
サポート窓口、問合せ窓口にご質問をいただいても対応いたしかねますのでご了承ください。

はじめに

こんにちは、サポートの沖です。(66.9kg 23.8%)

デプロイットの配布はフィールド構成の変更を一度に反映させることができるという点もありますが、複数アプリが連携するような構成を配布できるというのも大きな利点です。デプロイットについてはこちらのページをご確認ください。

https://deploit.gusuku.io

例えばルックアップや関連レコードで複数アプリが連携している様な場合に、配布元のアプリの紐付きをそのまま配布先に再現することができます。この場合、アプリを正しい手順で配布できていれば良いのですが、それが出来ていない場合は意図した連携にならないことがあります。

まずは、配布ルールに関して確認していきましょう!

ルックアップの場合

アプリのルックアップ確認

赤色の線の向きでフィールド値を取得している設定を例にします。

実際のフィールドは以下のような感じです。左は商品マスタの画面で、この値を売上明細のルックアップで取得しています。

ルックアップの仕様を再確認

アプリにルックアップフィールドを追加時は「関連付けるアプリ」と「コピー元のフィールド」を設定します。この2つの項目は必須項目なので設定しないと保存できません。

また、この2つの項目は一度設定すると変更することができません。「ほかのフィールドのコピー」などとは違う点にご注意ください。

この制約のため、デプロイットで初回配布(アプリ作成)と2回目以降の配布(アプリ更新)で結果が異なります。

連携するアプリが全て環境に登録されている場合

正しい操作

ルックアップの「関連付けるアプリ」で設定しているアプリの方を先に配布します。そしてルックアップがあるアプリを配布すると、それぞれの環境にあるアプリ同士が紐づくということになります。

これはデプロイットがアプリ追加(ルックアップフィールドの追加)時に、同一環境内にアプリがあればそちらを参照するように自動で変更するという動きによって実現されています。

正しくない操作

では、先ほどと違いルックアップがある商品明細を先に配布するとどうなるかというと、以下の通りです。

売り上げ明細を配布時には検証環境に商品マスタがないので、開発環境の商品マスタを参照したルックアップでアプリを作成します。その後に商品マスタを配布しても売上明細の方が連動して変わることはないのと、再度、売上明細を配布してもアプリ更新になるので「関連付けるアプリ」は変更されません。

ですので、アプリの初回配布時は ルックアップの配布は一番最後 になるようにお願いします。なお、アプリの作成後でも配布先アプリのルックアップフィールドを削除してから再度配布をすれば解消します。ルックアップの初回作成時だけが「関連付けるアプリ」を変更可能という点にご注意ください。

ただ「ほかのフィールドのコピー」は変更出来るので、環境ごとのフィールド構成が違うとエラーになったりします。配布時のエラーはこちらのブログもご確認ください。

連携するアプリが環境に登録されていない場合

今回の商品マスタは開発環境に登録されていましたが、どの環境にも登録されていないアプリを「関連付けるアプリ」で指定している場合です。この場合はどのような操作をしても配布元のルックアップの設定で配布されます。

結果としては先ほどの「正しくない操作」と同じ結果になります。

このアプリ構成の場合、開発環境でテストしたいときにテストレコードを作成すると、本番環境のアプリからも参照できてしまいます。ですのであまりお勧めはできません。

連携するアプリが別プロジェクトの環境に登録されている場合

商品マスタが別のプロジェクトで配布されている場合、アプリは1つの環境のみに登録という仕様のため複数プロジェクトで指定できません。そのため配布時に自動で「関連付けるアプリ」のアプリが切り替わらないという結果になります。

この場合は、商品マスタは各環境ごとに作成されてアプリIDも決まっていると思いますので、以下のような手順で擬似的に対応可能です。

  1. 別プロジェクトの各環境にある商品マスタのアプリIDを事前に確認する
  2. プロジェクト内の配布元環境で対応する別プロジェクトの環境にあるアプリをルックアップで指定
  3. ルックアップがあるアプリを配布する
  4. 配布先アプリのルックアップを削除して、別プロジェクトの対応する環境にあるアプリを指定したルックアップを追加

こうしておくと、2回目以降の配布ではアプリの指定が無視されるため、結果として対応したアプリからルックアップ出来るという事になります

ただ、別プロジェクトで管理しているアプリを指定しているので、そちらの方でフィールド構成が変わった場合、配布に影響が出るということがあります。ですので、このような運用をする場合はかなり理解してからにすることを強くお勧めします。

関連レコードの場合

関連レコードの場合は、商品マスタに関連レコードがあり、売上明細のレコードを表示している設定とします。

関連レコードの仕様を再確認

関連レコードの場合はフィールドを作成後に「参照するアプリ」を変更することが可能です。そのためルックアップとは結果が異なります。先ほどと同じような場合分けをして確認していきましょう。

連携するアプリが全て環境に登録されている場合

正しい操作

関連レコードの場合は「参照するアプリ」を先に配布なので、今回は売上明細から配布します。その後に商品マスタを配布することで関連レコードは配布先環境のアプリと連携するようになります。

正しくない操作

ルックアップの時と同じように関連レコードがある方を先に配布すると、紐づくアプリは配布元のアプリになります。ただ、売上明細を配布後に、再度商品マスタを配布することで紐付きは正しくなります。再配布で正しい紐付けになるという結果はルックアップと異なるのでご注意ください。

連携するアプリが環境に登録されていない場合

登録されていない場合は配布時の変換がないので配布元の設定のままになります。ルックアップの時と同様に開発元のアプリを参照してしまいます。そのため関連レコードの場合はレコードが表示されるので、配布先側で表示されないような値にしておくなど管理が必要になります。

連携するアプリが別プロジェクトの環境に登録されている場合

この場合は、現実的には方法がありません。ルックアップと違い連携するアプリが書き換わるので、配布先側で修正したとしても再配布時に元に戻ります。

まとめ

今回は、ルックアップや関連レコードが1つだけあるパターンを紹介しました。これらが複数ある場合でも基本的には考え方は同じです。例えばルックアップが3つあるアプリがあり、顧客マスタ・商品マスタ・取引先マスタ、からルックアップしている場合は、それらのアプリを配布後にルックアップがあるアプリを配布すれば問題ありません。

ただ、ルックアップで相互参照している場合は更に難易度が上がります。連携するアプリが全て環境に登録されているのであれば、基本的には初回配布の問題なのでアプリテンプレートで作成後にデプロイットの登録では詳細設定から紐づける方法が簡単です。

ただ、デプロイットの配布とアプリの修正でも可能ではあるので、次回はその手順を紹介したいと思います。ルックアップの相互参照とか、ルックアップと関連レコードの相互参照とかを予定していますのでお楽しみに!

・・・そういえば、カスタマインのレコード取得でアプリID指定ってあるんですよね。。そっちの方がいいかも。答え合わせは来月です(笑

投稿者プロフィール

アバター画像
"サイボウズ公認kintoneエバンジェリスト
カスタマインやデプロイットでも色々とやってます"