jQuery Mobileを使用してモバイルサイトを迅速に開発


AppleのiOSデバイスとAndroidがそれぞれ荒れ狂っているのを見て、あなたのサービスをどちらにすればいいのか分からないとき、一つのプラットフォームの開発を完了した後、このappを別のプラットフォームにポートすることをこっそり望んだことがありますか?jQuery Mobileはこのような便利なframeworkであり、特に小さな会社では人手が不足しており、jQuery Mobileはアプリケーションを異なるプラットフォームに発表する力を大幅に節約することができます.
この文章では、jQuery Mobileの運営の哲学、jQuery Mobileが提供するツール、そして実際の例でjQuery Mobile、jQuery Mobileが提供する様々な便利な機能を簡単に紹介します.
jQuery Mobileを知る
jQueryを使ったことがある人はきっとjQueryで有名な「write less,do more」を愛しているに違いない.jQueryを通していれば、悩ましいブラウザ間の問題を心配する必要はありません.しかし、手持ち式の装置が普及するにつれて、閲覧機の問題は携帯電話よりもPCよりも深刻になっていることが分かった.携帯電話ではブラウザだけでなく、OSの違いもPCよりも深刻だ.そして、2010年の10月にjQueryはついにみんなの期待の下でjQuery Mobileを発売しました.この簡単で使いやすいframeworkを使えば、すぐにdeviceにまたがるmobile appilcationを作ることができます.jQuery Mobileのいくつかの重要なfeaturesには、次のものが含まれます.
  • jQuery mobileは、iOS、Android、Blackberry、Palm WebOS、Nokia/Symbian、Windows Mobile、bada、MeeGo、HTMLが読める他のdevicesなど、異なるモバイルデバイスにまたがることができます.詳細な支援状況はMobile Graded Browser Support
  • を参照してください.
  • Progressive Enhancement & Graceful Degradation “taking a fully functional HTML web page, layering on additional JavaScript functionality, and giving capable browsers a top-of-the-line experience.” 古い携帯電話のように基本的な機能を見ることができます(evenはjavasciptを支援しません!!)、また、サポート度の高いブラウザで先進的な機能を楽しむことができます.
  • HTMLタグを設定することでjQuery Mobileの設定を完了するjQueryは主にHTML 5 data-*tagを通して様々なUIの設定を達成し、大まかな文法を認識すればjavascriptを1行書かずにappの雛形を迅速に構築することができる.JavaSriptに熱くないデザイナーや、UIのデザインについて頭が2人のエンジニアにとって、jQuery mobileの便利さは絶対に手放せません.

  • Hello World!
    jQuery mobileの動作は簡単で、彼の主なプロセスには3つのステップが含まれています.
  • HTML 5 documnt
  • を宣言
  • include the jQuery mobile css,jQuery,jQuery mobile library(jQuery or google code CDN、または自分でdownloadこれらのファイルを自分のserverに置くこともできます)
  • jquery mobileで定義された構文(data-roleなど)を使用してpage structure
  • を定義する
    簡単な例を次に示します.
    
    <!DOCTYPE html>
    <html>
     <head>
     <title>jQuery Mobile Tutorial on Codeforest.net</title>
     <link rel="stylesheet" href="http://code.jquery.com/mobile/1.0a1/jquery.mobile-1.0a1.min.css" />
     <script src="http://code.jquery.com/jquery-1.4.3.min.js"></script>
     <script src="http://code.jquery.com/mobile/1.0a1/jquery.mobile-1.0a1.min.js"></script>
    </head>
    <body>
    
    <div data-role="page">
    
     <div data-role="header">
     <h1>Title</h1>
     </div><!-- /header -->
    
     <div data-role="content">
     <p>The content</p>
     </div><!-- /content -->
    
     <div data-role="footer">
     <h4>The Footer</h4>
     </div><!-- /footer -->
    </div><!-- /page -->
    
    </body>
    </html>
    

    いくつかのポイント:
  • ファイルをHTML 5に宣言されたフォーマット
  • headerの真ん中に,で必要なCSS&javascript library includeを
  • に入れる
  • data-role="page",data-role="header",data-role="content",data-role="footer"はjQuery Mobileが定義したtagsである.ここではHTML 5 custom data attributesのdata-*構文を使って、jQuery Mobileのどちらがheader、content、footerなのかをそれぞれ教えています.その中でpage&contentは必ずありますが、header&footerは自分のニーズに合わせています.

  • ブラウザでこのファイルのアドレスを入力すると、次の画面が表示されます.
     
    jquery mobile sample 1 on android
    jquery mobile sample 1 on ipad
    List View
    List Viewは、携帯電話でよく使われるUIといえ、上図のような顔をしています.jQuery MobileでこのようなUIを実装するのは簡単で、一般的なHTMLでよく使われるorderedリスト(
      +
    1. )、またはunorderedリスト(
        +
      • )、そして
          にdata-role="listview"を加えればよい.上図のUIのように、HTMLは非常に簡単です.
          
          ...
          <ul data-role="listview" data-inset="true" data-theme="c" data-dividertheme="b">
            <li data-role="list-divider">Overview</li>
            <li><a href="docs/about/intro.html">Intro to jQuery Mobile</a></li>
            <li><a href="docs/about/features.html">Features</a></li>
            <li><a href="docs/about/accessibility.html">Accessibility</a></li>
            <li><a href="docs/about/platforms.html">Supported platforms</a></li>
          </ul>
          ...
          

          いくつかのポイント:
          • にdata-role="listview"を加える
          • data-inset="true"は主にこのlistviewが文の真ん中に現れるかどうかを指定します.もしそうなら、jQuery Mobileは自動的に一番上のitemと一番下のitemに円弧の辺
          • を加えます.
          • リストをブロックに分割したい場合は(HTMLのtagに似ています)、liにdata-role="list-divider"のitemを追加できます.上記の例の
          • Overview
          • Advanced List View
            List Viewには様々なバリエーションがあり、詳細な説明はjQuery MobileのList viewsの説明を参照してください.ここでは、よく使われる3つの変化を簡単に紹介します.
          • Nested list:listを多層構造にすると、jQuery Mobileは自動的にlist viewに上下層を切り替える効果を加える
          • List views with thumbnailsはliの最初にを加えると、jQuery Mobileは自動的に最左に縮図として配置されます.例えば:
            
            <ul data-role="listview">
              <li><a href="index.html">
                <img src="images/album-bb.jpg" />
                <h3>Broken Bells</h3>
                <p>Broken Bells</p>
              </a></li>
              ...
            </ul>
            
          • List views with Count Bubbles
          • を追加すると、jQuery Mobileはbubbleにコンテンツパッケージを各itemの一番右側に置きます.例えば、
            
            <h2 style="padding: 1em 0;">A list with count bubbles</h2>
             <ul data-role="listview" data-inset="true">
             <li><a href="#">SuperWidgets</a> <span>14</span></li>
             <li><a href="#">MegaWidgets</a> <span>0</span></li>
             <li><a href="#">WonderWidgets</a> <span>327</span></li>
             </ul>
            
          • Navigation Bar
            justは
              &
            • をdata-role="navbar"のdivに入れると、すぐにnavigation barを作ることができますが、もっと簡単ですか?
              
              <div data-role="footer">
               <div data-role="navbar">
               <ul>
               <li><a href="#" data-icon="grid" data-iconpos="top">Summary</a></li>
               <li><a href="#" data-icon="star" data-iconpos="top">Favs</a></li>
               <li><a href="#" data-icon="gear" data-iconpos="top">Setup</a></li>
               </ul>
               </div><!-- /navbar -->
               </div><!-- /footer -->
              

              いくつかのポイント:
            • jQuery Mobileにはもともと内蔵のiconがたくさんありますが、data-icon="xxx"でnavigation barにiconを追加し(詳細はiconリストを参照)、data-iconposでiconの位置を指定し(left,right,top,bottom,notext,defaultをleftに設定)
            • もしあなたが望むなら、少し多くの設定をすれば、あなたも自分のicon:)
              
              <style type="text/css">
                .nav-glyphish-example .ui-btn .ui-btn-inner { padding-top: 40px !important; }
                .nav-glyphish-example .ui-btn .ui-icon { width: 30px!important; height: 30px!important; margin-left: -15px !important; box-shadow: none!important; -moz-box-shadow: none!important; -webkit-box-shadow: none!important; -webkit-border-radius: none !important; border-radius: none !important; }
                #chat .ui-icon { background:  url(glyphish-icons/09-chat2.png) 50% 50% no-repeat; background-size: 24px 22px; }
                #email .ui-icon { background:  url(glyphish-icons/18-envelope.png) 50% 50% no-repeat; background-size: 24px 16px;  }
                #login .ui-icon { background:  url(glyphish-icons/30-key.png) 50% 50% no-repeat;  background-size: 12px 26px; }
                #beer .ui-icon { background:  url(glyphish-icons/88-beermug.png) 50% 50% no-repeat;  background-size: 22px 27px; }
                #coffee .ui-icon { background:  url(glyphish-icons/100-coffee.png) 50% 50% no-repeat;  background-size: 20px 24px; }
                #skull .ui-icon { background:  url(glyphish-icons/21-skull.png) 50% 50% no-repeat;  background-size: 22px 24px; }
              </style>
              
              <div data-role="footer" class="nav-glyphish-example">
                <div data-role="navbar" class="nav-glyphish-example" data-grid="d">
                  <ul>
                    <li><a href="#" id="chat" data-icon="custom">Chat</a></li>
                    <li><a href="#" id="email" data-icon="custom">Email</a></li>
                    <li><a href="#" id="skull" data-icon="custom">Danger</a></li>
                    <li><a href="#" id="beer" data-icon="custom">Beer</a></li>
                    <li><a href="#" id="coffee" data-icon="custom">Coffee</a></li>
                 </ul>
                </div>
              </div>
              
            • を使うことができます.
              Form
            • タッチで設計されたUI(Touch input optimized controls)は、タッチ操作が多いportable deviceでフォームが簡単に操作できるように、jQuery Mobileが多くのフォームの要素をタッチ操作が良い形式に自動的に変換する(完全なForm elementsリストを参照).jQuery Mobileで自動的に変換したくないUIは、要素にdata-role="none"を加えることで、最適化前の形式
            • に戻ります.
            • もともとFormにあったtext,textarea,radio,checkbox,select menus,jQuery Mobileの他にもSlider,Flip,DatePicker(まだ開発中らしい)
            • が提供されています
            • フレックスフォームプレゼンテーション(Dynamic form layout)jQuery Mobileは、そのappを利用して異なるプラットフォームにportできるように、異なるスクリーン幅に対して異なるlayoutを行い、その最も明らかな例はフォーム(Form)である.スクリーンが狭い(~480 px)場合、jQuery mobileはlabelをblock elementと見なします.広いスクリーンなら2-column layoutに見えます.この便利な機能を利用するには、data-role="fieldcontain"のdivに入れればいいです.例えば、
              
              <div data-role="fieldcontain">
                <label for="name">Text Input:</label>
                <input type="text" name="name" id="name" value=""  />
              </div>
              
            • Summary
              jQuery Mobileはmobile appを開発する多くのツールを提供しています.この文章では、jQuery Mobile Progressive Enhancementが異なる装置に異なるツールを提供する哲学、jQuery mobileが設定したスケジュールを知っていること、jQuery Mobileが提供するツールを知っていること、list view、navigation bar、form elementsなどを簡単に認識しました.jQuery mobileの利便性を実感してもらいたいので、一緒に「write less,do more」に行きましょう
              Reference
            • How to Build an RSS Reader with jQuery Mobileの簡単で分かりやすい授業です.jQuery mobile List viewを使用し、Yahoo!YQLは簡単なRSS reader
            • を実装します.
            • jQuery Mobile Framework–A Forms Tutorial 1つのフォームのプログラムを使用してjQuery mobileがAjaxとserverエンドプログラムの典型的な直列接続
            • でどのように使用されるかを示します.
            • jQuery Mobile: What Can It Do for You?  very detailed explaination for different components of jQuery Mobile