GoTheDistance

ござ先輩と言われています。(株) クオリティスタートという会社をやっています。

Salesforceってやっぱりよく出来ていると思う件

SaaS肯定派であり半分SFDC*1の回し者状態のgothedistanceです、こんばんは。今回良くできていると感じるのは、システム構造の観点です。

一般的にWebアプリってのは、こういう3階層になっている。

1. 画面
2. 中間層(Web層+BL)
3. DBアクセス

ま、言語は違えどこの構造に大きな変化はない。で、例えばJavaに当てはめるとこうなる。

1. JSP
2. Servlet
3. JDBC,O/Rマッパー

Java開発者は皆さんご存知のことですが、Javaという同一言語の中で各々のレイヤーで全く違う方式を採用しているので、統合するのがめんどくてしょうがないわけです。全部別ってことは、やり方が全部別ってこと。つまり、求められるスキルも手順も全部個別ってこと。生産性の低さはここに起因しています。

そして困ったことに、システムとして動くためにはこの「めんどい部分」をキチンと動かすことが必須なわけで。
ユーザーにとってしたら、システムを使って実現したいことを実現するために、こういっためんどい部分に振り回されるわけです。もちろん、我々SIerもこの領域では四苦八苦しております。開発の現場でも色々苦労しているはずで。

で、やっぱりこういったシステム的な機能ってのは「みんなが好き勝手な方法でやったらシネル。死にたくないからうまいことやって、コアな部分は隠蔽してインターフェイスは共通化して、YOUたちもっと楽にやろうYO」と思う方々がたくさんおられるわけで。StrutsとかHibernateとかLog4jとかBeanUtilとかSpringとかS2とかあれやこれや・・・・。特にS2のひがさんは、「こんなんで苦労するのは馬鹿馬鹿しい。楽が出来るなら楽をして、本来やらねばならないことをやるべきである。」という明確なポリシーの元、S2を展開しているわけで。

Seasar2で目指しているのは、基礎のできない人でも使えるということではなく、機械的にできるような非本質的な作業はできる限り自動化し、開発者が本来やらなければいけないことに集中できるようにすることです。

で、この「本来やらねばいけないこと」とは「ビジネスロジックの実装」だと思っています。昨今のシステム構造は、「ビジネスロジックとそれ以外」という大枠のくくりを行うことが可能であり、全ての実装に役立つフレームワークは「それ以外」の部分の品質向上と、その結果としてビジネスロジックへの注力を可能にするものであると思っています。

で、この上記2点を鑑みたときに、恐らくSaaSモデルというのは現時点最強のフレームワークなのですよ。

まず、システムそのものが最初からバンドルされていること。システムとして動かすために必要な環境設定とか管理機能があらかじめ盛り込まれている。結構な下駄になると思う。第2に、ビジネスロジック・ルールに基づいた会社個別のカスタマイズが可能であること。この2つを数万社単位で行えるんだから、かなりすごいと思う。ライブラリ単位の部品化ではなく、抽象的な表現だけどサービス単位で部品化をやっている。これは評価すべきことだと思う。

ただ、他システム連携やテストをどう行うのか*2という問題は残っているものの、テストするスコープも項目もすごく限られてくるし、多分そんなに問題にならないんだろう。なにせ、環境はすべて「あちら側」で保証されているのだから。

多分、Salesforceというのはマーク・ベニオフ*3からの挑戦状なんだ。SIビジネスに対する、ね。

*1:Salesforce.comの略称

*2:カスタマイズしたものを動作保証すると言う概念が無いのかも。ユーザーが自分でやるって前提だし

*3:SFDCのCEOで元はOracleの人。昔から天才肌だったらしい。

SQLを学習できるWebサービスを作りました。