読者です 読者をやめる 読者になる 読者になる

yojikのlog

yojikのブログです

JavaによるRESTfulシステム構築

最近、自分が翻訳作業に携わらせてもらったプログラミングScalaという本が出版されました。しかし、自分達の本の宣伝をする前に今まで献本頂いた本の書評をブログに載せるのが筋だろう! というわけでこの本の書評を書きます。

JavaによるRESTfulシステム構築

JavaによるRESTfulシステム構築

本書は、監訳者のartonさんの説明を見れば分かるとおり、エンタープライジーな分散システムを構築するためのREST(というよりもJaxRS仕様/実装)という観点で書かれた本です。

JaxRSは、URLとリソース(を表現するクラスやJavaメソッド)、HTTPメソッドとJavaメソッドをアノテーションによりマッピングする機能を中心としたフレームワークです。モダンなフレームワークなので無駄な設定ファイル記述やコード記述は省かれています。Javaで作っても、他のスクリプト言語のWebフレームワークとそんなに変わらない生産性が得られると思います。*1

本書はエンタープライズなシステム構築を念頭にしているので、twitterのWebAPIみたいな外向けWebの話は出てきません。エンタープライズなシステム間連携というものは中途半端にレガシーだったり、特定の製品にロックインされていたりすることが多いと思います。そういう世界でオープンなWebの世界で利用されている技術を導入すれば、ずっとシンプルで扱いやすいシステムが構築できるはずです。少し違う分野から取り入れることによって有利なポジションを得るということで、タイムマシン経営ならぬタイムマシン設計ですね。

個人的な体験では、2000年代中盤あたり、EJBなどを避けてシステム間連携機能をHTTPベース(RESTベースとはいえない)で作ってメリットを得ていた経験があります。余計な製品やFWに頼らず分散システムを作り上げることによって、色々な面倒をさけ、浮いた時間でWebをだらだら見たりできるわけです。しかしJaxRSが普及すればそこらへんのノウハウは一気に陳腐化し、誰でも使いこなせるものになるでしょう。

また、本書では、アプリケーション状態遷移をリンクで表現するHATEOASについて詳しく説明されている点が良いと思いました。RESTというのは結局スタイルです。いわゆる POX over HTTP みたいな、単に「データのやりとりをHTTPでやります」というものに対して圧倒的に素晴らしいという説明をするのは難しいわけです。エンタープライズものだとイマイチ現世利益に欠けるというか。

しかしHATEOASはクライアント-サーバ間のプロトコル(状態遷移)を、URLとそこから遷移可能なリンクによって動的表現できるという明確なメリットがあります。エンタープライズシステムなら当然起こりえるシステムの段階的な拡張が非常にやりやすくなるはず。。。です。

以上、特にSIerな人たちにオススメな本書でした。

*1:昔のJavaEE標準フレームワークのイメージでいると怪我するぜ!!