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


モバツイの中の人
(株)想創社(そうそうしゃ)社長
人の良いジョンカビラと言われます。
AMN sponsor rolls
ツイッターやるなら
for iPhone App
Google Friend Connect
このカテゴリ[Web系]の最新30件
Web Creation Awardsにノミネートされました。 携帯Webのクッキー利用について調べてみたメモ【update】 twitterドラマと今後のツイッター デジハリの杉山学長賞をいただきました。 日経電子版を流行らせる一つの思いつき 商品の良さとリンクは、140文字で伝えなさい ツイートの流速とremoveの関係性 セミッターをアップデートしてテストしてみた報告 UStreamを見ながら書いたつぶやきの翌日の反応のがっかり感について。 ネット配信 vs 紙 vs 放送 Twitterに流れるツイートの半分は英語以外で、日本語がトップ デジハリ同窓会が、とても印象的だった件 twitterは、負からの復活の活動に向いているメディアである。 twitterおすすめユーザー、フォロワー20万人の力。 ワーナー作品のオンデマンド配信サービス「ワーナーオンデマンド」 動画ベーススライドプレゼンよりも、スライドベース動画プレゼンの方が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アドレスが変わる罠
[このカテゴリをもっと見る]
F's Garage関連
Powered by
Movable Type
■お知らせ
第8回 Web Creation Awardsにノミネートされました。7/9までの一般投票に是非ご協力ください!
投票はこちら

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件
Web Creation Awardsにノミネートされました。 モバツイランドとモバツイストア もう一つのソフトバンク新製品発表会