「Webを支える技術」。Webアーキテクチャを知り、Webサービスを設計するための一冊
日本にREST(Representational State Transfer)と呼ばれるWebのアーキテクチャスタイルを広めた山本陽平氏から、「本を出版するので送りたい」という連絡をいただいたのが約1カ月前。送られてきたのがこの本「Webを支える技術」でした。
山本氏のブログを拝見すると、約1年ほどはこの本の執筆に取り組んでいたご様子。中味を読んでみればそれも納得です。
本書はWebを支える3つの技術、HTTP、URI、HTMLを中心にWebのアーキテクチャを詳しく解説することから始まり、Webのアーキテクチャに沿ってWebアプリケーションや(広義の)Webサービスをどう適切に設計していくべきなのか、という、Webアプリケーションを開発するときに必ず考慮しなければならない課題を解決する道筋を教えてくれます。
Webアプリケーションをどう設計するべきか、大事なことなのに、これまでこれほど十分に解説した書籍はなかったと思います。WebアプリケーションやWebサイトの構築を行う方にぜひおすすめしたい一冊です。
仕様の解説だけでなく、どう実践すべきかまで説明されている
本書の魅力は3つあります。1つ目は書名が表しているとおり、HTTP、URI、HTML、そしてRESTという、Webのアーキテクチャの核となる部分を1冊で丁寧に紹介していることです。
Webサイトを構築した経験がある方なら、「何がWebサイトとして(あるいはWebアプリケーションとして)適切な設計なのだろうか?」と悩んだことが必ずあるはずです。ブログのような単純なコンテンツサイトであっても、各コンテンツを表すURIに悩むでしょう。ましてやWebアプリケーションとして機能するような動的なWebサイトであれば、どんな機能をどのようなメソッドを使って実装すべきなのか、それぞれのURIはどうなるべきなのか、など考慮する点は数多くあります。
Webにふさわしい設計を実現するには、Webの技術に対する正しい理解が不可欠です。本書の導入部分である第1章、第2章、第3章ではWebの歴史とアーキテクチャの基本となっているRESTを概説。続く章ではURIの仕様の解説、そしてURIの実際の設計方法、HTTPのプロトコル詳細とgetやpostなどのメソッドの解説、ステータスコードの意味、HTML、Atom、JSONなどのデータフォーマットについて一通りの解説が行われます。
これによって読者は、Webアーキテクチャがどういうものであり、それにふさわしい設計のための知識を身につけることができるはずです。
2つ目の魅力は、本書が単なる仕様の解説だけでなく、その技術の裏にどのような歴史的経緯があり、技術的にどのような意味をもっているか、そして現実にその技術を用いたときにどう設計し実装すべきかという、実践的な面を重視して解説している点です。
第15章では「読み取り専用Webサービスの設計」と題して、リソース設計、URIで名前を付ける方法などを解説。第16章の「書き込み可能なWebサービスの設計」では、トランザクションと排他制御の考え方についても踏み込んで解説しています。単に仕様を解説するだけでは終わらず、それをどう設計に活かしていくか、そして何が現実的な解なのかまで解説してくれる点は、本書の最大の魅力といっていいでしょう。
そして3つ目。ITの技術の移り変わりは激しく、そのために多くの技術解説書は数年後には内容が古くなってしまう可能性をはらんでいますが、本書の核となっているHTTP、URI、HTMLはすでにWebの核として十分に枯れ、安定し、その上のレイヤで多くの拡張が行われています。Webのアーキテクチャは十分に安定して動作しているため、数年で大きく変わるとは思えません。
著者の山本陽平氏も、「はじめに」で次のように書いています。
システムとしてのWebの構造や設計思想、いわゆるアーキテクチャは初期からほとんど変わっていません。最初のWebブラウザと現在のWebブラウザでは実現している機能に雲泥の差がありますが、使っているプロトコルは依然としてHTTPですし、表示しているのは昔も今もHTMLです。
Webが誕生してから20年、常に新しい技術が生まれてきました。しかしその基本となるアーキテクチャは同じです。これはアーキテクチャの完成度がとても高いことを示しています。
おそらく3年後、5年後でも本書の内容はほとんどそのまま通用するでしょう。読者は本書でそういう「ずっと変わらない」部分の知識をしっかりと身につけることができるのではないでしょうか。
本書はWeb関連の開発をしているすべての方に、リファレンスとしても解説書としてもおすすめしたい一冊です。
本書のテーマはWebサービスの実践的な設計です。まずHTTPやURI、HTMLなどの仕様を歴史や設計思想を織り交ぜて解説します。そしてWebサービスにおける設計課題、たとえば望ましいURI、HTTPメソッドの使い分け、クライアントとサーバの役割分担、設計プロセスなどについて、現時点のベストプラクティスを紹介します。
あわせて読みたい
VMwareとSalesforceが「VMforce」を発表へ
≪前の記事
開発中のMySQL 5.5、デフォルトエンジンはInnoDB、200%の性能向上。「MySQL Conference & Expo」基調講演で紹介