一昨日書いた、PaaS型クラウド「kintone」を使った業務システム構築を考えるが非常に多くのアクセスを集めています。
ということで、サイボウズが提供している純国産のPaaSクラウド「kintone」について、もう少し詳しく見ていくことにしようと思います。
kintoneはWebデータベース
kintoneについてのサイボウズの説明を見ると、最初に出てくるのは「Webデータベース」という言葉です。
kintoneのライバルと言える、Salesforceが提供するForce.comでも「Web上のデータベース」という言葉で説明されています。
Webデータベースとは何ぞや。私なりの理解で説明してみます。
まず、データベースと言ってもOracleやMySQLといった、純粋なRDB(リレーショナル・データベース)という意味ではありません。それに相当するクラウドサービスは、Amazon Web Servicesで提供されているAmazon RDSやAuroraです。
kintoneのイメージは、Microsoft Access。
Accessは複数のテーブルを作ってその間の関係を定義できるRDBであると同時に、フォームと呼ばれる画面でテーブルに格納されたデータを管理するアプリケーションを作ることが出来る、「開発環境」です。
そのWeb版がkintone(やForce.com)です。Accessと違ってデータはクラウド上に置かれ、作ったアプリケーションはWebアプリケーションになり、スマートフォンのアプリからも操作可能です。
kintoneのリレーション機能は最低限
kintoneはデータベースではあるのですが、RDBのようなテーブル間の関係を定義する機能は最低限です。
出来ることは以下の3つだけ。
これ以上のリレーション機能が必要となる場合は、kintoneの使用はあきらめ、Force.comを使った方が良いでしょう。
アプリ内の表
kintoneでのシステム開発は「アプリ」を作ることから始まるのですが、1アプリ:1フォーム:1テーブル:n一覧という関係です。
重要なのは、1アプリ:1テーブルというところです。もう、RDBとかそういう話じゃないじゃん!と思うのですが、例外があって、アプリ内に「表」を作ることが出来ます。kintoneでは、この「表」のことを「テーブル」と呼んでいるのですが、例えば受注と受注明細といった、従属関係にあるHeader-Detailのデータ構造ってありますよね。あれを実現することが出来ます。
ルックアップ
kintoneでは複数のアプリ間での連携をとることが可能です。
なので、「アプリ」といってもそれが完結したシステムと考えるより、複数のアプリで1つのシステムが出来るくらいに考えた方が良いと思います。
1アプリ:1フォーム:1テーブル:n一覧ですから、例えば受注というアプリを作ったとすると、受注と受注明細というデータの塊について、CRUD(作成・参照・更新・削除)が出来て、一覧については色々な切り口で複数作ることが出来ます。
でも、受注する際に必要となる「商品」というデータは別アプリで管理しなければなりません。
商品マスタや在庫に関する情報を別アプリで管理した上で、受注アプリでは商品をルックアップして、受注明細の商品項目を入力することが出来ます。
関連レコード一覧
複数アプリ間での連携の一環として、フォーム上に別アプリにある関連データの一覧を表示することが出来ます。
但し、連携するアプリの表内にある項目との関連は認識されないようです。
ビジネスロジックはどのくらい実装できるのか
データの作成・参照・更新・削除に関しては、kintoneでアプリを作った時点で何もせずとも出来てしまいます。
それで十分なケースも多いとは思うのですが、業務システムとするなら、独自のビジネスロジックを組み込みたいところです。
kintoneでは、以下の5つの方法でビジネスロジックを組み込むことが出来ます。
計算
フォーム上にあるデータを使った計算は、計算項目をフォームに追加することで簡単に実装できます。
ルックアップ時のデータコピー
既に説明したルックアップ機能ですが、ルックアップした際に、複数項目の値をコピーすることが出来ます。
例えば、商品をルックアップした際に、商品名と合わせて、商品の価格を受注明細の単価としてコピーするなどです。
但し、あくまで「コピー」なので、ルックアップ元のデータを更新しても、コピーされた値は更新されません。
この辺はkintoneの限界だと思います。
プロセス管理
ワークフロー機能です。「承認待ち」や「承認済み」といったステータスを定義し、ステータスの遷移に必要なアクションを設定します。
条件によってステータス遷移を変えるといったことも定義出来ます。
アプリアクション
別のアプリにデータをコピーするためのボタンを作ることが出来ます。
JavaScript
独自のビジネスロジックを組み込むための最後の一手がJavaScriptです。
最終的にプログラミング言語を使ってカスタマイズできるというのは、開発者にとっては安心感があります。
cybozu.com developer networkでは、安全に在庫管理を行うテクニックなどが、JavaScriptを使ってカスタマイズする例として紹介されています。
まとめ
この記事では、kintoneのアプリ機能について特に開発者が気になりそうなポイントを説明しました。
kintoneで標準的に準備されている機能は、アプリ機能だけではありません。ユーザ(社員)間のコミュニケーションを充実させ、コラボレーションワークを実現するための機能もあります。
また、kintoneのアプリストアにあるアプリを使って、基幹システムと連携したり、帳票を出力したり、kintoneアプリにあるデータを外部ユーザに公開したりといったことも可能です。
そうした機能や、アプリストアについては、別の記事で紹介したいと思います。