スクラッチ開発経験者向け!kintoneとリレーショナルデータベース(RDB)の違い
はじめに
kintoneは「ノーコードで・すばやく」業務システムを構築できるサービスです。
さらにカスタマイズ(JavaScriptカスタマイズ、REST APIによるデータ連携)することで機能を拡張できます。
機能拡張で、次のようなことができます。
- データの一括操作
- 独自の入力制御や計算処理
- 外部システム/外部サービスとのデータ連携
kintoneを活用するにはkintoneの特徴やノーコードゆえの制限を把握することが大切です。
特にスクラッチ開発と同じ感覚でシステムを構築すると、機能不足に直面したりカスタマイズが複雑になりすぎたりすることもあります。
ここでは、そういった事態を回避するために、スクラッチ開発経験者向けのkintone活用のポイントを紹介します。
本記事の前半ではスクラッチ開発と同等の手段を取れない部分、それぞれの代替案を説明し、後半ではkintoneのコースごとに利用できる機能と具体的な利用シーンを説明します。
kintoneとは
表計算ソフトよりも快適に、専門システムより柔軟に、自社でシステムを開発するよりスピーディー&低コストに、「サクッと」思いついた業務改善をすぐに実行できるのが特徴です。
kintoneを活用し、情シスと業務部門が協力することで次のような課題を解決できます。
- Before
- 情シスのリソースがなく、現場の要望に応えるまで時間がかかる。
- できあがったシステムが使われない。
- After
- 業務部門が欲しいシステムを作る。
- 情シスがしくみを提供、活用を支援する。
実際に課題を解決された具体例としては次の記事を確認してください。
なぜ日清食品は“現場が求めるシステム”が作れるのか? 情シスと業務部門の理想の関係
また、kintoneは幅広い業務で利用されています。代表的な事例を紹介します。
kintoneを利用されたことがない方は無料のお試しやシミュレーターを用意していますのでぜひ操作感を確認してください。
無料お試し申し込み
kintoneシミュレーター
また、本記事ではアプリ、レコード、フィールドなどの言葉を利用します。
詳しくない方は次のページ内の項目「アプリの構成」を確認してください。
アプリとは
kintoneの注意事項
kintoneを利用するのに特別なスキルや知識は必要ありません。
マウス操作で業務システムを構築でき、項目の追加や変更も迅速に対応できます。
しかし、kintoneはマルチテナント構成のクラウドサービスです。
そのため、追加費用などで個別に環境の性能を向上させることはできません。
また、RDBのリレーションやトランザクションなどの複雑な機能を利用できないので注意が必要です。
本章ではそういった注意事項を説明します。
スケールアップ/スケールアウトできない
性能に課題が生じた場合、次のような対策は取れません。
- CPUの増強
- サーバーの追加
そのため、kintoneの特性を知り、快適に利用するための考慮点をあらかじめ押さえておくことが大切です。
kintoneの性能Vol.1 - リクエストの処理時間
COMMIT/ROLLBACKができない
トランザクションの開始/終了を宣言できないため、処理の整合性を担保できません。
カスタマイズを利用すれば楽観的排他処理を実装できます。(詳細は後述する項目「revision」を確認してください)
ロックやインデックスを設定できない
次のような設定はできません。
- ダーティリードを許可する。
- 利用頻度の高い検索条件にインデックスを作成する。
複数アプリへの同時登録はできない
アプリAで入力した内容を、アプリAとアプリBに同時に登録できません。
たとえば、「見積アプリに入力した内容を、見積ヘッダーアプリと見積明細アプリに分けて登録する」というようなケースです。
次で紹介しているカスタマイズを実装することで実現可能です。
bulkRequestで複数アプリへのレコード一括処理を行う
アプリ結合ができない
アプリAとアプリBを外部または内部結合した一覧は表示できません。
たとえば「予算アプリと実績アプリを外部結合し、予算実績一覧を表示する」というようなケースです。
次で紹介しているカスタマイズを実装することで実現可能です。
予算アプリと実績アプリの集計表をカスタマイズビューに表示する
複合主キーを設定できない
kintoneには、複数のフィールドを使って主キーを設定する機能はありません。
たとえば予算アプリに「年度」「予算項目」のフィールドがあったとき、年度と予算項目の2つを複合主キーにして、一括更新のキーとしてレコード更新したりレコードの重複登録を防いだりはできません。
ただし、次の工夫をすることで複合主キーのような機能を実現可能です。
- 複合主キーとして使いたいフィールドの値を結合して、別のフィールドに入力する。
- 1のフィールドに対して、重複禁止や一括更新のキーを設定する。
値を結合するには&
演算子を使って計算式を設定します。
しかし、すべてのフィールドを&
演算子で結合できるわけではありません。
kintoneヘルプ:「&
」演算子で結合できるフィールド
結合できないフィールドを利用する場合には、JavaScriptカスタマイズで結合処理を実装するか、文字列を結合できるプラグインを使います。
参考:
文字結合プラグイン
kintoneでできること
本記事では、kintoneのライトコースとスタンダードコース以上で利用可能な、データ参照に関連する機能を紹介します。
別アプリのレコードを参照したり、転記する手段として「ルックアップ、関連レコード、アプリアクション」の3つが挙げられます。
また、1つのレコードに複数明細のデータを格納する「テーブル」という機能もあります。
ルックアップ
他のアプリに登録されているレコードを参照してフィールドの内容を取得(コピー)できる機能です。
たとえば、お客様情報を何度も入力するのがたいへんな時、すでに別アプリで顧客情報を管理していれば、そこから顧客情報をコピーして入力できます。
ルックアップとは
参照ではなくコピーです。そのため、コピー元のレコードを更新してもコピー先には反映されません。
反映が必要な場合は次で説明する関連レコード機能や連携ソリューションの利用を検討してください。
拡張機能で、さらに広がるキントーンでできること
関連レコード
ルックアップとは異なり、レコード詳細画面に、「条件に一致したレコード」を一覧表示(参照)できる機能です。
ほかのアプリ、同じアプリのどちらのレコードも表示できます。
たとえば、顧客データと案件データを別々に管理している状態で、顧客に紐づく案件データをまとめて見たい場合などに便利です。
関連レコード一覧とは
アプリアクション
指定したアプリにフィールドの内容を転記できる機能です。
たとえば、注文管理アプリで毎回お客様の情報を手入力している場合、すでに別のアプリで管理している顧客リストから転記する、といったことが可能です。
アプリアクションでできること
テーブル
入力中に必要に応じて入力行を増やせる機能です。
複数の入力内容を1つのレコードで管理したい場合に便利です。
たとえば、商品の注文管理アプリで、お客様の注文によって異なる商品名や注文数を、必要な数だけ行を追加して入力できます。
フォームにテーブル(表)を追加/削除する
テーブルを利用する場合は集計やデータ出力などの後工程で問題にならないか、事前に確認することをおすすめします。
たとえば次のような内容で問題になることがあります。
- テーブルは関連レコードで表示できません。
- グラフ機能で件数を集計する場合はレコード件数になります。テーブルの行数は集計できません。
kintoneでできること - スタンダードコース以上
kintoneのスタンダードコース以上で利用できる機能です。
これらを利用することで記事冒頭の「はじめに」で紹介したような機能の拡張が可能になります。
ここから紹介する内容は開発を含み、少し難易度があがります。
JavaScriptの経験がない方はチュートリアルも用意していますので確認してください。
kintoneカスタマイズ チュートリアルの進め方
kintone JavaScript API
画面での操作をきっかけに、JavaScriptを実行できます。
一例ですが次のような機能を実装できます。
- kintoneのレコード保存時に入力内容をチェックし、エラーを表示する。
- kintoneの一覧画面にボタンを表示し、ボタンクリックで外部サービスにリクエストする。
kintone JavaScript API(イベント)一覧
また、kintone JavaScript APIだけでなくブラウザーに実装されているJavaScriptも利用できます。
たとえば一覧画面に地図を表示するライブラリや、ReactやVue.jsなどのライブラリも利用できます。
- カスタマイズビューでamCharts 4を使って日本地図を表示してみよう!
- Reactを使って、kintoneにガントチャートとカンバンを表示しよう!
- kintoneとVue.jsは相性がいい?Vue.jsで独自のビューと検索フォームを作ってみよう
kintone REST API
外部のプログラムからkintoneのレコードを取得/登録/更新/削除できます。
アプリの設定取得や更新、作成なども可能です。たとえばアプリの複製や設計情報も出力できます。
kintone REST API一覧
BulkRequest(kintone REST API)
kintone REST APIの1つで、複数のREST APIリクエストを同時にリクエストできます。
リクエストが1つでも失敗するとロールバックされるので複数アプリ間で整合性を取るためにも利用できます。
たとえば在庫管理で入出庫アプリと在庫アプリの両方を同時に変更する場合に利用します。
bulkRequestで複数アプリへのレコード一括処理を行う
revision(kintone REST API)
kintone REST APIのrevision
は、楽観的排他処理の実装に利用します。
次の順序で処理する場合、「1」と「2」の間に他のユーザーがレコードを更新していた場合は「2」の更新処理が失敗します。
- レコード取得時にリビジョン番号を取得する。
- レコード更新時に「1」で取得したリビジョン番号を指定する。
安全に在庫管理を行うテクニック2 - リビジョンを試そう -
kintone JavaScript APIとkintone REST APIの組み合わせ
2つを組み合わせることで次のような機能を実装できます。
- 一覧の表示時にExcelライクな画面を表示し、入力時にkintoneのレコードを更新する。
Handsontableを使ってkintoneをExcelライクに入力しよう その2 - 一覧の表示時に複数アプリのレコードを取得、結合して表示する。
予算アプリと実績アプリの集計表をカスタマイズビューに表示する
おわりに
ここではスクラッチ開発経験者向けにkintone活用のポイントを紹介しました。
重ねての説明になりますが、kintoneを活用するにはkintoneの特徴を理解することが大切です。
最適な業務システムを構築する上で、本記事が少しでも参考になれば幸いです。
このTipsは、2022年9月版kintoneで動作を確認しています。