見出し画像

業務アプリケーションを作るツールは、kintoneが最も良いなと感じたわけ

明けまして、おめでとうございます。今年度も「ITプランナーを増やしたい」マガジンを、どうぞよろしくお願い致します。

ITプランナーというか、ビジネスとITを融合できる人材を増やすには、成功体験に勝るものはない。成功体験とは、自分自身の業務やチームの業務といったものをITを使って変革して狙った成果を出すことを指しています。

エンジニアが足りてない昨今、プロダクト開発が増えてくればコーポレート部門に専念するエンジニアは、減っていくでしょう。IT企画力向上のためにも、プログラミング経験が乏しい方でも使える都合の良いツールを、昨年の秋頃から探しました。

だいたい10近いツールを体験した中で、以下の観点から評価させて頂き、最もバランスの良い選択肢が「kintone」だったのでご案内します。何かしらの参考になれば幸いです。僕の観点なので、良い悪いじゃないのでご留意を。

開発ツールの選定基準

- マーケットシェアはあるか、今後も成長していけるか
- エンドユーザーでも使えるか
- 上級者が手を入れることが出来る余地があるか
- インフラ構築・運用面のコストはどうか
- コスト・パフォーマンスはどうか

最も重要視したのは「エンドユーザーでも使えるか」という視点です。ココで言うエンドユーザーは、システム開発の経験がほとんどない方をイメージしてください。

プロユース仕様のローコード開発ツールもある

PaaSやローコード開発ツールの中には、「プロユース」の製品も結構ある。システム開発の経験がある人が、オーダーメイドのシステムを作る際にツールを使って生産性を高めつつ、自分でコードを書いてカスタマイズに対応できるというものです。Web Performer / 楽楽フレームワーク / OutSystems / Wagby などです。

Javaで作られたツールが多く、Javaが分かればなんとかなります。ツールの標準機能では難しく手を入れないと行けない場合、コードを書いて対応するという意味です。また、サーバー環境構築も別途必要なことがあるので、そこも出来ることが求められます。

これらのツールはプロユースを見据えているので、後術するWebデータベースの製品群に比べると値も張ります。まずは簡易Webデータベースが作るというエンドユーザーのニーズと少しズレを感じたため、外しました。

AccessやFileMakerについて

昔からあるローコード開発ツールといえば、この2つでしょう。

Accessはみなさんも御存知の通り、ファイルベースのデータ管理を行うため不特定多数のユーザーが同時にデータ操作をするのに向いていません。安全ピンの外れた手榴弾のような運用になりかねません。MDBファイルの容量は確か最大2GBですし、リンクテーブルで共有するにしてもデータ容量が増えると限界があります。

FileMakerは、Accessに比べると本格的な業務アプリケーションを作ることが出来るツールで、画面開発がかなり簡単でサーバーを立てて共有することもでき、任意のSQLを投げる機能もあったりと、ポテンシャルはすごく高い。

ですが、FileMakerの最大の難関は「スクリプト」と呼ばれる独自の言語体系で作られたロジックを構築する構文の習熟です。Excelの関数とはわけが違います。スクリプトを勉強してキチンとした業務アプリケーションを作るための設計や考え方を学ばないと、継続的に改善するのは難しいと見ています。

FileMakerを触ってみて画面構築やデータ設計はすぐできたけど、細かい制御を実装しようとするとスクリプトでの開発を覚えないと出来なくて、サンプルもほとんどなく「こういう開発手法がベスト・プラクティスだぜ」という情報も見つけられず、我流でやり続けるのは怖くなりました。アンタッチャブルな領域が多くて... メンターがいたら良いと思うのですが。

本格的な業務で使うとなると、メンターをつけて最低2〜3ヶ月は集中的に学ぶ必要があるものだと感じました。VisualStudioでアプリケーションを作るのと同じような感覚を覚えました。

ただ、ポテンシャルは高い(使いこなせたら色んなアプリケーションが作れる気がしてならない)ので、継続してFileMakerの勉強を続けます。

Webデータベースと呼ばれる製品群について

kintone / Plesantar / Exment / SmartDB  などが挙げられます。アカウントを作ってサインアップすれば、すぐに動くアプリケーションが作れますよというサービス群です。基本的な機能はどのサービスも大きく変わりません。このWebデータベースのサービスじゃないとこういうアプリは絶対作れないぜ、というケースは少ないと感じました。

kintoneがWebデータベース的なサービス群で大きく特徴的なのが、エコシステムです。WordPressのプラグインのように、有志が開発したプラグインを自分のアプリに取り入れることが出来る。恐らく、これができるのは現時点でkintoneだけだと思います。

kintoneはJavaScriptでアプリのデータや画面を操作するAPIを提供するという選択肢をとったので、エンジニアがカスタマイズ出来るノウハウが豊富で、ググれば大抵ヒットします。上級者は上級者なりのやり方で、望むアプリが出来る。インフラ構築や運用は何もしなくても原則OK。

初心者は初心者なりの、上級者は上級者の業務アプリケーションが作る幅広さと、エコシステム拡大の恩恵に期待でき、お値段もリーズナブルであるkintoneが、最もバランスの取れた選択であると判断しました。

オンプレでkintoneがやりたい勢もいるかも

エンタープライズだと「オンプレでkintone的なことをやりたい」という会社が出てくると思います。その場合の選択肢は「Plesantar」か「Exment」が有力です。自分たちでサーバ立てて使えるようにマニュアルが整備されていて、オンプレウェルカムっぽいので。オンプレで出来る最大のメリットは、データベースを自分たちのコントロールにおけること。極端な話そのRDBに対して自社の別のシステムを立てるなどもできちゃう。クラウドNGな会社もまだまだ多いですからね。

複雑なデータモデルやビジネスロジックを伴う場合

どのWebデータベース製品でも辛いだろうなと思う話を書きます。

複雑なデータモデルの例は、親→子→孫の3階層構造を一度に作成・更新・参照する必要がある場合、どのWebデータベース製品でも難しいと思います。
見積と見積明細とか、見積から顧客をルックアップするとか、単純な親子関係なら全然楽勝。

ただ、定期的に商品を手配する生協のようなビジネスだと、ちょっと大変かもしれない。受注と配送サイクルが1対1ならいいんですけど、受注明細によって配送のサイクルが変わってしまうと辛い。にんじんは隔週、じゃがいもは毎週というケース。でもおなじ注文番号で管理する的な。

そうなると、受注→受注明細→配送予定みたいな形で、1つの受注明細に対して複数の予定があってその予実を管理するみたいな構造になる。親→子→孫ってやつ。こういう業務の場合、どのツールを使っても素直には行かないと思います。

ビジネスロジックの代表例が「在庫の引き落とし」と「請求」です。商品を買う時には「注文明細にレコードが入って、注文した数だけ在庫をへらす」を同時に実現しないとだめ。アプリ間連携が必要。kintone標準でやるのは無理なはず。JavaScriptでリビジョン拾って楽観的ロックで更新をかけるカスタマイズが必要です。

卸の直送みたいに、受注内容がそのままメーカーへの発注(直送依頼)書に化ける的な話や、注文入力したあと顧客の与信残額を売り減らすというロジックも、同様に難しい気がします。DBのトリガーみたいな機能が標準であればすげー便利になりそうですが、現状はJavaScriptで頑張ることになります。

アプリ間連携をカッコよく言えば、独立したMicroServiceがHTTPSでやり取りするようなものです。なので、APIで頑張っていきましょう。

どのツールでも無理っぽいと思うのが、締め支払いの請求です。こいつは、前月残や当月入金が絡むので、ロジックを組まないといけない。

無理やりkintoneで表現すれば、請求アプリ、入金アプリ、売上アプリ、得意先アプリの4つがあるとすると、請求アプリのデータ登録時に入金と売上を引いてきて、JavaScriptで得意先別にGroupByして集計して、ループ回してごにょにょして、請求と請求明細のテーブルを表現するJSON作って、bulkInsertする格好になると思われます。もう無理そうでしょ(笑)

これでもまだ不完全で、締めたら売上アプリの伝票は編集と削除が出来ないようにしないといけないし、請求書もPDFで一括発行できないと回らない。こういうのはkintoneでやりきるのは難しいので、素直にクラウド会計ソフトにデータを流し込めと強く申し上げます。

ちょっと濃ゆい例を出しましたが、みなさんが当たり前にやっている業務をサポートするのは、時にはすごく難しいことを裏でやっていることもあるぜという話です。

最後のまとめ

- エンドユーザーが使うことを念頭に置けば、サーバ構築不要で、UI構築でアプリが作れて、コスパもよく、上級者が手を入れる余地もあり、マーケットシェアも高いkintoneが最も無難な選択肢
- プロユースのツールは価格帯が高く、プログラミング言語やWebアプリケーションに対する一定の理解・スキルがマストです
- オンプレでkintoneやりたいなら、Plesantar / Exmentのどっちか
- どのツールを使っても制約が存在しますので、業務で操作するデータ構造を理解して、ちゃんと設計しましょう。
- kintoneで困ったら相談してちょ。


この記事が気に入ったらサポートをしてみませんか?