Accueil
Explorer
Soumettre la recherche
Mettre en ligne
S’identifier
S’inscrire
Publicité
12.09.08 明星和楽2012 KLabハンズオンセッション
Signaler
Kei Nakazawa
Suivre
Developer à KLab Inc.
8 Sep 2012
•
0 j'aime
4 j'aime
×
Soyez le premier à aimer ceci
afficher plus
•
1,762 vues
vues
×
Nombre de vues
0
Sur Slideshare
0
À partir des intégrations
0
Nombre d'intégrations
0
Check these out next
タスクランナー導入 〜とあるWordPress制作環境〜
Masaya Kogawa
SWFバージョン4においてのテキスト形式によるコンパイル結果の違い及びJavaScriptでのその描画方法に関する考察
Kazuhiro Kosaka
Sass/Compass よくあるトラブルと 解決方法・回避方法
Maboroshi.inc
いまさら聞けない!?Backbone.js 超入門
Kohei Kadowaki
svelte と tailwind で始めるフロントエンド開発
Shuichi Takaya
JavaScript 研修
Yuki Ishikawa
E2E CSS Testing at HTML5 Conference 2016
Takeharu Igari
モダンJavaScriptフレームワークで技術的負債を作らないために
YukiOniki
1
sur
52
Top clipped slide
12.09.08 明星和楽2012 KLabハンズオンセッション
8 Sep 2012
•
0 j'aime
4 j'aime
×
Soyez le premier à aimer ceci
afficher plus
•
1,762 vues
vues
×
Nombre de vues
0
Sur Slideshare
0
À partir des intégrations
0
Nombre d'intégrations
0
Télécharger maintenant
Télécharger pour lire hors ligne
Signaler
Flash LiteのアニメーションをJS+CSSに書き換えてみるハンズオンです。変換技術の紹介もいくつかしています。
Kei Nakazawa
Suivre
Developer à KLab Inc.
Publicité
Publicité
Publicité
Recommandé
まだ DOM 操作で消耗してるの?
Yuki Ishikawa
68.1K vues
•
50 diapositives
サーバサイドエンジニアが 1年間まじめにSPAやってみた
Itaru Kitagawa
17K vues
•
50 diapositives
SIROK技術勉強会 #1 「Reactってなんだ?」
Naoyuki Kataoka
65.3K vues
•
86 diapositives
CSS Nite LP26 CodeKitで始める次世代Web制作
Maboroshi.inc
16.1K vues
•
90 diapositives
Sass実践編+Compass入門
Yoshiya OKI
1.6K vues
•
24 diapositives
なぜ人は必死でjQueryを捨てようとしているのか
Yoichi Toyota
80.1K vues
•
15 diapositives
Contenu connexe
Présentations pour vous
(20)
タスクランナー導入 〜とあるWordPress制作環境〜
Masaya Kogawa
•
2.5K vues
SWFバージョン4においてのテキスト形式によるコンパイル結果の違い及びJavaScriptでのその描画方法に関する考察
Kazuhiro Kosaka
•
67 vues
Sass/Compass よくあるトラブルと 解決方法・回避方法
Maboroshi.inc
•
26.9K vues
いまさら聞けない!?Backbone.js 超入門
Kohei Kadowaki
•
21.2K vues
svelte と tailwind で始めるフロントエンド開発
Shuichi Takaya
•
170 vues
JavaScript 研修
Yuki Ishikawa
•
13.6K vues
E2E CSS Testing at HTML5 Conference 2016
Takeharu Igari
•
1.5K vues
モダンJavaScriptフレームワークで技術的負債を作らないために
YukiOniki
•
80 vues
( ゚∀゚)o彡° Flux! Flux!
Yuki Ishikawa
•
1.2K vues
LambdaでHello, World(2017/07/21 サーバレスアーキテクチャ勉強会)
Kousuke Ishikawa
•
128 vues
angular X designer - デザイナからみたAngularJS #ten1club
silvers ofsilvers
•
13K vues
インタラクティブコンテンツにおけるHTML5とFlash
Yasunobu Ikeda
•
3.4K vues
新ジャンルのJavaScript圧縮難読化に挑戦 ~jojofy-js
Kondo Hitoshi
•
2K vues
RailsでReact.jsを動かしてみた話
yoshioka_cb
•
4.7K vues
React.js + Flux
dsuke Takaoka
•
18.3K vues
簡単!低コスト!楽しい!レスポンシブ デザイン ディレクション
Yuji Nojima
•
5.3K vues
jQueryを中心としたJavaScript
hideaki honda
•
16.8K vues
2010-10-2 FxUG 名古屋勉強会 HTML5で遊んでみよう
Mori Shingo
•
646 vues
使う前に知っておきたいSVGのこと
Kasumi Morita
•
5K vues
React+fluxを導入した話
Yuki Ishikawa
•
4.5K vues
Similaire à 12.09.08 明星和楽2012 KLabハンズオンセッション
(20)
CSSフレームワークを使った 簡単なレスポンシブデザインの作成
Kazuki Akiyama
•
13.3K vues
Htmlコーディングの効率化 後編
Yasuhito Yabe
•
1.5K vues
キャッチアップJavaScriptビルド -ビルドから見るJSの今/2016春
Kondo Hitoshi
•
4.5K vues
HTML5 & The Web Platform
Masataka Yakura
•
10.1K vues
Canvas勉強会
Tsutomu Kawamura
•
4.1K vues
パララックスでレスポンシブでJ query mobileなサイトのつくりかた
Shumpei Shiraishi
•
20K vues
F-site発表資料「Flashユーザーが今覚えておきたいHTML5」
Yasunobu Ikeda
•
1.9K vues
最近、実務に導入してみたフロントエンドの技術8つの良かった点と反省点
Horiguchi Seito
•
9.5K vues
レスポンシブWebデザイン【基礎編】
Yasuhito Yabe
•
3.3K vues
めんどうな viewport や 端末判別の ために sagen.js
Hiroaki Okubo
•
1.5K vues
2016/12/17 ASP.NET フロントエンドタスク入門
miso- soup3
•
755 vues
2014年メディア工房勉強会 第1章「Webの仕組みとHTML5」
Takashi Endo
•
854 vues
レスポンシブWebデザイン【発展編】
Yasuhito Yabe
•
1.7K vues
Synquery ja
EastCloud
•
2.9K vues
Sass less
Net Kanayan
•
1.2K vues
ブラウザにやさしいHTML/CSS
Takeharu Igari
•
71.2K vues
第2回ExtJSユーザー事例紹介
Akiyuki Nomura
•
602 vues
ゲームだけじゃないHTML5
Osamu Shimoda
•
1.8K vues
JavaScript + CSS3を活用して スマートフォンサイト/アプリに 動きを付けてみよう
Hiroaki Wakamatsu
•
2.1K vues
「html5 boilerplate」から考える、これからのマークアップ
Yasuhito Yabe
•
6K vues
Publicité
Plus de Kei Nakazawa
(20)
ScalaでASICやFPGA用の回路を設計するChisel
Kei Nakazawa
•
4K vues
C#からSORACOMを管理できるようにした話(SoraCommonNet)
Kei Nakazawa
•
3.5K vues
15.06.27 実録 ソフトウェア開発者が FPGAを独習した最初の3歩@RTLを語る会(9)
Kei Nakazawa
•
11.9K vues
15.05.17 ゆるふわRe:VIEW'erの近況
Kei Nakazawa
•
2.9K vues
この3D全盛時代にもう一度考えたい2Dゲームのこと
Kei Nakazawa
•
9.4K vues
UnrealEngineが5日間でasm.js化できたと聞いた俺たちは…
Kei Nakazawa
•
14.7K vues
Webの未来 〜 PNaClとasm.jsでカワルミライ - いま、モバイルWebの先端で起こっていること
Kei Nakazawa
•
36.5K vues
13.11.12 Tech Hills #7 Playground - introduction
Kei Nakazawa
•
2.2K vues
13.11.02 inside playground(抄)
Kei Nakazawa
•
1.7K vues
13.11.02 playgroundthon環境構築
Kei Nakazawa
•
9.5K vues
13.08.10 7行110bytesで構文を拡張 出来るReVIEWの話
Kei Nakazawa
•
5.9K vues
12.11.12 めいめいについて考えること
Kei Nakazawa
•
793 vues
12.08.25 tab api hackathon
Kei Nakazawa
•
1.2K vues
キャバァーン! サツバツエアアイオー弐〇壱弐
Kei Nakazawa
•
1.4K vues
とある会社のエンジニアたちのAndroidへのフリーダムな取り組み
Kei Nakazawa
•
1.3K vues
12.04.22 勉強会イントロ
Kei Nakazawa
•
759 vues
Android好きがWindows Phone開発を始めてみた / 12.04.23 Bar Windows Phone LT
Kei Nakazawa
•
1.5K vues
12.03.17 第1回NFC勉強会資料
Kei Nakazawa
•
4.2K vues
11.12.21 Lecturedroid 02
Kei Nakazawa
•
509 vues
11.11.01 非公式懇親会LT(せきとばったー)
Kei Nakazawa
•
604 vues
12.09.08 明星和楽2012 KLabハンズオンセッション
KLab JS+CSS ワークショプ -
Flash LiteアニメをJS+CSSでスマフォ向けに - KLab株式会社 開発制作本部 / 中澤 慧(@muo_jp)
自己紹介 なかざわ けい (中澤
慧 / twitter: @muo_jp) 所属: KLab株式会社 開発制作本部 Android好き Google公式ドキュメントの日本語訳とかやってました プログラミング言語はC#好き 興味範囲広め、結構プロトタイプ作ったりします 実は、専門は経営学です blog: http://muo.jp/
セッションの流れ Flash Liteファイルをスマフォ対応する手段の紹介(15分) 変換にあたって考えること・やること・気をつけるこ と(15分) 休憩・質疑応答(5分) 実際に書いてみる(45分) まとめ(5分) 質疑応答(5分)
大前提 フィーチャーフォン向けにFlash Liteで作られてきたものをリ ライトする 30/60fpsを目指さない 諸々の実装バグが解消してきたらこのあたりを目指せる
ようになる CPUをブン回してどうにかなる範囲(6/12fpsあたり)を目指す 元版を大幅に超えたリッチな表現を目指さない ベクター画像にこだわり過ぎない
こんなのが出来ます(要時間) ターン制ロボット格闘ゲーム 構成要素 体力ゲージ 画像のクリップ域に対する半透明
マスク (赤みがかった処理) 導入部分のスライドイン、 スライドアウト ビリビリエフェクト 全画面エフェクト
Flash Liteファイルを スマフォ対応する手段の紹介
系統 JavaScriptで実装されたFlashLite(swf)エンジンで直接実行 したり、前処理した独自ファイルを自前のエンジンに 食わせて実行したりするもの => 変換実行系 JavaScript +
CSS/canvasへの手動変換
自動変換系
自動変換系 / ExGame Flash
Lite 1.1をターゲットに据えたもの(2.0非対応) 多くのフィーチャーフォン向け演出Flashは1.1であった ので、実際十分なケースが多い 元ブロードテイル社のプロダクト( http://dena.jp/press/ 2011/06/dena-21.php ) mobageに提供されているゲームで結構使われている 中の人による紹介スライド( http://www.slideshare.net/ sousk/exgame ) mobage以外での利用は認められていない
自動変換系 / Shumway MozillaによるOSS 割と期待株 社内で試してみた人曰く「結構ちゃんと動くので多少 手を入れれば良さそう」
自動変換系 / Google
Swiffy https://www.google.com/doubleclick/studio/swiffy/ 日本語(MS932)の取り扱いに難がある 変換部分自体は非公開であるため、問題があっても手 を入れるのが非常に面倒
自動変換系 / FlashJS http://accelart.jp/products/flashjs.html 株式会社アクセラートジャパンのプロダクト 未評価
自動変換系 / SWF
Decompiler(HTML5 Exporter) http://www.sothink.com/ swfファイル解析、素材抜き出しを行うツールのオマケ 機能 ごっそりと構造をJSONにダンプして、それを自前のプ レイヤーで再生する形 重すぎる上にシェイプが正しく描画されない箇所が多 く、完成度低い
手動変換
基本構造 画面表示の管理、ゲームロジック、アニメーション管 理は全てJavaScriptで行う 画面描画には主に2つの方法がある CSSを利用する /
canvasを利用する 描画要素管理 描画要素管理 タイミング管理 タイミング管理 データ処理 データ処理 ネットワーク 画面 ネットワーク 画面 通信 描画 通信 描画 JavaScript CSS JavaScript canvas
canvas vs CSS CSS:
画面上に要素を配置し、キーフレーム指定等を行なってア ニメーションさせる canvas: 画面上にフリー描画エリアを作り、その上に任意の要素 を描画する(アニメーションは自前管理) IE系ではCSSアニメーションのGPUアクセラレーションが推奨 されている iOS5以降、canvasでの描画にGPUアクセラレーションが効くよ うになっている 幅広い端末で30/60fps出すのは厳しい。が、12fpsならなんとか
CSSってこんなの出来るんでしょ?
出典: http://rei.idv.tw/sample/mio.html
ソース見てみなよ CSS(抜粋) skew(-39deg,-39deg); -o-transform: skew(-39deg,-39deg);
- webkit-transform: skew(-39deg,-39deg); border-radius: 15px 0 0 / 15px 0 0; width: 220px; height: 500px; left: 34px; top: 404px; -webkit-animation-name: hb1; -ms- animation-name: hb1; -moz-animation-name: hb1; -o- animation-name: hb1; } div#hear_back div.hb2! { -ms-transform: rotate(-57deg); - moz-transform: rotate(-57deg); -o-transform: rotate(-57deg); -webkit-transform: rotate(-57deg); width: 200px; height: 65px; left: 50px; top: 392px; } div#hear_back div.hb3! { width: 35px; height: 120px; left: 137px; top: 245px; } div#hear_back div.hb4! { -ms-transform: rotate(50deg); - moz-transform: rotate(50deg); -o-transform: rotate(50deg); -webkit-transform: rotate(50deg); width: 14px; height: 50px; left: 143px; top: 280px; }
CSSでのシェイプ描画の実際 作れるのは四角、円、楕円(枠指定によっては卵型のよう な非対称の楕円も) 任意の多角形とか無い じゃあどうやってるのか borderで頑張る(凸だけでなく透明背景で凹も表現可能)
before、afterで頑張る(同じ場所に最大3つのシェイプを 重ねてひとくくりにすることが出来る) ある種の芸。例: six-point-star ( http://css3shapes.com/ )
CSSでのシェイプ描画例 このへんとか見ればより分かりやすい http://www.russellheimlich.com/blog/pure-css-shapes- triangles-delicious-logo-and-hearts/ (軽くChrome開発ツールでデモ) これは辛い
これは辛い。
Flashでよくあるシェイプ
やめてください死んでしまいます
ということで、こうする ベクターのシェイプは、適宜ラスタライズして扱う 特定のシェイプへのマスク処理は、mask-imageを使う Android 4.0以上(4.0, 4.1)の標準ブラウザで、mask-image とtransformを併用するとマスクが効かないというまさか のエンバグ(ChromeはOK) →マスク利用部分については、 自前でアニメーション制御 参考:
http://jsdo.it/mattari_panda/qePP
目指すバランス コーディング量 => JS比率かなり高め、CSS比率かなり低め アニメーション定義 => なるべくCSSのクラスとして事前定義 (前述のAndroidでの問題があるため、今のところ マスクと組み合わせるなどの乱用は禁物) 実行時間 =>
JS比率低め、CSSベースのアニメーション比率高め (なるべくネイティブの高速なライブラリへ処理を 任せられるようにしてトータルの性能を上げる)
手動変換の利点 出来合いの自動変換ツールでうまく変換出来ないもの でも動かせる 表現をリッチ化/簡略化出来る 独自の最適化を加えることが出来る ロジックを自由に記載出来る
手動変換の欠点 既存のオーサリングツールを利用出来る余地が少ない プログラマがゴリゴリ書かなきゃいけない 何か変更を加える際にも、当然プログラマの手(少な くとも協力)が必要になる レガシーなものと付き合っていく上で必要なコスト とも言えるけど、結構しんどい
補足: CSSアニメーションとcanvasア
ニメーションの今後 JS実行コストとアニメーション描画コスト、どちらが支配的か 従来は描画コスト>JSでのフレーム制御コスト 描画アクセラレーションが十分に効いてくるとJS制御部分がネックになる CSSアニメーションを利用すると、JSでの制御頻度をだいぶ減らせる FlashでActionScriptベースのアニメーションよりもプリセットアニメーショ ンのほうが高速なのと同じ 一定のところまではどちらを使っても良い 。限界性能はキーフレームア ニメーションの利用と最適化次第 描画にDOM操作が不要な分、canvasのほうが高速となる可能性は十分ある
補足: 手動変換支援ツール /
Adobe Edge Animate http://labs.adobe.com/technologies/edge/ HTML5なアニメーションのオーサリングツール 最近Preview 7がリリースされた Flash(オーサリングツール)に近い完成度まで到達するこ とが出来れば、と期待高まる 時間があれば後ほどもう少し詳しく紹介
変換にあたって 考えること・やること・気をつけること ターゲットユーザの読みを立てる どんなレイヤー構造になってるのか、というのをじっくり見て調べる 必要なエフェクトを洗い出す 元々シェイプとして作られているものを、どこまでCSSで描き何をPNGで書き だすのか、を決める HD版的なものを用意するかどうか検討する 画面タップへの対応をどのように処理するか考える 素材を一通り切り出す 素材のスプライトが可能か検討する JS+CSSでひたすらリライトする
ターゲットユーザの読みを立てる Androidのバージョン、iOSのバージョン、どういった端 末で動作検証すれば効果的に多くのユーザをカバー出 来るか アクセスログの解析などをもとにする 今後の端末開発・発売動向と、想定ユーザの動向を一 定は予測しておく(外れても泣かない程度の依存度に) 当然、スマートフォン向けの表現を強化することで ユーザ動向が変わることも想像はしておく
どんなレイヤー構造になってるの か、というのをじっくり見て調べる ここ大事。後で漏れに気づくと追加対応が大変な場合 もそこそこある。 後から変更される場合もあるだろうから、一定は仕方 ないんだけど それでもここに力入れとくのがいい
必要なエフェクトを洗い出す(例) 前景へのベタ塗りエフェクト(アルファ付き) 要素の斜め方向へのスライドアウト 要素の横方向へのスライドイン 背景のアルファを変化させつつ拡大 複数の要素をまとめてアニメーション 指定画像の前に同画像をマスクとして指定色(アルファあり)ベタ塗り 事前定義のアニメーション要素をコピー生成し指定位置で再生 任意のテキストを表示(自動折り返し、余分省略等)
元々シェイプとして作られているものを、どこま でCSSで描き何をPNGで書き出すのか、を決める 先に紹介したように、単純なシェイプ以外はCSSのみで 描くのには向かない 全体の容量と見栄えのバランスで、簡略化可能なもの は簡略化を ベクターにこだわり過ぎない ベクターデータを持つとしても、サーバ側で数パ ターン生成すれば良い場合が大半
ブラウザでの描画時ギリギリまでベクターで持つ必
HD版的なものを用意するかどうか
検討する 高解像度版の素材を入手出来るか? 高解像度化することによる速度低下(ロード/描画)と、 見栄えとの兼ね合いで判断
画面タップへの対応をどのように
処理するか考える フィーチャーフォン向けのものをスマフォ対応する場 合、↑↓キーやセンターキーを利用していた部分を画面 中段あたりに仮想キーとして用意するのが無難 スワイプとか使ってみたくなっても、安易な変更は使 いづらさを生む。パッと見で分かるUIを維持するのは 重要 描画エリアの一部に細かくタップエリアを張るより は、画面の大部分を押すとセンターキー動作と同様と するのが分かりやすいケースも
素材を一通り切り出す どうしても手に入らないものは、目コピやトレースで 作り直す(大体はswfさえあればなんとかなるかと) 画像を8bit PNGなどに書き出してみてトータルサイズを 検討する 静的要素についてはアプリケーションキャッシュの利 用を検討する(フィーチャーフォン向けFlashLiteだと、通 常アニメーションロジックも含めて大半がキャッシュ 可能で、一部のメッセージや画像のみを実行時に差し 替えれば済むのでは)
素材のスプライト(1枚の画像への
集約)が可能か検討する スプライト化することで、画像自体が8bitに収まらなくなる可能 性など、デメリットも考えつつ 元々画面全体が8bitしか使ってない、などであればそこそこスプ ライト効果あるはず 大半をアプリケーションキャッシュに乗せられるのであれば HTTPリクエスト頻度自体を低減出来る。この場合、JSからの指 定時に面倒が増えるデメリットが速度メリットを上回る可能性が 高いためスプライトしない ただし、ブラウザの最適化によってはスプライトされたものを利 用したほうがOpenGL描画時にテクスチャの差し替えが不要とな り、画面構築に必要なドローコール回数を減らせる可能性もある
JS+CSSでひたすらリライトする ベンダープリフィックスを補完するユーティリティを用 意しておく ベンダーごとの先行実装は当然 -webkit,
-moz, -o, -ms これらを一気に指定出来るようなユーティリティを 持っておくと多少楽
前半終了(5分休憩) ハンズオン用の素材をダウンロードしておいてください
http://bit.ly/RVxHve
実際に作ってみる
前に軽くアンケート プログラマな方
Illustratorを扱える方 デザイナな方 jQueryを扱える方 HTMLを書ける方 Coffee Script好きな方 CSSでレイアウト出来る方 PHPを書ける方 CSSでアニメーション出来 Javaを書ける方 る方 C#が好きな方 Photoshopを扱える方 Haskell好きな方
JS+CSSで書き始めるまで FlashをMac上で再生する→QuickTime Playerで録画 avconv -i
input.mov ‘out_%04d.png’でフレームにバラす QuickTime Playerでコマ送り、早送り/スロー再生を繰り 返して演出の構造とレイヤ構造を掴み、リスト化する もしもソースが手に入らなければswftoolsに含まれる swfextractを使い内部リソース(PNG類)を抜き出しておく swfmillの出力をざっと眺めてステージ情報等を把握する
今回フォーカスするポイント JavaScriptからCSSを制御し、いくつかの表現を実装 なので、それ以外の部分については事前に用意 ディレクトリ構成をざっくり説明
ハンズオン...
まとめ
様々な技術を実際に試して良
し悪しを判断
JS+CSSでゴリゴリと書いていくのは、自由 度大きいけれどやっぱり大変な部分も多い。 うまく作業担当を切り分けるのが肝心。
他に、enchant.jsなどのJS+CSS用ゲームエンジンを 利用する方法も(アニメーションなどのユーティリティが一通 り っていて、ある程度広い端末での動作も確認されている)
書きやすいシンタックスで高速な実行環境、 というのがメンテ上は望ましいので、実装言 語にJSXを利用するというのもアリかも
その他 SVGの使い所 Android4.0、iOS5.x以上なら一定は使い物になるかも (私見)アニメーション(画面タップ含め)丸ごとSVGでやるよりは、
ベクター保持したいグラフィックのラスタライズに使われるか バイナリにパックされた複雑なシェイプをネイティブライブラリ にて指定サイズでラスタライズ(JSでやるより十分高速になりうる) 参考 http://blog.webcreativepark.net/android/ AndroidでCSS3やる際の問題が 丁寧にまとめてあって凄い
長時間お付き合い頂き ありがとうございました
Notes de l'éditeur
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
Publicité