Ark::View::YAMLとArk::View::JSONを試しに書いてみた

| コメント(0) | トラックバック(1)

Ark::View周りの実装の勉強を兼ねて、YAMLとJSONでシリアライズするビュークラスのプロトタイプを書いてみました。

YAML::AnyはOO APIがなく、各YAMLパーサー/リーダー毎のOO APIを個別に呼ぶ吸収はあまりしたくないので、関数APIでいいやという諦めの境地です。

JSON::AnyはOO APIがありますが、useしたスコープで色々まさぐっているので、Ark::View::MTArk::View::TTのようにMouse属性として持つことを断念しています。またまた諦めの早い私です。

Ark::View::YAML
YAML::Anyを使ってダンプしています。
Ark::View::JSON
JSON::Anyを使ってダンプしています。Data::Structure::Util::unbless周りの泥臭さがやや気持ち悪いです。
SimpleLinks::Web::View::YAML
Ark::View::YAMLの定義です。ここでは何もしていません。
SimpleLinks::Web::View::JSON
Ark::View::JSONの定義です。ここでは何もしていません。
SimpleLinks::Web::Controller::Root
使用イメージです。テスト表示処理部分を、Viewモジュールに差し替えています。具体的には、$c->view('MT')->template('template_name');などとしていたところで$c->forward( $c->view('YAML')->dump($data) );と書いています。

......え、テストはどこかって? ごめんなさい、まだ書いていません(核爆)。テストも書いたらArkの辺境ブランチに混ぜ込んでおきます。

APIは未確定ですし、ほとんど決め打ちの処理でしかないのであくまで私家版モジュールという形ですが、将来的にはArk::View::SerializerなどとしてYAMLとJSONの両方の面倒を見るのも良いかも知れませんね。

なお、blessされたリファレンスがJSONのお口に合わないことを、恥ずかしながら始めて知りました。だからといって上記のようにunblessしてしまうのもどうかと思います。本当に単なるダンプという位置付けでしかないので、例えばWeb APIとして外部に値を渡す際には、ベタなダンプではなくて、きっちり個別のシリアライズ処理を書いた方が良いでしょう。

また、現在はテスト表示のため(ウェブブラウザで表示することを想定して)MIMEタイプをtext/plainとしていますが、Web APIとして使う場合には、text/yamlやらapplication/yamlなどとするのが良さそうです。

トラックバック(1)

YAPC::Asia 2009で、村瀬(typester)さんのトーク「ark ... 続きを読む

コメントする

筆者"Gardejo"について

  • Twitter: @gardejo
  • GitHub: gardejo
  • CodeRepos: gardejo
  • CPAN: MORIYA

このサイトについて

Eorzea System Worksは、架空のシステム開発結社です。

FF14.name (FinalFantasyXIV.name)では、アヴァター(プレイヤーキャラクター)の管理システムやイベント出欠・リマインダシステムや、リンクシェル(LS)運営・管理システムやDKPシステムなどを設計・開発・公開する予定です。

関連サイト

関連サイトでは、他にもFF14に関連するサイトをいくつか紹介しています。

リンク, トラックバック歓迎

このブログへのリンク(どのページでも構いません)やトラックバックを歓迎します。

設計・開発・運用の参考にさせていただきますので、コメントもお気軽にお寄せください!

個別の記事に対するご意見などのほか、目安箱もご用意しています。

このブログ記事について

このページは、Gardejoが2009年8月14日 22:54に書いたブログ記事です。

ひとつ前のブログ記事は「YAML::Anyの使い方の訂正」です。

次のブログ記事は「FF14向けウェブサービス"Amikeco"の紹介文」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

2014年2月

            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28  

やや真面目なサイト