Plain Old XML / Plain Old ほげほげ

Someone recently asked me about how to handle an internal product debate around REST vs. SOAP.

In hopes I never have to address this debate again, here's a record of what I told them.

Don Box が REST vs SOAP についての Pragmatics について語っている、という記事。この記事を読む前に OPC Diary: SOAP vs REST? いいから出荷しろ という記事をコメントまで含めて読んでおくと良い感じで消化できる、と思います。

で、あんまり記事とは関係ないお話で。POX - Plain Old XML という単語を恥ずかしながら初めて聞いたもので、そこに反応。

Plain Old XML

Plain Old XML (POX) is a term used to describe basic XML, sometimes mixed in with other, blendable specifications like XML Namespaces, Dublin Core, XInclude and XLink. People typically use the term as a contrast with complicated, multilayered XML specifications like those for Web Services or RDF.

Wikipedia にあるように、マルチレイヤな XML 仕様に対比して使われる言葉のようです。REST の話とかでよく出てくるっぽい。

僕は以前に XML 開発者の日で、特に標準化とかもされておらず、マルチレイヤでない、データ構造を表現しただけのXMLみたいなものを指した「野良XML」という言葉を勝手に使ってみたことがあります。POX 言葉のラベルだけをみたときはそういう意味かなと思ったけど、そこまで適当な意味合いじゃなくて、先の Don Box の記事とかを見てると、SOAP とか WSDL とか何か対比される材料があって、あくまでその前提で Plain Old XML という言葉を使ってるみたいですね。

なんで、おそらく Atom フィードみたいにちゃんとどこかで合意の取れた仕様がありつつマルチレイヤでないものも、SOAP なんかと対比されると POX の範疇に入る...という理解。これでよろしい?

プログラミングの世界で "Plain Old 〜" って言うと最近一番よく聞くのは POJO だと思います。Plain Old Java Object。「昔ながらのただの Java オブジェクト」とキーワードページにありますね。Plain Old Java Object は少し前の EJB とかへのアンチテーゼってことですよね、たぶん。

枯れて成熟している技術に対して、新しくやや複雑な技術などがある。そのときに何か後者の方が新しいし複雑ですごそうだからという理由でそちらがもてはやされたときに、「ええ、でもあっちのほうが枯れてて使い易いんだけど...、でもほんとにそれでいいのか自信がないなあ」みたいな考えを後押しするのに Plain Old という修飾語を付けるといいのかもしれない、とたつをさん風に分析してみる。

似たような話題で「何か複雑で新しいものを盲信するのは良くない」っという話題が Strutsの問題点 というプログラマー日記の記事であって、面白かった。(ちとコメント欄で議論があったようなので、結果としての24日の分も併せて読むと良いと思います。)

あと、ちょっとウェブアプリケーション作って試したいなあなんて思う時には CGI で簡単なスクリプトをでっちあげるというのを良くやりますけど、なんか Quick Hack とは言え今時 CGI ってなあ〜...みたいな迷いがある、そんなときは Plain Old Web Application (POWA) とか言っちゃえばいいんじゃないかとかくだらないことを思いついてしまった。Plain Oldメソッド。

ところで Perl ハカーに "Plain Old" でなじみの深いものと言えば POD - Plain Old Document なんですけど、これは何に対する対比なんでしょうね。