ClubDB2 第119回「RESTの基礎と、XQfulによるXML-DB活用」に参加してきました

毎度毎度のClubDB2参加記録。
そろそろblogのタイトルも変えてもいいかもしれない・・・

さて、XMLXQueryもRESTもTomcatEclipseも知らない私が思い切って参加した第119回ClubDB2「RESTの基礎と、XQfulによるXML-DB活用」(Welcome to Wikis。)結論から言うと、初心者にも非常に優しく、非常に満足度の高い勉強会でした。

講師はIBM クラウドエバンジェリストの米持(@pandrbox)さん。
日本に6人しかいないIBM ソフトウェア・エバンジェリストのうちのお一人。(入社当初はメインフレームの障害対応・分析ソフトウェア開発をされていたと伺って、勝手に親近感を感じています。)
きっと米持さんの後輩が、我々が依頼したSVCDUMPの内容を解析しているのでしょう(笑)

XQfulとは

米持さんは、「XQfulはフレームワークというよりもデザインパターン」ということを繰り返し述べていました。
詳しくは米持さんの書かれた記事(Welcome to Wikis)に記載されています。

分散コンピューティング

  • 簡単な仕組みではRESTやRSSATOM
    • 古い分散コンピューティング(ソケットやTCP/IP)はBIT列のやりとりで、データが構造化されていなかった。
    • RESTやRSSATOMXMLを使ったDataExchange。HTTPにXMLをいれて運ぶ。
  • ミドルウェアで実装することで、プログラムが楽になっているのがCORBAやEJBSOAP。当然ミドルウェアが必要なのでコストが高くなるし、製品依存する。

RESTやRSSATOMは仕組みが単純なので、実装はユーザー側で色々やる必要がある、という理解。

XMLとは

  • マニュアルなどの「文章」を構造化するための技術。
  • GMLSGMLといった規格があったが、難しすぎたので簡略化した規格。(80%も削ぎ落した!)
  • HTMLはSGMLの最も有名なスキーマ(Markup Language)

HTMLはタグの閉じ忘れを許容するが、XMLは終了タグが必須。これによって実装のゆらぎを排除しているという点が印象的でした。
2次会ではXBRLのことが話題に。当日の皆さんの議論を聞いていると、どうも会計システムの複雑性がそのまんま持ち込まれて、「簡略化」というXMLの思想が削ぎ落ちている、という印象を受けました。ちなみにXBRLも初めて聞いた言葉だったので、その場でググッて何とか話について行ったのは内緒です (^^;

  • 日本で一番使われている構造化データ=CSV
  • CSVに比べてXML
    • 階層構造、繰り返しが利用出来る
    • データに「改行」を含めることができる。

この「繰り返しが利用出来る」点、SMFをXMLに変換すると後処理が非常に楽になるんじゃないかなぁ。もしかしてIBMさんのSE-Toolには存在していたりして。でもCOBOLもEASYもREXXも複数行のデータを扱うのが苦手だから、XMLに強いPGM(?)をM/Fで動かさなきゃいけないから、この案はダメか?いちいちPCにデータ転送してたら効率悪いしなぁ・・・。

WebサービスとRESTful

  • Webサービスは「疎結合」 → 繋ぎ替えが楽 → SOAが生まれた。
  • RESTfulサービスの代表例
  • 分散方式におけるRPCと分散オブジェクトの違い
    • RPC : Remote Procedure Call。その名のとおり、処理を呼び出し、処理が終われば接続は解除される。
    • 分散オブジェクト:コール先にインスタンスが生成され、削除されるまで持続される。

SOAPとRESTfulの違い

SOAPの方が色々なオプションがつけられる。→ エンタープライズ向きという印象。実際、AmazonAWSの管理はSOAP。(ここはメモが残っていないのでもしかして違うかも)
RESTfulは簡単にするために割り切っている。「認証?Authorization Headerでいいじゃん!SSLでもいいんじゃん!トランザクション処理?そんなものいらない!」という言いっぷりが非常に印象的でした。要は適材適所ってことですね。

  • WSDL
    • SOAPWSDL = 鋳型。大量生産
    • RESTfulはXMLそのもの。=単純

WSDLのおかげで、I/Fさえ定義してしまえばその後のプログラミング工程は非常に楽になる = 大規模開発に向いている。

  • SOAPとRESTfulの使い分け。
    • SOAPの利点
      • 量が多い場合
      • WSDL自体、自動生成できる。
    • RESTfulの利点

「RESTfulはI/FがXMLだから、すべてのタグを定義しなくても動く→融通が利く→変化に強い。WSDLだとそうはいかない。」という話が印象的でした。
金融系の基幹システムを担当している人間には、肌感覚として受け入れにくい思想。でも、納得感があった。そうだよね、って感じ。すべての場所、すべてのシステムであの堅牢性が求められるわけではないので。
まさに適材適所ですね。

DB2 pureXML

  • XML専用のエンジンをRDBエンジンとは別に持つ。
  • RDBとのハイブリッドエンジン
  • XMLを分解(パース?)した状態で保管。テキストデータではないので検索処理が早い!

XMLの列にはXML構造体へのポインタを格納しているだけ、らしいです。

XQful(デモを見ての感想)

  • すごく簡単に使える印象

私はここ10年ぐらい(メインフレームでテキストデータだけを使う雑プロは別として)プログラミングをしていないので、XQfulと同じ機能を一から手で作るとどれだけ大変なのかピンときませんでしたが、デモを見ただけでも「これは簡単!」と思えました。

二次会で聞いたら、やっぱりイントラネット前提の実装とのこと。
「いろいろ実装しないとダメ」と仰っていたのは、「デザインパターンとしてセキュリティには強くはない」と(勝手に)理解。
ここも結局適材適所ってことですね。

  • URLからパラメータを渡せるのはすごく便利。

「わ〜すげ〜」って感じ(笑)うんうん、そうすると便利だよね、って。

ここは質疑応答で出ていたんだけど、デザインパターンとしてはたしかにSQLでもいけるし、返り値がXMLである必要はないそうです。

  • なんでXQueryを前提にしているのかちょっと考えてみた

返り値がXMLであれば、返り値そのものが構造を持っているので、ブラウザにそのまま返しても良い。
けど、SQLの場合は返り値に構造を含まないので、データをそのままブラウザに返したのでは、データの意味が分からない(分かりにくい)という問題が起きますね。
ってことは、DBからの返り値を編集してブラウザに返せばいいんだけど、それじゃ結局「お手軽」というXQfulのメリットが薄れちゃうんだろうな。

その他のメモ

  • Xシリーズで3Tのメモリを実装したサーバーが出た。メモリが大きすぎてDISKに書けるのか?(笑)
  • DISKのシークタイムはこの15年ぐらい進歩していない。技術的に頭打ち。Hadoopが一番効くのがここ。
  • WebBrowsingも分散処理。PC側でレンダリング、サーバー側でその他の処理を実行している。

まとめ

私にとっては2011年 1回目のClubDB2は非常に満足度の高い勉強会でした。
自分の持つ技術分野と、全くと言って重なりのない分野だったので、正直参加して大丈夫か不安だったのですが、米持さんの素敵なトーク、非常に分かりやすい基礎からの解説のおかげで、なんとかついていくだけでなく非常に楽しく学ぶことができました。
2次会で伺ったのですが、エバンジェリストってインタビューを受ける能力やら、プレゼンテーションの能力といった、まさにスポークスマンとしての能力も求められるんですね。

そういえば米持さん、23時半からテレコンだから途中で帰ると仰ってましたが、私が会場をでた23時にはまだ残っていらっしゃった記憶が・・・。テレコンには間に合ったのでしょうか (^^;

次回のClubDB(Welcome to Wikis)はNetezzaがテーマです。これまたBIというな〜んにも知らない分野ですが懲りずに参加します(^^;

おまけ

4月から同じ会社になる@TxRacingさんと初めて挨拶させていただきました。部署は異なりますが、同じビルになると思いますのでClubDB2だけでなく色々と情報交換などさせていだければありがたいです。よろしくお願いします m(_ _)m