こんにちは、エムザス ITサービス部です。
エムザスではkintoneを用いたアプリ開発やプラグイン開発をしています。
今回は、実際に私が経験したアプリ作成時、設定時の注意事項に関して共有したいと思います。
🌟ちょっとお知らせ🌟
kintoneユーザーの皆さん!
エムザスの kintoneプラグイン はもう試しましたか?🤔
登録不要&無料で、ほとんどの機能が今すぐお試しいただけます✨
今すぐお試ししたい方はこちらから!
さらに、お客様のドメインで 無料で3ヶ月間、すべての機能 を試すこともできます!🎉
以下のリンクからお申し込みください👇
お客様のドメインでじっくりお試ししたい方はこちらから!
それでは、本題に入ります!
事象
kintoneのアプリにフィールドを追加しようとしたときに今回の事象に遭遇しました。
アプリのフォーム設定画面でフィールドを追加し、アプリを更新しようとしたところ以下のようなエラーが表示されました。
エラー文章にも書いてある通り、このアプリに既に配置されているフィールドと今回追加しようとしたフィールドを合わせて500を超えてしまったということでした。
実際に公式の情報を調べてみると、1アプリにフィールドは500までという制限がkintoneアプリにはあることがわかりました。(公式の情報はこちら)
2024年11月現在では、kintoneの契約をグレードアップしたりオプションでこの上限を増やすことはできないようです。
フィールド数の確認
今回のようにフィールドを追加しようとしたら、いきなりエラーが表示され500フィールドを超えてしまうというのは避けたいことです。
というのも、アプリを新規に作成する場合であればフィールドの見直しが容易かもしれませんが、既に作成済みのアプリでこのような状態になると、他のフィールドを削除したり、値の持ち方(フィールドでの保持の仕方)を変更したり、他のアプリに移動させたりといった対応を取らなければならず、特に本番で稼働しているアプリの場合、フィールドの変更に伴って既にアプリに存在する本番データを保存させなおす必要がでてくる可能性もあります。
そのような状態になる前にフィールド数を把握しておくことで、事前に他のフィールドも含めてどのアプリに必要なフィールドなのか、そもそも必要なフィールドなのか、などアプリの構成を早めに考え直して手戻りを少なくすることができます。
実際にアプリのフィールド数は、kintoneシステム管理>アプリ管理から確認することができます。
アプリの一覧が表示され、そのフィールド数の部分に表示されます。
この場合、既に500フィールドに達しているためこれ以上追加できないことがわかります。
対応策
ただ、気を付けてはいても実際に要件を叶えようとするとどうしてもフィールドの追加が必要で500フィールドを超えてしまうことはあるかもしれません。
そんなとき、どのようにするとうまく500フィールドに収めることができるのか策を考えてみます。
①既に存在するフィールドを他のアプリに移動する。
そのアプリにどうしても必要というわけではなく、他のアプリで管理が可能なフィールドがあれば他のアプリにフィールドを移動させます。
例えば、社員情報アプリにその社員が持っているパソコンなどの備品フィールドというものがある場合、この備品フィールドは社員情報アプリではなく、備品管理アプリなどの他のアプリで管理することで1人の社員が複数のパソコンやスマートフォンを管理している場合や、複数の社員が1台の車を管理すしている場合など、管理がしやすくなり社員情報アプリのフィールドも削減できます。
②上限に含まれないフィールドを活用する。
公式のページには500個の上限に含まれないフィールドがあると記載があります。
以下はそのフィールドです。(公式の情報はこちら)
・ラベル
・罫線
・スペース
・レコード番号
・作成者
・作成日時
・更新者
・更新日時
この中でスペースは、場合によって他のフィールドの代わりに使うことができます。
kintoneのJavaScriptカスタマイズを利用することによって、配置したスペースの要素を取得し
そこに他アプリから取得した情報や数値フィールドの計算結果などを表示させることができます。
実際にスペースフィールドを配置して文字列を表示してみます。
スペースフィールドを取得するサンプルは公式のこちらのページにあります。
アプリにスペースフィールド(フィールドコード:Space_0)を配置して下記のJavaScriptファイルを適用したところ、アプリの詳細画面にHello Worldを表示させることができました。
(() => {
'use strict';
kintone.events.on('app.record.detail.show', (event) => {
// 追加したい要素を作成
const divElement = document.createElement('div');
divElement.textContent = 'Hello World';
// スペースフィールド(要素ID:Space_0)の要素を取得
const element = kintone.app.record.getSpaceElement('Space_0');
// 作成した要素を取得したスペースフィールドの要素に追加
element.appendChild(divElement);
return event;
});
})();
表示するものをHello Worldではなくもっと工夫することで、足りないフィールドを補うことができるかもしれません。
③テーブルを利用する。
フィールドの種類としてテーブル(サブテーブル)というものがあります。
このテーブルはそれ自体で1つのフィールドとして、テーブルの中に含まれているフィールドの数と合わせて500の上限にカウントされます。(以下は公式ページのキャプチャです。)
ただフィールドを配置するのと比べて1つ多くカウントされてしまいますが、テーブルの行数についてはフィールド上限と関係なく増やすことができます。
例えば、社員情報アプリに家族の情報を持たせたいときに、以下のようにフィールドを一つひとつ配置するとその分だけフィールドが必要になり、後で家族の人数を増やしたいときにまたフィールドの追加が必要になってしまいます。
※この場合だと9フィールド消費しています。
それよりも、以下のように家族情報のテーブルを作成してその1行毎に家族一人ひとりの情報を入れた方がフィールド数も少なく人数の増減にも対応しやすくなります。
※この場合だと5フィールドの消費で済みます。
このように、まとめられるものはテーブルにまとめることでフィールドの削減ができる場合があります。
便利なプラグイン
以上のように500フィールドの上限に到達しないように工夫する方法を紹介しましたが、このようなことをするときに強い味方になる便利なプラグインを紹介させてください。
EMdocMaker
というエムザスが開発しているプラグインがあります。
このプラグインでは、アプリとアプリの関係が視覚的にわかる「アプリ関連図」。
プロセス管理のステータス遷移が一目でわかる「プロセス管理図」。
↓ 横方向表示
↓ 縦方向表示
アプリの設定をExcelファイルでダウンロードできる「アプリ定義書」。
以下のキャプチャは一部分で実際には更に多くの情報がExcelファイルに出力されます。
これら3つの機能がEMdocMakerにはあり、今回のようにアプリの変更をするときに
・どの部分を変更したらよいかアプリの関連を見ながら検討したい
・変更前の状態を履歴として残しておきたい
といったニーズに応えることができます。
他にも、業務引き継ぎの際のドキュメントとして活用したり、kintoneアプリ開発の委託を受けた時の納品物としても活用したり、使い方は様々です。
EMdocMakerを含めたエムザスのプラグインをお試しできる環境があるので、実際に触って使い心地をご実感ください。
ユーザー登録などが不要で、すぐにこちらからお試しいただけます。
(ID/パスワードはともにemxas_demoです。)
最後に
500を超えなければエラーにはならないですが、フィールドが多くなると処理もその分重くなるので、なるべく早い段階からアプリの構成は考えて作成していきたいですね。
以上、kintoneアプリのフィールド数の上限についてでした。