クロスブラウザチックなonbeforeunload。

Filed Under (Uncategorized) by on 15-10-2008

どうも。ひろきのです。

Prototype.jsといえばクロスブラウザでDOMの足回りを提供してくれているすばらしいフレームワークですが、ちょっとばかり不満があります。

Event.observeで、あたえたeventHandlerの戻り値を完全に無視しているところです。
具体的には

JAVASCRIPT:
  1. function createWrapper(element, eventName, handler) {
  2.     var id = getEventID(element);
  3.     var c = getWrappersForEventName(id, eventName);
  4.     if (c.pluck("handler").include(handler)) return false;
  5.  
  6.     var wrapper = function(event) {
  7.       if (!Event || !Event.extend ||
  8.         (event.eventName && event.eventName != eventName))
  9.           return false;
  10.       Event.extend(event);
  11.       handler.call(element, event) //ここでハンドラの戻り値を返してない。
  12.     };
  13.  
  14.     wrapper.handler = handler;
  15.     c.push(wrapper);
  16.     return wrapper;
  17.   }

このぐらい書き換えろとか思うかもしれませんがこれらの重要なライブラリについて元自体をいじってしまうのが難しい環境もあるかもしれません。

そもそもEventObjectのevt.returnValueを使えばいいじゃんとかありますが、WebKitのevt.returnValueの挙動が他のブラウザとちがい、実際にハンドラからreturnしないと受け付けないというものがあるため、コレ自体を完全にクロスブラウザにするのは難しかったりします。(evtオブジェクトのreturnValueを上書きできないのかも。。)

そもそもOperaにはonbeforeunloadが存在しませんし・・・

このハンドラからの戻り値をダイレクトに使用しなければならない場面はそう多くはありませんが、最近のWebアプリケーションでは一般的になっている編集中にページ遷移しようとするとでるメッセージ(Gmailなどで書きかけで移動するとでてくるやつ)を実現するためにはこの機能が必須になります。

ちなみにOperaの場合はステートが保存されているので、
戻るボタンを押せば編集中の内容が復帰します。

JAVASCRIPT:
  1. Event.observe(window,'beforeunload',function(e){
  2.     return e.returnValue = 'このままページを移動すると編集中の内容は保存されませんがよろしいですか?';
  3. });

のようにしたい場合、現行のPrototype.jsでは上手くいきません。

そこで、Webkitでbeforeunloadの場合に限り、Event.observeをフックすることを考えました。

以下コードです。

実用上は、Webkitの場合にはaddEventListenerを用いればよいのですが、透過的に行えたほうが自然といえば自然なので。

同様のテクニックで、Prototype.jsのカスタムイベントをよりリッチにすることができますが、それについてはまた今度。

JAVASCRIPT:
  1. if(Prototype.Browser.WebKit)(function(){
  2.    
  3.     Event._observe = Event.observe;
  4.     Event.observe=function(element,name,func){
  5.         if(/beforeunload/.test(name)){
  6.             element.addEventListener('beforeunload',function(evt){
  7.                 return func.bind(element)(evt);
  8.             });
  9.         }else{
  10.             Event._observe(element,name,func);
  11.         }
  12.     }
  13.     Object.extend(window, {
  14.         observe: Event.observe.methodize()
  15.     });
  16. })();

Javascript でHTML::Template

Filed Under (Uncategorized) by on 23-09-2008

どうも、ひろきのだいちです。こんにちは。

昨今のWeb開発ではAjaxやDHTMLを用いた大規模なプロジェクトが増えてきているようです。
大掛かりにDOMを書き換える際にまいどまいど、文字列連結やらなにやらを繰り返していたら
デザイナー/コーダとの連携などがむずかしく製作者以外、何をしているんだかわかりにくいコードができあがってしまいます。

一方、サーバサイド言語では多くのテンプレートライブラリやフレームワークが多数存在していて
phpやerubyのように埋め込みで言語を記述することができたりPerlであればTemplateToolkitやHTML::Templateを用いることでviewを分離することができたりとなにかと便利です。

TTのjavascript実装はJemplateとしてすでに存在しているようなので
HTMLTemplateをjavascriptで実装してみました。
Read the rest of this entry »

おおゆうしゃよしんでしまうとはなさけない

Filed Under (Uncategorized) by on 22-07-2008

ドット絵好きですか! こんにちは、nagです。
二次元と三次元の融合シリーズ。
今回はドラクエということでよろしくおねがいします
トイレに入ってたら思いついたので、早速撮ってきました。

新宿駅で撮ろうとしたら怒られました。
世知辛い世の中です。

1つこれをヒントにした提案があるのですが、
・階段やら棺桶やらを床面広告にして、例えば秋葉原の駅などに設置。
・あるいはUFOキャッチャーなどのプライズもので、
踏むと音が出るマット(階段なら移動時の音、棺桶なら教会での復活の音など)。
どうですか、スクエニさん!

ドット絵を、無理矢理芸術性あふれるものとして語ってみる。

Filed Under (Uncategorized) by on 01-06-2008

asakusa

ドット絵好きですか! こんにちは、id:nagraphicことnagです。
少し前になりますが、前回の「スイーツ(笑)でない女たち」でライトニングトークをさせて頂きました。

このエントリーは、
ともすれば懐古主義で片付けられてしまいそうな古きよきドット、
みんな大好きドット絵のその芸術性について、
こじつけだろうがなんだろうがとにかく語り、
ドット絵の地位向上に寄与してみようということが目的です。

早速、古典芸術の部分はぶっとばして、
1900年代に入ったあたりの話をしましょう。

20世紀に入ってからの芸術は、あえて言うなら保守的な芸術、
要するに「絵画」という枠を怒涛の勢いで越えていきます。

特に前衛芸術を語る上で外せないマルセル・デュシャンの「泉」
なんてわくわくしますね!権威主義なんてクソ食らえ!です。

そのように、たくさんの運動や主義、主張が生まれた中でも、特に抽象絵画に注目したい。
いやいやドット絵は具体ではないか、
とお考えになる方がほとんどだと思いますが、ドット絵を構成する要素に目を向けて頂きたい。

さて、ご存知の通りドット絵は正方形の集まりから構成されているわけですが、
その一つのドット絵を分解してみると、
「正方形と色」という2つの要素しかない。
私はここに、一種の抽象性を感じざるを得ないのです。

そこで、抽象絵画から派生したシュプレマティスムと新造形主義を紹介しましょう。

シュプレマティスムとはロシアのカジミール・マレーヴィチが提唱したもので、
あらゆる具体性を排除した、哲学的思想の表現。究極のミニマル。
抽象絵画の到達点とも言われる「黒の正方形」などドットそのもの。
バウハウスなどにも大きな影響を与えたことから、
大量生産、汎用性などのポップアートにも繋がるキーワードも浮かび上がる。

一方、新造形主義とはピエト・モンドリアンの理論ですが、
「赤・青・黄のコンポジション」に代表される、
色の三原色と四角形、線のみを用いた絵はみなさんもご覧になったことがあると思います。
彼の絵画の中には、「三原色、長方形、水平線、垂直線」などの制約が存在します。
ドット絵はこれにも、厳密には色の制約には沿っていませんが、
モンドリアンが提唱したような単純性にはほぼ合致しているわけです。

もちろん解釈の相違が苦しいところですが、ドット絵における抽象性とは、
構成する正方形がなにか具体的なものを表現しているわけではないし、
ドットに対しての「単なる構成要素」という確固たる認識は、
十分抽象絵画的と言って差し支えないと思う。

私は、この1900年代初頭に達成された抽象表現の再構築こそ、ドット絵なのではないかと考えます。
構成要素を打ち続け、具体性を表現していく、
しかし質量の無さ、奥行きの無さからか具体としての存在感が驚くほど希薄。
具体と抽象のいいとこ取りではなく、相殺してしまっている感のある、
そんなドット絵を超抽象絵画、あるいは抽象具体絵画と名付けたい。
(絵画、という言葉は適当でないかもしれませんが)

「ドット絵」の制作方法はコンピュータを使用したもの。
つまりオリジナルがデータである時点で、ほかの絵画とは一線を画す。
データさえあれば何度も作成が可能。さらにネガとポジの関係すら越えて、オリジナルのデータでさえ複製が可能。
具体という溶媒を介することなく、
抽象は制作者のなんらかの思想そのものをその場に昇華してくれる手段の一つと言っても過言ではない。
表現に媒体がいらず、また物質に再現したとしてもいくらでも複製が可能。
要するに金銭的価値のないアートということで、現美術界の現物第一主義、
あるいは財テクアートなどに対しての問題提起ができる部分にも注目したい。

もう少し加えるなら、現在の主な表現媒体は TVゲームなどの画面の中。
これは大衆文化に根付いたある種のポップアートと言えるかもしれないし、
ドットの連続はミニマルアートでもあるかもしれない。

さて、ここまで思いつく分だらだらと書いてみましたが、
いや〜、ドット絵は多分に芸術的だったんですね!
ということで私はその後付とも言えるドット絵の芸術性に惚れて、(ほんとーは絵が下手だから)
「ゲームで使われてる絵でしょ?」だけの認識から脱却を図るべく、
いろいろやってみようと思っているのです。

野望の会へようこそ!

Filed Under (Uncategorized) by on 22-05-2008

はじめまして。

この度野望の中の人になりかけている(なっている?) sotarokと申します。
早速ブログの更新を。

先週土曜、野望MTGに参加してきました。
ミーティングの主な内容は、

6月:先生、あのね。~黒板ライトニングトーク~:なつかしい小学校での黒板をつかったライトニングトーク

イベント告知-スイーツ(笑)でない女たち

についてです。

スイーツイベントが無事終わり(私は参加できずでしたが・・・)、
次は小学校でLT大会をやる予定なのですが、
その日程や内容についてをモツ煮込みをつまみながら話した感じです。

かなり充実したイベントになりそうです。
前の告知では6月という予定でしたが、具体的には7月中で日程を調節中です。
みなさん是非楽しみにしていてください!

さて、今日ブログを更新したかったのは、
もうただただ、↓の写真を掲載したかったからです。もうそれだけです。

これからも変な人の写真とともに、
ちょくちょくブログも更新していこうと思いますので、よろしくおねがいします!

見るだけで生産性が10倍になる気がする16の番組

Filed Under (Uncategorized, article, howto) by on 09-05-2008

どうも、おひさしぶりです。ひろきのだいちです。
テレビ番組が面白くなくなったといわれて久しいですが、
根っからのテレビ世代だった僕らとしては
昨今のテレビ番組の劣化は悲しい限りです。

それでもなお面白い番組はたくさんあると僕は思うので、簡単に紹介したいと思います。
昔の番組や終わってしまった番組もいろいろとあるんですが、この動画サイト全盛の時代なので
うまいことやってください。

Read the rest of this entry »