データのオープン化
Cloud! Cloud! Cloud!
思いっきり「クラウド」って言葉がバズってる昨今、皆様いかがお過ごしでしょうか。
とりあえず、大きなくくりでクラウドって言ってしまうと色々と胡散臭いですが、そのクラウドの背景にある潮流は確固たるものだと思います。いろんな視点から、いろんな「クラウド」があるかと思いますが、例えば:
- インフラ
- 仮想化・自動プロビジョニングによる管理手間の低減
- クラウド プラットフォーム
- SaaS
- 出来合いのサービスの提供を受けることでそもそも開発自体しない
- マルチテナントにサービス提供することで、規模効果によるコスト削減
などがその潮流にあたるかと思います。
そんなこのご時世に、僕が今ここで言いたいことは「データをオープン化しようよ」ということです。
データをオープンにして欲しい
要はね、システムのデータベース情報、プログラム的にとれる口を開けといてくれと。
もう、B2C、B2B 問わず、ありとあらゆるシステムはデータ用の API 用意しろと。
「オープンな技術を使っているのでベンダーロックされませんキリッ」とかいう前に、お前のとこのシステムをオープンな作りにしろよ!と。ベンダーロックと以上に、SIer ロックもされたくないです。
身代金
最近、SI 屋さん相手にこのようなやり取りいたしました:
- 自分「このシステム、帳票出力周りは WinForms でできてるみたいですけど、サーバーとのデータのやり取りどうしてます?何か API 的なところは標準的なプロトコルでやってます?」
- SI 屋「いやー、『作りこみ』でやってまして、標準的な何かというのではないんですよ」
- 自分「じゃあ、何か API の提供お願いします。流行りの OData 的なもので」
というのも、追加の要件ができたときに、SI 屋さんに追加発注するまでもないような小さない改修とかあるじゃないですか。そんなもん、自社で作るよ、と。
あと、保守契約でもめたときに、いつでも解約の通告出せるようにしておきたいという意図もあったりします。最悪、喧嘩別れすること想定した場合に「あなたのところクビにしたいのでデータベースの移管お願いします」とかお願いするのも切なく、なら最初からデータを自由にとれる状態にして置きたい、と。
いずれにせよ、プログラム的にデータ取れるようにしとけと。
(もちろん、データベースのアクセス権限もらって直接データベース触るとかもありなのかもしれないけど、ビジネス ロジック層通らないのはちょっと・・・)
(あと、API 公開してもらわなくても、ウェブの画面を HTML スクレイピングして情報とったりもできるけど、それをやらされる方の身にもなって・・・)
それがないのって、ある意味、SI 屋さんにデータを人質にとられてるようなものなんじゃないかとか思うわけです。
保守費用の中に、幾分か身代金が含まれている状態。
サービス指向
クラウド的な潮流の1つに、サービス指向ってのもありますよね。(正確には、クラウド以前からあるというか、クラウドのきっかけとなった潮流という感じですが。)
小さな機能単位でサブシステムを区切って、それぞれがプログラム的にやり取りしながらシステム全体をなす、という(機能単位 = サービス。サービス連携でシステム構築)。それに、1つで完結したシステムであっても、対人間向けの UI だけじゃなくて、対プログラム向けの API を公開(サービス提供)。
システム内の一部分だけを置き換えるとか、他のシステムと連携して新しい事業起こすとかできるように。
これ、「人質解放」の意味もあると思うんですよねぇ。
ちょっとした UI であればいつでも自前で用意できる。
SI 屋ともし喧嘩別れすることになったとしても、引き継ぎ先を見つけるまでの間くらいは自前で保守できる。
データ サービス
さらに突き詰めていくと、そもそもデータだけ提供してもらえれば十分なところも多くない?とかも思ったり。
BI 的な処理なんて、システム内でやっていただかなくても、トランザクション データだけオープンにしておいてもらえれば Excel PowerPivot ででも読み込んで自前で解析するから!とか。
システム納品してお金もらうとかじゃなくて、データだけの切り売りとかもありですよねぇ。
MS が Azure の一環としてやってる Dallas なんかがまさにそれですけども。
物理的な商品でも、システムやアプリケーションでもなくて、データのマーケットプレース。