スクラッチ開発経験者向け!kintone とリレーショナルデータベース(RDB)の違い

目次

はじめに

kintone は「ノーコードで・すばやく」業務システムを構築できるサービスです。
さらにカスタマイズ(JavaScript カスタマイズ、REST API によるデータ連携)することで機能を拡張できます。

機能拡張で、次のようなことができます。

  • データの一括操作
  • 独自の入力制御や計算処理
  • 外部システム/外部サービスとのデータ連携

kintone を活用するには kintone の特徴やノーコードゆえの制限を把握することが大切です。
特にスクラッチ開発と同じ感覚でシステムを構築すると、機能不足に直面したりカスタマイズが複雑になりすぎたりすることもあります。

ここでは、そういった事態を回避するために、スクラッチ開発経験者向けの kintone 活用のポイントを紹介します。
本記事の前半ではスクラッチ開発と同等の手段を取れない部分、それぞれの代替案を説明し、後半では kintone のコースごとに利用できる機能と具体的な利用シーンを説明します。

kintone とは

表計算ソフトよりも快適に、専門システムより柔軟に、自社でシステムを開発するよりスピーディー&低コストに、「サクッと」思いついた業務改善をすぐに実行できるのが特徴です。

kintone を活用し、情シスと業務部門が協力することで次のような課題を解決できます。

  • Before
    • 情シスのリソースがなく、現場の要望に応えるまで時間がかかる。
    • できあがったシステムが使われない。
  • After
    • 業務部門が欲しいシステムを作る。
    • 情シスがしくみを提供、活用を支援する。

実際に課題を解決された具体例としては次の記事を確認してください。
なぜ日清食品は“現場が求めるシステム”が作れるのか? 情シスと業務部門の理想の関係 (External link)

また、kintone は幅広い業務で利用されています。代表的な事例を紹介します。

kintone を利用されたことがない方は無料のお試しやシミュレーターを用意していますのでぜひ操作感を確認してください。
無料お試し申し込み (External link)
kintoneシミュレーター (External link)

また、本記事ではアプリ、レコード、フィールドなどの言葉を利用します。
詳しくない方は次のページ内の項目「アプリの構成」を確認してください。
アプリとは (External link)

kintone の注意事項

kintone を利用するのに特別なスキルや知識は必要ありません。
マウス操作で業務システムを構築でき、項目の追加や変更も迅速に対応できます。

しかし、kintone はマルチテナント構成のクラウドサービスです。
そのため、追加費用などで個別に環境の性能を向上させることはできません。
また、RDB のリレーションやトランザクションなどの複雑な機能を利用できないので注意が必要です。

本章ではそういった注意事項を説明します。

スケールアップ/スケールアウトできない

性能に課題が生じた場合、次のような対策は取れません。

  • CPU の増強
  • サーバーの追加

そのため、kintone の特性を知り、快適に利用するための考慮点をあらかじめ押さえておくことが大切です。
kintoneの性能 Vol.1 - リクエストの処理時間

COMMIT/ROLLBACKができない

トランザクションの開始/終了を宣言できないため、処理の整合性を担保できません。
カスタマイズを利用すれば楽観的排他処理を実装できます。(詳細は後述する項目「revision」を確認してください)

ロックやインデックスを設定できない

次のような設定はできません。

  • ダーティリードを許可する。
  • 利用頻度の高い検索条件にインデックスを作成する。

複数アプリへの同時登録はできない

アプリ A で入力した内容を、アプリ A とアプリ B に同時に登録できません。
たとえば、「見積アプリに入力した内容を、見積ヘッダーアプリと見積明細アプリに分けて登録する」というようなケースです。

次で紹介しているカスタマイズを実装することで実現可能です。
bulkRequest で複数アプリへのレコード一括処理を行う

アプリ結合ができない

アプリ A とアプリ B を外部または内部結合した一覧は表示できません。
たとえば「予算アプリと実績アプリを外部結合し、予算実績一覧を表示する」というようなケースです。

次で紹介しているカスタマイズを実装することで実現可能です。
予算アプリと実績アプリの集計表をカスタマイズビューに表示する

複合主キーを設定できない

kintone には、複数のフィールドを使って主キーを設定する機能はありません。
たとえば予算アプリに「年度」「予算項目」のフィールドがあったとき、年度と予算項目の 2 つを複合主キーにして、一括更新のキーとしてレコード更新したりレコードの重複登録を防いだりはできません。

ただし、次の工夫をすることで複合主キーのような機能を実現可能です。

  1. 複合主キーとして使いたいフィールドの値を結合して、別のフィールドに入力する。
  2. 1 のフィールドに対して、重複禁止や一括更新のキーを設定する。

値を結合するには & 演算子を使って計算式を設定します。
しかし、すべてのフィールドを & 演算子で結合できるわけではありません。
kintone ヘルプ:「&」演算子で結合できるフィールド (External link)
結合できないフィールドを利用する場合には、JavaScript カスタマイズで結合処理を実装するか、文字列を結合できるプラグインを使います。
参考: 文字結合プラグイン

kintone でできること

本記事では、kintone のライトコースとスタンダードコースで利用可能な、データ参照に関連する機能を紹介します。

別アプリのレコードを参照したり、転記する手段として「ルックアップ、関連レコード、アプリアクション」の 3 つが挙げられます。
また、1 つのレコードに複数明細のデータを格納する「テーブル」という機能もあります。

ルックアップ

他のアプリに登録されているレコードを参照してフィールドの内容を取得(コピー)できる機能です。
たとえば、お客様情報を何度も入力するのがたいへんな時、すでに別アプリで顧客情報を管理していれば、そこから顧客情報をコピーして入力できます。
ルックアップとは (External link)

参照ではなくコピーです。そのため、コピー元のレコードを更新してもコピー先には反映されません。
反映が必要な場合は次で説明する関連レコード機能や連携ソリューションの利用を検討してください。
拡張機能で、さらに広がるキントーンでできること (External link)

ルックアップとは異なり、レコード詳細画面に、「条件に一致したレコード」を一覧表示(参照)できる機能です。
ほかのアプリ、同じアプリのどちらのレコードも表示できます。
たとえば、顧客データと案件データを別々に管理している状態で、顧客に紐づく案件データをまとめて見たい場合などに便利です。
関連レコード一覧とは (External link)

アプリアクション

指定したアプリにフィールドの内容を転記できる機能です。
たとえば、注文管理アプリで毎回お客様の情報を手入力している場合、すでに別のアプリで管理している顧客リストから転記する、といったことが可能です。
アプリアクションでできること (External link)

テーブル

入力中に必要に応じて入力行を増やせる機能です。
複数の入力内容を 1 つのレコードで管理したい場合に便利です。
たとえば、商品の注文管理アプリで、お客様の注文によって異なる商品名や注文数を、必要な数だけ行を追加して入力できます。
フォームにテーブル(表)を追加/削除する (External link)

テーブルを利用する場合は集計やデータ出力などの後工程で問題にならないか、事前に確認することをおすすめします。
たとえば次のような内容で問題になることがあります。

  • テーブルは関連レコードで表示できません。
  • グラフ機能で件数を集計する場合はレコード件数になります。テーブルの行数は集計できません。

kintone でできること - スタンダードコース編

kintone のスタンダードコースでのみ利用できる機能です。
これらを利用することで記事冒頭の「はじめに」で紹介したような機能の拡張が可能になります。

ここから紹介する内容は開発を含み、少し難易度があがります。
JavaScript の経験がない方はチュートリアルも用意していますので確認してください。
kintoneカスタマイズ チュートリアルの進め方

kintone JavaScript API

画面での操作をきっかけに、JavaScript を実行できます。
一例ですが次のような機能を実装できます。

  • kintone のレコード保存時に入力内容をチェックし、エラーを表示する。
  • kintone の一覧画面にボタンを表示し、ボタンクリックで外部サービスにリクエストする。

kintone JavaScript API(イベント)一覧

また、kintone JavaScript API だけでなくブラウザーに実装されている JavaScript も利用できます。
たとえば一覧画面に地図を表示するライブラリや、React や 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 で利用する機能で、楽観的排他処理の実装に利用します。
次の順序で処理する場合、「1」と「2」の間に他のユーザーがレコードを更新していた場合は「2」の更新処理が失敗します。

  1. レコード取得時にリビジョン番号を取得する。
  2. レコード更新時に「1」で取得したリビジョン番号を指定する。
    安全に在庫管理を行うテクニック2 - リビジョンを試そう -

kintone JavaScript API と kintone REST APIの組み合わせ

2 つを組み合わせることで次のような機能を実装できます。

おわりに

ここではスクラッチ開発経験者向けに kintone 活用のポイントを紹介しました。
重ねての説明になりますが、kintone を活用するには kintone の特徴を理解することが大切です。
最適な業務システムを構築する上で、本記事が少しでも参考になれば幸いです。

information

この Tips は、2022 年 9 月版 kintone で動作を確認しています。