公開日:2020-08-09
kintone の新しい罠「フィールドを削除できません。削除済みかつ復旧可能なアプリ から参照されています。」にハマらないために
2020年5月のアップデートで 「削除してしまったアプリ/スペースを復旧する」機能が追加されました。
この機能が導入されたおかげで大事なアプリを誤って削除してしまった場合でも、14日間の間であれば cybozu.com共通管理者 に依頼すれば復旧することができます。いわゆる「ごみ箱」機能ですね。
さらに今月(2020年8月)のアップデートで 「参照関係が設定されている複数のアプリをまとめて削除・復旧する」機能も追加されました。
アプリパックなどを気軽に試して、不要になったら削除することができます。狂喜乱舞する人がいるほど待望の機能です。
ただし、これによって kintone に 新しい罠 が生まれてしまっていることはご存じでしょうか??
それが今回説明する「フィールドを削除できません。削除済みかつ復旧可能なアプリ から参照されています。」です。
問題の説明
まず、1つ目のアプリを作成します。これはマスタ的な役割でしょうか。「文字列(1行)」フィールドを一つだけ持つアプリとします。
次に 2つ目のアプリを作成します。1つ目アプリのフィールドを参照する「ルックアップ」フィールドを設置します。保存して「アプリを公開」します。
2つ目のアプリを作成・公開したのですが、気が変わって、やっぱり不要になりました。2つ目のアプリを削除します。
さらに 1つ目のアプリに戻り、「文字列(1行)」フィールドをやめて「数値」フィールドにしたくなったので、フィールドを作り直すことにしました。
設置済みの「文字列(1行)」フィールドを削除しようとすると・・・
どうしてこのようなことが起こるのでしょう?
「削除したアプリを復旧できる」機能が導入されたからです。
削除したアプリを復旧する際に、そのアプリが参照しているフィールドがないという事態が起こると困るので、フィールドを削除できないようになってしまったのです。
例えば、あるアプリ群の改修・機能追加を行いたいんだけど、いきなり本番をいじるのはマズいので 一度アプリテンプレート化して別スペースに持っていくとします。
改修対象のアプリが参照しているアプリは全てアプリテンプレートの中に入ってしまうので、そのアプリテンプレートをもとに別スペースに入れると「今回はとりあえず関係ないんだけどなあ」という余計なアプリまで作られてしまうことってよくあると思うんですよね。
その場合、不要なアプリは削除しちゃうと思うんですが(これが問題)、そのアプリが参照していたフィールドは削除できないということになります。弊社の gusuku Deploit を使用すれば別スペースで改修・機能追加しておいて本番に反映するということが簡単にできるのですが、以下のエラーが発生する可能性があります。
もっと単純に、システム管理者があるマスタアプリを作成したとします。
管理者以外の方にもアプリを作成する権限を与えていたとして、前述のマスタを参照するアプリを試しに作ってみたとします。
システム管理者がマスタアプリの仕様を変更したいので、このアプリを参照している人は対応をお願いしますという連絡をします。
参照アプリを作っていた人は「試しに作ってみただけだし、面倒くさいからアプリごと削除しちゃおう(不要)」と思ってアプリを削除します。
いざ、システム管理者がマスタアプリを修正しようとしても、不要なので削除したアプリから参照されているため修正できないということになります。
さらに質が悪いのは「フィールドを削除するには、アプリ「参照しているアプリ(アプリID:ほげほげ)」を一度復旧し、ルックアップフィールドを削除または設定変更してください。」と言うけど、「参照しているアプリ(アプリID:ほげほげ)」の復旧操作を行うと「参照しているアプリ(アプリID:ほげほげ)」は いきなり一般公開状態になってしまうのです。
どうすれば良いの?
この罠を回避するにはどうすれば良かったのでしょうか。以下の案が考えられます。
- 不要になったアプリを削除する前に、他アプリを参照しているフィールドがあれば、それらのフィールドを全ていったん削除、「アプリを更新」したうえでアプリを削除する。(面倒くせええええww 発狂したい衝動に駆られるくらい面倒くせええ)
- 不要になったアプリを削除する前に、そのアプリを復旧させることもあり得ることを想定して、アプリのアクセス権を一部のみに限定するよう変更して「アプリを更新」したうえでアプリを削除する。(え??)
- 不要になったアプリを削除してから 14日経過するまで、そのアプリが参照していたフィールドは削除しない。(えええ??)
- 削除したアプリを復旧できなくする(ごみ箱から削除)機能の実装を サイボウズ社に要望する。圧力をかける。
いずれにせよ、アプリ復旧機能の利用を一部諦める形になってしまいます。
kintone を使いこなし様々なアプリを試して作られる方ほど、この罠に一度はハマるケースが出てくるような気がします。この問題に遭遇する方の少しでも参考になれば幸いです。