シンガポールでアジアのエンジニアと一緒にソフトウエア開発をして日々感じること、アジャイル開発、.NET、SaaS、 Cloud computing について書きます。

SaaS開発ほど面白いものはない - カスタマイズ

»

 「SaaS」の定義の1つに、「カスタマイズが可能でなければいけない」というものがある。カスタマイズにもいろいろなレベルがあるが、SaaSと呼ばれるシステムである限り、下に書くすべてのレベルのカスタマイズが容易に実現可能なものでなければならない。

 ここで思い出して欲しいのだが、SaaSはマルチテナント、つまり1台のサーバで複数顧客のサービス実施が可能である必要がある。つまり、顧客ごとに異なる複数のカスタマイズを、1台のサーバで同時提供できなければならない。たぶん、SaaSを開発する開発者にとって、この辺りがもっとも難易度が高い部分になるだろう。逆に言えば、ここが開発者の一番の腕の見せどころであり、優秀な開発者がSaaSを開発したいと思う理由の1つだろう。ということで、ここでSaaSと呼ばれるべきシステムが可能でなければならないカスタマイズを、レベルを分けて説明する。

(1) エンドユーザーによるUI上の設定で、システムの振る舞いを変えることができる

 Yahoo Japanには、最近「通常版」と「ビジネス版」という風に、画面の雰囲気を変えられる機能がついているが、これなどは簡単な例だろう。顧客企業単位というよりは、エンドユーザー単位でカスタマイズが可能となることが普通。

(2) 顧客の管理ユーザーのみが可能なUIで設定するカスタマイズ

 例えば給与計算のシステムの場合、顧客企業ごとに時間外手当の割増率を設定することになるだろう。なぜならば、日本の法令では、時間外手当ての割増率の最低率は決まっているが、その最低率以上である限り、その率は各企業により決めることができるからだ。このようなパラメータは普通、システムの導入時に管理顧客もしくはSaaS提供ベンダの導入コンサルタントが設定する。

(3) UIで設定する機能はないが、顧客企業単位にパラメータの設定が可能

 通常導入時、SaaS提供ベンダのコンサルタントが顧客の要件を聞きながら設定していく。顧客企業単位にあるDBやXMLの構成定義ファイルなどに実際の設定がある。業務ソフトのパッケージは、大体このレベルのカスタマイズの中心にすえている。ここまでのカスタマイズは無償で行うべきものだが、ここから先は有償で行うのが普通だろう。

(4) 簡単なスクリプトで機能を実装できるようにする

 SaaSの雄であるsalesforce.comは、この範疇の機能として、Apex CodeやVisualforceなどを準備している。SaaSではないが、SAPのABAPなどもこの範疇に入るのだろうし、ある意味マイクロソフトのオフィスアプリケーションのマクロ機能なども入るものかもしれない。

 SaaSベンダでここまでの機能を実現できるところは、そう多くないだろう。ベンチャー企業が作るSaaSシステムに、初めからここまでの機能をつけよというのは、少し期待し過ぎかもしれない。幸い、SaaSの開発は、Version1を作り、ある程度の数の顧客がつき、継続して開発可能になるだけの収入を得られれば、エンハンスは延々と続けるのが普通で、 Version2、Version3で開発していけば良いと思う。

 普通の顧客は、作業をSaaSに置き換えることを検討する時、今までやっていたやり方をなるべく変えたくないと思うのが普通で、そのためにいろいろと無理難題を押し付けてくるだろう。この時、その要求仕様の実装を、(5)で説明する完全カスタマイズでの実装の部分と、(2)(3)のパラメータ追加による実装、スクリプトによる実装をバランスよく混ぜて実装していくことがエンハンスとなる。

 これをうまくやっていければ、世の中すべての顧客が持つ、ありとあらゆる要求を、最後の手段である(5)をなるべく使わずに達成し、ものすごくフレキシブルなシステムが最終的にできあがることになる。

(5) 完全カスタマイズ。システムを作ったときと同じ言語でカスタマイズを実装する

 マルティテナントの環境においては、異なる企業の異なるカスタマイズが生きるように作らなければならない。方法はいろいろあるだろうが、わたしのやり方として、まず企業によって異なる振る舞いになりそうなところを切り出し、その部分とその他の部分間のインターフェイスを明確にする。その部分は、ここで決めたインターフェイスを実装するコンポーネントとして作る。そして、そのコンポーネントをデフォルトの実装、顧客Aのカスタマイズの実装、顧客Bのカスタマイズと言うように複数作る。後はその部分を使うとき、企業ごとに異なるコンポーネントを使うようにするだけである。ここでは簡単に書いたが、本当はもう少し複雑になる。しかし、考え方はうこういうことである。

 5段階のカスタマイズを、マルチテナントのサポートと同時に可能としなければならない。「性能的に問題がない」「顧客のカスタマイズを入れることにより、別に顧客に影響があってはならない」などは当たり前なことである。さらに、そのカスタマイズできる範囲に制限があってもいけない。かなりというか、非常に難しい注文になる。だからこそ、SaaSは優秀な技術者にとってやりがいのあるシステムなのだと思う。

Comment(0)

コメント

コメントを投稿する