連載:jQuery Mobile入門

第1回 jQuery Mobileページの基本構造を理解しよう

山田 祥寛
2012/01/20
Page1 Page2 Page3

jQuery Mobileページの基本マークアップ

 HTML5ページの骨格を理解できたところで、リスト2のコードに対して、最低限のjQuery Mobileコードを加えてみよう。追加した部分は太字で表している。

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>jQuery Mobile入門</title>

<!-- (1)jQuery Mobileの動作に必要なスタイル/ライブラリをインポート -->
<link rel="stylesheet"
  href="http://code.jquery.com/mobile/1.0/jquery.mobile-1.0.min.css" />

<script type="text/javascript"
  src="http://code.jquery.com/jquery-1.6.4.min.js"></script>

<script type="text/javascript"
  src="http://code.jquery.com/mobile/1.0/jquery.mobile-1.0.min.js"></script>


</head>
<body>

<!--(2)「ページ」を定義-->
<div data-role="page">

  <!--(3)ヘッダ/コンテンツ/フッタを定義-->
  <div data-role="header">
    <h1>jQuery Mobile入門2</h1>
  </div>

  <div data-role="content">
    <p>こんにちは、jQuery Mobile!</p>
  </div>

  <div data-role="footer">
    Copyright 1998-2012, WINGS Project
  </div>

</div>

</body>
</html>
リスト2 リスト1にjQuery Mobileページに必要な要素を追加したコード

(1)jQuery Mobileの動作に必要なスタイルシート/ライブラリをインポート

 jQuery Mobileの動作には、以下のファイルが必要となる。

  • jquery.mobile-1.0.min.css(jQuery Mobile標準のスタイルシート)
  • jquery-1.6.4.min.js(jQuery本体)
  • jquery.mobile-1.0.min.js(jQuery Mobile本体)

 いずれもjQuery本家のコンテンツ・デリバリ・ネットワーク(CDN*1)で提供されているので、まずはこちらを利用させてもらうのが便利だろう(準備が不要という意味でも、レスポンスが良いという意味でも、一般的にはCDNを利用するのが有利だ)。

 なお、冒頭で述べたように、jQuery MobileはjQueryを利用したライブラリであるので、jQuery→jQuery Mobileの順でインポートすること。本稿執筆時点でjQueryの最新版は1.7.1であるが、jQuery Mobile 1.0が対応しているのはjQuery 1.6.4である点にも注意されたい。

*1 ライブラリや画像リソースなど、コンテンツ配信専門に最適されたネットワークのこと。

 もちろん、オフラインで動作を確認したいなどといったケースでは、ライブラリを手元に置いておきたいということもあるだろう。その場合は、jQuery本家サイトの[Download]ページからjQuery 1.6.4を、jQuery Mobile本家サイトの[Download]ページから「ZIP File: jquery.mobile-1.0.zip」をダウンロードすればよい(jQuery本体は、jQuery Mobileには同梱されないので要注意)。

 jquery.mobile-1.0.zipを解凍すると、jquery.mobile-1.0フォルダ配下には、以下のようなフォルダ/ファイルが用意されているはずだ。

  • jquery.mobile-1.0.js(jQuery Mobile本体)
  • jquery.mobile-1.0.min.js*(jQuery Mobile本体。最小版)
  • jquery.mobile-1.0.css(jQuery Mobile標準のスタイルシート)
  • jquery.mobile-1.0.min.css*(jQuery Mobile標準のスタイルシート。最小版)
  • jquery.mobile.structure-1.0.css(jQuery Mobileスタイルシートのコアのみ)
  • jquery.mobile.structure-1.0.min.css(jQuery Mobileスタイルシートのコアのみ。最小版)
  • /imagesフォルダ*(画像リソース)

 拡張子の前に「.min」と付いているのは、オリジナルのソース・コードからコメントや空白などを取り除いてファイル・サイズを最小にしたファイルだ。実行には「.min」付きのファイルを、ソース・コードそのものを確認する場合のみ「.min」なしのファイルを利用するとよい。/imagesフォルダは、スタイルシートから参照される一連の画像リソースを収めたものであるので、.cssファイルと同列のフォルダに配置する必要がある(要は、本番環境に必要なファイルは「*」の付いたものであるということ)。

(2)jQuery Mobileでは「data-role="page"」でページを表す

 従来のHTMLページでは、.htmlファイルがそのまま論理的なページの単位であったが、jQuery Mobileでは「data-role属性がpageである要素」が1つのページと見なされる(次の図を参照)。

 サンプルでは、「たまたま」1つのファイルに1つのページを定義しているだけだ。一般的には、「data-role属性がpageである要素」を複数列記して1つのファイルで複数のページを表すのが、よりjQuery Mobile的な書き方だ*2

*2 data-role属性は、jQuery Mobileのさまざまな機能を有効にするために、この後もたびたび登場するので、きちんと覚えておいてほしい。

1つのファイルに複数のページも可

 「1ファイル複数ページ」パターンを採用することで、リクエストを1つにまとめ、通信効率を向上できる、その後のページ遷移がスムーズになる、などのメリットを享受できる。もちろん、その分、ロードされる文書ツリーが大きくなるというデメリットもあるので、ページの分け方は文書ツリーのサイズも勘案しながら決めていくべきだろう。

[Note]独自データ属性

 data-xxxxx属性は、HTML5で追加されたグローバル属性*3の一種で、主にJavaScript(や、そのライブラリ)にパラメータ情報を渡すのに利用する――いわゆる「自由に利用できる属性」だ。独自データ属性、カスタム・データ属性、などと呼ばれることもある。jQuery Mobileでは、独自データ属性を駆使してページにさまざまな効果や機能を付与しているのが特徴だ。

*3 全てのタグで利用できる属性のこと。代表的なグローバル属性として、id、class、style、titleなどがある。

(3)ページの配下にはヘッダ/コンテンツ/フッタを配置する

 ページの配下には、ヘッダ/コンテンツ/フッタといった要素を配置できる。それぞれ該当する要素にヘッダ/コンテンツ/フッタとしての機能を与えるのも、data-role属性の役割だ。ヘッダ/コンテンツ/フッタ要素に対して、それぞれ「data-role="header"」「data-role="content"」「data-role="footer"」という記述を追加すればよい。

 以上をまとめると、jQuery Mobileのページは以下のようなマークアップで表現できるというわけだ。ただし、ヘッダ/フッタは必要なければ省略しても構わない。

<div data-role="page">
  <div data-role="header"></div>
  <div data-role="content"></div>
  <div data-role="footer"></div>
</div>
jQuery Mobileでページを表現する場合のマークアップ

 これでjQuery Mobileを利用した最も小さなアプリケーションの完成だ。以下は、リスト2の結果をAndroid環境で確認したものである。

サンプルの実行結果(Android 2.3環境で確認したもの)

 jQuery Mobile標準のスタイルシートが自動的に適用され、スマートフォンらしいデザインでページが表示されている。

[Note]セクション要素

 HTML5の記述にのっとるという意味では、<section>、<header>、<footer>などのセクション関連要素を使って、ページ/ヘッダ/フッタを表現してもよいだろう。以下は、サンプルをセクション関連要素で書き換えたものだ(結果は、先ほどと同じように表示される)。

<section data-role="page">

  <header data-role="header">
    <h1>jQuery Mobile入門2</h1>
  </header>

  <div data-role="content">
    <p>こんにちは、jQuery Mobile!</p>
  </div>

  <footer data-role="footer">
    Copyright 1998-2012, WINGS Project
  </footer>

</section>
セクション関連要素によるマークアップ(<body>要素内を抜粋)

 <div>要素を列挙する従来の書き方よりも、タグ・レベルで構造が明確になるため、今後は上のような書き方が主流となってくるはずだ。本稿では、jQuery Mobile本家サイトの例に沿って、<div>要素による記述を優先しているが、セクション関連要素による記述にも慣れておくことをお勧めしたい。

補足:動作確認にはエミュレータを活用しよう

 jQuery Mobileアプリケーションを本格的に開発するならば、スマートフォンの実機環境を用意しておくのが望ましいが、いちいちアプリケーションをIIS/ApacheのようなHTTPサーバに配置しなければならないし、そもそも開発マシンにスマートフォン実機にと、動作確認のたびにいちいち環境を切り替えなければならないのは面倒だ。

 開発過程でのちょっとした表示/動作の確認であれば、それぞれのプラットフォームに用意されたエミュレータを利用するのが簡便であろう。

 もっとも、iPhone SDKはWindows対応していないので、Windows環境であれば、「iBBDemo3」(実行にはAdobe AIRランタイムが必要)のようなフリーのエミュレータを利用してもよいかもしれない。

 以下は、Android SDKに同梱されているエミュレータで、サンプルを確認した結果である。

Androidエミュレータでの実行結果

 次のページでは、先ほどのサンプルを複数ページに対応させる方法を説明する。


 INDEX
  [連載]jQuery Mobile入門
  jQuery Mobileページの基本構造を理解しよう
    1.jQuery Mobileとは?/HTML5ページの基本マークアップ
  2.jQuery Mobileページの基本マークアップ
    3.jQueryアプリケーションを複数ページに対応する

インデックス・ページヘ  「連載:jQuery Mobile入門」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)
- PR -

注目のテーマ

業務アプリInsider 記事ランキング

本日 月間
ソリューションFLASH