SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

japan.internet.com翻訳記事

JavaScriptとjQueryでデスクトップアプリに負けない操作性のWebアプリケーションを作る

ドラッグアンドドロップ、マウス選択、パン、ズームなどができるWebアプリケーション

アプリケーションの例

 ここまでは個々の対話要素を1つずつ見てきましたが、今度はそれらをすべて組み込んだ、総合的なアプリケーションを作成してみましょう。図6と図7は、「Magic, The Gathering」というカードゲーム用の架空のダッシュボードです。この対話ダッシュボードはブラウザウィンドウの全面を使っており、そこでユーザーがカードを並べ替えたり、カードを何枚か選択してグループ化したり、ズームして詳細を見たり、デッキ全体を見渡しながらダッシュボードの端から端までパンしたりすることができます。動いているところを見た方がずっと分かりやすいので、こちらのYouTubeビデオで確認してください。

図6 「Magic, The Gathering」用の架空のダッシュボード:カードをシャッフルしているところ。
図6 「Magic, The Gathering」用の架空のダッシュボード:カードをシャッフルしているところ。
図7 「Magic, The Gathering」用の架空のダッシュボード:ズームレベルを変えてカードをグループ分けしているところ。
図7 「Magic, The Gathering」用の架空のダッシュボード:ズームレベルを変えてカードをグループ分けしているところ。

 実際のコードは、これまで見てきたコードを合成しただけのものです。もう少しおもしろくするために、[Shuffle]ボタンをクリックすると、animate()メソッドによってスムーズなアニメーションでカードがランダムに並べ替えられるようにしましょう。

$('#shuffleCards').click(function() {
  // reset panning
  $('#universe').css('top', 0).
                 css('left', 0).
                 css('bottom', 0).
                 css('right', 0);

  var maxWidth = Math.round($('#container').width()*0.3) ;
  var maxHeight = Math.round($('#container').height()*0.3);

  $('.model').each(function(model) {
    var top = Math.round(
      $('#container').height() / 3 +
      Math.random()*maxHeight*2 - maxHeight);
    var left = Math.round(
      $('#container').width() / 3 +
      Math.random()*maxWidth*2 - maxWidth);

    var movement = {'top': top, 'left': left};
    $(this).animate(movement, 1000);
  });    
});

これからの課題

 本稿では、静的なWebページを魅力的な対話型のアプリケーションに変換する方法を紹介しました。JavaScriptとjQueryのDOM操作関数を利用して、従来はもっぱら重たいクライアントアプリケーションのものとされていた複雑な対話を再現しました。このような対話は、今やブラウザウィンドウという軽量な環境でも実現できるようになったのです。

 マウスジェスチャやキーボードイベントのバインドなど、まだ取り上げていない機能が数多くあります。自然な流れで考えれば、次のステップは、このデモインターフェースを発展させて、完全なデスクトップ/レイアウトマネージャにすることです。そのためには、リアルタイムのフィルタリング、レイアウト、データミューテーション、さらには外部データプロバイダとのやり取りをするモデルが必要になるでしょう。私はこの目的でオープンソースプロジェクト「Rhizosphere」を立ち上げました。このプロジェクトでは、JavaScriptによる究極の対話型エクスペリエンスと斬新なデータ視覚化を実現することを目指しています。

この記事は参考になりましたか?

連載通知を行うには会員登録(無料)が必要です。
既に会員の方はを行ってください。
japan.internet.com翻訳記事連載記事一覧

もっと読む

この記事の著者

japan.internet.com(ジャパンインターネットコム)

japan.internet.com は、1999年9月にオープンした、日本初のネットビジネス専門ニュースサイト。月間2億以上のページビューを誇る米国 Jupitermedia Corporation (Nasdaq: JUPM) のニュースサイト internet.comEarthWeb.com からの最新記事を日本語に翻訳して掲載するとともに、日本独自のネットビジネス関連記事やレポートを配信。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

Riccardo Govoni(Riccardo Govoni)

2003年からJ2EE開発者としてイタリアの金融サービス会社に勤務。ソフトウェアアーキテクトとして従来の銀行システムのWebフロントエンドの設計に従事。物理学修士。SCJP(Sun Certified Java Programmer)資格を持つ。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/3559 2009/03/06 14:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー