Weitere ähnliche Inhalte
Ähnlich wie 【eLV勉強会】AngularJSでのモバイルフロントエンド開発 (20)
Mehr von Hiroyuki Kusu (9)
【eLV勉強会】AngularJSでのモバイルフロントエンド開発
- 1. AngularJS での
モバイルフロントエンド開発
2014/9/30
本資料は『ITエンジニア勉強会~ Engineer’s Learning Vesper』
(http://learningvesper.doorkeeper.jp)での発表資料です。
発表後に構成をすこし修正しました。
- 10. AngularJSでのモバイルフロントエンド開発
モバイル利用でのポイント
通信頻度/量のチューニング
〜①ファイルの数と容量を減らす〜
•JavaScript/CSSファイル群のファイル圧縮(minify)、ファイ
ル結合(concat)
- Grunt もしくはgulp 等のタスクランナーで
- 場合によってはHTMLファイルも。ただAngularJS では
そこまでやらなくてよいかも
(angular-ui-router等で遅延ロードされるため)
•画像ファイルの最適化(縦横サイズ、容量)
- もしくはCSSスプライトやSVGを利用
•ファイル郡のgzip圧縮
- WEBサーバがApacheであればmod_deflate 等
- 11. AngularJSでのモバイルフロントエンド開発
モバイル利用でのポイント
通信頻度/量のチューニング
〜②ブラウザに読み込んだものは使い回す〜
•JavaScript/CSS/HTML/画像/連携APIのブラウザキャッシュ
- HTTPレスポンスヘッダの最適化(サーバ側)
- Cache-Controlヘッダ、Expiresヘッダ
- ブラウザからの条件つきリクエストへの対応(サーバ側)
- If-Modified-Sinceヘッダ、If-None-Matchヘッダ
•メモリ
- 何度もAPIを叩かないでいいように、きちんとモデル設計
をしてJavaScriptオブジェクトに
- 永続的なものはWEBストレージへ
•HTML5のApplication Cache はちょっと使い勝手が悪い
- オフラインでの動作目的でないなら、見送った方がよい
- 13. AngularJSでのモバイルフロントエンド開発
モバイル利用でのポイント
通信頻度/量のチューニング
〜③遅延ロード(必要になったらロード)〜
•JavaScriptファイル群の遅延ロード
- RequireJSを使う(ただし複雑度はあがる)
•HTMLファイル群の遅延ロード
- angular-ui-router 等のテンプレート機構を使う
•画像の遅延ロード
- ブラウザの表示領域にはいったら読み込む
•ページ内のリストの遅延ロード
- 例えば商品一覧ページで100件を表示する場合、
ブラウザで見える5件だけ表示する、など
- スクロールしたら次の5件を読み込み
- 16. AngularJSでのモバイルフロントエンド開発
モバイル利用でのポイント
通信頻度/量のチューニング
〜⑤ネットワーク〜
•JavaScript/CSS/HTML/画像ファイル群、および連携する
APIを「端末から近い」「応答が早い」場所から配信する。
- 国内だけなら、それほど気にしなくて良いかも。
•具体的には、CDN(Contents Delivery Network)を利用
する。
- AWS でいえばCroudFront
- 静的リソースが中心になるので、CDNに載せやすい
•可能であれば接続コネクションのkeepalive
- 18. AngularJSでのモバイルフロントエンド開発
モバイル利用でのポイント
セキュリティについて
•ソースはブラウザ側なので、全て解読される前提で考える
- 中間者による改竄を防ぐなら全てSSLページで
- 重要な処理は、やはりサーバ側にAPIを用意する必要ある
• フロントエンドで考えるべきは大きく3つ
- DOM Based XSS(Cross Site Scripting)
- CSRF(Cross Site Request Forgeries)
- CSP(Content Security Policy)
•ただフロントエンドについて、AngularJSは、だいたいデ
フォルトで機能を備えているような感じはある。
- 20. AngularJSでのモバイルフロントエンド開発
モバイル利用でのポイント
ほか
•必要あらば、メンテナンスモードやバージョンアップ機能
(運営側でアプリケーションを更新したい場合にブラウザ
を強制リロードさせる)を設ける
- 単純にメモリ上のJavaScriptオブジェクトだけでなく、
ブラウザへのファイルキャッシュやブラウザのストレージ
も対象
•ブラウザバックやボタン2度押し、ボタン連打への対応
•非対応ブラウザでの挙動を明確に(下位は切るのが楽)
•実機テストをしっかりと
- 22. 始めてみるAngularJSでのモバイルフロントエンド開発
開発環境の構築
•手元の環境はMac OS(Mavericks)が前提です。Windowsでも出来る
かもしれないが、敷居があると思う。
•Yeomanを利用します。
• 今回はCSSフレームワークはTwitter Bootstrap を利用、構成は
一番単純な例で説明します。
ちなみに他のCSSフレームワークを導入する手順は、こちらに書きました。
■onsen ui(AngularJSベース)のアプリケーション開発環境を構築
http://qiita.com/hkusu/items/664d025eec9f316d7270
■ionic(AngularJSベース)のアプリケーション開発環境を構築
http://qiita.com/hkusu/items/a9d5908ede11110acb88
■Yeoman でAngularJS & UI Bootstrap の開発環境構築
http://qiita.com/hkusu/items/7d748b55ba73cc8a3675
- 23. AngularJSでのモバイルフロントエンド開発
始めてみる
① HomeBrew のインストール(はいってなければ)
$ ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)”
※ 執筆時とコマンド内容が変わってるかもしれないので、公式ページ
(http://brew.sh/index_ja.html)も確認ください。
※ 事前にXcode のインストール(および起動して許諾への同意)が必要。
② Node.js のインストール(はいってなければ)
$ brew install node
- 24. AngularJSでのモバイルフロントエンド開発
始めてみる
③ Yeoman とAngularJSの雛型ジェネレータをインストール
$ npm install -g yo grunt-cli bower
$ npm install -g generator-angular
④ ディレクトリを作ってジェネレータを起動
$ mkdir hoge
$ cd hoge
$ yo angular --minsafe
- 32. ほかAngularJSでのモバイルフロントエンド開発
◆個人でAngularJS とOnsen UI で作ったもの
http://hkusu.github.io/gp-kao-catalog/
HTML5の某イベントに向けて作成しました。
作品の詳細⇒ https://5jcup.org/works/53b0e2ca43df3d6b87005186
(ソースはGitHubにも置いてあります。)
◆こちらは4月のAndroidのイベントで、AngularJS に
ついてライトニングトークした時の資料です。
http://www.slideshare.net/hiroyukikusu/abc2014-spring-ltangularjsweb