SlideShare una empresa de Scribd logo
1 de 32
Descargar para leer sin conexión
はじめてのjQueryMobile
      ~初級編~
        2012.2.10
     Ichiro Yamamoto




           1
自己紹介


               山本一郎(ヤマモトイチロウ)
               会社:クラスメソッド株式会社
               所属:開発部モバイルイニシアチブグループ(通称モバチブ)
               仕事:UIデザイン/ディレクション全般(たまに実装)


最近書いてるのでちょっと宣伝・・・


 Flash BuilderでiOSアプリを作る(シーズン1)
              【第1回】『Apple iOS Developer Programへの登録(前編)』
              【第2回】『Apple iOS Developer Programへの登録(後編)』
              【第3回】『証明書ファイルの作成(Mac編)』


記事はクラスメソッド開発部のブログで・・・
http://dev.classmethod.jp/author/yamamoto/


                                 2
jQueryMobileって?


   スマフォ向けWebサイトを
   作るためのフレームワーク
    ・無償。JavaScriptベース。jQueryと合わせて利用する。
    ・HTML5に独自の属性を記述するだけの簡単コーディング。
    ・最初からタッチ操作向けのパーツが色々と揃っている。
    ・幅広いプラットフォーム/ウェブブラウザで動作する。
    ・PCやタブレットで見てもそれらしい見栄えと振る舞い。


    Mobile Graded Browser Support   jQueryMobile Gallery
    http://jquerymobile.com/gbs/    http://www.jqmgallery.com/


                              3
jQueryMobile




        まずは試してみよう




               4
準備を整える

 ・jQuery & jQueryMobile
  http://jquerymobile.com/download/


 ・コーディングツール
   デザイナーさん・・・ DreamWeaver など
   エンジニアさん・・・ Eclipse + Aptana など
   職人さん・・・・・・ テキストエディタ など


 ・ウェブブラウザ
   Safariがおすすめ。 PC上でプレビューしながら開発していきます。
   ※Chromeを使用する場合はちょっとした小細工が必要です。
   http://www.finefinefine.jp/web/jquery/kiji861/


   ※実機で動作確認をする際は、WWW上にウェブサーバーを用意しましょう。




                              5
サンプルコード


    MyMobileSite
     img
        thumbnail.png
     practice1.html
     practice2.html
     index.html

  サンプルコードは下記からダウンロードできます。
  http://dev.classmethod.jp/etc/first-meet-jqm/



                             6
jQueryMobileを読み込む
index.html
<!DOCTYPE html>
<html lang="ja">
<head>
   <meta charset="utf-8">
   <title>MyMobileSite</title>
   <link rel="stylesheet" href="http://code.jquery.com/mobile/1.0/jquery.mobile-1.0.min.css" />
   <script src="http://code.jquery.com/jquery-1.6.4.min.js"></script>
   <script src="http://code.jquery.com/mobile/1.0/jquery.mobile-1.0.min.js"></script>
</head>


headタグ内に jQuery と jQueryMobile を読み込みます。
読み込み方には「外部参照」と「内部参照」の2つがありますが、今回はお手軽な「外部参照」を

使ってみましょう。このスニペットは jQueryMobileの公式サイトで公開されています。


            jQueryMobile は jQuery のプラグインとして動作するから、
            jQuery→jQueryMobileの順で読み込んでおこう。

                                                 7
ページの基本構成

           3つの領域で1つのページを構成します。

           <ヘッダーエリア>
           ページタイトル、コントロールを配置する領域

           <コンテンツエリア>
           文章や画像など、コンテンツの配置にする領域

           <フッターエリア>
           メニューを配置するための領域




   なんだかiPhoneアプリの画面レイアウトに良く似てますね。
   必要に応じてヘッダーやフッターは取り除くことも出来るよ。

               8
ページの基本構成
             index.html
             <body>
             <div data-role="page">
                 <div data-role="header">
                        <h1>ヘッダーエリア</h1>
                 </div>
                 <div data-role="content">
                        <h2>コンテンツエリア</ h2 >
                        <p>Lorem Ipsum is simply dummy text of the… </p>
                 </div>
                 <div data-role=“footer”>
                        <h4>フッターエリア</h4>
                 </div>
             </div>
             </body>




   divタグの属性に data-role =“要素名”を追加するだけで、
   jQueryMobileがそれぞれの領域に役割を持たせてくれます。

                      9
ページを追加する
           index.html
           <div data-role="page">
                  <div data-role="header">
                              <h1>ヘッダーエリア</h1>
                  </div>
                  <div data-role="content">
                              <h2>コンテンツエリア</ h2 >
                              <p>Lorem Ipsum is simply dummy text of the… </p>
                  </div>
                  <div data-role="footer" >
                              <h4>フッターエリア</h4>
                  </div>
           </div>
           <div data-role="page">                                      丸っと複製
                  <div data-role="header">
                              <h1>ヘッダーエリア</h1>
                  </div>
                  <div data-role="content">
                              <h2>コンテンツエリア</ h2 >
                              <p>Lorem Ipsum is simply dummy text of the… </p>
                  </div>
                  <div data-role="footer" >
                              <h4>フッターエリア</h4>
                  </div>
           </div>




   1つのHTMLの中に複数のページを持たせることが出来るんだね。


                          10
ページを遷移させる
            index.html
            <div data-role=“page” id=“page1”>
                  <div data-role="header">
                            <h1>ページ1</h1>
                  </div>
                  <div data-role="content">
                            <h2>コンテンツエリア</ h2 >
                            <p>Lorem Ipsum is simply dummy text of the… </p>
                            <a href=“#page2”>次ページ</a>
                  </div>
                  <div data-role="footer" >
                            <h4>フッターエリア</h4>
                  </div>
            </div>
            <div data-role="page“ id=“page2”>
                  <div data-role="header">
                            <h1>ページ2</h1>
                  </div>
                  <div data-role="content">
                            <h2>This is second page!</ h2 >
                            <p>Lorem Ipsum is simply dummy text of the… </p>




   遷移したいページに id=“ページID”を追加して、そのIDへの
   アンカーリンクを張るだけでページ遷移が出来上がりました。

                        11
ページを遷移させる2
              index.html
              <div data-role=“page” id=“page1”>
                   <div data-role="header">
                             <h1>ページ1</h1>
                   </div>
                   <div data-role="content">
                             <h2>コンテンツエリア</ h2 >
                             <p>Lorem Ipsum is simply dummy text of the… </p>
                             <a href=“#page2” >次ページ</a>
                   </div>
                   <div data-role="footer" >
                             <h4>フッターエリア</h4>
                   </div>
              </div>
              <div data-role="page“ id=“page2” data-add-back-btn="true">
                   <div data-role="header">
                             <h1>ページ2</h1>
                   </div>
                   <div data-role="content">
                             <h2>This is second page!</ h2 >
                             <p>Lorem Ipsum is simply dummy text of the… </p>




   遷移先のページに data-add-back-btn=“true”の属性を追記
   したら自動的にヘッダーに Backボタン が表示されました。

                         12
ページを遷移させる3
             index.html
             <div data-role=“page” id=“page1”>
                  <div data-role="header">
                          <h1>ページ1</h1>
                  </div>
                  <div data-role="content">
                          <h2>コンテンツエリア</ h2 >
                          <p>Lorem Ipsum is simply dummy text of the… </p>
                          <a href=“#page2” >次ページ</a>
                          <a href=“practice.html”>練習ページ</a>
                  </div>
                  <div data-role="footer" >
                          <h4>フッターエリア</h4>
                  </div>
             </div>
             <div data-role="page“ id=“page2” data-add-back-btn="true">
                  <div data-role="header">
                          <h1>ページ2</h1>




   参照先に別ファイルを指定して動的に読み込むこともできます。
   イメージは index.html に別ファイルが取り込まれる 感じです。

                       13
ページを遷移させる4
             index.html
             <div data-role=“page” id=“page1”>
                  <div data-role="header">
                          <h1>ページ1</h1>
                  </div>
                  <div data-role="content">
                          <h2>コンテンツエリア</ h2 >
                          <p>Lorem Ipsum is simply dummy text of the… </p>
                          <a href=“#page2” >次ページ</a>
                          <a href=“practice.html” data-ajax=“false”>練習ページ</a>
                  </div>
                  <div data-role="footer" >
                          <h4>フッターエリア</h4>
                  </div>
             </div>
             <div data-role="page“ id=“page2” data-add-back-btn="true">
                  <div data-role="header">
                          <h1>ページ2</h1>




   もし全く独立したHTMLファイルへ遷移したい場合は、
   data-ajax=“false”で非同期処理を切る必要があります。

                       14
ボタンを作る
              index.html
              <div data-role=“page” id=“page1”>
                   <div data-role="header">
                            <h1>ページ1</h1>
                   </div>
                   <div data-role="content">
                            <h2>コンテンツエリア</ h2 >
                            <p>Lorem Ipsum is simply dummy text of the… </p>
                            <a href=“#page2” data-role=“button”>次ページ</a>
                            <a href=“practice.html” data-role=“button”>練習ページ</a>
                   </div>
                   <div data-role="footer" >
                            <h4>フッターエリア</h4>
                   </div>
              </div>
              <div data-role="page“ id=“page2” data-add-back-btn="true">
                   <div data-role="header">
                            <h1>ページ2</h1>




   <a>タグに data-role=“button” を追記してボタンとしての
   役割を与えてみました。それらしい見た目に変わってますね。

                        15
リストを作る1
              practice.html
              <div data-role="page" id="practice" data-add-back-btn="true">
                  <div data-role="header">
                         <h1>練習ページ</h1>
                  </div>
                  <div data-role="content">
                         <ul data-role="listview">
                                     <li><h3>リストアイテム</h3></li>
                                     <li><h3>リストアイテム</h3></li>
                                     <li><h3>リストアイテム</h3></li>
                         </ul>
                  </div>
              </div>




   ulタグに data-role=“listview”を追記するとこんな感じに。
   ※ olタグ(番号付きリスト)にも使えます。

                       16
リストを作る2
           practice.html
            <div data-role="page" id="practice" data-add-back-btn="true">
                 <div data-role="header">
                          <h1>練習ページ</h1>
                 </div>
                 <div data-role="content">
                          <ul data-role="listview">
                                        <li><a href="#"><h3>リストアイテム</h3></a></li>
                                        <li><a href="#"><h3>リストアイテム</h3></a></li>
                                        <li><a href="#"><h3>リストアイテム</h3></a></li>
                          </ul>
                 </div>
            </div>




   さらに aタグで括るとリンク付リスト に早変わり。
   それっぽいアイコンまで付いてきました。

                      17
リストを作る3
            practice.html
            <ul data-role="listview">
                 <li><a href="#">
                         <img src="img/thumbnail.png"/>
                         <h3>リストアイテム</h3>
                         <p>ディスクリプション</p>
                 </a></li>
                 <li><a href="#">
                         <img src="img/thumbnail.png"/>
                         <h3>リストアイテム</h3>
                         <p>ディスクリプション</p>
                 </a></li>
                 <li><a href="#">
                         <img src="img/thumbnail.png"/>
                         <h3>リストアイテム</h3>
                         <p>ディスクリプション</p>
                 </a></li>
            </ul>




   さらに imgタグを加えるとサムネイル画像 が付きました。
   pタグを加えると説明文エリア が追加されます。

                      18
リストを作る4
               practice.html
               <ul data-role="listview">
                    <li data-role="list-divider">カテゴリA</li>
                    <li><a href="#">
                             <img src="img/thumbnail.png"/>
                             <h3>リストアイテム</h3>
                             <p>ディスクリプション</p>
                    </a></li>
                    <li><a href="#">
                             <img src="img/thumbnail.png"/>
                             <h3>リストアイテム</h3>
                             <p>ディスクリプション</p>
                    </a></li>
                    <li data-role="list-divider">カテゴリB</li>
                    <li><a href="#">
                             <img src="img/thumbnail.png"/>
                             <h3>リストアイテム</h3>
                             <p>ディスクリプション</p>




   data-role=“list-divider”を与えたliタグを挿入すると・・・
   それらはリスト内では 区切り として表現されます。

                         19
メニューを作る1
              practice.html
              <div data-role="footer" data-position="fixed">
                  <div data-role="navbar" >
                         <ul>
                                     <li><a href="#">メニュー1</a></li>
                                     <li><a href="#">メニュー2</a></li>
                                     <li><a href="#">メニュー3</a></li>
                         </ul>
                  </div>
              </div>




   フッター内のdivタグに data-role=“navbar”を与えると、
   メニューとして扱われます。アイテムはulタグ+liタグでOK。

                      20
メニューを作る2
            practice.html
             <div data-role="footer" data-position="fixed">
                 <div data-role="navbar" >
                     <ul>
                          <li><a data-icon=“home” href=“#” >ホーム</a></li>
                          <li><a data-icon=“search” href=“#” >検索</a></li>
                          <li><a data-icon=“star” href=“#” >お気に入り</a></li>
                      </ul>
                 </div>
             </div>




   aタグに data-icon=“アイコン名”でアイコンが追加されます。
   アイコンは18種類ほどデフォルトで用意されています。

                      21
見た目を変更する
            practice.html
             <div data-role="page" id="practice" data-add-back-btn="true">
                 <div data-role="header" data-theme="b">
                      <h1>練習ページ</h1>
                           </div>
                              <div data-role="content" data-theme="d">
                                  <ul data-role="listview" data-divider-theme="c">

                 ・・・中略・・・

                 <div data-role="footer" data-position="fixed" data-theme="b">
                     <div data-role="navbar" >
                          <ul>
                              <li><a data-icon="home" href="#" >ホーム</a></li>
                              <li><a data-icon="search" href="#" >検索</a></li>
                              <li><a data-icon="star" href="#" >お気に入り</a></li>
                          </ul>
                     </div>




   各要素に data-theme=“スウォッチ名”で見た目が変ります。
   デフォルトテーマには5種類のスウォッチが用意されています。

                       22
jQueryMobile


           ここまでのおさらい
   HTML要素に data-role=“*”等の カスタムデータ
   属性 を追加すると、jQueryMobileが 特定の役割
   (見た目や振る舞い)を自動的に 与えてくれる。

   1ファイル内に複数ページ を持たせること出来る。
   画面遷移時のトランジションも自動的についてくる。

   テーマやアイコンも最初からある程度用意されている
   ので、簡単にそれらしい見栄えを得ることができる。



                 23
jQueryMobile




     もうちょいアプリっぽく
        してみよう



               24
jQueryMobile




        jQMxTwitterAPI




               25
TwitterAPIでJSONデータを取得する
                     practice2.html
                     <script>
                     //初期処理
                     $(function(){
                         var url = "http://search.twitter.com/search.json?callback=?";
                         var request = {q:"jQueryMobile", lang:"ja", rpp:50};
                         $.getJSON(url, request, resultHandler);
                     });

                     //コールバック関数
                     function resultHandler(data){
                         alert(data.results[0].text);
                     }
  アラートで取得できたか確認
                     </script>




     データの取得はjQueryの getJSON() 関数を利用しています。
     TwitterAPI:http://usy.jp/twitter/index.php?Twitter%20API

                               26
HTML側の下準備する
            practice2.html
             <div data-role="header" data-theme="b">
                  <h1>jQM x TwitterAPI</h1>
             </div>
             <div data-role="content" data-theme="d">
                  <ul id="tweetList" data-role="listview" data-divider-theme="c">

                 <!--ここにJSでアイテムを生成-->

                  </ul>
             </div>
             <div data-role="footer" data-position="fixed" data-theme="b">
             <div data-role="navbar" >
                  <ul>
                       <li><a data-icon="home" href="#" >ホーム</a></li>
                       <li><a data-icon="search" href="#" >検索</a></li>
                       <li><a data-icon="star" href="#" >お気に入り</a></li>
                  </ul>




   jsからアクセスできるよう要素(ulタグ)に予め ユニークなID を
   付けておきましょう。リストの中身はjsで動的に生成します。

                        27
取得データからリストアイテムを生成する
practice2.html
      //コールバック関数
      function resultHandler(data){
 //         alert(data.results[0].text);                            リスト生成関数をデータ取得後に実行
            createListItem(data);
      }
                                                                   データ長ぶんだけ以下の処理を繰り返す
      //リスト生成関数
      function createListItem(data){
       for(var i=0; i < data.results.length; i++){                                   ul内に挿入するHTML文字列を生成
             var li = "<li>";
             li += "<img width='100%' height='100%' src='"+data.results[i].profile_image_url+"'/>";
             li += "<h3>"+data.results[i].text+"</h3>";
             li += "<p>"+data.results[i].from_user+"</p>";                           ul内に生成したHTML文字列を挿入
             li += "</li>";
             $("#tweetList").append(li);
             };
       $("#tweetList").listview("refresh");                                       最後にulをリフレッシュ(再描画)する
       };
 </script>



             データ取得→HTML生成&挿入→HTML再描画という流れです。
             jQuery速習講座:http://ascii.jp/elem/000/000/498/498710/

                                                 28
プレビューとデバッグ

            正しく処理が実行されていれば、左のようにつぶや
            きが表示されると思います。もし何も出てこなかっ
            たり、意図しない動作になってしまった時は、下記
            のデバッグツール等を活用して、書いたスクリプト
            を見直してみるといいかもしれません。


            Firebug
            http://getfirebug.com/

            Google Chrome Developer Tools
            http://code.google.com/intl/ja/chrome/devtools/




   上手く動いた時ってやっぱり嬉しいですよね!


                    29
あとがき



  今回は、jQueryMobileに興味がある方に向けに、基礎的な内容

  にフォーカスしてご紹介しました。jQueryMobileには、まだま

  だ多数のコンポーネントが用意されています。ネットや書籍にも

  情報は充実していますので、これを機会に始めてみて頂けたら嬉

  しいです。

                                  山本




                 30
付録
jQueryMobile公式
http://jquerymobile.com/


jQueryMobile Gallery
http://www.jqmgallery.com/


jQueryMobile日本語リファレンス
http://dev.screw-axis.com/doc/jquery_mobile/


jQuery日本語リファレンス
http://semooh.jp/jquery/


TwitterAPI Documentation(英語)
https://dev.twitter.com/docs



                                 31
32

Más contenido relacionado

Similar a はじめてのjQueryMobile(初級編)

Tizen Web UI Frameworkでデザインを組み込んでみた
Tizen Web UI Frameworkでデザインを組み込んでみたTizen Web UI Frameworkでデザインを組み込んでみた
Tizen Web UI Frameworkでデザインを組み込んでみたChihiro Tomita
 
大雑把なHtmlの説明
大雑把なHtmlの説明大雑把なHtmlの説明
大雑把なHtmlの説明tanaka-hiroki
 
WordPressの常識をくつがえす超簡単テーマ"doshirouto"を作ったのでこれでテーマを理解しよう!
WordPressの常識をくつがえす超簡単テーマ"doshirouto"を作ったのでこれでテーマを理解しよう!WordPressの常識をくつがえす超簡単テーマ"doshirouto"を作ったのでこれでテーマを理解しよう!
WordPressの常識をくつがえす超簡単テーマ"doshirouto"を作ったのでこれでテーマを理解しよう!Takashi Uemura
 
jQuery Mobile 最新情報 & Tips
jQuery Mobile 最新情報 & TipsjQuery Mobile 最新情報 & Tips
jQuery Mobile 最新情報 & Tipsyoshikawa_t
 
Web1.0のハイブリッドアプリ開発
Web1.0のハイブリッドアプリ開発Web1.0のハイブリッドアプリ開発
Web1.0のハイブリッドアプリ開発Kenta Tsuji
 
php+smarty (初心者向け)
php+smarty (初心者向け)php+smarty (初心者向け)
php+smarty (初心者向け)Kohki Nakaji
 
今からハジメるHTML5マークアップ
今からハジメるHTML5マークアップ今からハジメるHTML5マークアップ
今からハジメるHTML5マークアップSwapSkills
 
Html5でできること。そこからwebの未来を考える。
Html5でできること。そこからwebの未来を考える。Html5でできること。そこからwebの未来を考える。
Html5でできること。そこからwebの未来を考える。Masakazu Muraoka
 
閉じタグを超えた先に僕が見た景色とは
閉じタグを超えた先に僕が見た景色とは閉じタグを超えた先に僕が見た景色とは
閉じタグを超えた先に僕が見た景色とはMuyuu Fujita
 
HTML5マークアップの心得と作法
HTML5マークアップの心得と作法HTML5マークアップの心得と作法
HTML5マークアップの心得と作法Futomi Hatano
 
jQuery Mobileカスタマイズ自由自在
jQuery Mobileカスタマイズ自由自在jQuery Mobileカスタマイズ自由自在
jQuery Mobileカスタマイズ自由自在yoshikawa_t
 
XPagesDay2014 A-4 XPages with jQueryMobile BADプラクティスガイド
XPagesDay2014 A-4 XPages with jQueryMobile BADプラクティスガイドXPagesDay2014 A-4 XPages with jQueryMobile BADプラクティスガイド
XPagesDay2014 A-4 XPages with jQueryMobile BADプラクティスガイドTetsuji Hayashi
 
jQuery Mobile(開発編)勉強会資料
jQuery Mobile(開発編)勉強会資料jQuery Mobile(開発編)勉強会資料
jQuery Mobile(開発編)勉強会資料Nobumasa Ura
 
Sitecore におけるレイアウトの考え方
Sitecore におけるレイアウトの考え方Sitecore におけるレイアウトの考え方
Sitecore におけるレイアウトの考え方サイトコア株式会社
 
WordPress実践 導入からカスタマイズまで
WordPress実践 導入からカスタマイズまでWordPress実践 導入からカスタマイズまで
WordPress実践 導入からカスタマイズまでTakashi Uemura
 
環境構築から始めるDjangoチュートリアル
環境構築から始めるDjangoチュートリアル環境構築から始めるDjangoチュートリアル
環境構築から始めるDjangoチュートリアルsakihohoribe
 

Similar a はじめてのjQueryMobile(初級編) (20)

Tizen Web UI Frameworkでデザインを組み込んでみた
Tizen Web UI Frameworkでデザインを組み込んでみたTizen Web UI Frameworkでデザインを組み込んでみた
Tizen Web UI Frameworkでデザインを組み込んでみた
 
大雑把なHtmlの説明
大雑把なHtmlの説明大雑把なHtmlの説明
大雑把なHtmlの説明
 
WordPressの常識をくつがえす超簡単テーマ"doshirouto"を作ったのでこれでテーマを理解しよう!
WordPressの常識をくつがえす超簡単テーマ"doshirouto"を作ったのでこれでテーマを理解しよう!WordPressの常識をくつがえす超簡単テーマ"doshirouto"を作ったのでこれでテーマを理解しよう!
WordPressの常識をくつがえす超簡単テーマ"doshirouto"を作ったのでこれでテーマを理解しよう!
 
jQuery Mobile 最新情報 & Tips
jQuery Mobile 最新情報 & TipsjQuery Mobile 最新情報 & Tips
jQuery Mobile 最新情報 & Tips
 
Web1.0のハイブリッドアプリ開発
Web1.0のハイブリッドアプリ開発Web1.0のハイブリッドアプリ開発
Web1.0のハイブリッドアプリ開発
 
Wp html5
Wp html5Wp html5
Wp html5
 
HTML5, きちんと。
HTML5, きちんと。HTML5, きちんと。
HTML5, きちんと。
 
jQuery Mobileの基礎
jQuery Mobileの基礎jQuery Mobileの基礎
jQuery Mobileの基礎
 
php+smarty (初心者向け)
php+smarty (初心者向け)php+smarty (初心者向け)
php+smarty (初心者向け)
 
今からハジメるHTML5マークアップ
今からハジメるHTML5マークアップ今からハジメるHTML5マークアップ
今からハジメるHTML5マークアップ
 
Html5でできること。そこからwebの未来を考える。
Html5でできること。そこからwebの未来を考える。Html5でできること。そこからwebの未来を考える。
Html5でできること。そこからwebの未来を考える。
 
閉じタグを超えた先に僕が見た景色とは
閉じタグを超えた先に僕が見た景色とは閉じタグを超えた先に僕が見た景色とは
閉じタグを超えた先に僕が見た景色とは
 
Web Component概要
Web Component概要Web Component概要
Web Component概要
 
HTML5マークアップの心得と作法
HTML5マークアップの心得と作法HTML5マークアップの心得と作法
HTML5マークアップの心得と作法
 
jQuery Mobileカスタマイズ自由自在
jQuery Mobileカスタマイズ自由自在jQuery Mobileカスタマイズ自由自在
jQuery Mobileカスタマイズ自由自在
 
XPagesDay2014 A-4 XPages with jQueryMobile BADプラクティスガイド
XPagesDay2014 A-4 XPages with jQueryMobile BADプラクティスガイドXPagesDay2014 A-4 XPages with jQueryMobile BADプラクティスガイド
XPagesDay2014 A-4 XPages with jQueryMobile BADプラクティスガイド
 
jQuery Mobile(開発編)勉強会資料
jQuery Mobile(開発編)勉強会資料jQuery Mobile(開発編)勉強会資料
jQuery Mobile(開発編)勉強会資料
 
Sitecore におけるレイアウトの考え方
Sitecore におけるレイアウトの考え方Sitecore におけるレイアウトの考え方
Sitecore におけるレイアウトの考え方
 
WordPress実践 導入からカスタマイズまで
WordPress実践 導入からカスタマイズまでWordPress実践 導入からカスタマイズまで
WordPress実践 導入からカスタマイズまで
 
環境構築から始めるDjangoチュートリアル
環境構築から始めるDjangoチュートリアル環境構築から始めるDjangoチュートリアル
環境構築から始めるDjangoチュートリアル
 

Último

Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイスCRI Japan, Inc.
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルCRI Japan, Inc.
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 

Último (7)

Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 

はじめてのjQueryMobile(初級編)

  • 1. はじめてのjQueryMobile ~初級編~ 2012.2.10 Ichiro Yamamoto 1
  • 2. 自己紹介 山本一郎(ヤマモトイチロウ) 会社:クラスメソッド株式会社 所属:開発部モバイルイニシアチブグループ(通称モバチブ) 仕事:UIデザイン/ディレクション全般(たまに実装) 最近書いてるのでちょっと宣伝・・・ Flash BuilderでiOSアプリを作る(シーズン1) 【第1回】『Apple iOS Developer Programへの登録(前編)』 【第2回】『Apple iOS Developer Programへの登録(後編)』 【第3回】『証明書ファイルの作成(Mac編)』 記事はクラスメソッド開発部のブログで・・・ http://dev.classmethod.jp/author/yamamoto/ 2
  • 3. jQueryMobileって? スマフォ向けWebサイトを 作るためのフレームワーク ・無償。JavaScriptベース。jQueryと合わせて利用する。 ・HTML5に独自の属性を記述するだけの簡単コーディング。 ・最初からタッチ操作向けのパーツが色々と揃っている。 ・幅広いプラットフォーム/ウェブブラウザで動作する。 ・PCやタブレットで見てもそれらしい見栄えと振る舞い。 Mobile Graded Browser Support jQueryMobile Gallery http://jquerymobile.com/gbs/ http://www.jqmgallery.com/ 3
  • 4. jQueryMobile まずは試してみよう 4
  • 5. 準備を整える ・jQuery & jQueryMobile http://jquerymobile.com/download/ ・コーディングツール デザイナーさん・・・ DreamWeaver など エンジニアさん・・・ Eclipse + Aptana など 職人さん・・・・・・ テキストエディタ など ・ウェブブラウザ Safariがおすすめ。 PC上でプレビューしながら開発していきます。 ※Chromeを使用する場合はちょっとした小細工が必要です。 http://www.finefinefine.jp/web/jquery/kiji861/ ※実機で動作確認をする際は、WWW上にウェブサーバーを用意しましょう。 5
  • 6. サンプルコード MyMobileSite img thumbnail.png practice1.html practice2.html index.html サンプルコードは下記からダウンロードできます。 http://dev.classmethod.jp/etc/first-meet-jqm/ 6
  • 7. jQueryMobileを読み込む index.html <!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <title>MyMobileSite</title> <link rel="stylesheet" href="http://code.jquery.com/mobile/1.0/jquery.mobile-1.0.min.css" /> <script src="http://code.jquery.com/jquery-1.6.4.min.js"></script> <script src="http://code.jquery.com/mobile/1.0/jquery.mobile-1.0.min.js"></script> </head> headタグ内に jQuery と jQueryMobile を読み込みます。 読み込み方には「外部参照」と「内部参照」の2つがありますが、今回はお手軽な「外部参照」を 使ってみましょう。このスニペットは jQueryMobileの公式サイトで公開されています。 jQueryMobile は jQuery のプラグインとして動作するから、 jQuery→jQueryMobileの順で読み込んでおこう。 7
  • 8. ページの基本構成 3つの領域で1つのページを構成します。 <ヘッダーエリア> ページタイトル、コントロールを配置する領域 <コンテンツエリア> 文章や画像など、コンテンツの配置にする領域 <フッターエリア> メニューを配置するための領域 なんだかiPhoneアプリの画面レイアウトに良く似てますね。 必要に応じてヘッダーやフッターは取り除くことも出来るよ。 8
  • 9. ページの基本構成 index.html <body> <div data-role="page"> <div data-role="header"> <h1>ヘッダーエリア</h1> </div> <div data-role="content"> <h2>コンテンツエリア</ h2 > <p>Lorem Ipsum is simply dummy text of the… </p> </div> <div data-role=“footer”> <h4>フッターエリア</h4> </div> </div> </body> divタグの属性に data-role =“要素名”を追加するだけで、 jQueryMobileがそれぞれの領域に役割を持たせてくれます。 9
  • 10. ページを追加する index.html <div data-role="page"> <div data-role="header"> <h1>ヘッダーエリア</h1> </div> <div data-role="content"> <h2>コンテンツエリア</ h2 > <p>Lorem Ipsum is simply dummy text of the… </p> </div> <div data-role="footer" > <h4>フッターエリア</h4> </div> </div> <div data-role="page"> 丸っと複製 <div data-role="header"> <h1>ヘッダーエリア</h1> </div> <div data-role="content"> <h2>コンテンツエリア</ h2 > <p>Lorem Ipsum is simply dummy text of the… </p> </div> <div data-role="footer" > <h4>フッターエリア</h4> </div> </div> 1つのHTMLの中に複数のページを持たせることが出来るんだね。 10
  • 11. ページを遷移させる index.html <div data-role=“page” id=“page1”> <div data-role="header"> <h1>ページ1</h1> </div> <div data-role="content"> <h2>コンテンツエリア</ h2 > <p>Lorem Ipsum is simply dummy text of the… </p> <a href=“#page2”>次ページ</a> </div> <div data-role="footer" > <h4>フッターエリア</h4> </div> </div> <div data-role="page“ id=“page2”> <div data-role="header"> <h1>ページ2</h1> </div> <div data-role="content"> <h2>This is second page!</ h2 > <p>Lorem Ipsum is simply dummy text of the… </p> 遷移したいページに id=“ページID”を追加して、そのIDへの アンカーリンクを張るだけでページ遷移が出来上がりました。 11
  • 12. ページを遷移させる2 index.html <div data-role=“page” id=“page1”> <div data-role="header"> <h1>ページ1</h1> </div> <div data-role="content"> <h2>コンテンツエリア</ h2 > <p>Lorem Ipsum is simply dummy text of the… </p> <a href=“#page2” >次ページ</a> </div> <div data-role="footer" > <h4>フッターエリア</h4> </div> </div> <div data-role="page“ id=“page2” data-add-back-btn="true"> <div data-role="header"> <h1>ページ2</h1> </div> <div data-role="content"> <h2>This is second page!</ h2 > <p>Lorem Ipsum is simply dummy text of the… </p> 遷移先のページに data-add-back-btn=“true”の属性を追記 したら自動的にヘッダーに Backボタン が表示されました。 12
  • 13. ページを遷移させる3 index.html <div data-role=“page” id=“page1”> <div data-role="header"> <h1>ページ1</h1> </div> <div data-role="content"> <h2>コンテンツエリア</ h2 > <p>Lorem Ipsum is simply dummy text of the… </p> <a href=“#page2” >次ページ</a> <a href=“practice.html”>練習ページ</a> </div> <div data-role="footer" > <h4>フッターエリア</h4> </div> </div> <div data-role="page“ id=“page2” data-add-back-btn="true"> <div data-role="header"> <h1>ページ2</h1> 参照先に別ファイルを指定して動的に読み込むこともできます。 イメージは index.html に別ファイルが取り込まれる 感じです。 13
  • 14. ページを遷移させる4 index.html <div data-role=“page” id=“page1”> <div data-role="header"> <h1>ページ1</h1> </div> <div data-role="content"> <h2>コンテンツエリア</ h2 > <p>Lorem Ipsum is simply dummy text of the… </p> <a href=“#page2” >次ページ</a> <a href=“practice.html” data-ajax=“false”>練習ページ</a> </div> <div data-role="footer" > <h4>フッターエリア</h4> </div> </div> <div data-role="page“ id=“page2” data-add-back-btn="true"> <div data-role="header"> <h1>ページ2</h1> もし全く独立したHTMLファイルへ遷移したい場合は、 data-ajax=“false”で非同期処理を切る必要があります。 14
  • 15. ボタンを作る index.html <div data-role=“page” id=“page1”> <div data-role="header"> <h1>ページ1</h1> </div> <div data-role="content"> <h2>コンテンツエリア</ h2 > <p>Lorem Ipsum is simply dummy text of the… </p> <a href=“#page2” data-role=“button”>次ページ</a> <a href=“practice.html” data-role=“button”>練習ページ</a> </div> <div data-role="footer" > <h4>フッターエリア</h4> </div> </div> <div data-role="page“ id=“page2” data-add-back-btn="true"> <div data-role="header"> <h1>ページ2</h1> <a>タグに data-role=“button” を追記してボタンとしての 役割を与えてみました。それらしい見た目に変わってますね。 15
  • 16. リストを作る1 practice.html <div data-role="page" id="practice" data-add-back-btn="true"> <div data-role="header"> <h1>練習ページ</h1> </div> <div data-role="content"> <ul data-role="listview"> <li><h3>リストアイテム</h3></li> <li><h3>リストアイテム</h3></li> <li><h3>リストアイテム</h3></li> </ul> </div> </div> ulタグに data-role=“listview”を追記するとこんな感じに。 ※ olタグ(番号付きリスト)にも使えます。 16
  • 17. リストを作る2 practice.html <div data-role="page" id="practice" data-add-back-btn="true"> <div data-role="header"> <h1>練習ページ</h1> </div> <div data-role="content"> <ul data-role="listview"> <li><a href="#"><h3>リストアイテム</h3></a></li> <li><a href="#"><h3>リストアイテム</h3></a></li> <li><a href="#"><h3>リストアイテム</h3></a></li> </ul> </div> </div> さらに aタグで括るとリンク付リスト に早変わり。 それっぽいアイコンまで付いてきました。 17
  • 18. リストを作る3 practice.html <ul data-role="listview"> <li><a href="#"> <img src="img/thumbnail.png"/> <h3>リストアイテム</h3> <p>ディスクリプション</p> </a></li> <li><a href="#"> <img src="img/thumbnail.png"/> <h3>リストアイテム</h3> <p>ディスクリプション</p> </a></li> <li><a href="#"> <img src="img/thumbnail.png"/> <h3>リストアイテム</h3> <p>ディスクリプション</p> </a></li> </ul> さらに imgタグを加えるとサムネイル画像 が付きました。 pタグを加えると説明文エリア が追加されます。 18
  • 19. リストを作る4 practice.html <ul data-role="listview"> <li data-role="list-divider">カテゴリA</li> <li><a href="#"> <img src="img/thumbnail.png"/> <h3>リストアイテム</h3> <p>ディスクリプション</p> </a></li> <li><a href="#"> <img src="img/thumbnail.png"/> <h3>リストアイテム</h3> <p>ディスクリプション</p> </a></li> <li data-role="list-divider">カテゴリB</li> <li><a href="#"> <img src="img/thumbnail.png"/> <h3>リストアイテム</h3> <p>ディスクリプション</p> data-role=“list-divider”を与えたliタグを挿入すると・・・ それらはリスト内では 区切り として表現されます。 19
  • 20. メニューを作る1 practice.html <div data-role="footer" data-position="fixed"> <div data-role="navbar" > <ul> <li><a href="#">メニュー1</a></li> <li><a href="#">メニュー2</a></li> <li><a href="#">メニュー3</a></li> </ul> </div> </div> フッター内のdivタグに data-role=“navbar”を与えると、 メニューとして扱われます。アイテムはulタグ+liタグでOK。 20
  • 21. メニューを作る2 practice.html <div data-role="footer" data-position="fixed"> <div data-role="navbar" > <ul> <li><a data-icon=“home” href=“#” >ホーム</a></li> <li><a data-icon=“search” href=“#” >検索</a></li> <li><a data-icon=“star” href=“#” >お気に入り</a></li> </ul> </div> </div> aタグに data-icon=“アイコン名”でアイコンが追加されます。 アイコンは18種類ほどデフォルトで用意されています。 21
  • 22. 見た目を変更する practice.html <div data-role="page" id="practice" data-add-back-btn="true"> <div data-role="header" data-theme="b"> <h1>練習ページ</h1> </div> <div data-role="content" data-theme="d"> <ul data-role="listview" data-divider-theme="c"> ・・・中略・・・ <div data-role="footer" data-position="fixed" data-theme="b"> <div data-role="navbar" > <ul> <li><a data-icon="home" href="#" >ホーム</a></li> <li><a data-icon="search" href="#" >検索</a></li> <li><a data-icon="star" href="#" >お気に入り</a></li> </ul> </div> 各要素に data-theme=“スウォッチ名”で見た目が変ります。 デフォルトテーマには5種類のスウォッチが用意されています。 22
  • 23. jQueryMobile ここまでのおさらい HTML要素に data-role=“*”等の カスタムデータ 属性 を追加すると、jQueryMobileが 特定の役割 (見た目や振る舞い)を自動的に 与えてくれる。 1ファイル内に複数ページ を持たせること出来る。 画面遷移時のトランジションも自動的についてくる。 テーマやアイコンも最初からある程度用意されている ので、簡単にそれらしい見栄えを得ることができる。 23
  • 24. jQueryMobile もうちょいアプリっぽく してみよう 24
  • 25. jQueryMobile jQMxTwitterAPI 25
  • 26. TwitterAPIでJSONデータを取得する practice2.html <script> //初期処理 $(function(){ var url = "http://search.twitter.com/search.json?callback=?"; var request = {q:"jQueryMobile", lang:"ja", rpp:50}; $.getJSON(url, request, resultHandler); }); //コールバック関数 function resultHandler(data){ alert(data.results[0].text); } アラートで取得できたか確認 </script> データの取得はjQueryの getJSON() 関数を利用しています。 TwitterAPI:http://usy.jp/twitter/index.php?Twitter%20API 26
  • 27. HTML側の下準備する practice2.html <div data-role="header" data-theme="b"> <h1>jQM x TwitterAPI</h1> </div> <div data-role="content" data-theme="d"> <ul id="tweetList" data-role="listview" data-divider-theme="c"> <!--ここにJSでアイテムを生成--> </ul> </div> <div data-role="footer" data-position="fixed" data-theme="b"> <div data-role="navbar" > <ul> <li><a data-icon="home" href="#" >ホーム</a></li> <li><a data-icon="search" href="#" >検索</a></li> <li><a data-icon="star" href="#" >お気に入り</a></li> </ul> jsからアクセスできるよう要素(ulタグ)に予め ユニークなID を 付けておきましょう。リストの中身はjsで動的に生成します。 27
  • 28. 取得データからリストアイテムを生成する practice2.html //コールバック関数 function resultHandler(data){ // alert(data.results[0].text); リスト生成関数をデータ取得後に実行 createListItem(data); } データ長ぶんだけ以下の処理を繰り返す //リスト生成関数 function createListItem(data){ for(var i=0; i < data.results.length; i++){ ul内に挿入するHTML文字列を生成 var li = "<li>"; li += "<img width='100%' height='100%' src='"+data.results[i].profile_image_url+"'/>"; li += "<h3>"+data.results[i].text+"</h3>"; li += "<p>"+data.results[i].from_user+"</p>"; ul内に生成したHTML文字列を挿入 li += "</li>"; $("#tweetList").append(li); }; $("#tweetList").listview("refresh"); 最後にulをリフレッシュ(再描画)する }; </script> データ取得→HTML生成&挿入→HTML再描画という流れです。 jQuery速習講座:http://ascii.jp/elem/000/000/498/498710/ 28
  • 29. プレビューとデバッグ 正しく処理が実行されていれば、左のようにつぶや きが表示されると思います。もし何も出てこなかっ たり、意図しない動作になってしまった時は、下記 のデバッグツール等を活用して、書いたスクリプト を見直してみるといいかもしれません。 Firebug http://getfirebug.com/ Google Chrome Developer Tools http://code.google.com/intl/ja/chrome/devtools/ 上手く動いた時ってやっぱり嬉しいですよね! 29
  • 30. あとがき 今回は、jQueryMobileに興味がある方に向けに、基礎的な内容 にフォーカスしてご紹介しました。jQueryMobileには、まだま だ多数のコンポーネントが用意されています。ネットや書籍にも 情報は充実していますので、これを機会に始めてみて頂けたら嬉 しいです。 山本 30
  • 32. 32