はじめに
こんにちは、IT本部IT戦略部テクニカルオペレーショングループの入倉です。
DeNAグループにおけるITシステム・ツールの導入企画から運用管理、運用改善などを担当しています。
DeNAグループでは、物品の購入申請や新規ツールの利用申請など、日々発生するさまざまな業務に「kintone アプリ」を広く活用しています。全社で広く使われるものから特定の部署内だけで利用される小規模なものまで含めると、現在稼働しているアプリ数は700を超えています。
kintoneはノーコードで業務アプリを作成できる便利なツールですが、時にはその標準機能だけでは実現できない要望が出てくることがあります。とくに、一部の高度な機能はJavaScriptによるカスタマイズが必要となるため、アプリ管理者にとって導入のハードルが高いものでした。
そこでDeNAでは、こうした課題を解決し、標準機能にはない機能を誰でも手軽に利用できるようにするためのkintoneプラグインを内製開発しました。
本記事ではこの内製プラグインを「入力制御プラグイン」と呼び、その機能や運用方法についてご紹介します。すでにkintoneを導入されている方、これから導入を検討されている方にとって、本記事がkintone活用のヒントとなれば幸いです。
なぜプラグインを内製開発したのか
kintoneでは多くの機能がノーコードで利用可能ですが、より高度なカスタマイズにはJavaScriptでの開発が必要です。しかし、社内のすべてのユーザーが開発スキルを持っているわけではありません。さらに、kintoneの仕様としてスクリプトファイルをアプリにアップロードするにはkintone全体のシステム管理権限が必要となります。このため、高度なカスタマイズを一般のkintoneユーザーである社内の開発者に任せることも、システム管理権限を持つIT戦略部がすべての開発を代行することも難しいという課題がありました。
この課題に対し、私たちは既存のプラグインの導入を検討しました。高度な機能をそなえ、要望を十分に満たす有償のプラグインがあることはわかりましたが、各アプリの運用状況を調査した結果、多くのアプリで求められる機能は限定的であり、そこまでの高度な機能は必ずしも必要ではないと判断しました。
そこで、社内で利用頻度の高い機能に絞り込み、かつアプリ管理者(システム管理者ではなく)の権限で、追加費用なしで利用できるプラグインの内製開発を目指すことになりました。これにより、kintoneのアプリ単位で個別に開発することなく、汎用的なプラグインとして提供することで、多くのアプリで開発に近い機能を誰でも手軽に利用できるようになることを目標としました。
プラグインの利用方法
開発した入力制御プラグインは、kintoneのシステム設定で「すべてのアプリで利用を許可する」と設定されているため、アプリ管理者はIT戦略部への特別な依頼をすることなく、任意のアプリで自由に利用できます。
アプリ側での設定方法は、一般的なkintoneプラグインと大きな違いはありません。アプリ設定画面から入力制御プラグインを追加し、カスタマイズしたいフィールドと適用したい制御内容を選択するだけです。kintoneアプリの作成や編集経験がある方であれば、直感的に設定できるように工夫されています。
詳細な利用方法については、社内Wikiで具体的な手順を公開し、誰でも参照できるようにしています。今回は、このプラグインで利用できる機能とその活用例をご紹介します。
入力制御プラグインで利用できる機能
プラグインの機能は3つに分類できます。
- 各フィールドの条件制御
- ユーザー選択フィールドの制御
- レコード再利用時の値クリア
これらは、運用中のアプリを調査し、社内でとくに利用頻度が高いと判断された機能となります。
それぞれの機能について説明します。
1. 各フィールドの条件制御
フィールドの選択内容やレコードのステータスなどの特定の条件に応じて、指定したフィールドの表示や操作を細かく制御できます。
- 入力可かつ必須のフィールドにする
- 入力可かつ任意のフィールドにする
- 入力不可のフィールドにする
- 非表示のフィールドにする
たとえば以下のような場面で利用できます。
- ラジオボタンフィールドで特定の選択肢を選んだときのみ、指定したユーザー選択フィールドの入力を必須化する
- プラグイン上の設定画面
- レコード上で、対象フィールドが入力可能、かつ必須となる
- プラグイン上の設定画面
2. ユーザー選択フィールドの制御
指定したユーザー選択フィールドを以下のように制御できます。
- 1 ユーザーしか選択できないようにする
- kintone(cybozu.com)アカウントのプロパティが持っている漢字の氏名やメールアドレス、所属部署などの情報を、指定したフィールドに書き出す
たとえば以下のような場面で利用できます。
- 代表者を 1 名だけ指定してほしい場合、ユーザー選択フィールドで 1 名選択の制限を設定する
- プラグイン上の設定画面
- レコード上で、制限したフィールドに複数名登録するとエラーになる
- プラグイン上の設定画面
- ユーザーの所属部署を取得したい場合、ユーザー選択フィールドで選択したユーザーの所属部署を、指定した文字列フィールドに書き出す(こちらは 1 名選択の制限とセットで使う必要があります)
- プラグイン上の設定画面
- レコード上で、選択したユーザーの所属部署が別のフィールドに登録される
- プラグイン上の設定画面
3. レコード再利用時の値クリア
kintoneのデフォルトの機能で、既存のレコードを再利用して新しいレコードを作ることができますが、レコード内のフィールドに再利用するべきではないデータが含まれることもあります。その際に指定したフィールドの値だけクリアした状態で再利用できます。
たとえば以下のような場面で利用できます。
- レコードに「処理済み」というフィールド名のチェックボックスフィールドを用意して、処理が完了したレコードのフラグとして利用しているが、レコード再利用を使うと「処理済み」フラグのチェックが付いたまま新規のレコードが作られてしまう。それを回避するため再利用時はプラグインの機能で「処理済み」フラグのチェックをクリアさせる
- プラグイン上の設定画面(画面構成の都合上、「日付」フィールドをクリアしています)
- プラグイン上の設定画面(画面構成の都合上、「日付」フィールドをクリアしています)
開発に使用したパッケージと運用上の制約
今回は入力制御プラグインの開発内容については省略しますが、公式に提供されているパッケージ、手法に則っています。パッケージは以下のとおりですが、いずれも開発当時のものであり、現在はこれらのいくつかは非推奨となっています。
- plugin-uploader
- plugin-packer
- create-plugin
- webpack-plugin-kintone-plugin
また、通常のJavaScriptによるアプリのカスタマイズと競合する可能性があるため、JavaScriptとプラグインの併用は不可としています。
導入後の変化
入力制御プラグインの導入後、IT戦略部がこれまでJavaScriptで個別に対応していたアプリの中から、プラグインで置き換え可能な機能を持つものを特定し、順次プラグインへの移行を進めました。これにより、IT戦略部へ依頼することなく、アプリ管理者自身がカスタマイズを行える環境が整いました。
現在では、新たに作成されるアプリに対しては基本的にプラグインの活用を推奨しています。これらの働きかけの結果、現在プラグインを導入しているアプリは350を超えています。
もちろん、プラグインの機能ですべての要望を完全に満たせるわけではありません。プラグインでは対応しきれない複雑な要件に対しては、引き続き個別のJavaScript開発も行っています。プラグインは、あくまで多くのアプリで共通して必要とされる機能を効率的に提供するための手段として位置づけられています。
まとめ
DeNAでは、多岐にわたる業務に対応するため、700を超えるkintoneアプリを運用しています。IT戦略部がこれらのアプリすべての個別の要望に応えることは現実的に困難ですが、多くのアプリで共通して必要とされる機能や、アプリ横断で利用できる機能については、積極的に内製開発を行い解決を図っています。今回ご紹介した入力制御プラグインも、その取り組みの1つです。
このプラグインによって、kintoneの標準機能だけでは実現できない機能を、アプリ単位で開発することなく、誰でも手軽に利用できるようになりました。
DeNA Engineering Blogでは、kintoneの運用改善や機能拡張に関する他の取り組みも紹介しています。ご興味のある方は、ぜひ以下の記事もご覧ください。
https://engineering.dena.com/blog/2024/09/kintone-improvement/
https://engineering.dena.com/blog/2025/02/kintone-notification/
同様に開発した機能は他にも多数ありますので、今後のブログでまたご紹介できればと考えております。本記事が、kintoneの運用に携わる皆様の参考となれば幸いです。
最後まで読んでいただき、ありがとうございます!
この記事をシェアしていただける方はこちらからお願いします。