キントーン(Kintone)

2017-06-25
トピック:ITスタートアップ: 日本



とある案件でキントーン(Kintone)を使ってみましたので感想を記載しておきます。

■結論
データと画面が一体なのでアプリケーション作成がわかりやすい。
エクセルではちょっと足りないがリレーショナルデータベースを使ってしっかりとしたアプリケーションを作るほどでもない、という小規模で簡単なアプリケーションに向いたソリューションであるように思えます。
多少複雑であっても、最初からしっかり設計して将来的に変更しないアプリケーションであればキントーンに向いている。とりあえず作ってみてどんどん改造してゆくという用途には意外に向いていない。どんどんと新しいアプリケーションを作成するのに向いたソリューション。
本来の使い方ではないかもしれないが、本格的なアプリケーションを作る前のモックアップやプロトタイプとしての使い方もありかもしれません。

■良い面
すぐに画面ができる。
画面とデータが分かれていないのでわかりやすい。
簡単なアプリケーションであればすぐに作って運用できる。

■悪い面
画面とデータが分かれていないのでデータを保持したまま画面だけ変えることが困難。
改造する際に既存データの保持に難あり。
具体的には、
エキスポートしたデータをそのままインポートできないことが多く、加工や特別な考慮が必要になる。
複数行文字列フィールドで改行が入っているだけでエラーになる。
添付ファイルのインポートが未サポート。
テーブルのインポートが未サポート。
レコード番号を強制的に設定してインポートできない。エキスポートしたデータをレコード番号も含めてそのままインポートしたいことがあるがインポート時のレコード番号の扱いがそれにサポートしていない。
ルックアップの参照先になっているコアなフィールドの編集が困難。該当フィールドをルックアップしている他アプリのルックアップを一旦全て削除してそのアプリの更新をしないとコアなフィールドの編集ができない。その際も、一旦ルックアップフィールドを削除する時にデータも一緒に消えてしまうのでデータをエキスポートする必要があるが、それがテーブル内のフィールドの場合はインポートできないので手動で戻すかREST API などの特集な考慮が必要になる。ルックアップフィールド自体も似たような項目を再設定しなくてはならない。
たとえばリレーショナルデータベースでは一旦作ったテーブルを分割して正規化し直すことがあるが、キントーンでは同様の変更をするためには上記のようにデータエキスポートおよびインポートが必要になる。リレーショナルデータベースであればデータと画面が分かれているのでデータを保持したまま安全に変更ができるがキントーンの場合はデータが失われないように注意して多くの作業が必要になる。
改造時の不都合としては、フィールド参照のために使われるフィールドコードを変更しても既存データに関しては元のフィールドコードのままな時がある、と言う点。これはバグなのかもしれないが、テーブルのフィールドコードを変更しても既存レコードに関しては昔のフィールドコードでしかアクセスできないので旧フィールドコードと新フィールドコードの両方で動くように作る必要がある。GUIで単純なアプリを作っている間は問題にならないが、javascriptでカスタムする時に新旧フィールドコード両方に対応しないと動かないことがあるようなので改造時の落とし穴になる。リレーショナルデータベースであればスキーマ変更は全体に対して行われて一貫した構造を持つのでこのような不具合は発生し得ない。やはりキントーンは改造時に難がある。


■その他 特徴
用語に特徴があります。キントーンは「アプリ」と言う単位で管理します。リレーショナルデータベースで言うところのテーブル相当ですがキントーンはアプリの中に別のテーブルを持つことができます。
又、リレーショナルデータベースに慣れているメンバーが「ルックアップ」を勘違いする場合があるようです。リレーショナルデータベースの場合、マスタデータにIDをもたせてそのIDを別テーブルから参照するような使い方をよく行います。別テーブルに実データは持たないことが多く、マスタデータが更新されれば同IDで紐付けられている箇所は全て最新データで表示されるような使い方が普通です。
一方で、キントーンの場合はデータをそれぞれのアプリで全て保持していますので、マスタデータを更新してもそれをルックアップしている別のアプリのデータはそのまま保持されます。再度ルックアップの操作を行うことで最新データに更新されます。
これは、良し悪しであると思われます。リレーショナルデータベースの場合はマスタデータを更新するだけで全てのデータが最新で取得できますので便利です。一方で、そういった挙動を理解する必要があります。挙動を理解できない人、あるいは、ゲストユーザが多くてそのような挙動の周知が難しい場合などは単純なキントーンが向いています。
リレーショナルデータベースを使っていてもキントーンのようにデータをわざわざコピーして保持すべき場合がありますが、アプリケーションによってデータを参照しているだけなのかコピーしているのかは分かれますので挙動の理解に混乱が生じる場合がありますが、キントーンであれば常にコピーする挙動ですので理解が簡単です。

それと、時期にもよるのかもしれませんが私が試した時は度々動作が不安定になることがあり、作成して翌日試したら全く動かなかったりしたことがありました。ブラウザの問題でもないようです。そのくらいの安定度ですので、一旦作ってから顧客が触ってみた時に全く動かなかったりすると とばっちりがこちらに来たりして微妙な感じです。こんなくだらないことで顧客の信用を失いかけたりします。特に、技術に疎い顧客だったりしますと。そういうこともあり、今後はキントーンの案件とはあまり関わり合いたくない感じです。上に書いたように自分でプロトタイプ作成のために使うのならばアリかもしれませんが、請負で作成するのは遠慮しておきたいところです。簡単に見えるのにも関わらず基本設計がイマイチで制限が多く、微妙なのです。