SaaSとしてのkintoneとPaaSとしてのkintone

12月21日、前から読んでも1221、後ろから読んでも1221です。素敵ですね。
前から読んでも後ろから読んでも同じ、といえば**SaaS**ですよね！
ちょうどカレンダーが空いていたのでエントリしました。

ってことでSaaSのお話です。

私のチームではサイボウズ社のSaaS/PaaSであるkintoneを使ってます。

「kintoneを利用した開発業をやってるんですよ」とか言うと、
チーム外の人からも「kintoneってSaaSでしょ？なにを開発するのよ？」「ってかkintoneってなに？」みたいな声をよく聞くので、
せっかくのタイミングなので書いておこうと思います。

# SaaSとしてのkintone

kintoneは「業務改善ツール」という扱いになっています。
そこだけをとらえれば、クラウド環境で月々課金されつつツールを利用する、
ということでSaaS（Software as a Service）という扱いになるのかなと思っています。

https://kintone.cybozu.co.jp/feature/basic.html

kintoneでは「アプリ」という単位でデータを集約できます。
![マウス操作でアプリ作成](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1553291/8baeab48-9e3e-29fb-ef8e-7ba0da969490.gif)

マウス操作で、「フィールド」とよばれる項目を追加していってひとつの集約のまとまりを作るような流れです。

<img width="300" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1553291/a6f68409-fa08-d549-9bd5-4fbe537ac5a0.png" />

使えるフィールドは↑のような感じ。
文字列とかドロップダウンとか日付とかありますが、
作れそうな情報の種類は限定的にしている（あまり発散しないような）イメージがありますね。

似てる感じといえばコレ↓。

<img width="400" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1553291/f935492d-b0fd-1ded-680e-3a45c0daa9e4.png" />

Excelのセルの表示形式です。

簡単に言ってしまうと、

**kintoneは、Excel未満の機能をクラウドに上げてコミュニケーション機能を足したもの**

と解釈しちゃってます。個人的に。

「Excel回覧板」として、Excelファイルの共有で情報のやりとりをしていたものを、
クラウド環境でもっとラクにしようよ、というツール、と思っていただけたらいいのかなと思います。

# PaaSとしてのkintone

じゃあ開発ってなんなのさ？って部分が疑問に残るかとは思いますが、そこで利用されるのが JavaScript / CSS になります。

<img width="400" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1553291/1eaf4f42-e468-5ca7-3eeb-98ff337affd6.png" />

JavaScript/CSSを、アプリ表示に一緒に出力することでブラウザに機能を提供するという形で開発が可能です。

<img width="400" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1553291/0cbf73ef-62ef-a529-6cb0-6ba2abef9618.png" />

ブラウザの開発者ツールで見てみると、アップロードしたJavaScriptのファイルがそのままブラウザに読み込まれる感じですね。わかりやすい。

カスタマイズとしてはさらに、一覧画面だとHTMLも利用可能なので、ここでさらに自由度の高い表現も実現できます。

<img width="500" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1553291/522b2b6c-693c-bc6d-a807-b2c00b3e3a31.png" />


というわけで、大雑把なイメージとしては、
**kintoneに登録された情報をデータベースとして、HTML/JavaScript/CSS で表現・機能拡張する**
というのがPaaS（Platform as a Service）としてのkintone活用になるのかなと思ってます。

そう捉えてしまえればと、「**kintone開発=フロントエンド開発**」と見えて、なんかシンプルですね！

ただ注意点としては、データベースとしてのkintoneはひっじょうに簡素でして、

* アプリ間でのデータの関連性は大変希薄（RDBMSから移行したい、という案件は本気で要注意。移行を回避する方法をまず考えるレベル）
    * 「ルックアップ」という機能はあるが、ボタンクリックしたときにデータをコピーするだけの機能なので「マスタデータの参照」には使えない（マスタが更新されても「再取得」しないと反映されない）
    * 「関連レコード」という機能で現時点のマスタ情報は参照できるが、参照のみなのでデータの引き込みや活用が出来ない
* 検索は出来ないことがとても多い（あんまり期待しないようにする）
    * https://jp.cybozu.help/k/ja/user/search/search_details.html
    * 部分一致とか大変
    * ANDのみ、ORのみ

みたいなことを心に刻みつつ、そんな簡素なデータベースありきの開発（＆顧客への説明）を心掛けると良いと思います。

というわけで（データベースの仕様は変えられないのでなかったことにして）、フロントエンド全振りで開発できるという面では面白いのではないでしょうか。

<img width="400" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1553291/e56ce144-43e0-8747-084f-83284510a371.png" />

↑こんなアプリがあったとして、


![カンバンやらガントやら](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1553291/0e93feef-5b4e-522d-1278-4a90fc1dd794.gif)

↑こんな風にグラフィカルに表示する機能をご提示、みたいなことができるわけですね。

ちなみに↑このデモ自体は、下記リンクkintoneの開発者ページ、

[React を使って、kintone にガントチャートとカンバンを表示しよう！ &ndash; cybozu developer network](https://developer.cybozu.io/hc/ja/articles/7505492467225)

で提案のあったサンプルをただ流用しただけです。
中身はReactベースのライブラリで実現されてます。詳細は↑をご参照ください。

また、kintoneの開発者環境も無料で作れますので、是非お試しいただければと！

[kintone 開発者ライセンス（開発環境） &ndash; cybozu developer network](https://developer.cybozu.io/hc/ja/articles/200720464-kintone-%E9%96%8B%E7%99%BA%E8%80%85%E3%83%A9%E3%82%A4%E3%82%BB%E3%83%B3%E3%82%B9-%E9%96%8B%E7%99%BA%E7%92%B0%E5%A2%83-)


チュートリアルもありますし！↓

[kintoneカスタマイズ チュートリアルの進め方 &ndash; cybozu developer network](https://developer.cybozu.io/hc/ja/articles/360024370392)


興味を持たれた方は是非試してみてください。

ってなところでよろしくです。