都会的な暮らし サービス指向設計

こんにちは

日々の暮らしがたくさんのサービスから成り立っているようにシステムも小さなサービスによってなりたっている。都会が田舎と違って便利なのは、物質的な何かがあるというより、たくさんのサービスがあるからだ。それらをすべて自前でやるのは効率的ではない。

プログラマがありとあらゆるロジックを自前で組まなければならないことで雑多なつまらない部分の作成に注力せずコアアプリの作成に集中できる。プログラミングにおける雑務とは、ログダンプやイベントログ作成やエラーハンドリングやタイマーやカウントなどといったもの。サービスを利用することで、それらをくむ必要がなく、組み合わせることでリッチなシステムを構築できるのだ。私がそれを実感したのは、初めて本格的なjavascripのプログラムをやったときすべて自前でやろうとして行き詰まり、prototype.jsを利用したときだった。

サービスはサポートするものであって型にはめるものではない

サービスは、プログラムやプログラミングという作業を強制的にフレームワークに嵌め込むことではなく、あくまでサービスを提供してサポートするためにある。だから当然自前で組むこともカスタマイズすることもできるようにしてある。サービスは自由に選ぶことができ、サービスはシンプルで使いやすいものでなくてはならない。

サービスと共有ルーチンとの違い

サービスは、共有ライブラリや共有ルーチンとなにが違うのか。共有ライブラリはアプリ内で共有するもの。処理を共通化したものにすぎない。サービスは処理よりも小さい。他のアプリでも使えるようになっている。

サービスと共有ルーチンと違うのはそのものが単体で動くと言うこと。少し高度なものは付属品が必要だがコピーするだけでカスタマイズは不要。独立性が高いため既存の処理に影響はほとんど与えず、必要がなく組み込むだけですぐ使うことができる。サービスを利用するにあたり、長いマニュアルを読んだりする必要はなく、メソッドやプロパティを知るだけで十分である。ソースを読んで理解することもできる。プログラマはオブジェクトを自由に設計しバージョンアップしていくことができる。システムはそれらのスモールサービスの組み合わせてすんでしまうことがわかる。

オフジェクト設計のいいところ

  1. 他でアップデートしたら適用可能
  2. 人が作ったやつも利用できる
  3. 細やかなサービスが作れる
  4. オブジェクトによる引数渡しにより柔軟で多彩な引数渡しができる
  5. 昔に作ったアプリもバージョンアップや改善が簡単
  6. ライブラリー化して使い回すことで高度で洗練された設計でかつ迅速にアプリを開発できる。
  7. アプリの組み方の勉強になる
  8. 手続き型のバッチプログラム組んでてもプログラマは成長しない
  9. ソースファイルなので必要あらばカスタマイズも可能
  10. バグが減る
  11. ソースがシンプルになる
  12. サービスを設計することで言われたまま組むことが減り、サービス設計からより自発的に高度な+サービスを構築するようになる。モチベーションが高まる

おわりに

サービス化をしはじめるとありとあらゆるものをサービス化したくなってしまう。サービス化をするたびにヒントを得てさらによいサービスを作れるからだ。サービス化を進めていくと、サービス自体のバリエーションも増え、できることも増えていく。楽しい魅力にあふれている。

サービスは単体で動くためアプリと切り離して単体でテストすることができるためデバッグしやすくデバッグ作業の大幅な節約にもなる。サービス化は、作り上げたソースコードやライブラリ自体に意味があるのではなく、その設計思想やアイデアである。設計思想やアイデアは言語やプラットフォームに依存せず、プログラマのアイデアを豊かにしていくだろう。

ではまたね