6月11日に『ハイパーメディアシステム』という本が発売される。私はその日本語版の翻訳を担当した。この記事では宣伝よりも、なぜ自分がこの本を訳したのか、その動機と経緯を書き留めておきたい。
私はフロントエンドエンジニア。小学生時代にホームページビルダーで自分のホームページを持ったことを発端に、ずっと趣味でウェブサイトを作ってきたし、ウェブサイト制作をなりわいにしてきた。私はウェブの世界観が好きだ。リソースは、URLという住所を持ち常に「そこ」にある。リクエストがあれば相手が誰であっても情報を返却する。HTMLも好きだ。プレーンテキストをマークアップし構造化するだけのシンプルな言語で、標準化されている。世界中のとてつもない数のウェブページが全てHTMLで書かれていることに思いを馳せると、えもいわれぬ感情に包まれる。
とりわけ、リンクが大好きだ。リンクは、リソース同士の関係を示すたった1文字のタグ<a>
で表される。けっして「クリックするとページ遷移する要素」ではない。あくまでも「リソース同士の関係を表す要素」だ。これはめちゃくちゃ大事なことだ。リンクは静的で宣言的であり、それが網の目のように張り巡らされ、巨大なリソースグラフが形成されている。だからこそウェブは「クモの巣」なのだ。
リンクと同じくらい長く私を惹きつけてきた概念にRESTがある。RESTは数あるウェブ関連の技術の中で最も誤解されている部類に入る概念だ。かくいう私も、長い間、RESTをJSON APIのことだと誤解していた。リソースごとにURL切り分けて、HTTPメソッドをセマンティクス通りに使ってCRUDをマッピングすることがRESTだと思っていた。リソースはできるだけユースケースを限定せず、ピュアであればあるほど良いものだと思い込んでいた。何かのきっかけで、PHPerKaigi 2019で行われた郡山昭仁さんによる「RESTの力」を視聴した。めちゃくちゃ引き込まれ、関連する「”全ての力”トリロジー」も全て視聴した。たちまち私は郡山さんの大ファンになった。
この三部作を視聴したことが私のRESTへの誤解を解く一つのきっかけになった。あとから気づくことになるが、この時点で解けていたのは、RESTへの誤解の一部分だけだった。転機は2023年ごろ、htmxのサイトに掲載されていたエッセイ「How Did REST Come To Mean The Opposite of REST?」と「Hypermedia Clients」を読んだ時だった。衝撃だった。RESTはJSON APIのことではなかった。全然違ったのだ。RESTの論文が書かれたのは2000年、すなわちAjax以前のウェブを対象に書かれた論文だった。RESTの本質とは、めちゃくちゃHTMLのことだったのだ。JSONではRESTたり得ず(少なくともかなり難しく)、かたやHTMLはネイティブのハイパーメディアであり、今まで自分が作ってきたものは、そのままRESTとして成立していたのだった。
これは大変面白いぞと思った私は、他のエッセイも読み漁った。次第に、私はこの筆者と大変バイブスが合いそうなことがわかってきた。例えば、「The #ViewSource Affordance」ではウェブページのソースコードが明け透けになっていることがいかに創造性を育むかを語り、「Locality of Behaviour (LoB)」では、あるコードの振る舞いはそのコードだけを見ればできるだけ明らかであるべきという原則を説いていた。『The Grug Brain Developer(日本語訳:原人頭の開発者)』では、高度で抽象的なプログラムよりも、優れた頭脳でなくても読み解ける愚直で単純なコードを好み、機能の搭載に「NO」と言えることの重要性を説いていた。これらの主張はハイパーメディアとは関係のないものだし、必ずしもマジョリティの支持を受けるとは限らない内容だけれども、少なくとも私はかなり共感を覚えた。
それらを追ううち、htmxの作者らが手がけた書籍である『Hypermedia Systems』にも自然と行き着いた。2024年の初頭くらいの頃だ。オンラインで全文が公開されている本書を翻訳ツールやAIを片手に読んでいった(ありがとう生成AI)。本書には私がhtmxのエッセイを読んで「いいな」と思っていたエッセンスが書籍全体に散りばめられ、より良く書かれていた。ハイパーメディアやRESTの原理が必要十分に書かれていた。ウェブに携わるエンジニアなら誰にでもお薦めできる本だと強く思った。
同じ頃、Qiitaでhtmxを紹介する記事が軽くバズっていた。表面をなぞるだけの記事に物足りなさを覚えた私は、「htmxとは何なのか? その背景にある思想について」という記事を書き、『Hypermedia Systems』の推薦リンクも付けた。幸運にも記事はそれなりに多く人に読まれる結果となった。
ここで唐突に、私のハイパーメディア駆動型アプリケーション(HDA)作りの遍歴を振り返ってみる。エッセイに共感するばかりではなく、実際に自分はhtmxのような「サーバーがHTMLを返す」アプローチに長く親しんできた。
思い出せる一番古いものは学生時代に作ったもので、$.load()
関数でコンテンツを遅延読み込みしていた。ウェブ制作会社に勤めていた頃もいくつかの案件で実践していた。例えば、あるオウンドメディアの開発案件では、記事をスクロールしていくと自動的に次の記事を継ぎ足して表示するインタラクションを実装した。ある画像生成サービスでは、ステップに分かれた操作の画面遷移をスムーズにするために、各ステップを動的に読み込み表示していた。サーバーサイドを自分の思い通りにできない環境だったことも手伝って、「サーバーからHTMLを返す」「Ajaxで静的なHTMLを取得する」はごく自然な発想として取り入れていた。
前職では、学生時代からの盟友と一緒にHTML中心の開発スタイルを推し進め、いくつかのプロダクトのリプレイスにおいてハイパーメディア駆動型アプリケーションの思想を組み込んだ。37signals(発表当時はBasecamp)のTurboの発表を心待ちにしていたし、発表されたTurboの洗練されたコンセプトには大変に感銘を受けた。
ずっと同じものに魅了され続けていたのだなあ、と振り返りながら思う。「リソースが常にそこにあり、リクエストすれば返ってくる」または「表現の交換によって状態を変化していく」。こうしたシンプルな世界観--つまりRESTのことがずっと好きだったのだ。そういえば、ブラウザ拡張の「AutoPagerize」が好きだったのも、つまりはそういうことなんだろうなあ…。
2024年の春、都内のとあるイベントで久保田さんと名乗る方から急に声をかけられた。その方は技術評論社の編集者で、『Webアプリケーションアクセシビリティ』の担当をされた方だった。私はその本のレビュワーとして参加していたので、たまたま私が居合わせたことに気づき、レビューのお礼をしてくださったのだった。話の流れで『Hypermedia Systems』の話をした。日本語訳が出たらぜひ読みたいナ〜みたいなことを言った。その後2か月くらいして、htmxのDiscordを見ていると、htmx作者が「日本の技術評論社は信頼できる出版社か?」ということを尋ねていた。すかさず「それはもう!多くの技術者に信頼されてるまっとうな出版社だ」と答えた。この時はまだ、自分が翻訳を担当するとは思っていなかったが、急転直下その日の晩に、久保田さんから私にメールがあり、私が翻訳を手がける運びとなった。あとから聞いた話、『Hypermedia Systems』の企画は出版社内でもずいぶん面白がられたのだそうだ。たぶん変わった出版社なのだと思う(褒め言葉)。
ところで技術評論社の久保田さんとは、かの『オブジェクト指向UIデザイン』の編集も担当された方であり、上野学さんの『Modeless and Modal』の伏線を10年越しに回収した方として有名(?)である。
ともあれ、長くなったが、言いたいことをまとめると、ひとりのしがないウェブ開発者である私が、ウェブとRESTに長いあいだ惹かれ続けてきて、人とタイミングの巡り合わせがあり、幸運にも『ハイパーメディアシステム』の翻訳を手がけることができ、出版にこぎつけることができた、というお話でした。翻訳しかしていないので、これで有名になりたいなんてこれっぽっちも考えていないが、一人でも多くの人がハイパーメディア駆動型アプリケーションの考え方に触れてくれたらいいな。そしてRESTやHTMLを愛してくれるといいなと思っている。
この記事は2025年5月25日にそめによって書かれ、2025年5月26日に更新されました。