Rso's Jotter

日々の開発の知見のメモやその他雑記

Kintoneを多少使ったので所感を書いておきます

自社の業務で一部Kintoneを使用していて、社内の事業転換に伴い、その業務が終了し、Kintoneもほぼほぼ役目を終えることになりました。

Kintone上で業務を2年ぐらい運用していましたが、そのなかでよいところ、つらいかゆいところなどをまとめておこうと思います。

Kintoneとは

f:id:rso:20191109222002p:plain

提供元のサイボウズはファストシステムと謳ってたりもしますが、いわゆるノンプログラミングシステムの一つで、ノンプログラミングシステムの中ではかなり学習コストが低い部類に入ると思います。

Kintoneではアプリと呼ばれる単位で管理、運用されますが、このアプリというのは、簡単に説明するのが難しいですが、1つのフォームとそれに関連するCRUDとデータストアがセットになったようなものです。 そしてこのアプリをマウス操作で簡単に作れる、という感じです。 私は自社の簡単な案件管理、見積作成、発注管理で一部Kintoneを使用していました。

Kintoneのよかったところ

GUI操作でさくっとフォームが作れる

これはKintoneの魅力の一つで、1つのフォームと簡単なマスタ参照で完結するものは、ちょっと慣れればプログラミング経験が無い人でもかんたんに作れます。プロトタイプの開発が早くできるだけでなく、一度作って運用に乗せれば、プログラミング経験が無い業務チームに運用を引き継げるということがとても良い利点です。

モバイルのビューも同時に作られる

モバイル対応しているので、作成したアプリを外出先など携帯でちょっと確認したい、という要望に応えられます。モバイルのビューが自動作られるのは良い点です。ただしサブテーブルなど、モバイルの表示適さない要素が多いと見づらくなります。

ユーザ管理、組織管理、アクセス制限, アクセス証跡 など一通り揃っている

システムを運用する上で必要な上記の権限制御などは、一通り揃っているので、特に不便はありませんでした。

Kintoneのつらいところ

アプリ間でのデータ連携が弱い

Kintoneは標準ではルックアップという他のアプリのデータを参照できる仕組みがあります。 これで事足りるような要件であればよいのですが、以下のようなときに辛さが出てきます。

  • データの参照元が更新されたとき、参照先のデータも更新したい(ルックアップでは参照時の値がコピーされるだけ)
  • 複数のアプリをまたがって複数の項目を取得したい(ルックアップを多段にすればできますが設定と運用がめんどくさくなります)

ルックアップでできないデータの更新はJavascriptを書けばできますが、プログラムの量が増えると後述の運用が大変になってきます。

実際、ルックアップ参照元が更新されて、参照元に更新が必要となった場合、データを一度CSVにエクスポートして更新してインポートし直すという作業を行っていました。

またデータの参照であればルックアップでなんとかできますが、アプリの更新結果を他のアプリに連携、というのは標準機能ではできません(Javascriptでカスタマイズすればいけます)

カスタマイズ用のプログラムを継続開発する仕組みが弱い

前述の問題でも挙げた、標準機能でできないことはJavaScriptでカスタマイズすればほぼほぼできるのですが、これに頼りすぎると運用保守が大変になります。

  • CI/CDのサポートが弱い。 コードを更新しても手動打鍵するという確認が通常なのでユニットテストを実行する仕組みがありません。やるとしたらpuppeteerを使って簡単なE2Eテストをデプロイ時に回すなどの仕組みを用意する必要があります。

コードもKintoneにはJavaScriptを登録するインタフェースが用意されているだけなので、そのままではES6のコードは動きません。自前でWebpackなどでトランスパイルしてからアップロードという仕組みを用意する必要があります。 自分はGithubでmasterに取り込まれたらCircle CI でWebpackビルドして、それをS3にデプロイして、それをkintoneが読み込むという方法を使っていました。

いずれにせよ、プログラムを本格的に継続保守していくとなると、自前でCI/CD環境を用意したりする必要があり、このあたりは正直つらくなってきます。

まとめ

よかったところ、つらいところはまだまだ他にもいっぱいあるのですが、だらだらと長くなりそうなので、 主な部分だけ記載しました。良いところ、辛いところを勘案して思ったのは、

  • 簡単なシステムを簡単に作るのはすごく適しているし、運用も楽。
  • 簡単かどうかの基準は、単一のアプリで完結する仕様かどうか。複数アプリでの連携が必要なものは、kintoneで簡単にはできない。
  • JavaScriptカスタマイズを使えばかなり色々できるが、それを前提にしない。最小限に留める。

といったところです。利用者と調整できるのであれば、kintoneに乗るように業務ロジックの方を簡単にしてもらう方が良いかもしれません。 さくっと作れてプログラミング経験がなくても運用できる長所をうまく活用できれば、とても重宝すると思います。