Jean-Jacques Dubray氏(JJ)が最近のブログでTim Bray氏がSOAの終焉を予言してからほぼ7年経ったことに言及している。
私はインタビューを受け、ポッドキャストで話しました。 [...] 両方とも私にはある疑問が浮かびました。“SOAについてどうするべきだと思うか”。不気味なことにこの問いを私に投げかけた人はいませんでした。そして私は答えを見つけました。“何もするな。‘SOA’はかつては何らかの意味を持っていたが、今は只のベンダの戯言だ。”
TimTim Bray氏はSOAよりもウェブスタイルに未来がある、と宣言(予言)している。JJが説明するようにこの予言はその後、多く言及された。Anne-Thomas Manes氏などの言及だ。結論のひとつはSOAプロジェクトの多くは衰退し、中止になった。JJは自身の経験を語っている。
当時のマネージャが私にTim Brayの記事がIT部門で話題になっており、彼は自身のマネジメントでTimの宣言に対してどのように回答をしたらいいか解らないと言いました。そのとき、彼のチームは独自のESBを構築していました当時はまだXMLはほとんど知られていませんでした。絶えず上昇するトランザクション量(2007年初頭で1日10メガのリクエスト)がTim Brayの文章で危うくなったのです。
JJは数年に渡ってInfoQや他の媒体でWebが見落としている問題について少なくない時間を費やしている。最近では、ウェブスタイルを実装していると称する多くのサービスを見ている。
9000のAPI[Programmable Webのディレクトリにある]の内、私の見積もりではTim Brayのウェブスタイルに従っているのは1%に満たないです。ほとんどのAPIはウェブスタイルではなく"API"スタイル、つまり、RPCのようなスタイルです。
JJは自身が代表的なサンプルと考えるAPIをいくつか例示し、自身の考えを説明している。
- Ask Ziggy "アクション" (Play、NextSong、Previous Song、Shuffle...というような)を定義する機能を提供する
- WhatLanguage 同じURIにGET(リクエストの文字数が7500文字以下の場合)やPOSTをすることで与えられた文字列の言語を検出することができる
- Do.com ウェブスタイルのAPIを提供しているように見えるが、不十分。5種類のリソース(タスク、プロジェクト、ユーザ...)に対する単純なCRUD操作を提供する
- SkyBufferもウェブスタイルに従っているが、DO.comと同じようにエンティティに対するCRUDを提供する
- MaShapeは"Cloud APIハブ"であり、APIの開発者にそのAPIの利用者のためのより良い方法を提供する。ではどのように実現しているのか。"Mashape上でAPIを記述することでクライアントライブラリとドキュメントを自動生成する方法"を提供する。数年のバッシングの後、開発者の間でクライアントコードの自動生成についての議論が始まったのだ。
JJの考えでは、Timやその他の人が推奨する純粋なウェブスタイルはAPIアプローチと競合関係にある。
ウェブスタイルは"統一インターフェース"、ブックマークウェブスタイルは"統一インターフェース"、ブックマーク、HATEAOSではなかったのか。標準IANA型を忘れてはいないか。このような議論は最近聞かなくなりました。URL内に動詞を埋め込む方法や複雑なクエリをポストすることを恥ずかしく思う人はいなくなりました。最も重要なのはMongoDBが示したことです。つまり、CRUDを行うためには4つの動詞と貧弱なURL構文では足りないということです。開発者と設計者はやけになって"ウェブスタイル"の周りをふらふらして、JSONに名前空間を付けるというようなこともしています。
このようなウェブスタイルのようなサービスを概観し、JJは価値を提供するのに失敗し、"死んだ"と結論を下している。さらに、ウェブそのものがほとんど死にかけていると宣言する。
[...] HTML5を使って価値あるものを作り出す方法がわからない、ネイティブアプリと競争しなければならない開発者とウェブのビジネスモデルの中心にある"製品"に反映された素晴らしいアイディアに最終的に肝を冷やすことになるエンドユーザの間でウェブは死にかけています。"ウェブよ永遠なれ"というメッセージを携え、Tim Berner-Leeは6ヶ月ごとにやってきますが、セキュリティの大混乱の後では、 大英帝国勲章の持ち主でももはやウェブを救えないように思えます。
幸い、JJの記事は、過去とごまかされてきた"技術的負債"を陰鬱に振り返るだけで終わっていない。現在我々がどこにいるのか、そして、モバイルの新しい波についても言及している。JJはモバイルをこれまで見られなかった最大のパラダイムシフトになる可能性があると考えている。
ほとんどの人は覚えていないでしょうが、ソフトウエアエンジニアリングは古い、とても古い"ファイル処理"というパラダイムの上に成り立っています。UFSがその頂点に位置しているのでしょう。ディスクトップのメタファとPCの主な利用パターンは"ファイル処理"に結びつけられたままです。モバイルにはファイルは関係ありません。モバイル端末は私たちの活動を逐一支援してくれます。少なくも、未来のオペレーティングシステムはアクティビティ中心になります。
しかし、成功するためにはウェブの技術を置き去りにしなければならない、とJJは考えている。
最高のユーザエクスペリエンスが勝ちます。それに対抗しようとする人は負けるでしょう。ウェブが興隆したのは、一時は優れたユーザエクスペリエンスを提供したからです。"ウェブ"だからという理由で興隆したのではありません。
最後にJJは問題解決方法に対してもっと実用本位になり、過去から学ばなければならない、と主張する。
さらにCRUDを突き詰めようとしてもRESTでない方法を切り捨てることはできません。MongoDB APIのように非常に優れた設計のAPIでさえそうです。また、オブジェクト指向は分散されたコンポーネント間の通信を表現するには不適切なパラダイムであることをしっかり理解する必要があります。すべてをステートレスなシングルトンのメソッド呼び出しで具現化することを辞めなければなりません。クラスのアノテーションはSOAが始め、私たちが終わらせなければならないセマンティック革命の推進力としては貧弱過ぎるのです。
JJが示したこれらの変化を考慮すると、一体最終的なゴールは何なのだろう。JJは堅牢な合成プログラミングモデルを想定しているようだ。このモデルではモデルとビューが分離されながらも適切なつながりを持ち、アクティビティ/アクション/ライフサイクルのパラダイムに従う。残念ながらこのモデルについてJJは詳しく説明していないが、おそらくその意図は今後の関連する記事で説明されるだろう。