August 22, 2006
mixiはリアル社会ってのと、日記が検索できない閉塞感を打開するために、数ヵ月後に検索したくなるメモ的なコミュニケーションの座をVOXに期待しているのですが、とりあえず編集画面について一点だけ。
現状のVOXが結構重いが故なのかもしれませんが、エントリーの編集画面でAjaxでエントリーデータを持ってくるのはどうなんでしょ。
編集画面自体が画面遷移してるんだから、JSONデータも初期値で渡せば良いんじゃないかなぁ。
json-rpcを使わなくても、動的生成の編集画面の頭に、
var jsonData = [% jsonRPCで渡したいデータ %]
と書いてあげれば余計なアクセスは発生しないし、起動待ちのラグがなくなるし。
もし新規追加と編集画面のスクリプトを共用したくても、上記データがundefinedか否かで処理を変えてあげれば良いのに、と思いました。
何故、気になるか?というと、他の人たちがSixApartの真似してしまうことでAjaxという名前で悪しきFlashユーザビリティの再生産をしてしまうことを危惧しているからです。
Flash PlayerはObjectタグの向こうの世界で、動的生成が簡単ではないバイナリデータが故に、初期データを渡す手段が限られています。その方法は、次の3通り+2ぐらいの手段があります。
1.Flash Player起動後にFlashからLoadVars命令などを発行してサーバに問い合わせる。
2.ObjectタグやEmbedタグに、FlasVarsという変数を経由して値を放り込む。
3.FlashPlayer8から使えるようになった、JavaScriptへのインターフェースを使って渡す。
(4.Win IEに限り、ActiveX経由でsetVariables)
(5.Flexを使ってswfを動的生成)
1.はNow Loading処理が必要ですが、2と3はすぐに値を渡すことができます。その代わり、コンテナとなるHTMLには初期データを渡しておく必要があります。
4.はもうレガシーな行為なので忘れましょう。
5.は、ここでの範囲外とします。Flexで初期データをSOAPで持ってくるとかやってしまったら、1と同じです。
オール Flashの画面を作った際に、1番の手法で、Flash起動後にNow Loadingを出して、何も役に立たない状態を画面上に作るのは、僕は普通のHTMLよりもユーザビリティに劣る行為だと思っていて、それしかできないならオールFlashである必要性を考え直した方が良い、ぐらい今では思っていて、値を渡すだけなら、できるだけ2か3にこだわりたいと思っています。
古いFlashプレーヤーに対応するのであれば、2.が簡単です。Flash内部では、_rootのグローバル変数となってしまいますが、実際、それで困ってしまうFlashというのはないハズなので気持ちの問題というか、全然、問題ないでしょう。
で、これはFlashの話。
Flashで例えばparamタグ経由で渡す場合、ひょっとしたらデータ量の問題があるのかもしれません。ブラウザ依存も気になります。VOXの場合は、わざわざ画面遷移後の編集機能でさらにJSON-RPCを使う理由が見つかりません。
というのも結構、このラグが気になるんですね。
サーバレスポンスが早ければ問題ないのかもしれませんが、多少なりとも、何もフォームに値が入ってない状態が存在するのも確か。(ほんの一瞬ですが気持ち的に不安になります。)
もちろん些細な問題といえば些細な問題で、それよりもSafariに対応して欲しいのは確かで。
今は、むりやりSafariで書いています。よくBSで文章丸ごと消えます(笑)
あと、たまにMS IMEがおかしくなったり、画面がリロードされちゃったりします。リッチなI/Fが裏側に隠されていてVOXすごいなーって思ってます。
リッチインターフェースとして結構チャレンジしているVOXですが、それってなんかFlashアプリみたいだなーと思って興味深く見ています。結局、行き着くところは同じか~みたいな。
##早く会社来たのにblog書いてしまった。ブルー。仕事してとっとと帰って家で書けっつうの。