PRESS』編集部が自信を持ってお届けするシリーズです。「シンプルさは究極の洗練である。Vinci(レオナルド・ダ・ヴィンチ)のこの言葉を知ったとき,筆者は真っ先にWebのことを思い浮かべました。Webの特徴を一言で言い表すならば,シンプルさに尽きると常々考えていたからです。筆者がWebを初めて知ったのは1994年の年末です。当時創刊したばかりの『インターネットマガジン』や日本語版の『WIRED』といった雑誌で,新技術としてWebが紹介されていたことがきっかけでした。年明けすぐに大学の情報処理センターに行き,ブラウザ(Mosaic)に触れました。世界中のサーバから簡単に情報が得られ,HTMLを記述すれば自分で情報を発信できることに興奮した筆者は,すぐにWebにのめり込み,今ではWebの本を書くまでになりました。システムとしてのWebの構造や設計思想,いわゆるアーキテクチャは初期からほとんど変わっていません。最初のWebブラウザと現在のWebブラウザでは実現している機能に雲泥の差がありますが,使っているプロトコルは依然としてHTTPですし,表示しているのは昔も今もHTMLです。Webが誕生してから20年,常に新しい技術が生まれてきました。その基本となるアーキテクチャは同じです。これはアーキテクチャの完成度がとても高いことを示しています。Webのアーキテクチャの完成度が高いことは,多種多様なWebサービスのデータを自由に簡単に扱えることからもわかります。Webサービスでは,Amazonにある書影をブログで引用したり,ブックマークサービスが提供するブックマーク数をWebページに表示したり,地図をWebページに埋め込んだりといったことが簡単に実現できます。APIを使えば,それらのデータを加工することも簡単です。一方で,簡単に接続できなかったり,データを活用するのに特殊なノウハウが必要だったりするWebサービスも存在します。簡単に接続できるWebサービスと,接続するのが難しいWebサービスとの違いはどこにあるのでしょうか。その答えは「Webらしい設計」にある,と筆者は考えています。サービスをWebらしく作ると,ほかのシステムと簡単に連携でき,将来の拡張も楽になるのです。良い設計のWebサービスは,Web全体のアーキテクチャと調和しています。Webらしい良い設計をするためには,Webのアーキテクチャを理解して意識することが大切です。本書は,WebサービスをいかにWebらしく設計するかをテーマとしています。クライアントとサーバはどのように役割分担するのか,望ましいURIとはどのようなものか,HTTPメソッドはどのように使い分けるのか。Webサービスにおけるこれらの設計課題について,現時点でのベストプラクティスを紹介します。このテーマを実現するために,本書は次の2つの目的を持って執筆しました。1つめの目的は,HTTPとURI,そして各種ハイパーメディアフォーマットの仕様を解説することです。仕様を知ることは良いWebサービスの設計への第一歩です。仕様を知るだけでは良い設計はできません。Webらしさは,それらの仕様が持つアーキテクチャ的裏付けに基づいているからです。本書ではHTTPやURIがなぜこのような仕様になっているのかについても,Webのアーキテクチャの観点から解説しました。2つめの目的は,Webサービスの具体的な設計方法を示すことです。設計とはシステム全体のバランスをとる作業です。システム全体についての深い知識が必要ですので,設計のスキルは一朝一夕に身につくものではありません。そこで,本書ではまずは良い設計とは何かについて意識してもらいたいと考え,具体的なWebサービスを題材に設計のプロセスや考え方を解説しました。本書の対象読者は,規模の大小にかかわらずWeb技術を使ったシステムを開発した経験のある人です。本書にはプログラミング言語のコードはほとんど登場しません。アーキテクチャは実装よりも1段階抽象度が高い概念だからです。その代わりに登場するのが,具体的なHTTPのやりとりです。HTTPのライブラリは,ほとんどすべてのプログラミング言語で用意されています。読者のみなさんが得意な言語でどのように実装するかを想像しながら読んでいただけると,よりわかりやすくなると思います。PRESS』に2006年4月(Vol.32)に掲載した「RESTアーキテクチャスタイル入門」と,2007年4月(Vol.38)から2009年2月(Vol.49)まで連載した「RESTレシピ」をベースに,大幅に加筆と修正を行って執筆しました。執筆は連載終了後の2009年初頭に開始し,約1年間をかけました。本書を執筆するにあたっては多くの方にお世話になりました。レビューをお願いした高橋征義さん,和田卓人さん,福田朋紀さん,日野原寛さん,中川勝樹さんからは的確で精緻なご指摘をいただきました。ありがとうございます。私のWebサービスの設計経験は,株式会社リコーでの仕事を通じて得たものばかりです。これらの経験を与えてくれた同僚のみなさんに深く感謝します。PRESS』での連載時から,何かと締め切りを破る筆者を時には厳しく,時には優しくサポートしていただきました。担当編集者が稲尾さんでなければ本書は書きあげられなかったと思います。本当にありがとうございました。最後に,妻と娘には執筆期間中たくさん協力をしてもらいました。(やまもとようへい)1975年生まれ。株式会社リコーグループ技術開発本部にてWebに関連した研究開発に従事。個人のブログではWebやXMLに関連する記事を書いている。好きなプログラミング言語はJavaとRuby。OK,ヘッダはContent-Type。べてのエンジニアのための,プログラミング技術情報誌です。ロクナナワークショップ」。本連載では,最新講座情報,セミナーイベントの開催情報やレポートを中心にお伝えてしていきます。ゆるく,不定期に更新予定です。本特集では,2018年10月にリリースされたばかりのバージョン11と,現場の主力として使えるバージョン10にフォーカスし,この7年間で大きく進化したPostgreSQLの魅力を余すことなくお伝えします。......押さえておきたい輻輳制御アルゴリズム本連載ではTCP/IPの中でも特に,新たなアルゴリズム登場の背景として,ネットワーク環境の変化や,TCP輻輳制御アルゴリズムの変遷と概要をみていきます。Linuxの統合認証にも新たな変化がありました。この連載ではAD-Linux統合認証の最新状況を紹介します。TopicsUbuntuコミュニティに興味があるユーザ向けに,ML・Wiki・フォーラムなどの最新の話題を1週間分厳選してお届けします。きたみりゅうじの聞かせて珍プレーソフトウェア開発の現場で体験したトホホな失敗,思わずうなる珍プレーをきたみりゅうじ氏が四コママンガで紹介。Topics(ほぼ)日刊Linuxトピックニュース。カーネル、ディストリビューションの最新情報を中心に、Linuxのさまざまな話題をお届けします。