History APIとhashchange
HTML5の仕様にHistory APIなるものがあるそうで、Ajax通信等で画面遷移を行わないけど、URLは変更する・・・みたいな用途に使うんだそうです。GitHubで既に使われており、現状「#!」を使ってhashchangeによってAjax遷移するような手法(twitter等)から、今後はこちらの方が主流になっていくのでは・・・とよく言われています。
で、簡単な使用方法を見てみたのですが・・・これって基本的にリンククリックやブラウザの戻る進むボタン等の処理にイベント定義して、イベント内でAjax通信し、画面遷移をする代わりにHistoryのpushstateを呼んでURLのみ変更させる・・・という手段を用いているみたいです。
うーん・・・これだと、hashchangeイベントが画面遷移ロジックを全て集約可能で、直リンクにも対応できていたのと比較すると、機能としてかなり後退してしまっている気がします。
ただ、hashでAjaxアプリの画面遷移を操作する手法が、URLを本来の意味で使用していないという批判を浴びたり、SEO関連の問題を引き起こしているというのも事実なので、何かいい手法はないものでしょうか・・・たとえば、hashchangeイベントのような、locationchangeイベントみたいなものがあって、そこでevent.preventDefault()することが出来る・・・みたいな
jQuery Templates
最近存在を知って触ってみましたが、なかなか便利ですねこれ。MSが作ったというのは驚きでした。
詳細については、以下のページが詳しかったです。
さて、前回作成したjs-web-clientではサーバサイドのWebフレームワークを最大限利用してAjaxアプリを作成するのを目的としていました。対してこのjQuery Templatesは、それとは対極の考えに基づくライブラリだと思います。これを使えば、サーバサイドWebフレームワークからMVCの「V」の部分を完全に切り離して、C/S形態のシステムに完全移行することが出来ます。
現時点で、WebアプリのViewをどちらで作るのが簡単かといえば、おそらくサーバサイドで作る方が簡単でしょう。何よりサーバサイドFWには過去から蓄積してきたノウハウがありますし、様々な問題への対応も既に明確です。
しかし今後のことを考えたときに、どちらの方向に進むのがより良い選択なのか、個人的には悩ましいと感じています。jQuery TemplatesはあくまでHTMLテンプレートを文字列として評価して、サーバサイドと同じようにパラメータを埋め込む方式なので、サーバサイドと比べて実装手段そのものに大きな違いがあるとはあまり思えません。故にこのままサーバサイドに任せたままというのも一つの手かな、とも思います。
開発者を集める側の視点で考えたら、また違う結論になる気もしています。サーバサイドからViewを完全に切り離せば、サーバ側に必要な知識はサーバ言語、DB関連、HTTP、JSON等のRESTful的なWebサービス構築ノウハウが中心となり、HTML、CSS、JavaScript等クライアントサイド用の知識を切り離すことが出来ます。企業向けシステム構築の分野ではこれらのクライアントサイト用の知識を苦手とする技術者も多く、故にシステムとして明確に切り離して構築・運用を目指すのが、今後クライアントサイドの技術要求が更に高まっていくのが予想される現在、有効な手段になる・・・とも予想できます。
一度後者の視点に立って、もう一度クライアントサイドのJS環境に必要なFW要件というのを考えてみようかなと思います。
電気使用量のお知らせ
超久々に書いてみます。
部屋の掃除中に、ここ最近の電気使用量のお知らせの紙を整理していたのですが、自分の家はこうなってました。
- 1/12〜2/08 169kWh
- 2/09〜3/08 161kWh
- 3/09〜4/10 85kWh
- 4/11〜5/11 93kWh
丁度震災直前に区切られていたからというのもあるのですが、使用量が半減しているのにびっくり。そんな極端な節電したわけではなくて、
- エアコンを使わない
- 無駄に明かりをつけない
- 外出中はPC・ネットワーク関連のコンセントを抜く
- 休日の電力ピークタイムはなるべく外出する
程度のことをやっただけなんですけど。というか今までかなり電力を浪費していたんだと実感しました。
節電の強制によって暮らしが貧しくなるって論調に今までは少なからず同意するところもあったんですけど、この結果を見ると、今までが逆に浪費しすぎだったんじゃないかって気もします。夏場に向けても、エアコン以外は別に続けても何の問題も無いですし、幸い自分の部屋は風通しが良い方なので、今年の夏は極力エアコン使わずに過ごす予定です。
ラストレムナント
昨年買ったソフトなんですけど、最近になってまたハマってました。
このゲームはサガチームが作っているだけあって育成が独特です。なかなか思うように育てるのが難しいのですが、今回ようやく納得いく育成が出来たのでメモってみます。
ラッシュ隊
ラッシュ
- レジェンダリィ・ナイト
- 物防青の剣
- 武帝の盾
- ひなのピアス
- 終焉の石
乱殺なので、序盤から武帝の盾を持たせて盾役。FAと救助以外は封印。
FA・救助が十分育ってナイトにクラスチェンジできたら、突撃・狙撃・工作を上げていく。この3アーツの最強術法を覚えたら封印
平行して薬草・ローションも上げていく。最終的に戦略を上げて育成完了
序盤は1人ユニオンで囮役になりつつ、シールドバッシュで大暴れしてもらう。中盤以降は重要度は下がるものの、盾ユニオンのリーダー&モラル調整役として活躍
ケイドモン
- レジェンダリィ・サイレント
- ブエル・ノクト
- ブラックベルト
- 雷神のイヤリング
序盤はトルガルと組んで、FAメインでたまに狙撃を使いつつミスティナイトを目指す。ミスティナイトになったらひたすらFAを鍛えていく
最終的にバトルトラップで応援花火まで覚えさせ、物理・術法・回復・モラル調整全てをこなす万能アタッカーに
ブロクター
- レジェンダリィ・ガーディアン
- パワー・ブリンガー
- ブラックベルト
- ワンダーバングル
薬草はすぐに封印してひたすらFAを鍛える。最強技まで覚えたら薬草解禁して育てていけばガーディアンに
ブロクターも終盤はトラップを鍛えてモラル調整可能に。但し彼の場合元々モラルが高いので、戦ってるだけで十分モラル上げられるんだけど
トルガル小隊
トルガル
- レジェンダリィ・テラーナイト
- ハルファス・ノクト
- ハルファス・ノクト
- ブラックベルト
- 雷神のピアス
序盤はケイドモンと同じ育成方法でミスティナイトに。クラスチェンジしたら四刀アーツを鍛えてセイントに。セイントになったら今度は二腕二刀を鍛えてテラーナイトに
アスラム軍の攻撃の要。WAが出なくても神速ダンシングソードの威力は脅威。ポーションと戦術を育てておけば補助役としても役に立つけど、あくまでも彼は攻撃担当
ボルソン
- レジェンダリィ・ガーディアン
- 物防薙刀
- ブラックベルト
- 雷神のピアス
ブロクターと同じ育成方法でガーディアンに。物理育成でLL槍になったら物防薙刀を渡す。竜槍スマウグも強いんだけど、対攻竜+5が必要になるような強い竜は敵にはいないので、最終決戦でも役に立つ物理抵抗+5とWAがある薙刀の方がお勧め。
薙刀からスマウグに作りかえようとするので、素材を奪うか、装備フリーダムを使ってスマウグを作った後に装備を変えるかの配慮が必要
最強傭兵ボルソンさん。モラルも高いので攻撃ユニオンの前衛がお勧め
バイオレット
- レジェンダリィ・ドルイド
- パワー・ワンド
- ブラックベルト
- リア・フォール
低BR進行の場合、BR26まで待たないとドルイドになれず、救助を使っているとナイトになってしまうのがネック。工作覚えるまでは全アーツを封印し、ただの殴る人となってステータス育成に励む。工作を覚えたら物理と工作を積極的に使ってドルイドに。無事クラスチェンジできたらFAを中心に育成。爆薬はお好みで
HPも攻撃力も実は超一線級の撲殺天使。リア・フォールのおかげでモラルも高い。彼女も攻撃ユニオンに組み込むのがベスト。
ガブリエル
- レジェンダリィ・アサシン
- 物防青の剣
- 最高級の精霊の盾
- ブラックベルト
- 雷神のピアス
普通に戦っていればアサシンになってしまう超お手軽な強力ユニット
精霊の盾は最高級まで育てたところでストップ。物理抵抗+5よりも物術ガード+3の方が強力
戦闘中空気を読めない男No.2。バイオレットと同じユニオンにいれば、彼がKOされると撲殺天使が心配してくれます。見た目は軟弱だけど、精霊の盾+雷神のピアスでラッシュに劣らぬ鉄壁の盾役に
エミー小隊
エミー
- レジェンダリィ・ニンジャ
- 月下美人【匠】
- 物防青の剣
- ブラックベルト
- 雷神のピアス
普通に育ててナイトにクラスチェンジ。月下美人をイリーナから奪ってエミーにクレクレさせる。2刀アーツを鍛えてニンジャにクラスチェンジ。二刀アーツが十分育ったら片手持ちメインに切り替えて、大乱れ雪月花取得を目指す。モラルが低いのが欠点なので、トラップの応援花火を覚えて補う
トルガルと双璧となるアスラム軍攻撃部隊リーダー。正面撃破タイプのトルガル隊と違い、エミーはニンジャクラスを生かして背面攻撃を狙う
ロベルト
- レジェンダリィ・バード
- 氷の剣【匠】
- ブラックベルト
- 雷神のピアス
仲間になったらポーションを積極的に使ってバードにクラスチェンジ。後は普通に育てておけば大丈夫だけど、爆薬は封印
ラスレムのガラハド。ブロクターと並ぶ対状態異常攻撃の盾役。アイテム使いなので全力攻撃でFAを使わない。ポーションを使い込んでフレイムボトルを覚えよう
シバリ
- レジェンダリィ・ガーディアン
- ダイダロス【匠】
- ブラックベルト
- 雷神のピアス
最初からガーディアンなので普通に育ててOK。
本当はパグス・マダックスと組ませてあげたいんだけど、物理・術法ユニオンを分ける主義なので泣く泣く別部隊に。この人リーダーにすると本当にウルサイw
ヨルゲン
- 冒険者
- 物防青の剣
- 最高級の精霊の盾
- ブラックベルト
- 雷神のピアス
固定クラスなので普通に育ててOK。ガブリエルと同様に最高級の精霊の盾でストップさせる。物理育成になったところで物防青の剣を渡す
ラッシュ・ガブリエルと並ぶ物理ユニオン防御の要。ガブリエルに比べてクラスは弱いけど、こちらは救助が使えるのが強み
ダヴィッド本隊
ダヴィッド
- レジェンダリィ・ミスティナイト
- 術防青の剣
- ターゲット(Fine)
- 黒鋼のブレスレット
- 幻惑の足飾り
ひたすらMAを極めてミスティナイトのまま最後まで育成。幻惑の足飾りを渡せば集団戦でゲイボルグ無双を拝める
序盤〜中盤はゲイボルグ、終盤はエクス・マキナ主体でUA狙い。ミスティナイトは突撃+5がつくので、攻撃力も最後まで問題なし。遠隔攻撃が出来る術ユニットと組ませてロックアップ外からエクス・マキナを狙っていく
ホーワンゲール
- レジェンダリィ・ウォーロック
- ガープ・ノクト
- ガープ・ノクト
- 天瞳の魔除け
- 黒鋼のブレスレット
全術法を鍛えてウォーロックに。WAもかなりの威力なので、テラーナイトでも十分強い
戦闘で空気が読めない男No.1。神戦でのヘタレなイメージが強いけど、育てれば流石勇者の名に相応しい強さを発揮
パグズ
- レジェンダリィ・ハイウィザード
- リバティスタッフ【匠】
- アイドルアミュレット
- ハートエイク
突撃主体でハイウィザードに。突撃と救助が十分育ってから戦略を育てれば、すぐにコマンダーになることはない
アスラム軍1の術士。集団戦ではダヴィッドと別ユニオンにしてゲイボルグとメガロアの2段攻撃を狙う
マダックス
- レジェンダリィ・ハイウィザード
- リフレクト・リムストック
- 天瞳の魔除け
- 黒鋼のブレスレット
突撃優先で、3術法を育てていけばハイウィザードに。
パグズの親友なので同じユニオンに。ロストは強力すぎるので、使いすぎに注意
イリーナと仲間たち
イリーナ
- レジェンダリィ・ブックマン
- ミスティック・ワンド
- 天瞳の魔除け
- デッドハート
術法育成になったところでミスティック・ワンドを渡す。月下美人は渡さない
戦術を覚えるまでトラップは封印。戦術覚えたらトラップ解禁して満遍なく鍛える。MAを鍛え終わってから魔片を鍛えれば、鍛え終わった時点でもブックマンを維持できる
マルチキャストが知力依存なので、育成すればラッシュのマルチキャストよりも強くなる。エミーと共に対強敵攻略のキーマン的存在
キルネア
- レジェンダリィ・アルケミスト
- 術防鬼神刀
- 魔女の封印
- 幻惑の足飾り
魔片を鍛えてアルケミストに。トルネードローションとカーズボムは全力攻撃で使われる可能性があるので、強敵相手には封印しといた方がいい
自分はブラッドチャリス渡さなかったけど、物理優先なら渡していいかも。MA成長も早まるし
ラスレムは最終的に彼女とホーワンゲールをどれだけ強く出来るかに育成のモチベーションが集約されている気がするw
見かけによらず、普通に強い。物理もWAも術法も魔片も回復も何でもこなせる。但し全力攻撃ではカラミティラクスが最強攻撃。まぁ弱くはないんだけど。
「せつげっか」もネタ技と思わせといて、普通に強力。イリーナリーダーユニオンに組み込めば、モラル上げてせつげっか、ピンチでマルチキャストという攻め方が出来る
泣く泣く二軍行きのユニット
ロキ
モラルが高い、工作を覚えるという利点があるんだけど、武器が貧弱、救助を持たないということで物理・術法どちらにも組み込みにくい。メンバーが揃うまでの術系ユニオンメンバーとして活躍してもらいました
ノーラ
最終武器が強いので物理系として十分戦える性能を持ってるんだけど、他のユニットとの比較で最終的に二軍落ちに。個人的には好きなユニット
ラゴウ
中盤まではヒーラー兼工作使いとして活躍してくれるも、ハイウィザードになれないのと、モラルが低いのがネック
デリアン
普通に強いしモラルも高いし回復系アーツ完備してるしで1軍候補として申し分ないんだけど・・・スカウトは最終的にはあまり回復力の強くない薬草を連発するのがネック。比較対象のボルソンさんはガーディアンになれるので、防御が強いのが差になってしまった
ゲイオウ
最強の攻撃力にレムナント武器・回復もこなしモラルも高い。欠点としてはクラスが回復寄りなのにローションアーツしか持ってないことくらい・・・だけどそこがネックになってしまった
グレウス
救助持ちの物理ユニット。ラバーソウルでAPチャージもできる。・・・やはりネックは刀持ちなのにナイトというところ。もし盾持ちだったら最強ユニットに化けたんだろうけど
イェーガー
強い・・・んだけど、リーダーにならないと特色が出にくい&物理ユニオンリーダーとしてはトルガル&エミーという鉄壁の存在がいる&メンバーとしてみると回復も補助も使えないのがネック・・・ということで今回は外すことに
- 出版社/メーカー: スクウェア・エニックス
- 発売日: 2009/04/09
- メディア: DVD-ROM
- 購入: 1人 クリック: 160回
- この商品を含むブログ (12件) を見る
jQuery eventのoriginalEvent
HTML5関連本のドラッグ&ドロップサンプルをjQueryを使う形に置き換えて実行しようとしたとき、jQueryのbindを使うとdataTransferプロパティがイベントから取得出来ない現象が起こりました。原因は、わかってしまえば単純で、jQueryのイベントハンドラに渡されるeventオブジェクトはjQueryがブラウザ互換性の為に作成した独自オブジェクトだからでした。HTML5等で新たに追加されたプロパティにアクセスするには、大元のeventオブジェクトを取得する必要があります。
ググってみたところ、どうやらjQueryのevent.originalEventで取得できるみたいです。
試しにドラッグ&ドロップのサンプルをjQueryのbindを使う形に置き換えて、このoriginalEventを使ってみたところ、IE8、FF3.6、Chrome6、Safari5で動作させることができました。Operaを捨てていいのなら、ドラッグ&ドロップ機能もほぼ実用段階に入ったということでしょうか。
このoriginalEventプロパティ、公式サイトで全然説明が無いので、積極的に使っていいかどうかちょっと気になります。しかしこれを使わないとイベントハンドラ関連で独自にクロスブラウザ対策をしなければいけなくなる為、現時点では利用した方が便利なのは確かかも。
- 作者: 白石俊平,株式会社あゆた
- 出版社/メーカー: 日経BP社
- 発売日: 2010/02/25
- メディア: 単行本
- 購入: 15人 クリック: 635回
- この商品を含むブログ (55件) を見る
jQueryのajaxError
jQueryのajaxErrorはグローバルなエラーハンドラです。401認証系エラーとか、500系サーバエラーをこれで定義しておけば、サーバFWのフィルターのようにエラー処理を一括管理できます。
但し、このエラーハンドラを正常に動かすには、サーバ側でしっかりエラーステータスを返してやらないといけません。Ajaxをあまり考えていないWebアプリだと、エラー画面や認証エラー画面で200ステータスを返すような挙動をするものも多く、そうするとせっかく定義したajaxErrorも呼ばれません。
結局、サーバ側のAjax対応ってHTTPに素直に従うのがいちばんだなと感じています。HTTPを隠蔽するようなFWだと使い辛く、HTTPを重視するようなFWと相性が良いですね。
しかし、URL直リンク・戻るボタン・エラー処理と、これら全部対応出来るのなら、自分的にはもう今後AjaxでないWebアプリを作る理由が無くなってしまいました。今までサーバサイドFWに知識が偏っていたせいで、乗り遅れてしまった感があります・・・サーバサイドFWのAjaxヘルパーとか勉強するだけ無駄でした(苦笑)