愛車:マツダアテンザ
Webを中心とした、ビジネス&テクノロジーに関する思いつき
by F-shin
[ このサイトについて ] [ F-shinについて ] [ トップ ]
author:えふしん
photo_20.jpg
藤川真一について


モバツイの中の人
人の良いジョンカビラと言われます。ソフト哲学者を目指します。
AMN sponsor rolls
応援します!
ツイッターやるなら
for iPhone App
Google Friend Connect
このカテゴリ[Web系]の最新30件
ワーナー作品のオンデマンド配信サービス「ワーナーオンデマンド」 動画ベーススライドプレゼンよりも、スライドベース動画プレゼンの方がWeb向き。 mixiアプリやるならAmazon EC2 モバツイが月間1億PV到達の見通し ツイッターとはなんぞや?のわかりやすい回答 ツイッターか?ブログか?思考の整理学 【Best Mobile Based Twitter App】モバツイッターがTOP5にノミネートされました。投票のご協力を!【敵はtweetie2】 【Best Mobile Based Twitter App】モバツイッターのOpen Web Awardsへの投票のご協力をお願いします! モバツイッターが日経ビジネスアソシエに掲載されました。 ネットビジネスで商標は大事です。 twitterによって世界が集約され心の戦争が起きる おまとめマンxTwitterキャンペーン セカイカメラは、21世紀のネットスケープになるか?! 「食事中なう」が無意味だと?あれ?ライフログってなんだか意味わかってる? 岡田有花さんに取材された! EC2のロードバランサーのIPアドレスが変わる罠 twitterの「つぶやき」の有効期間は2分 究極のスモールスタートの方法 自宅サーバからEC2へ 技術や用語に興味ないユーザーを「一般ユーザー」と括るのキケン アマゾンEC2 ナイトセミナ 第 2 回に出演します。 モバツイッターの政治家アカウント一時サスペンドの話 【twitter話】ネットを使う人には2種類のタイプがある ビバ☆ヒウィッヒヒーは、ネットコミュニケーションの問題をズバリ突いている うっかりしてたらモバツイの延べ登録ユーザー数が10万人を超えていました。 POPitがカラメルの商品紹介&アフィリエイトに対応! twitterは「みんなのもの」じゃない。 入力フォームの美学と現実 日本人にとって一番使われてるハッシュタグ ツイッターはステートレスなコミュニケーションでありつづけて欲しい。 夜のプロトコル「NO_04「We love twitter & tumblr.」~あの娘、ぼくがリブログ決めたらどんな顔するだろう~」に参加した。
[このカテゴリをもっと見る]
F's Garage関連
Powered by
Movable Type
■お知らせ
モバツイッターが、Open Web AwardsのBest Mobile Based Twtter Appを受賞しました!

November 28, 2007

Adobe LabsのSpry Frameworkのサイトを見てたら「Unobtrusive Scripting」という、なんとも発音できない謎の単語があったので探してみたら、羽田野太巳さんの記事が見つかって、そういえばWeb標準の日々のJavaScriptトラックの司会をしてたときに、羽田野さんのプレゼンで、この言葉使ってたんですね。なんと僕は横で聞いてたらしい。

itpro:DOMから始めるJavaScriptモダン・スクリプティングより
そこで,近年,Unobtrusive Scriptingと呼ばれるスクリプティングの考え方が注目されるようになりました。"Unobtrusive"は,"でじゃばらない","控え目な","つつましい"といった意味を持っています。

詳しくは上記URLを見てもらうとして、簡単に書いておくと、SpryFrameworkとか、はてなスターとか、google mapsとか、みんなそうなんだけど、HTML上になるべくJavaScriptを書かないで、JavaScriptによるリッチな動作を実現する設計方法です。

具体的には、外部に置かれたJavaScriptファイルから、HTMLソースコード上の要素に結びつけるような形で操作する形になります。

例えば、以下は、マイカラメルのログインページで書いているSpryフォーム検査Widgetによるソースコードの抜粋です。

<script src="/user/javascripts/SpryAssets/SpryValidationTextField.js"
 type="text/javascript" charset="UTF-8"> </script>

<span id="spryUserName">
<input name="txtUserName" tabindex="1" type="text" id="txtUserName" style="width:170px;" />
<span class="textfieldRequiredMsg">値を指定する必要があります。</span>
<span class="textfieldMinCharsMsg">最小文字数に達していません。</span>
</span>

<script type="text/javascript">
var sprytextfield1 = new Spry.Widget.ValidationTextField("spryUserName", "none", {isRequired:false});
</script>


span要素のところに、入力フォームの値検査のエラーメッセージが書いてあります。こいつは通常CSSで不可視になっていて、入力エラーが発生したときにSpryフォーム検査WidgetのJavaScriptが自動的に表示に切り替えてくれます。

このソースコードの範囲ではイベントハンドラのようなコードは一切書かれていません。

ややこしいJavaScriptのコードは、Spry Widgetの外部JavaScriptに書いてあります。ここに値を動的に入力をチェックするコードが書かれています。

そして、エラー表示のデザインは外部CSSに定義されています。

ということで、Adobeが作った複雑なJavaScriptを僕らは一切意識することなく、上記のコードだけで動的な入力チェックを組み込むことができます。

このコードで書かれているJavaScriptは、最後の方に書いてある、

・どの要素が入力チェックの対象なのか?
・どういう値チェックをするのか?

という設定だけが書かれています。

つまり、Spryフォーム検査Widgetを導入する場合は、

1.所定の構造spanで囲まれたフォーム要素をHTMLに記述し、発生しうるエラーメッセージを書く。(多分、spanじゃなくても良いかと。)
2.Spryフォーム検査のjavascriptを読み込む処理を書く。
3.フォームとエラーチェック内容とを結びつけるJavaScriptコードを一行書く。

以上で完了です。

このような設計で作られているJavaScriptのメリットは、

1.HTMLの保守性が高まる。
  (特にサーバサイド生成がシンプルになる)
2.JavaScriptオフのブラウザで動作できるように作れる。
 (少なくともJavaScriptがオフだと何も表示されないようなものは作らないようになる。)
3.JavaScriptの再利用が容易になる。

と、昔々、VBあたりで言われていたコンポーネント志向を思い出しました。サーバサイドですが、ASP.netのコードビハインドもこういう考え方ですかね。

さらにWebらしいメリットとしては、はてなスターのような外部サービスとして提供されている機能を簡単に組み込めたり、JavaScriptが使えるブラウザ、そうでないブラウザの対応も簡単になります。

AdobeのSpry Frameworkも、この考えで設計されているので、JavaScriptが使えないユーザーには最低限必要なUIを提供し、JavaScriptがオンのユーザーには、リッチインターフェースなUIを提供することができます。

デバイスや、ブラウザのバージョンによって、最低限の動作を確保しつつ、新しいブラウザのユーザーには体験できるレベルに差を付けつることを、「Progressive Enhancement」と呼んだりするようで、羽田野さんの記事にも、Spry Framework1.6のドキュメントにも書いてありました。


こういう設計手法自体は、最近のJavaScriptをいじってる人は、特別に目新しいわけではありませんが、こう明示化されると新鮮に見えるものですね。

Javascriptによるインラインウインドウの研究で書いた、tumblrライクにモバツイッターへ投稿できるブックマークレットのユーザインターフェースで使っているインラインウインドウのJavaScriptでも、そこそこ意識されていると思います。素で作っていたので、ちゃんと意識ができてるわけではないのですが。

■同じカテゴリ[Web系]のエントリー
<<前の記事 オープンソーシャル前夜にブログの可能性を考える
>>次の記事 非モテのクリスマス特集をやりたかった。
■このblogの書き込み最新3件
グッドデザイン賞に出てたおしゃれなサイクロン掃除機がなんと半額以下。 SEOには、運用のSEOと設計のSEOの2つのフェーズがある。 ワーナー作品のオンデマンド配信サービス「ワーナーオンデマンド」