
パターンとライブラリで作るAjaxおいしいレシピ(2)
prototype.jsでYouTubeをインクリメンタルサーチ
アークウェブ株式会社
志田 裕樹
2007/10/4
モデル:前回のキーワードと異なればJSONPで検索
次に、モデルクラスを見てみましょう。
youtube.LiveSearch = Class.create({ |
- - PR -
このクラスはメンバ変数として、前回のキーワード「previousKeyword」を持っています。
searchメソッドで、今回のキーワードと前回のキーワードが異なったら、GData YouTube APIの動画検索用URLを作り、JSONscriptRequestクラスを使って、JSONPの処理を行っています。
URLを作るために、String#interpolate()を使用していますが、これについてはビューのところで解説します。
| 参考 |
| ・YouTubeの動画検索APIの仕様:YouTube Data API Developer's Guide ・GDataのJSONPの仕様:Google Data APIs (Beta) Developer's Guide - Using JSON with Google Data APIs |
ビュー:prototype.js 1.6.0 rc0のテンプレート機能拡張
最後にビューのコードを見てみます。
youtube.LiveSearchView = { |
Googleから受け取るJSONの形式は大まかに次のようになります。
{feed: |
1.6.0 rc0では、1.5.0にあったTemplateクラスの機能と同等の機能が、Stringクラスのinterpolate()メソッドとしても利用できるようになりました。
update()メソッドでは、受け取ったJSON内の動画配列それぞれに対して、テンプレートを使って実際に表示されるHTMLを生成し、最終的にそれらでsearch_resultsの内容を更新しています。
show()メソッドでは、SWFObjectを使って受け取ったvideo要素からswfファイル(YouTubeで主に使われているFlash動画の実行ファイル)を<div id='player'>の中に埋め込んだ後、LightWindowの「Inline Content」方式で、その内容を描画させています(参考)。
デザインパターン・ライブラリ・MVCは便利!
再度、今回使用したAjaxデザインパターンをまとめます。
| 表 今回のサンプルで使用したAjaxデザインパターン(再掲) | |
| パターン名 | 説明 |
| Live Searchパターン | ユーザーが検索条件を入力している間も随時検索結果を表示 |
| Submission Throttlingパターン | イベントが発生するたびにサーバに情報を送信するのではなく、一定の間隔を置いて送信することでサーバの負荷や回線の負荷を軽減 |
| Popupパターン | 既存のコンテンツに一時的に前面にレイヤーを重ねて、レイアウトを変更せずに追加情報などを表示したり、ちょっとした作業領域を提供できる |
これ以外に、前回紹介した、「On-Demand Javascriptパターン」「Periodic Refreshパターン」「Page Rearrengementパターン」も使用されています。
パターンを組み合わせていけば、今回のようなサンプルアプリもかみ砕いて理解できますし、外部APIやライブラリをフル活用すればだいぶ短く書くことができると感じていただけたでしょうか?
また、MVCに役割を分担すれば可読性を保ちながら、どんどん機能拡張ができることを、イメージしていただけたら幸いです。
次回も、また新しいAjaxデザインパターンやAjaxライブラリを使い楽しいサンプルをご紹介できればと思っています。
今回のソースはこちらからダウンロードできます(こちらのアプリケーションは2007年10月に、当時のYou TubeのWeb APIを使って作成したものです。その後、You Tube側の仕様の変更などによりアプリケーションが動作しなくなる場合もありますが、あらかじめご了承ください。また、サンプルのライセンスはGPL 2となります)。
■ 参考文献
- 『Ajaxデザインパターン ― ユーザビリティと開発効率の向上のために』 オライリー・ジャパン
■ @IT関連記事
| 古くて新しいAjaxの真実を見極める 「Webインターフェイスの新しい手法」「画期的なWebアプリケーションの仕組み」であるとして開発者たちの人気を集めるAjaxとは何なのか、その真実を見極めてみよう 「Web
Client & Report」フ ォーラム 2005/8/2 |
||
Ajax うきうき Watch
Ajaxという流行技術の定義を明確にしながら、Ajaxの動向からうきうきするような面白いもの、確実に押さえておきたいものを厳選してお届けしていく
- 第1回 Webアプリのユーザビリティを改善しまくるAjax
- 第2回 Ajax、それはWeb 2.0へと続く道
- 第3回 どんなに無茶をやっても「それもありかな」なAjax
- 第4回 自動車業界のAjaxを活用したキャンペーンを目撃せよ
- 第5回 “どのブラウザでも動くAjax”を共有財産として育てよう
- 第6回 プロプライエタリ2.0から考えるAjaxの公開/非公開部
- 第7回 メモリリークが小さくなったGoogle Maps APIの新版
- 第8回 “CGUI” 消費者が作り出すUIの時代突入
- 第9回 巨大化するAjaxライブラリをシンプルにする新たな流れ
- 第10回 地図のように年代を移動できるMITのAjax歴史年表
- 第11回 JSONがRFCになり、どんどんこなれるAjaxサービス
- 第12回 サーバが通信を開始できるComet活用Webチャット
- 第13回 オンラインゲームで検索精度を上げるGoogleの巧みさ
- 第14回 IE7とFirefox 2への利用者の大移動は起こるか?
- 第15回 グーグル検索エンジンを特定ジャンル専用に、Co-op
- 第16回 帯域やデバイス領域をフル活用させる“モバイルAjax”
- 第17回 新しい技術を模索するYahoo!、Google、MS
- 第18回 Ajaxの高度な使用例、Yahoo! pipes
- 第19回 Apollo参戦でウィジェット開発者の争奪戦が激化
- 第20回 Twitter登場で注目されるRTコミュニケーションツール
- 第21回 過熱するTwitterブームとMicrosoftのマッシュアップ
- 第22回 iPhoneのAjax戦略、そして今日もWeb APIは増加する
- 第23回 Ajax開発者がヒーローになるとき、それはいま!
- 第24回 携帯電話への拡張を進めるGoogleとWeb隠しコマンド
- 第25回 Ajaxで加速!? エンタープライズ2.0とWebOSの普及
- 第26回 「言葉」を超えた説得力を持つAjaxの存在感と広がり
- 第27回 ゲームから読み解く、俺スクリプト時代の知的な挑戦
- 第28回 マッシュアップ元年が終わり、2008年はどうなる?
- 第29回 Twitterやクラウドへも分岐するAjax/Web APIの道
- 第30回 Ajaxはじめて物語、そしてサーバでも動くJavaScript
- 第31回 新ブラウザ戦争はon fireだがJavaScriptはoffのナゾ
- 第32回 Google App EngineはAjaxへのハードルを下げるか?
- 最終回 Pure JavaScriptの動画再生やRPGも好きでした
JavaScriptプログラミング再入門
Ajax全盛のいま、オブジェクト指向ベースのJavaScript知識は不可欠。過去を振り返りつつ、まずは最新開発事情をチェック
- 第1回 JavaScriptの復権
- 第2回 JavaScriptの関数をマスターしよう
- 第3回 JavaScriptにおける変数の宣言とスコープ
- 最終回 JavaScriptでオブジェクト指向プログラミング
| プロフィール:志田 裕樹(しだ ゆうき) 株式会社アークウェブ取締役。Webシステムのシステムエンジニアとして開発に従事している。 Ajax、Ruby on Rails等を使用したWeb 2.0的システムの開発実績を持つ。 オープンソースのECサイト用CMS、Zen Cartの日本語コミュニティでコミッターとして活動している。 |
| 1-2-3 |
| INDEX | ||
| パターンとライブラリで作るAjaxおいしいレシピ(2) prototype.jsでYouTubeをインクリメンタルサーチ |
||
| Page1 今回のサンプルはYouTubeの新APIを使う サンプルで体験! インクリメンタルサーチとは? 今回のサンプルで使う3つのAjaxデザインパターン MVCそれぞれの役割を確認 |
||
| Page2 7つのJavaScriptファイルを呼び出すHTML コントローラー:prototype.js 1.6.0 rc0の新機能を使用 |
||
| Page3 モデル:前回のキーワードと異なればJSONPで検索 ビュー:prototype.js 1.6.0 rc0のテンプレート機能拡張 デザインパターン・ライブラリ・MVCは便利! |
||
| リッチクライアント&帳票 全記事一覧へ |
TechTargetジャパン
- 次のモバイルアプリはどのフレームワークで作る? (2012/5/24)
スマホアプリの開発を容易にするJavaScriptのフレームワークが続々と増えている。それぞれの良さや仕組み、何がどこまでできるのかを徹底解剖する - 「LESS&専用エディター」でCSSをシンプルに書こう (2012/5/23)
「LESS」はCSS初心者に向けた、シンプルなライブラリだ。「LESS」で、変数などのプログラミングの基礎的な考え方もCSSで学ぼう - 学校が世界一のデジタル環境になったら (2012/5/18)
授業はアーカイブに蓄積され、家からも見られる。家族が授業テーマのアイデアを出す。そんな姿が実現されるかもしれない - 1000万ドル調達も夢じゃないクラウドファウンディング (2012/5/15)
クラウドファンディングは、寄付型でも投資型でもない「購入型」が主流。商品を“開発する前に販売”して開発費用を集める逆転のシステムだ
|
|

