SlideShare ist ein Scribd-Unternehmen logo
1 von 37
HTML5でスマホ開発
              理想と現実
株式会社フォリフ
エンジニア
大橋 巧
2012/06/28 第4回SmartHacks
about:me



•   スマホ向けWebアプリのフロントエンド開発

•   昔は微生物の研究してました

•   最近はBackbone.jsとかCoffeeScriptとか
今日話す事


•   HTML5概要

•   開発事例紹介

•   HTML5でスマートフォン開発・理想と現実
HTML5概要
ざっくりHTML5概要

• 文章の構造を明確化
• 画像描画、動画や音声の再生
• 位置情報、双方向通信etc...
• HTML5 + JavaScript + CSS3
開発事例紹介
Corollin’ Planet

• 2011年7月
• iOS/Android
• 開発2週間くらい
•   corollin.com
Corollin’ Planet
•   今年3月、Mobile Hack Tokyoの
    HackathonにてFacebookアプリ
    としてリリース
    ○ 得点、進行状況のシェア
    ○ 友人のプレイ記録をゲーム
    内で見られる


•   ザッカーバーグにも遊んでも
    らった


•   Best Social Mobile Game受賞!


•   ついでにPCブラウザにも対応
Final Rebellion

•   MMOストラテジー


•   マップのスクロール、
    ガチャ演出などに
    HTML5を使用


•   joynt.in/finalrebellion
HTML5
 理想
HTML5なら

• HTML5があればFlashはオワコン
• iOS/Androidのクロスプラット
 フォーム対応

• これからはWebアプリの時代!
現実
HTML5あるある

•   Flashライクなアニメーションは手間がかかる
    上に重い

•   iOSとAndroidで全然表示が違う、というか動
    かない

•   明らかにネイティブより見劣りする
アニメーション
Canvasアニメーション

var canvas = document.getElementById( canvas );
var ctx = canvas.getContext( 2d );
var img = document.createElement( img );
img.src = hoge.png ;
img.onload = setInterval(function() {
   // 描画リフレッシュ
   ctx.clearRect(0, 0, canvas.width, canvas.height);
   // 座標を移動させながら描画
   ctx.drawImage(img, x++, y);
}, 33);
CSS3アニメーション

•    Animation
     ○ キーフレームをCSSに記述
    CSS:
      #hoge {
        -webkit-animation: animation_1 1s infinite;
      }
      @-webkit-keyframes animation_1 {
        0% { left: 0px; }
        50% { left: 200px; }
        100% { left: 100px; top: 100px; }
      }
CSS3アニメーション
•    Transition
     ○ 時間的変化
     ○ スタイルを変更すると自動的にアニメー
     ションを伴って変化する
    CSS:
        -webkit-transition: ease-out 2s;
    js:
        document.getElementById( hoge ).style.left = 100px ;
        document.getElementById( hoge ).style.top = 100px ;
開発環境整ってない

•   これらを手打ち→確認の繰り返しはつらい

•   CanvasのAPIは基本的な機能のみ
toDataURL(), getContext(), beginPath(), moveTo(), closePath(), lineTo(), quadraticCurveTo(),
bezierCurveTo(), arcTo(), arc(), rect(), fill(), stroke(), clip(), isPointInPath(), clearRect(),
fillRect(), strokeRect(), addColorStop(), createLinearGradient(), createRadialGradient(),
createPattern(), save(), restore(), scale(), rotate(), translate(), transform(), setTransform(),
createImageData(), getImageData(), putImageData(), drawImage(), fillText(), strokeText(),
measureText(), drawFocusRing(), strokeStyle, fillStyle, globalAlpha,
globalCompositeOperation, lineWidth, lineCap, lineJoin, miterLimit, shadowColor,
shadowOffsetX, shadowOffsetY, shadowBlur, font, textAlign, textBaseline
開発環境整ってない

•   ライブラリの使用
    Easel.js, cake.js, Arctic.js, etc...

•   オーサリングツールの使用
    Adobe Edge, Sencha Animater, etc...

•   CS6からHTML5書き出しサポート
アニメーション重い


•   CanvasやCSS3アニメーションはFlashと比較す
    ると重い、複雑なものになると顕著

•   同時に多数のオブジェクトを動かしている
    と、ブラウザが落ちることも
アニメーション重い

•   Canvasアニメーションでは毎フレームCanvasを
    クリアする必要があるため必然的に描画範囲
    が大きくなり、重くなる
    →必要な部分だけ再描画する

•   CorollinではあらかじめgetImageDataアニメー
    ションパターンを読み込み、putImageDataで連
    続的に再生
    →drawImageより描画コスト軽い
アニメーション重い

•   iOSではtransformプロパティなどに対してGPU
    アクセラレーションが有効になる
    →iOS5からはCanvasに対しても有効

•   iOSシミュレータの場合
    デバッグ→ブレンドレイヤーで確認
iOS/Android
クロスプラットフォーム
バラバラ


•   OSのバージョン

•   HTML5対応状況

•   画面サイズ、解像度
Androidのバグ

•   CanvasのdrawImageメソッドで座標・サイズが1.5倍に引き延ばされる
    (Android2.1)

•   Android2.2以降でTransformを設定した要素の子要素にTransformを設定
    →アニメーション時、一瞬Transformが適用されない事がある
    (Android2.2)

•   viewportでの拡大縮小無効が効かない(HTC製端末)

•   最近の高解像度端末で、AndroidのバージョンがOpenGLに対応してい
    ない2.x系の場合、画面フリック時にレンダリング止まる


                   ※ほんの一例です
Androidのバグ
•   ものによっては対策方法がある
    // Android2.1系のdrawImageバグ修正
    var zoom_fix = Math.sqrt(320 / screen.width);
    ctx.scale(zoom_fix, zoom_fix);
    ctx.drawImage(hoge, 0, 0);

•   バグが報告されているプロパティは使用を避
    けるのが無難

•   それでも新たな機種やOS依存のバグにぶつか
    るのがAndroid
最大の問題


•   OSアップデートがされない端末も多い
    →OSのサイクルが長い

•   Android2.1以下のシェアは約5.8%
    ※2012年6月1日時点
    参考URL:http://developer.android.com/about/dashboards/index.html
Androidのカオス




出典:http://techcrunch.com/2012/05/11/this-is-what-developing-for-android-looks-like/
モバイルフレームワーク
•   jQuery Mobile, Sencha Touch, etc..

•   簡単にクロスブラウザ対応のサイトが作れる
    →仕様の差異は吸収してくれる

•   スライドなどのエフェクトを伴うページ遷移

•   フレームワークの縛りが多い

•   ゲームやアニメーション向きではない
Retinaディスプレイ対応

•   解像度2倍

•   iPhoneはほとんど4, 4S

•   Retinaディスプレイに合わせた適切な解像度の
    画像を用意しないと、逆に汚く見えてしまう
Retinaディスプレイ対応
•     devicePixelRatioで判断
    window.devicePixelRatio // 2ならRetina
    // Androidは1.5のものが多い、念のためUAと合わせて判断


•     2倍サイズの画像を用意する

•     CanvasのRetina対応
    <canvas width= 200 height= 200 style= width: 100px; height: 100px; >
    ctx.drawImage(img, 0, 0, 200, 200);


      →アニメーションのパフォーマンスにも影響
ネイティブ機能
ネイティブ機能

•   タッチイベント取得

•   加速度センサー

•   3D描画

•   カメラ使用

•   電池残量取得
もうちょっと先?

•   やっぱりOSごとの対応状況バラバラ
    →参考URL: http://mobilehtml5.org/

•   HTML5の仕様から外れるものも
    ex: Web SQL Database

•   ドキュメント少ない
まとめ
まとめ

•   HTML5はこれまでにないリッチなWebアプリを提供
    できるが、万能ではない

•   対応端末,OSを明確に

•   新しいAPIやライブラリは事前検証

•   iOSベースで開発→Androidに合わせるよりはAndroid
    ベースで開発→iOSに合わせるという選択肢も


    Androidでのチェックを万全に!
ありがとうございました

Weitere ähnliche Inhalte

Was ist angesagt?

Flux react現状確認会
Flux react現状確認会Flux react現状確認会
Flux react現状確認会VOYAGE GROUP
 
( ゚∀゚)o彡° Flux! Flux!
( ゚∀゚)o彡° Flux! Flux!( ゚∀゚)o彡° Flux! Flux!
( ゚∀゚)o彡° Flux! Flux!Yuki Ishikawa
 
タスクランナー導入 〜とあるWordPress制作環境〜
タスクランナー導入 〜とあるWordPress制作環境〜タスクランナー導入 〜とあるWordPress制作環境〜
タスクランナー導入 〜とあるWordPress制作環境〜Masaya Kogawa
 
12.09.08 明星和楽2012 KLabハンズオンセッション
12.09.08 明星和楽2012 KLabハンズオンセッション12.09.08 明星和楽2012 KLabハンズオンセッション
12.09.08 明星和楽2012 KLabハンズオンセッションKei Nakazawa
 
Smartphone ui:ux」 de na creative seminar vol.1 レポート
Smartphone ui:ux」 de na creative seminar vol.1 レポートSmartphone ui:ux」 de na creative seminar vol.1 レポート
Smartphone ui:ux」 de na creative seminar vol.1 レポートMasaru Kimura
 
サーバサイドエンジニアが 1年間まじめにSPAやってみた
サーバサイドエンジニアが 1年間まじめにSPAやってみたサーバサイドエンジニアが 1年間まじめにSPAやってみた
サーバサイドエンジニアが 1年間まじめにSPAやってみたItaru Kitagawa
 
軽量ASP.NETフレームワークNancy
軽量ASP.NETフレームワークNancy軽量ASP.NETフレームワークNancy
軽量ASP.NETフレームワークNancyNarami Kiyokura
 
CSS Nite LP26 CodeKitで始める次世代Web制作
CSS Nite LP26 CodeKitで始める次世代Web制作CSS Nite LP26 CodeKitで始める次世代Web制作
CSS Nite LP26 CodeKitで始める次世代Web制作Maboroshi.inc
 
フロントエンド初学者がSPAに手を出してみた
フロントエンド初学者がSPAに手を出してみたフロントエンド初学者がSPAに手を出してみた
フロントエンド初学者がSPAに手を出してみたKei Yagi
 
Xamarin で Prism を使いたい! ~「正式対応」 まで待てない人のための Prism 利用 Tips~
Xamarin で Prism を使いたい! ~「正式対応」 まで待てない人のための Prism 利用 Tips~Xamarin で Prism を使いたい! ~「正式対応」 まで待てない人のための Prism 利用 Tips~
Xamarin で Prism を使いたい! ~「正式対応」 まで待てない人のための Prism 利用 Tips~Tatsuji Kuroyanagi
 
第1回 Japan Xamarin User Group Conference - Xamarin 概要
第1回 Japan Xamarin User Group Conference - Xamarin 概要第1回 Japan Xamarin User Group Conference - Xamarin 概要
第1回 Japan Xamarin User Group Conference - Xamarin 概要Yoshito Tabuchi
 
React+fluxを導入した話
React+fluxを導入した話React+fluxを導入した話
React+fluxを導入した話Yuki Ishikawa
 
Virtual boxからVM Importする
Virtual boxからVM ImportするVirtual boxからVM Importする
Virtual boxからVM ImportするShinji Saito
 

Was ist angesagt? (19)

Chrome 拡張のご紹介
Chrome 拡張のご紹介Chrome 拡張のご紹介
Chrome 拡張のご紹介
 
Flux react現状確認会
Flux react現状確認会Flux react現状確認会
Flux react現状確認会
 
( ゚∀゚)o彡° Flux! Flux!
( ゚∀゚)o彡° Flux! Flux!( ゚∀゚)o彡° Flux! Flux!
( ゚∀゚)o彡° Flux! Flux!
 
タスクランナー導入 〜とあるWordPress制作環境〜
タスクランナー導入 〜とあるWordPress制作環境〜タスクランナー導入 〜とあるWordPress制作環境〜
タスクランナー導入 〜とあるWordPress制作環境〜
 
12.09.08 明星和楽2012 KLabハンズオンセッション
12.09.08 明星和楽2012 KLabハンズオンセッション12.09.08 明星和楽2012 KLabハンズオンセッション
12.09.08 明星和楽2012 KLabハンズオンセッション
 
Smartphone ui:ux」 de na creative seminar vol.1 レポート
Smartphone ui:ux」 de na creative seminar vol.1 レポートSmartphone ui:ux」 de na creative seminar vol.1 レポート
Smartphone ui:ux」 de na creative seminar vol.1 レポート
 
サーバサイドエンジニアが 1年間まじめにSPAやってみた
サーバサイドエンジニアが 1年間まじめにSPAやってみたサーバサイドエンジニアが 1年間まじめにSPAやってみた
サーバサイドエンジニアが 1年間まじめにSPAやってみた
 
Xamarin の救世主 Unity !
Xamarin の救世主 Unity !Xamarin の救世主 Unity !
Xamarin の救世主 Unity !
 
Xamarin 基礎講座
Xamarin 基礎講座Xamarin 基礎講座
Xamarin 基礎講座
 
軽量ASP.NETフレームワークNancy
軽量ASP.NETフレームワークNancy軽量ASP.NETフレームワークNancy
軽量ASP.NETフレームワークNancy
 
CSS Nite LP26 CodeKitで始める次世代Web制作
CSS Nite LP26 CodeKitで始める次世代Web制作CSS Nite LP26 CodeKitで始める次世代Web制作
CSS Nite LP26 CodeKitで始める次世代Web制作
 
フロントエンド初学者がSPAに手を出してみた
フロントエンド初学者がSPAに手を出してみたフロントエンド初学者がSPAに手を出してみた
フロントエンド初学者がSPAに手を出してみた
 
Aiming study#6pdf
Aiming study#6pdfAiming study#6pdf
Aiming study#6pdf
 
Xamarin で Prism を使いたい! ~「正式対応」 まで待てない人のための Prism 利用 Tips~
Xamarin で Prism を使いたい! ~「正式対応」 まで待てない人のための Prism 利用 Tips~Xamarin で Prism を使いたい! ~「正式対応」 まで待てない人のための Prism 利用 Tips~
Xamarin で Prism を使いたい! ~「正式対応」 まで待てない人のための Prism 利用 Tips~
 
Xamarin Overview
Xamarin Overview Xamarin Overview
Xamarin Overview
 
第1回 Japan Xamarin User Group Conference - Xamarin 概要
第1回 Japan Xamarin User Group Conference - Xamarin 概要第1回 Japan Xamarin User Group Conference - Xamarin 概要
第1回 Japan Xamarin User Group Conference - Xamarin 概要
 
Vue.js + WordPress
Vue.js + WordPressVue.js + WordPress
Vue.js + WordPress
 
React+fluxを導入した話
React+fluxを導入した話React+fluxを導入した話
React+fluxを導入した話
 
Virtual boxからVM Importする
Virtual boxからVM ImportするVirtual boxからVM Importする
Virtual boxからVM Importする
 

Ähnlich wie HTML5でスマートフォン開発の理想と現実

F-site発表資料「Flashユーザーが今覚えておきたいHTML5」
F-site発表資料「Flashユーザーが今覚えておきたいHTML5」F-site発表資料「Flashユーザーが今覚えておきたいHTML5」
F-site発表資料「Flashユーザーが今覚えておきたいHTML5」Yasunobu Ikeda
 
パララックスでレスポンシブでJ query mobileなサイトのつくりかた
パララックスでレスポンシブでJ query mobileなサイトのつくりかたパララックスでレスポンシブでJ query mobileなサイトのつくりかた
パララックスでレスポンシブでJ query mobileなサイトのつくりかたShumpei Shiraishi
 
インタラクティブコンテンツにおけるHTML5とFlash
インタラクティブコンテンツにおけるHTML5とFlashインタラクティブコンテンツにおけるHTML5とFlash
インタラクティブコンテンツにおけるHTML5とFlashYasunobu Ikeda
 
Core Animation 使って見た
Core Animation 使って見たCore Animation 使って見た
Core Animation 使って見たOCHI Shuji
 
Xamarin 概要 2014年08月版
Xamarin 概要 2014年08月版Xamarin 概要 2014年08月版
Xamarin 概要 2014年08月版Yoshito Tabuchi
 
短期間+大規模ゲーム開発でも破綻しないHTML・SCSS
短期間+大規模ゲーム開発でも破綻しないHTML・SCSS短期間+大規模ゲーム開発でも破綻しないHTML・SCSS
短期間+大規模ゲーム開発でも破綻しないHTML・SCSSShogo Iwano
 
MTセミナー2011/2/21 アイデアマンズ株式会社
MTセミナー2011/2/21 アイデアマンズ株式会社MTセミナー2011/2/21 アイデアマンズ株式会社
MTセミナー2011/2/21 アイデアマンズ株式会社Kunihiko Miyanaga
 
スマートフォン対応、気をつけたいトラブル
スマートフォン対応、気をつけたいトラブルスマートフォン対応、気をつけたいトラブル
スマートフォン対応、気をつけたいトラブルHiroaki Wakamatsu
 
Web制作勉強会 #2
Web制作勉強会 #2Web制作勉強会 #2
Web制作勉強会 #2Moto Yan
 
レスポンシブWebデザイン【発展編】
レスポンシブWebデザイン【発展編】レスポンシブWebデザイン【発展編】
レスポンシブWebデザイン【発展編】Yasuhito Yabe
 
2012 05-19第44回cocoa勉強会発表資料
2012 05-19第44回cocoa勉強会発表資料2012 05-19第44回cocoa勉強会発表資料
2012 05-19第44回cocoa勉強会発表資料OCHI Shuji
 
ブラウザにやさしいHTML/CSS
ブラウザにやさしいHTML/CSSブラウザにやさしいHTML/CSS
ブラウザにやさしいHTML/CSSTakeharu Igari
 
Mtddc hokkaido-2010-ideamans-session
Mtddc hokkaido-2010-ideamans-sessionMtddc hokkaido-2010-ideamans-session
Mtddc hokkaido-2010-ideamans-sessionKunihiko Miyanaga
 
レスポンシブWebデザイン【基礎編】
レスポンシブWebデザイン【基礎編】レスポンシブWebデザイン【基礎編】
レスポンシブWebデザイン【基礎編】Yasuhito Yabe
 
Web development fundamental_v2
Web development fundamental_v2Web development fundamental_v2
Web development fundamental_v2Takuya Kumagai
 

Ähnlich wie HTML5でスマートフォン開発の理想と現実 (20)

F-site発表資料「Flashユーザーが今覚えておきたいHTML5」
F-site発表資料「Flashユーザーが今覚えておきたいHTML5」F-site発表資料「Flashユーザーが今覚えておきたいHTML5」
F-site発表資料「Flashユーザーが今覚えておきたいHTML5」
 
パララックスでレスポンシブでJ query mobileなサイトのつくりかた
パララックスでレスポンシブでJ query mobileなサイトのつくりかたパララックスでレスポンシブでJ query mobileなサイトのつくりかた
パララックスでレスポンシブでJ query mobileなサイトのつくりかた
 
インタラクティブコンテンツにおけるHTML5とFlash
インタラクティブコンテンツにおけるHTML5とFlashインタラクティブコンテンツにおけるHTML5とFlash
インタラクティブコンテンツにおけるHTML5とFlash
 
Core Animation 使って見た
Core Animation 使って見たCore Animation 使って見た
Core Animation 使って見た
 
Xamarin 概要 2014年08月版
Xamarin 概要 2014年08月版Xamarin 概要 2014年08月版
Xamarin 概要 2014年08月版
 
短期間+大規模ゲーム開発でも破綻しないHTML・SCSS
短期間+大規模ゲーム開発でも破綻しないHTML・SCSS短期間+大規模ゲーム開発でも破綻しないHTML・SCSS
短期間+大規模ゲーム開発でも破綻しないHTML・SCSS
 
Silverlightの今
Silverlightの今Silverlightの今
Silverlightの今
 
MTセミナー2011/2/21 アイデアマンズ株式会社
MTセミナー2011/2/21 アイデアマンズ株式会社MTセミナー2011/2/21 アイデアマンズ株式会社
MTセミナー2011/2/21 アイデアマンズ株式会社
 
スマートフォン対応、気をつけたいトラブル
スマートフォン対応、気をつけたいトラブルスマートフォン対応、気をつけたいトラブル
スマートフォン対応、気をつけたいトラブル
 
Web制作勉強会 #2
Web制作勉強会 #2Web制作勉強会 #2
Web制作勉強会 #2
 
Html5制作の現在
Html5制作の現在Html5制作の現在
Html5制作の現在
 
レスポンシブWebデザイン【発展編】
レスポンシブWebデザイン【発展編】レスポンシブWebデザイン【発展編】
レスポンシブWebデザイン【発展編】
 
2012 05-19第44回cocoa勉強会発表資料
2012 05-19第44回cocoa勉強会発表資料2012 05-19第44回cocoa勉強会発表資料
2012 05-19第44回cocoa勉強会発表資料
 
ブラウザにやさしいHTML/CSS
ブラウザにやさしいHTML/CSSブラウザにやさしいHTML/CSS
ブラウザにやさしいHTML/CSS
 
テスト
テストテスト
テスト
 
Mtddc hokkaido-2010-ideamans-session
Mtddc hokkaido-2010-ideamans-sessionMtddc hokkaido-2010-ideamans-session
Mtddc hokkaido-2010-ideamans-session
 
レスポンシブWebデザイン【基礎編】
レスポンシブWebデザイン【基礎編】レスポンシブWebデザイン【基礎編】
レスポンシブWebデザイン【基礎編】
 
Mvc conf session_5_isami
Mvc conf session_5_isamiMvc conf session_5_isami
Mvc conf session_5_isami
 
Web development fundamental_v2
Web development fundamental_v2Web development fundamental_v2
Web development fundamental_v2
 
Metro#1
Metro#1Metro#1
Metro#1
 

Kürzlich hochgeladen

新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/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
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video UnderstandingToru Tamaki
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルCRI Japan, Inc.
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...Toru Tamaki
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Gamesatsushi061452
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Hiroshi Tomioka
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイスCRI Japan, Inc.
 

Kürzlich hochgeladen (11)

新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 

HTML5でスマートフォン開発の理想と現実

  • 1. HTML5でスマホ開発 理想と現実 株式会社フォリフ エンジニア 大橋 巧 2012/06/28 第4回SmartHacks
  • 2. about:me • スマホ向けWebアプリのフロントエンド開発 • 昔は微生物の研究してました • 最近はBackbone.jsとかCoffeeScriptとか
  • 3. 今日話す事 • HTML5概要 • 開発事例紹介 • HTML5でスマートフォン開発・理想と現実
  • 5. ざっくりHTML5概要 • 文章の構造を明確化 • 画像描画、動画や音声の再生 • 位置情報、双方向通信etc... • HTML5 + JavaScript + CSS3
  • 7. Corollin’ Planet • 2011年7月 • iOS/Android • 開発2週間くらい • corollin.com
  • 8. Corollin’ Planet • 今年3月、Mobile Hack Tokyoの HackathonにてFacebookアプリ としてリリース ○ 得点、進行状況のシェア ○ 友人のプレイ記録をゲーム 内で見られる • ザッカーバーグにも遊んでも らった • Best Social Mobile Game受賞! • ついでにPCブラウザにも対応
  • 9. Final Rebellion • MMOストラテジー • マップのスクロール、 ガチャ演出などに HTML5を使用 • joynt.in/finalrebellion
  • 11. HTML5なら • HTML5があればFlashはオワコン • iOS/Androidのクロスプラット フォーム対応 • これからはWebアプリの時代!
  • 13. HTML5あるある • Flashライクなアニメーションは手間がかかる 上に重い • iOSとAndroidで全然表示が違う、というか動 かない • 明らかにネイティブより見劣りする
  • 15. Canvasアニメーション var canvas = document.getElementById( canvas ); var ctx = canvas.getContext( 2d ); var img = document.createElement( img ); img.src = hoge.png ; img.onload = setInterval(function() { // 描画リフレッシュ ctx.clearRect(0, 0, canvas.width, canvas.height); // 座標を移動させながら描画 ctx.drawImage(img, x++, y); }, 33);
  • 16. CSS3アニメーション • Animation ○ キーフレームをCSSに記述 CSS: #hoge { -webkit-animation: animation_1 1s infinite; } @-webkit-keyframes animation_1 { 0% { left: 0px; } 50% { left: 200px; } 100% { left: 100px; top: 100px; } }
  • 17. CSS3アニメーション • Transition ○ 時間的変化 ○ スタイルを変更すると自動的にアニメー ションを伴って変化する CSS: -webkit-transition: ease-out 2s; js: document.getElementById( hoge ).style.left = 100px ; document.getElementById( hoge ).style.top = 100px ;
  • 18. 開発環境整ってない • これらを手打ち→確認の繰り返しはつらい • CanvasのAPIは基本的な機能のみ toDataURL(), getContext(), beginPath(), moveTo(), closePath(), lineTo(), quadraticCurveTo(), bezierCurveTo(), arcTo(), arc(), rect(), fill(), stroke(), clip(), isPointInPath(), clearRect(), fillRect(), strokeRect(), addColorStop(), createLinearGradient(), createRadialGradient(), createPattern(), save(), restore(), scale(), rotate(), translate(), transform(), setTransform(), createImageData(), getImageData(), putImageData(), drawImage(), fillText(), strokeText(), measureText(), drawFocusRing(), strokeStyle, fillStyle, globalAlpha, globalCompositeOperation, lineWidth, lineCap, lineJoin, miterLimit, shadowColor, shadowOffsetX, shadowOffsetY, shadowBlur, font, textAlign, textBaseline
  • 19. 開発環境整ってない • ライブラリの使用 Easel.js, cake.js, Arctic.js, etc... • オーサリングツールの使用 Adobe Edge, Sencha Animater, etc... • CS6からHTML5書き出しサポート
  • 20. アニメーション重い • CanvasやCSS3アニメーションはFlashと比較す ると重い、複雑なものになると顕著 • 同時に多数のオブジェクトを動かしている と、ブラウザが落ちることも
  • 21. アニメーション重い • Canvasアニメーションでは毎フレームCanvasを クリアする必要があるため必然的に描画範囲 が大きくなり、重くなる →必要な部分だけ再描画する • CorollinではあらかじめgetImageDataアニメー ションパターンを読み込み、putImageDataで連 続的に再生 →drawImageより描画コスト軽い
  • 22. アニメーション重い • iOSではtransformプロパティなどに対してGPU アクセラレーションが有効になる →iOS5からはCanvasに対しても有効 • iOSシミュレータの場合 デバッグ→ブレンドレイヤーで確認
  • 24. バラバラ • OSのバージョン • HTML5対応状況 • 画面サイズ、解像度
  • 25. Androidのバグ • CanvasのdrawImageメソッドで座標・サイズが1.5倍に引き延ばされる (Android2.1) • Android2.2以降でTransformを設定した要素の子要素にTransformを設定 →アニメーション時、一瞬Transformが適用されない事がある (Android2.2) • viewportでの拡大縮小無効が効かない(HTC製端末) • 最近の高解像度端末で、AndroidのバージョンがOpenGLに対応してい ない2.x系の場合、画面フリック時にレンダリング止まる ※ほんの一例です
  • 26. Androidのバグ • ものによっては対策方法がある // Android2.1系のdrawImageバグ修正 var zoom_fix = Math.sqrt(320 / screen.width); ctx.scale(zoom_fix, zoom_fix); ctx.drawImage(hoge, 0, 0); • バグが報告されているプロパティは使用を避 けるのが無難 • それでも新たな機種やOS依存のバグにぶつか るのがAndroid
  • 27. 最大の問題 • OSアップデートがされない端末も多い →OSのサイクルが長い • Android2.1以下のシェアは約5.8% ※2012年6月1日時点 参考URL:http://developer.android.com/about/dashboards/index.html
  • 29. モバイルフレームワーク • jQuery Mobile, Sencha Touch, etc.. • 簡単にクロスブラウザ対応のサイトが作れる →仕様の差異は吸収してくれる • スライドなどのエフェクトを伴うページ遷移 • フレームワークの縛りが多い • ゲームやアニメーション向きではない
  • 30. Retinaディスプレイ対応 • 解像度2倍 • iPhoneはほとんど4, 4S • Retinaディスプレイに合わせた適切な解像度の 画像を用意しないと、逆に汚く見えてしまう
  • 31. Retinaディスプレイ対応 • devicePixelRatioで判断 window.devicePixelRatio // 2ならRetina // Androidは1.5のものが多い、念のためUAと合わせて判断 • 2倍サイズの画像を用意する • CanvasのRetina対応 <canvas width= 200 height= 200 style= width: 100px; height: 100px; > ctx.drawImage(img, 0, 0, 200, 200); →アニメーションのパフォーマンスにも影響
  • 33. ネイティブ機能 • タッチイベント取得 • 加速度センサー • 3D描画 • カメラ使用 • 電池残量取得
  • 34. もうちょっと先? • やっぱりOSごとの対応状況バラバラ →参考URL: http://mobilehtml5.org/ • HTML5の仕様から外れるものも ex: Web SQL Database • ドキュメント少ない
  • 36. まとめ • HTML5はこれまでにないリッチなWebアプリを提供 できるが、万能ではない • 対応端末,OSを明確に • 新しいAPIやライブラリは事前検証 • iOSベースで開発→Androidに合わせるよりはAndroid ベースで開発→iOSに合わせるという選択肢も Androidでのチェックを万全に!

Hinweis der Redaktion

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. \n
  34. \n
  35. \n
  36. \n
  37. \n