モバイルアプリケーションミーティング - Mobapps:jQuery mobile に参加してきた #mobapps
- モバイルアプリケーションミーティング - Mobapps:jQuery mobile スタート! | クラスメソッド株式会社
- 2012/02/10 モバイルアプリケーションミーティング Mobapps:jQuery mobile #mobapps - Togetter
(写真:今回の勉強会で配られた資料各種。会社説明資料/デザイン&開発プロセスのクリアファイル/Cloud Days Tokyo 2012の無料ご招待券)
『jQuery Mobile』という、最近ホットなテーマについての勉強会が開催されると言うことで今回は参加してきました。
開催場所はクラスメソッド株式会社 セミナールーム@飯田橋。場所的には去年のCode Retreat in Tokyo以来になります。
興味深いキーワードではあり、個人的にも事前に幾らか勉強してから臨もうかな〜と思いつつも、実際のところは業務が忙しかったりであまり時間が取れず。jQuery Mobile自体の知識はあまり無い状態で今回はこの勉強会に臨んでみました。以下メモ。
開始挨拶・諸説明等
『クラスメソッドからのお知らせ』と題し、タケハラさんから以下の様な諸説明等がまず最初に行われました。
- 自己紹介:最近、スクラムプロダクトオーナーの資格を取りました!
- クラスメソッドからのお知らせ
- 1.Method for Mobile
- クラスメソッドのモバイル事例ショーケース。
- 1.Method for Mobile
-
- 2.Cloud Days Tokyo 2012へ参加
- 2/28-29に開催。
- Amazonさんのブースの近くらしい。だけど・・・。(ブースNo.206)
- ブースNo.206 クラスメソッド CLASSMETHOD
- ※上記『展示のみどころ』の文章を書くに当たって、非常に難儀したそうな・・・360文字オーバーとか(つД`)
- 2.Cloud Days Tokyo 2012へ参加
-
- 3.AWSバウチャーチケット販売はじめました。
-
- 4.クラスメソッドのブログと記事
- 去年7月から会社ブログを投稿:全社員。
- Android案件の見積り | Classmethod.dev()
- 最近バズったエントリ。非常に多くのブクマがなされ、ブコメについても中の人は結構気にされていたようです・・・(^^;)。
- 4.クラスメソッドのブログと記事
-
- 5.CYCLONE(サイクロン)
- サイクロン・ワーキング・グループ
- (25) Process Framework「CYCLONE for Mobile Apps」(20120118)
- View more presentations from Masashi Takehara
- 5.CYCLONE(サイクロン)
-
- One More Thing
-
- 『スキニーなシステム開発のススメ Vol.2』乞うご期待!(2012/03/02開催予定)
-
- One More Thing
セッション1:初めてのjQuery Mobile[初級編]
- 講師:クラスメソッド株式会社 開発部 モバイルイニシアチブグループ クリエイティブ・ディレクター 山本一郎氏
jQueryもさわった事はないけど、話題のjQuery Mobileに興味津々。そんな開発者の方を対象に、基礎の基礎から教えちゃいます! これであなたも今日からjQuery Mobilist! 初級編では、ライブラリのロード、ページ構成、ページ遷移の説明を中心に簡単なアプリケーションの開発を行います。
- HTMLに触ったことあるよ!って程度の人を対象に。
- 自己紹介
- jQueryMobileって?
- スマホ向けWebサイトを作る為のフレームワーク。
- 主な特徴
- 無償。JSベース。jQueryMobileと併せて利用する。
- HTML5に独自の属性を記述するだけの簡単コーディング
- 最初からタッチ操作向けのパーツが色々揃っている。
- 幅広いプラットフォーム/ウェブブラウザで動作する。
- PCやタブレットで見てもそれらしい見栄えと振る舞い。
- 等々。
- 詳しくは以下のページ等を御参照。
- まずは試してみよう
- 準備を整える
- ツールもそれぞれ使いやすいものを。
- デザイナー:Dreamweaver
- エンジニア:Eclipse + Aptana
- 職人さん:テキストエディタ
-
- ウェブブラウザ:
- Safariがオススメ。
- Chromeを使用する場合はちょっとした細工が必要。
- Google Chromeの起動オプション
- ウェブブラウザ:
-
- サンプルコード
- 簡単なHTMLを書く。(サンプルコードは後日ブログで。)
- サンプルコード
-
- jQueryMobileを読み込む
- headタグ内にjQueryとjQueryMobileを読み込む。
- プラグインの動作関係上、jQuery→jQueryMobileの順で読み込んでおくこと。
- スニペットはダウンロードサイトにあると思う。
- jQueryMobileを読み込む
-
- ページの基本構成
- ヘッダーエリア:ページタイトル、コントロールを配置する領域
- コンテンツエリア:文章や画像など、コンテンツの配置にする領域
- フッターエリア:メニューを配置する等
- ページの基本構成
-
- divタグの属性にdata-role="要素名"を追加すると、jQueryMobileがそれぞれの領域に役割を持たせてくれる。
-
- 1つのHTMLの仲に複数のページを持たせる事が出来る。
- data-role="page"
- 1つのHTMLの仲に複数のページを持たせる事が出来る。
-
- その他要素の説明・操作方法等。
- ■ページ遷移
- 遷移したいページにiD="ページID"を追加して、そのIDへのアンカーリンクを貼るだけでページ遷移が可能。
- <a href="#page2">次ページ</a>
- 遷移時のエフェクトも勝手に付けてくれる。
- その他要素の説明・操作方法等。
-
-
- ■ページ遷移:戻る
- data-add-back-btn="true" → 自動的にヘッダーに[Back]ボタンが表示される。
- ■ページ遷移:戻る
-
-
-
- ■ページ遷移3:
- 参照先に別ファイルを指定して動的に読み込む事も出来る。
- ■ページ遷移3:
-
-
-
- ■ページ遷移4:
- 全く独立したHTMLファイルへ遷移したい場合はdata-ajax="false"で非同期処理を設定。
- ■ページ遷移4:
-
-
-
- ■ボタンを作る
- aタグにdata-role="button"を追記→ボタンらしい見た目になる。
- ■ボタンを作る
-
-
-
- ■リストを作る
- ulタグにdata-role="listview"を追記。olタグ(番号付きリスト)にも使える。
- ■リストを作る
-
-
-
- ■リストを作る2
- 上記に加え、更にaタグで括るとリンク付きリストに早変わり。それらしいアイコンも付く。
- ■リストを作る2
-
-
-
- ■リストを作る3
- さらにimgタグを追加:サムネイル画像が付く。Pタグを加えると説明文エリアが追加される。
- ■リストを作る3
-
-
-
- ■リストを作る4
- data-role="list-divider"を加えたliタグを挿入→リスト内では区切りとして表現される。
- ■リストを作る4
-
-
-
- ■メニューを作る
- フッター内のdivタグにdata-role="navbar"を与えると、メニューとして扱われる。アイテムはul+liタグでOK。
- ■メニューを作る
-
-
-
- ■メニューを作る2
- data-icon="アイコン名"でアイコンが追加。アイコンはデフォルトで18種類ほど用意されている。
- ■メニューを作る2
-
- ここまでのおさらい
- data-role="*"等のカスタムデータ属性を追加すると、jQueryMobileが特定の役割(見た目や振る舞い)を自動的に与えてくれる。
- 1ファイル内に複数ページを持たせる事が出来る。画面遷移時のトランジションも自動的に付いてくる。
- テーマやアイコンも最初からある程度用意されているので、簡単にそれらしい見栄えを得る事が出来る。
- もうちょっとアプリっぽくしたい。→jQueryMobile+TwitterAPI
- TwitterAPIでJSONデータを取得する
- データの取得はjQueryのgetJSON()関数を利用。
- HTML側の下準備をする
- jsからアクセス出来るよう、要素(ul)に予めユニークIDを付けておく。リストの中身はjsで動的に生成。
- 取得データからリストアイテムを生成
- データ取得→HTML生成+挿入→HTML再描画、という流れ。
- Ascii.jp:40分で覚える!jQuery速習講座
- TwitterAPIでJSONデータを取得する
- 個人的な感想
- いいなと思ったポイント
- アレだなと思ったポイント
- 自動化されている反面、UI的に細かなカスタマイズは難しい気がする
- 動的にUIコントロールしたい場合は、Javascript/jQuery知識が必須。
- UIゴリゴリ制御していると時々謎の不具合に見舞われる(だいぶ改善された?)
- クロスブラウザを謳っているが、微妙に動作に差異があったりする。
- デモならサクサク作れて楽しいが、実戦投入はまだ厳しいか。製造後期でハマりそう。
- 処理能力の低いモバイル端末だとパフォーマンス的に厳しいかも。
- :
セッション2:初めてのjQuery Mobile[中級編]
- 講師:クラスメソッド株式会社 開発部 友田翼氏
jQueryの基礎は分かった。でもどんな事が出来るのかもっと知りたくなった!そんな開発者の方を対象に、プラスアルファの内容を紹介します。 中級編では、より細かい設定の仕方や、陥りがちな罠、PhoneGapを使ったiOS用のアプリケーション開発の仕方についてお話しします。
- 自己紹介
- jQueryMobileの便利なところ
-
- アイコンいろいろ
- data-iconで指定可能なアイコンは18個
- 矢印系/演算子系/アクション系/情報系
- data-iconで指定可能なアイコンは18個
- アイコンいろいろ
-
- ボタンいろいろ
- data-iconposでアイコンの位置を変えられる
- ledft, right, top, buttom, notext
- 通常は画面一杯使って表示してしまう。data-inline="true"を指定すると程良い大きさに
- data-role="contrrolgroup"でボタンのグループ化が可能。
- data-type="horizontal"で横並び表示が可能に。
- ボタンいろいろ
-
- リストいろいろ
- ul. Liなどの要素とdata-role="listview"を用いる
- liの中に2つのa要素を持つとリストが分割される。
- data-split-iconで右側アイコンを変えられる。
- インデックス表示も可能にlist-divider
- <span class="ui-li-count">{数}</span>でカウントバブルを表示出来る。
- リストいろいろ
-
- CSS(テーマ、スウォッチ)
- jQueryMobileではa〜eの5つのテーマが用意されている
- f-zに独自のテーマを割り振る事も可能
- ただし、設定出来る項目は膨大なので1から作るのは心が折れる・・・
- 既存a-eをベースにするか、テーマローラーを使う。
- cssの中を覗くと、/* Swatches */ と始まるセクションの中に各A-Eのテーマの定義があるので、それを流用。
- 詳細な説明は無し。苦労するかも・・・
- テーマローラー:ツール。
- CSS(テーマ、スウォッチ)
-
- スクリプトで一括設定
- ローカライズや共通設定は起動時に一括でやってしまう。
- jQueryMobileが実行されると、documentオブジェクトのmobileinitイベントが呼び出されるのでその中で処理をする
- htmlでのタグ順序に気を付ける。
- (ローカライズの設定例)
- jquery本体の読み込みとjQueryMobileの読み込みの間に右記のスクリプトを走らせる。
- 戻るボタンを全画面で出したい場合の対応
- ajax制御等など。
- configuring_defaults 日本語
- スクリプトで一括設定
- jQueryMobileはどんな仕組みなのか
- htmlの中にdiv data-content="page"として記述:jQueryMobileのフレームワークが勝手にモバイル用に変換、表示
- 複数ページを設定可能
- pageを分ける
- 実際どうするのが良いのだろうか?
- 状況によりhtmlを分ける:1つのhtmlの中にpageを何個も作っていたらサイズが大きくなる
- htmlをひとまず分けてみる
- 分けたものを実行するとどうなるのか
- jQueryMobileの事例を見てみる
- jQuery Mobile Gallery
- 山ほど事例あり。
- ただ、実装方法が良いかどうかは別の話。
- 日本語:MiseDas
- jQuery Mobile Gallery
-
- 事例をみて分かること
- pageはどう分けるか
- jQueryMobile標準の部品はどうするか
- PCサイトとモバイルサイトをどうするか
- 『戻る』ボタン対応
- 事例をみて分かること
- jQueryMobileの課題とこれから
- jQueryMobileの不便なところ
- 冗長な記述
- いじろうと思うとそれなりに大変
- 不安定なヘッダ・フッタの固定や表示・非表示機能
- 便利なような便利じゃないような機能達
- 重さ
- jQueryMobileの不便なところ
-
- jQueryMobileの便利なところ
- 開発は早く出来る
- モックを作るには便利
- デザイナーとの協業にはもってこい
- ユーザー(とユーザー予備軍)の多さ
- jQueryMobileの便利なところ
- まだまだ進化途中のフレームワークなので、欠点を把握しつつ、使える範囲で使って行くのが良さそう。
-
- 次期のバージョンでどうなるか
- 春までに1.0.1(済)→1.1→1.2とバージョンアップ予定。
- 1.1:2月中旬・下旬
- 1.2:3月〜4月位?
- 今後に期待!
- 春までに1.0.1(済)→1.1→1.2とバージョンアップ予定。
- 次期のバージョンでどうなるか
- jQueryMobileとPhoneGapとを一緒に使ってみる(各種解説を交えて)
- Phone Gapって?
- カナダのnitobi社が開発。
- 2011/10月にadobe社により買収
- 最新バージョンは1.3.0
- jQueryMobileはPhoneGapをサポートしている。
- 開発環境構築(iOS)
- 開発準備
- ファイルの配置
- ホワイトリストの作成、設定
- カメラロールから写真を撮ってみる
- Phone Gapって?
Q&A(パネルディスカッション)
ここからは、事前に回収されていたアンケート回答にあった質問に対し、今回のスピーカーお二人に加えて、福田 寅成氏(TwitterID:@cronoloves)もパネルディスカッションに併せて参加されていました。各種質問に山本氏・友田氏・福田氏のお三方が回答される、という形です。尚進行についてはタケハラさんがつとめて居られました。ビアバッシュを交えての質疑応答タイムです。
-
- Q:PhoneGapを使用した際に苦労したこと。
- ぶっちゃけ言うと、案件で使うのを検討はしたけどボツになった。らしい
- お客さんがネイティブの動きを求める=無理だな、という判断に。
- iPhoneのリストの動きをHTMLで求められてしまう。
- Q:PhoneGapを使用した際に苦労したこと。
-
- Q:様々なツールがあるが、実際に開発出使ったもの、またその際に感じた得意、不得意な事などを教えてください。
- PhoneGap, TitaniumMobile
- PG:WebViewの中で頑張る
- Titanium:jsで作ったモノがネイティブに変換される
- 開発の思想が違う。
- 速度が違う。
- PG:HTMLはネイティブ風にはなるけれどネイティブにはならない。
- Q:様々なツールがあるが、実際に開発出使ったもの、またその際に感じた得意、不得意な事などを教えてください。
所定の質疑応答が完了した後は、追加で(その場で)質問を受け付け、ディスカッションが続く形となりました。
冒頭で述べたように、jQueryMobile自体の予習は殆どせずに臨んだ今回でしたが、2セッション共に非常に分かり易い解説、説明でお話を聞くことが出来ました。普通にHTML/CSS/Javascriptが読み書き出来るのであれば全然問題無く扱えるのでは、という印象です。
ただスピーカー陣の方々も仰られていたように、まだまだ十分な本番実用に足りうるレベルには達していない部分もあるようです。今後のバージョンアップで改善・向上される事を願いつつ、現状は用途に応じて選択していく、という形が吉なのかな〜と言うのが個人的な感想でもありました。
この辺りはライブラリもそうだし、開発環境的にも色々試してみたい(Eclipseの他にもWebStorm等で)部分もあるので、簡単なサンプルアプリ程度のものでもサクッと試して見たいところ。
また、今回行われたこの『Mobapps』はシリーズとして今後も続いていくようです。次回以降の内容にも期待したいですね。