kintoneにまつわる受託をしていると、統計分析、製造管理などの高度精密なアプリケーションをkintoneで実現できないか、というご相談を頂くことがあります。
費用面でコストパフォーマンスが高いのではないか、あるいはカスタマイズ性が高いのではないか……という期待があるようです。
もちろん、kintoneを使えばある程度のものは作ることができますが、向き不向きというものはあります。
アプリケーションを設計・作成していて、「フルスクラッチ開発に比べると、ここは限界を感じるな……」というところをつらつらと書いてみたいと思います。
先に言っておきますが、フルスクラッチ開発の方が優れているという話ではありませんし、kintoneが優れているという話でもありません。特徴の話です。
データモデルの限界
kintoneは「アプリ(Excelで言う1シート)」単位で機能しています。アプリには、さまざまなフォームを配置することができます。「1行文字列」「複数行文字列」「数値」「計算」「添付ファイル」「ドロップダウン」などなど……
多岐にわたってはいますが、これがkintoneの限界を規定してしまっています。これらの手持ちの武器で、事象をモデリングしてアプリケーションに組み立てなければなりません。Javaなどの自由度に比べるとだいぶ落ちます。事務利用で問題になることはないでしょうが、複雑なモデルを扱う時は注意が必要です。
工夫すればかなりのところまでモデリングは可能ですが、ここで頑張りすぎると次の辺りでしっぺ返しをくらいます。
データとUIの密結合による限界
kintoneの特徴の一つは、「アプリ(シート)」とUI(User Interface、操作手段)やアクセス権が一体化していることです。ここは設計する際に重要になります。データ構造上同じテーブルに置いた方が効率が良いのだとしても、扱う人間が異なる場合には分けた方がいい、とかその逆が発生します。
リレーショナルデータベースなどではテーブルを多数持ってた上でそれらを結合して一つの画面から扱うことができますが、kintoneの場合、それにはカスタマイズが必要になりますし、複雑なテーブル構造を持たせてしまうと、UIを整理するのは大変です。
コレに対する一つの解決策としては、Vue.jsのようなフレームワークとkintoneのカスタマイズ一覧(htmlベースの画面)を使ってUIを作ることです。技術のある人なら、標準のUIよりいいかもしれません。
ブラウザベースで動作することの限界
kintoneは原則、ブラウザ上で動くアプリケーションです。そのため、サーバーサイドで動くJavaやPHPに比べるといくつか不得意な処理があります。
- 特定の日時に自動的にプログラムが走るバッチ処理
- バックグラウンド処理
- セキュリティ上ユーザーに見せたくないデータを使った処理
この場合、特に問題になりやすいのはメール処理で、メール通知を送る、顧客にメールを送るなどの処理では、プラグインや外部サービスを導入したり、PHPサーバーを準備したりする必要があります。
開発環境としての限界
kintoneの開発で一番困るのが、単体テストが非常にやりづらいという点です。kintone上で実行させないと動かないJavaScriptが多いので、開発環境にデプロイして実行することになります。
ある程度開発ツールで解決できる部分もありますが、しかしストレスが多いことは間違いないです。
APIの限界
kintoneのカスタマイズにはJavaScript APIを使用し、他のアプリのデータにアクセスする際にはRestAPIを使います。これらのAPIの制限が枷になってしまう場合があります。一度に呼び出せるレコード数や、呼び出し回数など。
RestAPIClientのようなパッケージを使用することである程度緩和できますが、10万件を超えるようなレコードの処理となると、だいぶ負荷が大きいです。
検討すべき代替案
「kintoneが向いてないことはわかってる。だけど他にないんだよ」というのはよくわかります。私もそう思います。クラウド基盤でそれなりに普及し、自由度もあり……というのはなかなかないです。それにしても、こうした限界が懸念される場合、どのような代替案を検討したらいいでしょうか。
以下に代替案を挙げておきます。ただ、こうした代替にまつわる問題は、AccessやGoogleAppsScriptを自在に扱える人材がなかなか見つからないことではないかと思います。kintoneであればサイボウズ社が問い合わせ窓口として機能している部分があり、開発企業にアクセスしやすいのですが、開発サービスを提供できる技術者を確保するのはなかなか大変かも知れません。
Microsoft Access
Excelから移行する際にkintoneが選ばれることが多いのですが、Accessは一つの選択肢ではあります。Excelよりは多くのデータを処理できますし、カスタマイズ性もそれなりです。ただしクラウド版がないので、クラウド的に使おうと思うと、自分でサーバーを立てる必要があります。
Microsoft Excel (Office365)
現在Excelはクラウド版があります。これが解決になってくれる可能性は大いにあります。PowerAutomateなどによる自動化もできるはずです。以前はExcelからクラウドに移行する選択肢としては弱かったのですが、今ならまずこちらを検討するべきかもしれません。
GoogleSheet
Excelに似すぎているので、Excelの問題を解決できるかどうかは微妙な部分もありますが、クラウド上に配備され、スマートフォンからもアクセス可能、JavaScriptベースのGoogleAppsScriptによるカスタマイズもできるということで、案件によってはハマる可能性があります。
その他
知名度は低いですが、いくつか選択肢があります。
クラウド型データベース比較8選!導入メリットと注意点も解説|ITトレンド
こうした代替案は、kintoneに比べて公開されている知見やサードパーティのソフトが少ないので、開発に詰まった時になかなか情報が見つからず苦労することがありそうです。
まとめ
思いつくままにkintoneの限界を挙げてみました。ほとんどの事務業務では問題ないと思いますが、高度なアプリには、あまり向いていないような気がします。