公開日: 2023年12月18日 / 更新日: 2024年10月29日
kintone(キントーン)はプログラミングの知識がなくても手軽にデータベースシステムが作れてしまうとても便利なサービスです。
クラウド型のサービスなので、例えば今までエクセルで管理していた情報もkintoneアプリに保存することで、情報をもれなく共有するのに最適。kintoneで情報を一元管理していれば「誰が最新のエクセルファイルを持っていたんだっけ?」みたいな状況がなくなるのでその分、業務が効率的になります。
このようにとても便利なkintoneですが、kintoneをデータベースとして管理するためにはkintoneのデータベースの仕組みや癖をきちんと理解した上で上手に運用する必要があります。例えばエクセルとkintoneではベースとなる考え方が少し違うのも事実。
あるいはこれまでリレーショナルデータベースを使ったDBシステムの構築に携わってきた方でkintoneでのシステムのリプレイスを考えている方も多いはず。
この記事ではkintoneのデータベースの基本的な構造から、kintoneにおけるデータベース設計の方法、その際に基本となる考え方について具体例を交えながらご紹介したいと思います。
またエクセルとの違いやリレーショナルデータベースとの違いについても扱っていきます。
データベース構築と聞くと「サーバーを構築してRDBでデータベース設計して、SQLを叩いてデータを取得したり登録したりして・・・」といったものすごいハードルの高い印象をお持ちかもしれません。そもそも出てくる専門用語の数々で圧倒されてしまう方も多いのではないでしょうか。
実はkintoneでデータベースを構築する場合、こういった難しくて専門的なデータベースの仕組みについて頭を悩ませる必要はありません。kintoneでは「アプリ」という単位でデータを保存していきますが、アプリはとても直感的な操作ですぐに作れてしまいます。
そしてWebブラウザを通してインターネット環境があるところならどこからもアクセスできる仕組みになっているので、情報の共有、管理がとてもスムーズに進みます。
さらにkintoneの強みといえるのは柔軟性です。一旦運用が始まってしまった後でもアプリをアップデートしながら使うことができ、標準機能に加えてプラグインや拡張機能サービスを使ってカスタマイズすることで独自にニーズに応えることができるようになっています。
kintone は、初心者であっても始められる気軽さと分かりやすさを持ちながら、中上級者のこだわりにも答えてくれる柔軟さを持っています。特にプログラミングの知識が必要ないのがなによりの特徴。
kintoneではアプリという単位でデータベースを管理します。データベースでまず必要になるのはどういった項目をデータとして蓄積するか、という点ですが、kintoneアプリはこの設定がとても簡単です。
具体的にどういうことか見ていきましょう。例えば社員情報をデータベース化して社員名簿として管理する場合
・氏名
・ふりがな
・誕生日
・性別
・住所
といった情報はどの社員にも共通で登録すべき情報です。
これをエクセルで登録しようと思った場合、このように表形式で保存することが多いはず。
エクセルのこの表をkintoneに保存させてデータベース化する場合はまずkintoneでアプリを作成します。
そしてデータベースとして保存したい各項目を「フィールド」として追加していきます。まず追加したいフィールドの種類を選択してからマウス操作でドラッグ&ドロップしてしまえば、あっという間にアプリができてしまいます。
エクセルでは一人一人の情報は一行にすべて凝縮されるために、項目が多くなると情報が横長になってしまい見辛くなりがちですが、kintoneでは一人当たりのデータ項目を自由にレイアウトすることができます。
そのため項目が多くなっても見やすい画面にすることができます。例えば社員名簿アプリではあれば先ほどの「氏名」「ふりがな」「誕生日」「性別」「住所」をフィールドとしてドラッグ&ドロップでアプリに追加します。
この社員一人当たりのデータをkintoneではレコードと呼んでいます。kintoneアプリはレコードの集まりなのですが、レコードというのは決まった項目を書き込んだ一枚のカードのようなもの。
身近な例えでいうと名刺をイメージしてみてください。名刺一枚一枚にはだいたい共通の項目が書かれていますよね?その名刺一枚一枚がkintoneアプリのレコードです。そしてその名刺を集めた名刺入れがkintoneアプリ。
データベースにはいろいろな種類がありますが、kintoneのデータベースは「カード型データベース」と呼ばれています。名刺に例えることができるからです。
もちろん、アプリに保存したデータをエクセルのように一覧表形式で表示することもできます。
そしてさらなる強みとして、kintoneではいくつかのアプリ同士を連携することができます。この点は後ほどご説明しますが、エクセルのようにただ単にデータを保管することができるだけでなく、アプリ間で情報を連携したデータベースシステムをプログラミングすることなく簡単に作れてしまうのは本当に便利です。
さて、以上がkintoneの一番基本的な使い方ですが、アプリを非常に柔軟に作ることができるので先ほどご紹介した社員名簿にとどまらず、プロジェクト管理や販売管理、顧客管理、さらには経費管理など本当にさまざまなシーンで使えます。
さらにはAPIを通じて他のクラウドサービスとデータ連携することができるのも大きな特徴。
しかもサーバー構築費用・サーバーの保守費用が別途発生することはありません。通常のデータベースシステムの場合、専門のエンジニアがサーバーのメンテナンスをしていく必要がありますが、kintoneはクラウド型のサービスなので、そこもすべてサービス提供してくださっているサイボウズさんにお任せです。
スクラッチでデータベースシステムを構築する場合に比べてずっと低コストで、しかもスピード感をもってデータベース構築ができるという大きなメリットがあるんです。
kintone のメリットはなによりクラウドサービスであるということ。インターネット環境があればどこからでもアクセスできるアクセシビリティも大きな魅力の一つ。社外や移動中であっても業務をスムーズに行うことができます。そしてクラウドであることの最大の利点は常に最新のデータにアクセスできることです。情報があちらこちらに散らばることなくkintoneの一箇所に集約されていれば、リアルタイムでミスなく情報共有ができます。
またアプリ同士でデータの連携ができるのもkintoneの特徴ですが、APIによって外部サービスとの連携も可能。いろいろなクラウドサービスがkintoneに対応してきているので、外部サービスからkintoneにデータをインポートしたりそのサービスにkintoneからデータをエクスポートしたりといったことが簡単にできるようになってきました。
またCSVデータをそのままkintoneに読み込んだり、あるいはkintoneのデータをCSV形式で書き出すことも簡単にできます。そのためAPI連携できない外部サービスとのデータのやりとりも可能になります。
上手に運用設計すればkintoneに業務を集約させて情報を一元化することも可能です。
kintoneではあるアプリと別アプリのデータ同士を関連づけることができます。
例えば、顧客情報をデータベースとして管理する「顧客管理アプリ」と案件情報をデータベースとして管理する「案件管理アプリ」の二つがあるとします。
案件アプリには顧客情報を入れることになると思いますが、案件ごとに毎回お客様のデータを入力するのはかなりの手間となりますし、タイプミスなどで情報が不正確になってしまう危険もあります。
kintoneではその手間を省いて、案件管理アプリから簡単に顧客管理アプリの情報を参照するためのルックアップ機能という機能があります。
このルックアップ機能を使うと、顧客管理アプリから選んだ顧客データを案件管理アプリに登録することができます。
実際に見てみましょう。今回は「顧客番号」で案件管理アプリと顧客管理アプリを関連づけることにします。案件管理アプリにルックアップフィールドを設定するとこのように「顧客番号」のフィールドに「取得」ボタンが表示されます。
この「取得」ボタンをクリックすると顧客管理アプリに登録されている顧客の一覧が表示されますので、そこから該当するお客さんを選択。
そうするとこのように「顧客名」「顧客住所」が顧客管理アプリからコピーされ、この案件管理データと選択した顧客データが関連づけられます。「保存」ボタンをクリックした後は「顧客番号」の部分が該当顧客管理アプリの該当レコードへのリンクとなります。
このようにkintoneのルックアップ機能を使うとアプリ間の連携が実装できます。データベースに詳しい方のために少し専門的なお話をすると、ルックアップ機能はリレーショナル・データベースにおける「外部キー」のような働きをします。
ただ注意点としては厳密には外部キーと全く同じように動作するわけではないことです。例えば、先ほどの例でご説明すると顧客管理アプリで「住所」を変更しても新しい住所が自動的に案件管理アプリのほうに反映されることはありません。
そのため住所を変更した場合には案件管理アプリのほうでルックアップをし直す必要があります。これはkintoneの弱点を補うために、参照元のデータが変更されたときに参照先のデータも自動的に書き変わるようにするプラグインなども提供されています。kintoneの標準機能では実現できないことはこうしたプラグインなどを使って上手にカスタマイズしていきましょう。
kintoneのデータベースはあくまでカード型データベースですが、ルックアップのような機能があるため「外部キー」的な仕組みも実現することができるはすごく便利です。
なんといってもプログラミング知識がなくともデータベースシステムを構築できることや、直感的にいじれること、運用しながら必要にあわせて柔軟にアプリを修正していける点などは弱点を補ってあまりあるkintoneの利点だといえます。
顧客管理アプリを作る際に覚えておきたい点は「kintoneで顧客管理!アプリの作り方」の記事も是非参考にしてみてください!
さらに便利なのは関連レコード表示機能とサブテーブル機能です。
関連レコード表示機能は他アプリに保存されている関連レコードを表形式で一覧表示できる機能です。実際にレコードのデータとして保存される訳ではなく、参照データとして表示されるものですが、これもとても便利な機能です。
例えば顧客管理アプリに、その顧客と紐づいている案件管理アプリの案件一覧を表形式で表示することができます。
関連レコード一覧機能について詳しくはこちらの「kintone(キントーン)関連レコード一覧機能の使い方まとめ」の記事を是非ご参照ください。
サブテーブル機能はレコード内に表形式のデータを保存することができるもの。関連レコード表示機能との違いはレコードのデータとして表のデータそのものが保存されることです。
サブテーブル機能は特に見積書データや請求書データを作成するときにぴったりの機能です。
またこちらのサンプルにある通り、サブテーブルの特定の列の値を合計する関数も用意されています。
データベースに詳しい方はここで「CSVで書き出して、読み込む時はどうなるんだろう?」と思われたかもしれません。
実は以前はサブテーブルを使ったアプリではCSVで書き出した読み込む時にサブテーブルのデータは読み込むことができませんでした。ところが数年前にサブテーブルも標準のCSV読み込み機能で読み込めるようになり、この問題が解決しました。
ただし自前でCSVを作成してサブテーブル付きのアプリにデータを一括登録する場合には決まった仕様でCSVを作成する必要があるので注意が必要です。
kintoneのサブテーブル(最近ではテーブルと呼ぶことが多いようです)についてはこちらの「kintoneテーブル機能とは?レコードに表形式でデータを保存してみよう!」の記事で詳しく書きましたので是非参考にしてください。
kintoneを検討されるお客様からよくお聞きするご要望のひとつに「いまエクセル(Excel)で管理しているデータをkintoneに移行して管理したい」というご要望があります。
エクセルでデータを管理していると、ファイルがいろいろな社員によってばらばらに管理されたりするため誰がどのファイルを管理しているのかを確認するのに時間がかかったり、同じファイルをバラバラに管理してしまった結果、どれが最新のデータなのか分からなくなってしまったり。
エクセルは表計算ソフトとして本当に便利なツールですが、情報の共有や一元化という意味では大きな課題があるのも事実。
一方kintoneはクラウドサービスであるため、こうした情報の共有に関する問題を解決してくれます。
また表形式になっているデータであれば手軽にkintoneにデータ移行が可能なため、エクセルからkintoneへデータを移行するというのは、おすすめのソリューションのひとつでもあります。
ただし、エクセルとkintoneではデータを管理する際の基本的な考え方に大きな違いがあり、kintoneを最大限有効活用するためにはこの違いをしっかりおきたいところ。
ではkintoneをデータベースとして活用していく場合、エクセルと比較してどんな違いがあるのか、これから見ていくことにしましょう。
まずはエクセルの特徴について考えてみましょう。エクセルは何よりも表計算ソフトです。つまりデータの集計や抽出を得意とするアプリ。そのため関数やグラフ表示機能を含め表計算に必要な機能はなんでも揃っているといっても過言ではありません。入力フォーマットのカスタマイズやフィルターの作成もお手のものです。
このように表計算においては最強なツールであるエクセルですが、弱点もいくつか存在します。そのなかでも一番大きな弱点は大量のデータ管理には向いていない、という点です。
あまりに大量のデータをひとつのシートに保存しようとすると処理に時間がかかってしまって業務に支障が出ることもあります。またシートをまたいだデータの管理もあまり得意ではないため、データがあちこちのシートに散らばっている場合の欲しい情報を検索するのに苦労された方もいらっしゃるのではないでしょうか?
一方のkintoneはデータベースとして機能するように設計されています。そのためデータを組織的または構造的に保存するという点ではエクセルよりもはるかに便利といえます。
kintoneでは保存できるレコード数(エクセルに例えるなら行の数)つまり容量に上限はありませんが、残念ながらkintoneも完璧ではありません。Webブラウザから使うクラウドシステムの性質上、例えば、項目のとても多いアプリで100万件以上のレコードを保存してもサクサクとこなせるかというと現実的には一覧表表示や検索など一部の機能が若干遅くなることがあります。
それでもkintoneでは一覧表示画面においてあらかじめ条件を指定した一覧を複数用意することができます。例えば100万件のデータがあったとしても実際の業務で扱う対象はもっと限定的なはず。そこで条件で絞り込んだ一覧で管理・運用するのが一般的です。
また、アプリ間のリレーショナルな連携を実現できるのもkintoneの強みですので、構造的にデータベースを設計することでひとつのアプリに大量のデータが集まってしまう、という事態も避けることができます。
どちらにしても現在エクセルでデータを管理されているのであれば、脱エクセルの脱出先としてkintoneは魅力的な選択肢として是非お勧めしたいです。
kintoneは、作業を効率化し、チームの共同作業を容易にするクラウドベースのデータベース管理ツールです。このツールの最大の魅力は、エクセルの使いやすい関数機能に匹敵しながら、さらに多くの利点を持っている点です。
エクセルでは、SUM関数やVLOOKUP関数などのデータの集計や分析の時に手放せない汎用性の高い関数が用意されています。これらの関数を使いこなせば、複雑なデータ処理が可能になり、現場で大いに力を発揮します。
実はkintoneにも似たような関数機能が提供されています。
そのいくつかをご紹介します。
SUM フィールドの値を合計
YEN 計算結果を、指定した桁数で四捨五入し、3桁ごとの桁区切りの「¥(円)」形式で表示
DATE_FORMAT 日時の形式やタイムゾーンを変更
IF 条件を指定し、その条件の真偽によって指定した値を登録
AND 指定した条件が全てTRUEとなる時はTRUEを返し、そうでなければFALSEを返す。
OR 指定した条件のいずれかがTRUEとなる時はTRUEを返し、そうでなければFALSEを返す。
NOT 条件を反転。
ROUND 数値を四捨五入する。
ROUNDDOWN 数値を切り捨て。
ROUNDUP 数値を切り上げ。
CONTAINS 指定したフィールドが条件(選択肢)と一致しているか、またはサブテーブル内に条件(検索文字列)と一致する行があるかどうかを判定。
これらの関数はひとつのレコード内で利用できるものですが、kintoneにはレコードをまたがった集計機能もあります。「グラフ」機能を使えば集計結果を以下の形式で表示することができます。
・棒グラフ
・円グラフ
・折れ線グラフ
・クロス集計表
・表
・面グラフ
・曲線グラフ
・曲線面グラフ
kintoneの集計機能・グラフ機能についてはこちらの「kintoneでデータドリブンな意思決定!グラフ・集計機能を徹底解説」の記事のなかで詳しくご紹介しています。こちらも併せて参考してみてください。
さて、集計機能やグラフ機能もついていてかなり便利なkintoneではありますが、エクセルとの比較においてはひとつ弱点があります。
エクセルでは複数のシートに分かれて保存されたデータを元に集計表を作成することができますが、kintoneは複数アプリにまたがって保存されたデータを標準機能で集計して、ひとつの集計表やグラフとして表示することが得意ではありません。
そこで活躍するのがkintoneプラグインです。krewDataのようなプラグインを使うと複数アプリにまたがってデータの集計も可能になります。
特にこれまでリレーショナルデータベースを使ったシステム構築に慣れ親しんできた方にとってはkrewDataのようなプラグインはまさに痒い所に手が届くプラグイン。SQL文を実際に書くわけではありませんが「リレーショナルデータベースのテーブルをJOINしたい」みたいな時にはkrewDataを活用することでkintone標準機能の限界を埋め合わせることができます。
kintoneはエクセルと違ってデータベースです。そのため検索のしやすさという点ではエクセルよりも便利です。特に複数の条件を組み合わせて該当する情報を検索したい場合kintoneは感覚的なUIでそれを行うことができます。
一覧画面の「フィルター」アイコンをクリックすると「絞り込み」画面が表示されるので、そこに複数条件を指定可能。そして「すべての条件を満たす」もしくは「いずれかの条件を満たす」のどちらかを選択します。
こちらが絞り込み画面の一例です。
kintoneにはエクセルを上回る特長がまだまだあります。一つはチームメンバー間のリアルタイム情報共有ができること。データやファイルがクラウドに集約されているため、インターネット環境さえあれば場所を選ばずにプロジェクトに参加できます。
そしてエクセルにはない特徴として是非強調したいのが「履歴管理機能」があること。これにより、データの変更履歴を追跡でき「いつ誰がどこをどのように修正したのか」を確認することができるんです。
つまりデータ(kintoneレコード)のバージョン管理機能がついているということなんです。そして特定のバージョンの情報に戻すことも簡単にできてしまいます。
この機能によって透明性を確保できますし、何かの入力ミスでトラブルが発生した場合にこの履歴を辿って問題を特定できることも多々あります。
kintoneはルックアップ機能を使ってアプリ同士を連携されることができます。この機能によってkintoneをリレーショナルデータベース(RDBMS = Relational Database Management System)のように使うことができます。
各アプリがリレーショナルデータベースでいうところのテーブル、ルックアップフィールドが外部キーのような働きをしているとイメージしていただくと分かりやすいかと思います。
そのため、みなさんの中にはすでにリレーショナルデータベースでのシステム構築を経験された方で「APIを使ってリレーショナルDBで構築したのと似たようなシステムをkintoneでも構築できないだろうか?」と考えておられる方もいらっしゃるはず。そんな方のために少しだけ専門的な話をさせていただきます。
確かにkintoneをリレーショナルデータベースのように使えたら便利ですが、いくつか注意点があります。まずはユニークキーとルックアップにかかわる問題です。そしてトランザクション処理にかかわる問題。
kintoneでデータベース構築する際のコツを手早く知りたいからは次の項目「kintoneでデータベース設計するときのポイント」までスキップしちゃってください。
リレーショナルデータベースにおいて大切なのは主キーという概念です。そしてリレーショナルデータベースで便利なのは複数フィールドを組み合わせて複合ユニークキーを設定できるところ。
ところがkintoneではこの主キーの概念が若干希薄です。
kintoneアプリにはレコードという単位でデータを登録していきますが、このとき特別主キーを設定する必要は必ずしもありません。というのはkintoneのほうで自動的に「レコード番号」というユニークな値を発行してくれるからです。
このレコード番号が主キーの働きをしているのですが、このレコード番号がクセ者で扱いに注意が必要。
このレコード番号はレコードを作成したタイミングで自動採番されるものなんですが、問題が発生するのはアプリのデータを他のアプリに移行するタイミングなどです。
例えば顧客管理アプリを一旦CSVに書き出してバックアップしたとします。その後顧客管理アプリのデータをすべて削除して、バックアップしたCSVからデータを読み込む場合。
この時、同じレコード番号は発行されません。そのアプリにおいて最後に発行されたレコード番号の次の番号から順番に新しく発行されます。つまりレコード番号を主キーのように扱っていると「主キーが採番され直されてしまう」というデータベースの常識からするとありえない状況が発生してしまいます。
これを避けるためにkintoneアプリを設計する際にはレコード番号とは別にユニークキーとなるフィールドを作成してあげるのが得策です。フィールドは「重複禁止」「必須項目」として設定することが可能なので、例えば顧客管理アプリであれば「顧客番号」などのユニークキーとなるフィールドを用意しましょう。
なおアプリをコピーしてデータ移行をする場合の注意点はこちらの「kintoneアプリにコピー方法!データも移行できる?」の記事の中で詳しく書いているので是非参考にしてみてください。
最後にユニークキーに関してちょっと歯痒い点をひとつ。それは複数のフィールドをセットにして複合ユニークキーのような設定ができない点。
最後にこれを回避するための小技をご紹介します。
例えばkintone上で「フィールドA」「フィールドB」「フィールドC」の組み合わせでユニークになるようにデータベースを設計したい場合
・「文字列フィールド」を新たに用意
・「自動計算」を有効にする
・計算式として「フィールドA & フィールドB & フィールドC」を設定
このようにフィールドの値を結合したものを用意してあげれば複合ユニークキーに近いことが可能ではあります。
ただし、設計が煩雑になる可能性もあるためリレーショナルデータベースでデータベース設計する場合とは一回頭を切り替えて「kintoneの特徴をどうすれば最大限活かせるか?」という観点からデータベース設計していくと運用自体もよりシンプルになりますし、kintoneの標準機能も十分に活用することができます。
最初は頭の体操が必要ですが、意識していきたい点です。
さて、今度はさらに
・「外部キーとルックアップ機能の違いについて」
・トランザクション処理にまつわる注意点
についても見ていきましょう。
リレーショナルデータベースでは外部キーに外部キー制約をつけてテーブル同士のデータ整合性を保つことができます。例えば他のテーブルで参照されているデータを削除してしまったり、参照されているデータの主キーを変更してしまったりするとデータに不整合が発生します。
kintoneのルックアップ機能ではデータを参照する際にデータに不整合が発生するということはありません。すでに参照元のアプリに登録されているレコードしかルックアップできないようになっているからです。ところが、問題が発生する可能性があるのはデータをルックアップした後。
例えば、案件管理アプリで顧客管理アプリからルックアップして顧客情報を登録したとします。その際に「顧客名」「住所」も一緒にされるとします。
このように顧客情報をルックアップした後に、参照元である顧客管理アプリの「住所」を変更したとします。その際、参照元アプリの「住所」を変更しても、参照先である案件管理アプリの該当「住所」は自動では変更されません。
一度該当レコードを編集しルックアップし直すまでは情報が更新されないんです。この弱点を補強するために、参照元データを更新した際に参照先データも自動的に更新できるプラグインを開発してくださっているベンダーさんもあるので、そうしたプラグインを活用しながら弱点を補強していきましょう。
さらに注意が必要なのは、ルックアップで他のアプリからすでに参照されているレコードを削除もできてしまう点。執筆時時点ではレコード削除の際に特に警告などはでません。そのため、参照先アプリにはすでに存在しないデータが参照されている状態が発生します。
このようにルックアップ機能は外部キーのように使うことができてとても便利なのですが、リレーショナルデータベースの外部キーとまったく同じように動作するわけではありません。その点注意が必要です。
kintoneではAPIを使ったプログラミングが可能で、アプリに対してデータを登録したり更新したりすることができます。
リレーショナルデータベースでのシステム構築の際にはトランザクション処理を施すのが一般的です。あるデータベーステーブルで値が書き換わったのに、そのテーブルに関係した別のテーブルで値が書き変わらないと全体として整合性が取れないような状況を避けるためです。
つまり、一連の処理をセットにして、途中でひとつでも処理が失敗したらそのセットに含まれている処理すべてを無効にする(つまりロールバックする)仕組みを実装します。
kintoneの裏側で動いているサイボウズ管理下のデータベースには当然のことながらこうしたトランザクション処理は実装されています。簡単な例でいうとCSVファイルからのkintoneアプリへデータ読み込みなどの際です。CSVデータに1行でもエラー行があるとすべての処理が中断されデータは一切読み込まれません。これはバックエンド側できちんとトランザクション処理が実装されているためです。
問題が発生するのは自前でプログラムを書いてアプリをカスタマイズしる場合や外部からアクセスしてkintoneをデータベースとして使う場合。例えば、一度に複数アプリに対してデータを登録したり更新したりするときに、複数アプリのデータ登録を1セットにして扱う必要があるケースがあると思います。しかしkintoneでは複数アプリへのAPI処理をまとめてひとつのトランザクション処理にすることができません。
例えばアプリAとアプリBに対して一度にデータを登録する処理を実装した場合で、アプリAの登録がうまくいった後にアプリBの登録が何らかの原因でエラーになったとします。この際にアプリAへの登録は取り消されない、ということです。
一方で、同じアプリの複数のレコードを一括で登録したり、更新したりするAPIが用意されています。こちらに関しては、ひとつのレコードの登録・更新の際にエラーとなれば処理全体がエラーとなります。
簡単にまとめると、同じアプリの複数データに対して処理を行う場合はkintoneのバックエンド側でトランザクション処理をしてくれますが、複数アプリに対する処理をプログラムを書く側でひとつのトランザクションとしてまとめることはできないということです。
kintone APIに関してはこちらの「kintone API連携とは?基本を理解しよう!」の記事で詳しくご説明しているので是非参考にしてください。
さらにデータベースでシステムを組む際に大事になってくるのが排他制御です。つまり同時に複数の人が同じデータを編集しようとしたときにどうするか?ということ。これをきちんとしておかないと、データの不整合の原因になってしまいます。
kintoneでは悲観的排他制御で排他制御が行われています。
わかりやすく言い換えると「あるユーザーがレコードを編集している間は別のユーザーはそのレコードを編集できない」ようになっています。
他の人が編集中のレコードを編集しようとすると保存時に「編集中に、ほかのユーザーがレコードを更新しました」というエラーメッセーが表示されます。
このメッセージが表示された場合は画面を再読み込みして再び編集し直す必要があり、編集中の変更はすべて無効になります。
同時に同じ人が同じレコードを編集できてしまってデータの不整合が発生する、ということがないのでその点は安心なのですが、運用方法によってはちょっと使いにくと感じる方もいらっしゃるかもしれません。
そこでうまく運用でカバーする方法についてはこちらの「kintoneアプリのレコードを同時編集できない問題|対策方法を解説」の記事で詳しくご紹介しましたので、ぜひ参考にしてみてください。
さてここまでkintoneがデータベースとしてどんな特徴を持っているのかご紹介してきました。ここから、kintoneでデータベースを設計する場合のポイントについて少しだけお話ししたいと思います。
ここで扱う点はkintoneに限らずどんな種類のデータベース構築においても大切なことで基本的な考え方は同じです。データベース構築の経験者の方であればデータの正規化について意識されるはず。kintoneのデータベースの際にも同じ原則を意識しましょう。
kintoneはリレーショナルデータベースに比べてデータベースとして柔軟性が高いですし、専門的な知識がなくてもデータベースを構築できてしまいます。そのため、気軽にシステムを作り始めたんだけど運用しているうちにどんどん複雑になってしまう、ということも発生しやすいもの。
それではkintoneでうまくデータベース設計をする上でのコツをいくつかみていきましょう。
先ほどリレーショナルデータベースとの違いの項目で細かくご説明した点になりますが、kintoneではレコード番号というものが自動で発行されます。
レコード番号は他のレコードとは絶対に重複しないレコード固有の番号です。ところが、レコードを一旦削除してしまうと同じレコード番号は決して発行されません。
またデータを登録する際にレコード番号をこちらで指定することもできません。あくまでkintone側で発行される番号だからです。
そのためレコード番号とは別にユニークな値を持つフィールドを作成するようにしましょう。ユニークなフィールドとは他のレコードと重複しない値のことです。
例えば顧客管理アプリであれば「顧客番号」。案件管理アプリであれば「案件番号」などです。
ユニークにしたいフィールドにはkintoneのフィールド設定で「必須項目にする」「値の重複を禁止する」にチェックを入れます。こうすることで間違って重複した値を入れる、ということも避けることができます。
さらには「ATTAZoo+」の自動採番プラグインを入れることでこうしたユニークなフィールドを自動採番設定にすることも可能です。
次に意識したいのはデータが重複しないようにすることです。顧客管理アプリと案件管理アプリを例に取って考えましょう。
悪い例:
案件管理アプリで案件ごとにお客様情報を入力する必要がある
良い例:
お客様情報は顧客管理アプリに入力するようにして、案件管理アプリでお客様情報を入力する際は顧客管理アプリからルックアップする
悪い例では案件ごとにお客様情報を入力する必要があります。まず入力の手間がかかってしまいます。表記触れなどによって同じお客様なのに毎回微妙に情報が違う事態も発生しやすくなり、正確な検索ができなくなるおそれがあります。それから例えば住所や電話番号が変更になった場合すべてのレコードで手入力し直す必要が出てきます。
ルックアップ機能を使うようにすれば、まず入力の手間がなくなりますし、表記触れの問題も解決します。
住所や電話番号など参照元のデータが変更になった場合、kintoneの現在の標準機能では残念ながら参照先のデータが自動的に書き換わることはありません。
そのため参照先でルックアップし直すまでは新しい情報が反映されません。それでもルックアップするだけで複数のフィールドの値が入力ミスのおそれなくアップデートされるのはやはり便利です。
またルックアップ先のデータも一気に書き直すようにするプラグインも提供されていますのでそういったプラグインを使えば、この問題も解決できます。
ルックアップの弱点を補強してルックアップを便利に使うためのプラグインについてはこちらの「kintoneルックアップ徹底解説:基本から自動取更新プラグインまでしっかり理解しよう!」の記事でご紹介させて頂いています。是非参考にしてみてください。
kintoneをデータベースとして使う場合の注意点についてみてきました。
さて、kintoneを使ってみていろいろやってみたんだけど「どうも使いこなせない」と感じておられる方もいらっしゃるかもしれません。その時に大切なのはまずは想定している使い方がそもそもkintoneと相性がいいものかということ。そして、運用する側の体制が柔軟であるかということです。
ヒントとなる情報はこちらの「kintoneは使えない?向き不向きを見極めつつ最大限活用しよう」の記事でご紹介しています。
さて、いかがだったでしょうか?クラウド方のプラットフォームとして拡張性とカスタマイズ性をもったkintone。データベース構築もコツさえ押さえてしまえば、かなり幅広い要件に対応できるポテンシャルを持っています。
これまでリレーショナルデータベースを元にシステムを構築していたケースでも、上手に設計すればkintoneで置き換えることが可能かもしれません。kintoneに移行することによってサーバーメンテナンスやプログラムのメンテナンスにかかる費用や工数を減らすことができます。
また現在エクセル中心で業務を回しているケースではkintoneに移行することで情報の一元化やリアルタイムな共有が実現でき、よりシンプルで効率的な業務フローが実現可能になるかもしれません。
今回ご紹介したいくつかのポイントを参考にしながら是非導入を検討してみてください。
kintoneの活用に困ったとき、プラグインや連携サービスや開発のご相談も、ぜひ一度iTantoにご相談ください。我々iTantoは、kintoneの標準機能を最大限に使いながら、社内浸透の方法や業務フローの再構築のサポートなども支援しております。
基本的な方針としては、まずは標準機能のフル活用。より便利に使いやすいkintoneにするための「プラグイン」を。そして、お客様のご要望に応じた「連携サービス」の選定も一貫してご提案いたします。
我々の知識と経験を活用し、お客様の現在のご状況や今後のご希望をしっかり丁寧にヒアリングし、個社にそれぞれに対応したサポートを心がけております。kintoneの社内活用や浸透をはかるパートナーとして、iTantoはあなたのビジネスを全力でサポートします。
iTantoではkintoneの導入や運用強化を考えている皆様へ向けて、定期的に無料で参加できるオンラインセミナーを実施しています。kintoneの知識をより深く理解でき、さらに便利に活用できるように、kintoneの使い方はもちろん、プラグインをご提供されている会社のご担当者さまと一緒により活用の幅を拡げる知見のご紹介などをお話しております。ぜひ、参加を検討いただければと思います!
一覧へ戻る