今月の技術トピックス 株式会社フォアフロンティア 2013/01 帰社日 1. 今月の技術トピックス • 今月のトピックスは以下の通り (1) HTML5関連 (2) JQuery関連 ※今月は発表が多いので少なめで 1-1-1. HTML5 • W3Cが2012/12/17にHTML5の仕様策定が完 了したことを発表 →これにより大幅な変更はされない予定 • 同時に「Canvas 2D」も仕様策定が完了 • 2014年に勧告予定 • HTML5.1は2016年に勧告予定 →2年サイクルでバージョンアップしていく予定 1-1-2. Facebook for Android2.0 • 2012/12/13にFacebook for Android2.0がリ リース • HTML5版からネイティブアプリへ変更 • iOSは既に8月の時点でネイティブへ変更済 →1.5から4.0へ評価上昇 • Android版の評価はスピードについてはまず まずの評価 1-1-3-1. Fastbook • Sencha TouchのチームがHTML5が使用して、 Facebookアプリを実装 →皮肉なもので結構早い・・・ • こういうアプリが出るとFacebook社の技術者の面 目が・・・ • 動画を見る限りだとネイティブとほとんど差が無 いように見えます! 【URL】 http://www.sencha.com/blog/the-makingof-fastbook-an-html5-love-story/ 1-1-3-2. 速度向上のテクニック • DOMツリーを分離して小さくする →これによりレンダリング速度を確保 →「Sandbox Container」っていうテクニックを用いた らい • 不必要なレイアウト処理を停止 →高速スクロール時にイメージロードなどのレタリ ングを一時停止など • WebWorkersでUIと処理部分を分離 【参照】 http://www.publickey1.jp/blog/12/facebookhtml5sencha_touch3.html 1-1-4. Navigation Timing API • 2012/12/17にNavigation Timing APIが勧告 • HTML5のAPIでWebブラウザが画面表示するの にどれだけ時間がかかっているかを取得できる APIです(うーん、マニアック・・・) • 以下のサイトで解説あり 【URL】 http://www.hcn.zaq.ne.jp/___/WEB/navigation-timing-ja.html 【サンプル】(onloadで実行) var now = new Date().getTime(); var page_load_time = now - performance.timing.navigationStart; alert("User-perceived page loading time: " + page_load_time); 1-2-0. JQueryセレクタ概要 • これから、JQueryのせクレタについて説明しま すが「技術者が調べる」とはどういうことかに ついても触れます →意外と「調べる」について勘違いしている • 技術能力に差が出るところですね! 1-2-1. JQueryセレクタ概要 • セレクタとはHTMLから指定した特定の要素を 取得する処理 • 文法は$(”ここに対象セレクタを記述”) • もちろん、このセレクタ処理はJavaScriptで処 理されている • JavaScriptではクライアント端末の影響を受け るため、よりパフォーマンスに気を使う必要が ある 1-2-2-1. セレクタパフォーマンス • まず、パフォーマンスについて気にすることが あれば技術者としての素質があります。 • もし、「サイトに載っている」 or 「書籍に載って いる」内容をコピーしているのであれば、サン プルがないと作れない人です。 • このパターンの人は以下の弊害 (1) サンプルがないとコーディングできない (2) 問題が発生すると解決できない 1-2-2-2. セレクタパフォーマンス • 例えば、以下のセレクタ指定をした場合、ど れが一番早いでしょうか? (1) $(“#hyuga”); // IDセレクタ (2) $(“p”); // タイプセレクタ (3) $(“.toru”); // classセレクタ (4) $(“[hyuga=‘sasa’]”); // 属性セレクタ • 内部でどのような処理がされているかを考え ればわかります! 1-2-3-3. セレクタパフォーマンス • 以下の順番で速度が速いです! (1) $(“#hyuga”); // IDセレクタ (2) $(“p”); // タイプセレクタ (3) $(“.toru”); // classセレクタ (4) $(“[hyuga=‘sasa’]”); // 属性セレクタ • ここで何を思いましたか? 1-2-3-4. セレクタパフォーマンス • 先ほどの順番だけ覚えている人は伸びない →コーディング能力は暗記ではなく、数学的能 力(公式を元に応用)が必要 • このタイプは以下の弊害が発生 (1) どうしての説明ができない (2) 予期せぬ問題が発生すると解決不可能 • ではどうする? 1-2-3-5. セレクタパフォーマンス • では何が重要でしょうか? 【ここ重要】順番ではなく、論理的に調査する! • 何故?差が出るかについて根拠が必要 →つまり、ソースを解析 or 実証して根拠を導きた すことが大切 • これにより以下のプラス要素がある (1) ソース解析により、内部動作を理解できて最適 な使用方法がわかる (2) 問題が発生しても問題個所の特定が可能 1-2-4-1. 内部解析 • (1)~(3)はgetElementBy系で処理しているの に対し、(4)はquerySelectorAllで処理する • 次にclassセレクタはgetElementsByClassName が対応していないブラウザ(IE8等)の場合、 JQuery独自(Sizzle)の処理を行なう • 属性セレクタについても未対応ブラウザには JQuery独自(Sizzle)の処理を行なう 1-2-4-2. 内部解析 • 「getElementBy」とSizzleって何が違う? • もし、上記に気が付くようであれば伸びる要 素が高い • 「getElementBy」はJavaScriptネイティブなAPI →つまり、ブラウザ実装(FireFoxなどはC実装) • 「Sizzle」はJavaScriptでJQueryが独自実装 • これ以上は長くなりそうなので興味があれば 【参考】 http://dresscording.com/blog/jquery_performance.html 2. おまけ • LINE GAMEコンテストを2013年に実施 • 対象はLINEと連携しているプラットフォーム 「LINE GAME」で提供するゲーム • 対象受賞作には1,000万円 • 応募開始は2013/01/21~3/19 • 応募条件はLINEにあったらいいなと思うゲー ムでiPhone or Androidアプリ 【参照】http://gameapp.line.naver.jp/contest/
© Copyright 2024 ExpyDoc