2006-02-28

REST:Restletについて

REST:RESTとは(1)でJavaServletのAPIの範疇でRESTが可能であることをちらっと書いたが、RESTのためのフレームワークも存在する。それが「Restlet」(このフレームワーク名を表すときは以降括弧付きで表現し、括弧が無い場合は一般名詞としてのRestletのこと)である。
今日(2006-02-28)現在の最新バージョンは1.0 beta3。Restlet APIとその参照実装 Noelios Restlet Engine(NRE)の二つで構成されている。

これが、もうちょっと簡単に出来なかったのかな~と思うぐらい何やら複雑っぽいので、とりあえずチュートリアルあたりを読んで、わかったことから書きつらねていきたい。チュートリアル本文と合わせて読んでもらえば、多少の手助けになるかもしれない。

1. Registering the Restlet implementation
NREを使っている限りは不要な話。NRE以外に今のところRestlet APIに対応したRestlet Engine(?)は存在しないのでパス。

2. Retrieving the content of a Web page
Restletはサーバフレームワークであり、クライアントフレームワークでもある。この章ではクライアントフレームワークとしての使い方のサワリが書かれている。

3. Listening to Web browsers
今度は、サーバ側実装のサワリ。AbstractHandlerを継承して、handleメソッドをオーバライド。doGet/Post/Delete/Putのようなメソッドは無いようなので、引数のUniformCallからMethodを取得して、GET/POST/DELETE/PUTを切り換える必要がありそう。それぐらいラッピングしてほしい。
しかも、NREをサーバとして起動しておいて、ハンドラをその上で動かすのではなく、単独のアプリとして作成し、中でHTTPServerを起動するようだ。

4. Overview of a REST architecture
RestletはHTTP以外にもPOPやSMTPでも運用できるようになっているようだ。そんなことより機能を絞って、簡単な仕組みにして欲しいものだ。

5. Restlets servers and containers
3章ではHTTPServerに直接ハンドラを適用していたが、ここではRestletContainerを作成し、コンテナとサーバを結びつけ、コンテナ上にRestletを登録する形をとっている。Restletはやはりハンドラと作り方が同じ(というかハンドラの一種)、振り分けは自分でやる必要がある。

6. Serving static files
静的コンテンツの公開の仕方。Apacheの設定ファイルでやるようなことを、コードに書いている。この手の事は設定ファイルでやらせてくれないかな。(コンテナへのRestletの登録もそうだが)

7. Chainlets and call logging
ChainletとはServlet APIで言うところのFilterのようなハンドラである。ここではLog出力をしてくれるChainletの使い方を紹介している。
こんなところに力を入れるぐらいなら、HTTPメソッドのラッパーを作ってくれよ。

8. Displaying error pages
エラーステータスページをカスタマイズするためのChainletを紹介。
だからこんな(ry

9. Guarding access to sensitive resources
クッキーに入っているユーザIDなどを利用して認証するためのChainlet。
って、クッキー使ったらRESTfulじゃ無くなるんじゃないの?

10. URI rewriting and redirection
URIのリライト、リダイレクトのやり方。リダイレクト専用のRestletが用意されている。パラメータを自動的にリダイレクト先のURIに変換する仕組みが備わっている。
だからこ(ry

11. Maplets and hierarchical URIs
リソースパスへのハンドラの割り付けをおこなうMapletというハンドラの使い方。実際のディレクトリ構造と異なるような階層でファイルを見せたり、DB上の情報をリソースとして見せることが出来るってところ。
ちょっとこれは便利そう。

12. Conclusion
クラス階層の図。

感想。使えなそう。というか、作者はRESTを勘違いしてるんじゃないか?
もっとイージーにRESTfulなWebアプリを作るためのJavaフレームワークを探すか。いっそ作るか?

REST:RESTとは(1)

yohei-y:weblog: REST 入門が非常にREST(REpresentational State Transfer)の理解の参考になる。自分なりにまとめてみる。

RESTはSOAPと対比されるようにWebサービス実現手段として受け取られる向きが多いが、Web(HTTP)本来の仕組みに忠実に(またはさらに制限を加えて)Webアプリケーションを作るという、アーキテクチャスタイルの事である。

RESTの基本はリソースへのアクセスである。URI(Uniform Resource Identifiers)で指定したリソースに、指定したメソッドに応じたアクションを行う。
リソースというのは、そのままリソースのことである。URIは名前そのまま、リソースを識別するための物である。URIを指定すれば必ず目当てのリソースを取得することが出来る。

メソッドについては以下の5つのポイントを守ること。
  • GETはリソースを取得するメソッド
  • PUTはリソースを更新するメソッド
  • DELETEはリソースを削除するメソッド
  • POSTはリソースを新規作成するメソッド
  • GETはリソースに副作用を与えない(GETで操作をしない)

特に、Java Servletの世界では、POSTとGET以外のメソッドを使うことはまず無いため、GET、POSTを濫用している場合がほとんどであるといえる。(一応、doPut、doDeleteというそれぞれのメソッドを扱うためのインタフェースは用意されていますが)

たとえば、
http://localhost:8080/MyApp/ItemServlet?action=delete&id=4797327936
のように、DELETEメソッドを使わずに、GETメソッドで削除処理を行う(URIへのアクションの挿入)といった事が行われる。
また、POSTは単にGETと違ってURIの長さ制限に掛からない、無制限な長さの情報をサーバに渡す手段として利用される。

RESTに則れば、上に様な例は、
http://localhost:8080/MyApp/Item/4797327936/
にDELETEメソッドを発行すれば良いことになる。

ただ、Servletでこのような実装がなされるのは、人間系に合わせ、選択、確認などのステップを踏むためであると思う。(DELETEメソッドを発行したのに、削除されずに確認画面が出るのも、GETやPOSTで確認画面が出るのもREST的にはおかしい)
というわけで、人間系においてまでRESTを適用するのは問題があるように感じる。RESTを適用するにはAJAXやFlashのようなリッチクライアントが不可欠となるだろう。

長くなってきたので、続きはまた。

2006-02-27

おかいもの:HOME MADE 家族 Musication


「サルビアの花」、「JOYRIDE」、「少年ハート」と気になってた曲がこのHOME MADE 家族の曲だと知って、その曲がまとめて入ったこのアルバムを購入しました。
カラオケ向けに覚えようとしてるのは、「少年ハート」。ですが、「Music & communicaton」や「Shall we 乱舞!?」も非常にノリがよくてお気に入り。

2006-02-26

雨のスキー場

昨日の夜から家を出て、会社の同僚たちと雪山へ行ってきました。

スキー場に着いたころは天気も大丈夫だったのですが、仮眠から目覚めると土砂降り。雪は既にシャーベット状だったので、多少濡れることは覚悟してましたが土砂降りとは・・・。
せっかく時間を作ってみんなできてるので、気合ですべることにしましたが、長年使ってる自分のウェアは親水性抜群(ぉ。あっという間にびしょびしょです。それでも朝4時から滑り始めて、7時半ごろまでは滑ってました。
さすがに身体が冷え切ってきたので、レストハウスでウェアを乾かしながら休憩。袖、裾、グローブは絞れるほど濡れてます。
みんなと相談して、適当に滑った後、飯食って、温泉に入って帰ることに。
メニュー豊富な駐車場そばのレストハウスがオープンする8時半まで滑りたい人は滑り、自分と数人はストーブの周りで雑談。気づいたら時間が来てたので、滑りつつ駐車場付近まで。

飯はあい丼という牛丼にカレーがかかってるようなもの。飛騨牛を使ってるらしいことを後で知ったが後の祭りってやつで、そんなに味あわずに食べちゃいました。

写真は、帰り際にとった雨のスキー場。


非常に悔いの残る今回のスノボでしたが、次に来るときはもっとコンディションが悪くなってるでしょう。1、2、3月と1回ずつをノルマとしてましたが、3月は断念かもしれません・・・。

2006-02-22

mini AQUA

こんなのを見つけました。

mini AQUA

ちょっと和む。

気が向いたら、テンプレートに追加しておこう。

2006-02-19

おかいもの:PS2ソフト 新鬼武者



バイクのカウルに入ってしまったヒビや傷を直すための道具/素材を買いに行ったついでに、
通りのゲームショップで以前SSXと購入するかどうか迷った「新鬼武者」を購入してしまいました。ツーリスト・トロフィーはまた今度。

これまでの鬼武者シリーズのバッサバッサと敵をなぎ倒していく爽快感はそのままに、一線を画すのは、従者システムという存在。これまでも、謎解き時に別キャラを操ってからくりを解いたり、一緒に攻撃に参加したりといったことはありましたが、今回は任意のタイミングでキャラクターの切替を行えるようになっています。また、過去クリアーしたマップに戻ることが出来、クリアー時に使えなかった仲間を連れて行くことで、それまで取ることの出来なかったアイテムをとったり、いくことの出来なかったエリアに行けるようになったりします。
あと、これまで本編外であったミニゲームが一部ゲーム内のイベントとして行えるようになりました。



2006-02-13

JavaScript:Amazon Webサービス

Amazon Webサービスを使用しての製品情報表示をIEでもできるように、JavaScriptを修正しました。
また、スクリプトファイルを分離したので、他の方にも利用していただけるようになりました。
ブログなどに購入した商品の情報を簡単に載せたいという方、ぜひご利用ください。

使い方:
ブログなどのテンプレートに以下のようなタグを埋め込み、
<script type="text/javascript" src="http://www.k5.dion.ne.jp/~forza/Ajax/AruProAmazonLink.js"></script>

bodyタグのonloadでarupro_amazon_linkを呼んでください。
<body onload="arupro_amazon_link();"></script>


aタグのname属性に"asin"、href属性にasinコードを記入しておくと、そのタグのあるところに製品情報を挿入します。
<a name="asin" href="{表示したい商品のASINコード}"></a>


修正する場合は、以下のリンクからダウンロードし、適当なサーバに配置してご利用ください。
JavaScript : AruProAmazonLink.js
結果変換用XSLT : amazon.xsl

使用条件:
ライセンスはApache License Version 2.0に基づくものとします。

Copyright 2006 NAGASAWA Takahiro
Apache License Version 2.0(「本ライセンス」)に基づいてライセンスされます。あなたがこのファイルを使用するためには、本ライセンスに従わなければなりません。本ライセンスのコピーは下記の場所から入手できます。

http://www.apache.org/licenses/LICENSE-2.0

適用される法律または書面での同意によって命じられない限り、本ライセンスに基づいて頒布されるソフトウェアは、明示黙示を問わず、いかなる保証も条件もなしに「現状のまま」頒布されます。本ライセンスでの権利と制限を規定した文言については、本ライセンスを参照してください。

また、使用する際には、設置HPからこのページへリンクしていただけるとうれしいです。

2006-02-11

映画:イーオン・フラックス

TVCMでもちょこちょこ見てて、気になっていたんですが、いよいよひと月後には公開になるらしい。
イーオン・フラックス
画像クリックでオフィシャルページへ
西暦2011年、品種改良によって発生したウィルスにより人類の98%が死滅。科学者トレバー・グッドチャイルドが開発したワクチンにより、人類滅亡は回避することが出来た。それ以降、人類は汚染された外界と壁で隔てた都市ブルーニャに住み、病気もなく、飢えもなく、戦争もない、完璧な生活を送っているはずだった・・・。


良質なSFアクションの予感・・・。
映画公開は3/11。見に行きたいなぁ。誰か一緒に見に行ってくれる女の子いないかなぁ。

2006-02-08

OpenLaszlo

Open Laszloとは、XMLとJavaScriptでFlushリッチクライアントを作成できるフレームワークです。
FlushなのでAjaxの様にブラウザの違いによる挙動の違いを意識する必要は無いですが、Flushが見れるブラウザで無いと動きません。
ブラウザの違いを意識して、切り換えたり、姑息なコーディングになってしまいがちなAjaxよりも、一つのきれいなコードがFlushさえあれば動くというLaszloの方に魅力を感じます。

動作のイメージとしてはJSPに近いです。サーバサイドに用意したlzxファイル(XMLベースのLZX言語とJavaScriptで書かれたソースファイル)にアクセスしようとすると、サーバ側でFlushコンテンツにコンパイルし、ブラウザ側ではコンパイルされたFlushコンテンツを表示します。また、事前にコンパイルして作成したswfファイルをサーバ上に置いておくことも出来ます。
LaszloJapan
Open Laszlo

Ajax:Prototypeを読む

Hawk's Laboratory : prototype.js 1.4.0を読む
Ajax向けのJavaScript フレームワーク、Prototypeのソースを読んで、中で使われているテクニックを理解しようというBlog記事。

2006-02-07

単車乗りへの道:サイト紹介 バイクDEポレポレ

バイクDEポレポレ
BMW R1100RT に乗ってらっしゃる方のサイトですが、工作室でのカスタムは非常に参考になります。
ロータリーコマンダーの防水加工をこのサイトを参考に行う予定です。
最近ロータリーコマンダーが入手困難になっているようですが、こちらのサイトで公開されている回路図を元にすれば、ロータリーコマンダー互換なスイッチBOXを作成することも可能だと思います。

2006-02-06

単車乗りへの道:ツーリスト・トロフィー

FORZAで遊ぼう!のBBSにて紹介されてますが、SCEJの「ツーリスト・トロフィー」でFORZAが使えるらしいです。


土曜日に見たときはパッケージを手にとったもののスルーして、PS2 新鬼武者かGC SSX on tour withマリオか迷った挙句、SSXの方を購入したのですが。うーむ。これを知ってたら間違いなく買ってたなぁ。どうしよう。買うべきか?

おかいもの:ゲームキューブソフト SSX on Tour with マリオ

ありえないスピード、ありえないトリック、ありえない爽快感。SSXシリーズは全部買ってるけど、どんどん新しいシステムを取り入れて、毎回新鮮な驚きを提供してくれます。
今回の特徴は、既存キャラを使うんじゃなくて、自分でキャラをある程度デザインできることかな。
あと、モンスタートリックが若干難しくなったかな。Trickyや3ではボタンの組み合わせで「離れ業」が出来たんだけど、Cレバーによるコマンド入力に変更になった。その代わり組み合わせパターン分しか使えなかったトリックがコマンド入力で全種類を使い分けることが出来るようになった。難易度はUPしたけど、モンスタートリックを繋げてもっとありえない動きにすることが可能になった。
旧作もご紹介。
初代以降はGC版を買い続けてます。
って、ギャー。PS2にもPSPにもあったんか。ご近所のトイザらスにには無かったぞ?!

2006-02-05

単車乗りへの道:こけた&ウィンカー交換

こけました。
こけたのは木曜日(2/2)の朝。出勤するため駅に向かう途中、交差点を曲がろうとしたところでいきなり放り出されました。
打ち身、擦り傷はあるものの人間のほうはまあまあ無事。バイクのほうも動かなくは無いけど、こけた側が傷だらけ。さらにインナーが割れちゃってます。
せっかくのぺいんとがぁぁぁぁぁぁ。
悲しいですが、歪んだインナーを直しつつ、出来上がってたフロントウィンカーを交換してみました。
ポジション時は白く。
ウィンカー、ハザード時は黄色に光るようにしてあります。
ちょっと、左側光量が足らない?作業中にLED死んじゃったかな?
いかがでしょう?
レンズ内側をヤスリがけしたおかげで、横から見ても点灯しているのがわかります。

2006-01-29

今シーズン初!

会社の仲間たちと7人で雪山へ行ってきました。
しらおスキー場という、白鳥ICのすぐそばにあるスキー場です。
名古屋に10時集合。遅れてくるやつがいたりして、スキー場に到着したのは1時ぐらい?
ここは午前4時から滑れるので、それまで仮眠。
コンタクトはめるのに時間がかかり、みんなを待たせつつ、一番上の上級コースがオープンする8時まで、初級コースでみっちりウォームアップ。
6時ごろには、紫に染まる空。日の出を見ながらのライディング。神秘的。
上級コースがオープンしたので、初心者の2名を残して上級コースへ。
一番きつかったのは、初級コースから上級コースへの分岐点。全体で一番きついと思う。一応迂回路もあったけど、みんなきつい斜面を下ってくので、追従。最大斜度は40°近くありますよ絶対。
下った先にあるリフトで頂上まで。
img
遠くの山々がきれい。
最初のちょっとだけきつめだけどいい感じ。休憩できるような段差もほとんど無い、気持ちよく長い全長3キロのロングコース。途中、降雪機で雪を作ってて、降雪機から降る雪の中をすべるのも気持ちよかった。全体に固めのバーンだったのに、いきなり新雪になったので気をつけないとちょっと怖かったですが。
9時ごろ朝ご飯(感覚的にはお昼ご飯)を食べ、こんどはBXコース。みんな怖気づいてスタート台からはスタートせず、自分だけ。誰か写真とっててくれたらよかったのにw。うねりとバンクのきついコース。さすがにジャンプ台はパス。とりあえず、トップでゴール。レースしてたわけじゃないですが。ジャンプできる人がうらやましい。
散々滑って11時。コンタクトがイかれてきたので自分は脱落。車の中で仮眠してると12時ごろにはみんな帰還。
13時にはスキー場を出て近所の温泉へ。
16時ごろには一宮で遅めの昼食。
名駅で解散したのが17時ごろかな。
非常に充実した一日でした。

2006-01-28

おかいもの:グループ魂

人気脚本家 宮藤官九郎と個性派俳優 阿部サダヲの所属するコミックパンクバンド、グループ魂(たましい)のCD/DVDを買いあさってみました。(シングルまでは買ってませんが)

CD。

メジャーデビュー後のファーストアルバム(インディースを入れるとセカンド)。実はこのころからグループ魂の曲を一度聴いてみたいと思っていたのですが、なかなか手が出ず現在に至ってしまいました。
基本的に不真面目な歌詞の曲の合間にコントが入る構成で、笑えます。
キューンレコード移籍後初アルバム。歌詞のバカバカしさはRun魂Runよりもパワーアップ。コントも非常に面白い。お気に入りは「I hate 鍋」ですが、カラオケで見かけない。
歌うのはもっぱら「君にジュースを買ってあげる」です。

DVD。
DVDは基本的に皆ライブ映像モノです。渋谷AXで行われた「ある意味ツアー」の模様を収録したものです。
曲の合間にコントが入るのはCDと同様で、動きが見える分勢いを感じます。
ボーカル「破壊(阿部サダヲ)」と客席によるコール&レスポンスは最高です。
日比谷野外音楽堂で行われたライブ「雨の野音(晴天決行)」の模様を収めたものです。
前半、なんかがんばってエフェクトとか入れてますが、後半担当者が疲れたのか、だんだんおとなしくなっていきます。
基本的に流れは同じなので、続けてみない方がいいかも。コントのネタもカブリ気味だったり。期間をあけて思い出したように見れば、間違いなく笑えます。

単車乗りへの道:オーディオデッキ発注

Sonyが車載機器部門再編とかで、生産終了だそうですよ。今後どんな関わり方になるのか検討することになっているようです。
FORZAに搭載するオーディオデッキはSonyにすることに決めてあるので、商品がなくなってしまう前に押さえておく事にしました。

すでに再編の影響からか、商品は軒並み生産中止になってます。探し回った挙句、ひとつだけCDX-R3310を見つけたので、発注しました。また、ロータリーコマンダーも別のお店で発注。

先にデッキ類だけそろっちゃうけど、スピーカーとかどうするかな・・・。

おかいもの:吉井和哉 Beautiful


元イエローモンキー ヴォーカルの吉井和哉がYoshii Lovinsonから個人名に戻っての初CDです。
イエローモンキーともYoshii Lovinsonとも違う、吉井和哉のサウンドって感じですかねぇ。
タイトル曲の「BEAUTIFUL」もいいですが、2曲目の「HIKARETA」がいい感じ。
全体的にさわやかな感じですね。バイクで走りながら聴いたら気持ちいいだろうなぁ。

おかいもの:東京事変 大人(アダルト)初回限定盤


毎度。椎名林檎嬢所属のバンド、東京事変の最新アルバム。「大人」と書いて「アダルト」を購入しました。
まず、驚かされるのがケースを空けた瞬間。なんともいい香りがします。パッケージに描かれている香水をイメージした香りなのでしょうか。

これまで、お気に入りの曲ながら、DynamiteツアーのDVDでのみしか聴くことができず、カラオケでもDAMにしか入っていなかった「透明人間」が収録されています。
これで、思う存分練習できるというものです(w
ライブ時とは別アレンジでいい感じ。
修羅場も別アレンジ版になってます。


DVD映像作品集 ADULT VIDEO も3月にリリースされるようなので、早速予約しました。

2006-01-27

今日のラーメン:伍十 味噌らーめん+味玉

久々のらーめん記事です。「今日の」といいつつ昨日の話しなんですが。
img勤務先の近所にあるラーメン屋。伍十の冬季限定メニュー、味噌ラーメンを食べてみました。
結構独特な味噌ラーメン。味噌汁に麺が浮かんでいるって感じですかねぇ。
味噌の塩辛さが先行し、出汁の風味とかはあまり感じられませんでした。
トッピングにのせた味玉は、おいしかったんですがねぇ。