SlideShare a Scribd company logo
♥ SWF LOVE ♥ @ken39arg
自己紹介
荒賀謙作
ガラケーサービスを5年超
現在、鎌倉のPHPer
今年も、古都鎌倉でガラケーサービス
最近の悩み
プログラマ35(30)歳定年説
齢29.5才
定年?
あせってます
プログラマ定年説を目前にして、そのプログラマ人生の9割をガラケーとPHPと共に過ごしてきたと、いうことに危機感
ところで
PHP以外ですきな技術
Flash@ActionScript
Red5@Java
Red5Flash MediaServerのクローン
要するにPHP以外はSWF!
ガラケー+SWF
気がつけば
FlashLite動的生成担当
swfmill↓flasm/ming/swftools↓Binary!!
I Love SWF Binary Format!!
自称鎌倉のNo.1FlashLiteBinarian
FlashLiteバイナリの小ネタ
/:$X3
Do you know “/:$X3”?
_root.AS: if (++i%2==1) {  $X3=“すき”;}else{  $X3=“きらい”;} DefineEditText   @VariableName=“$X3”
これだけなら問題無い「すき」->「きらい」->「すき」->「きらい」->
flower.AS: switch (random(5)) { case 1: gotoAndPlay(‘window’);   break; case 2: gotoAndPlay(‘double’);   break; default:gotoAndPlay(‘nomal’);   break; }
「すき」->「1」->「きらい」->「3」->「すき」->「3」->「きらい」->「0」->
SWF4(FlashLite1.x)では
switchで使われる一時変数名が“/:$X3”になってる確率が高い(というかそれしか見たこと無い)
絶対そんな変数名使わないと思いますが
ちなみに
SWF5以降ActionStoreRegister(0x87)の登場により解決してます
話は戻りますが、、
30歳を目前にガラケーとSWFな俺の将来を考えてみた
ガラケーの将来
想像してごらん
時代はスマホ
スマホ
ガラケー?
「あったねーw」
ガラケー終了のお知らせ
( ̄Д ̄;)
じゃあ
Flashの将来
想像してごらん
時代はスマホ
スマホ
スマートフォン
iPhone
HTML5
。。。
Flash?
「あったっけ?ww」
Flash終了のお知らせ
Orz
ということは?
俺の将来
想像してごらん
時代はスマホ
スマホ
スマートフォン
iPhone
HTML5
鎌倉No.1のFlashLite…?
「興味ない」
…
俺、終了のお知らせ
なんとかしたい
スマホ時代に、Flashの技術やガラケーの知識今まで作ってきたSWF素材等等を活かして、延命したい!
というわけで
SWF延命計画 ここからが本題
全てのモバイル端末で楽にサービスを対応する方法を考えてます
前提条件 mova,FOMA,cdmaOne,win,c型,p型,W型,3gc ガラケー制作で1actionに大量にHTMLを作るなんて普通 クロスプラットフォームにあこがれ1action,1htmlになったよね web屋である ブラウザでよくね?
提案 ,[object Object]
Flashをなんとかする,[object Object]
swfをiPhoneで動かすツール wallaby gordon smokescreen
wallaby Adobe純正のCS5プラグイン SVG,JPEG,PNG,HTML,js,cssのセットを書き出す いろいろと不完全 cssアニメーションを多用しているため、アニメーションが同期していない サイズがでかい CS5 Flashが必要というのが痛い = (動的生成はできない)
gordon jsでswfのバイナリを解析してsvgを作り出す githubで公開 Movieクリップに対応していない 不完全 開発止まってる
smokescreen 基本gordonと同じもうちょっと進んでいる 2010/10にosscomming soon!となってから音沙汰無し 2011/02にひっそりとgithub上に登場したリポジトリは別物(svg -> canvasへ) githubで公開されているものはネストもアニメーションも出来ない
まだ良いのが無いので、 自作することにしましたが、 まだ出来ていません。 とりあえずSVGがイケてる気がしたので SWFをSVGに変換した話をこれからします
SWFとSVGのマッピング
DefineBits* Flashに埋め込まれたラスターデータ JPEGはそのまま PNGとGIFは少し違うフォーマットにロスレス圧縮されている
DefineBits* LosslessはピクセルをPNGに戻す Bits,BitsJPEG*はdataをそのまま取り出す <image xlink:href=“…”> 画像データを保存してURLを”xlink:href”にセットしても良い base64した文字列を”xlink:href”にセットしても良い
DefineShape SWFの持つベクターデータ SWFのデータ種類は非常にシンプル 直線(LineTo) 曲線(CurveTo) 塗り(fill) 線  (stroke) 3次ベジェやらcircleとかrectangleとかない。何でも直線と曲線だけで表す男らしさがウリ
DefineShape 全体を<g>でまとめる ClipedBitmapは<use> Gradientは<linearGradient|radialGradient> style毎に<path d=“…” fill=“…” stroke=“…”>に変換->LineTo|CurveToが最大で fillStyle0,fillStyle1,lineStyleの  3つのpathに作用
DefineShape DeltaX,DeltaY 絶対値に計算し直す LineTo(ShapeRecord@Type=2) L toXtoY CurveTo(ShapeRecord@Type=3) QcontrolXcontrolYtoXtoY toの絶対値は”start+control+to”
DefineShape StyleChange (ShapeRecord@type=1) StateNewStyles pathの書き出し Styleレジストリの更新 StateFillStyle0,StateFillStyle1,StateLineStyle 次にのLineTo | CurveToの対象のスタイルを変更 全てが(>0)なら次のエッジは<path>3ノード分に作用 StateMoveTo moveToは絶対値
DefineShape fillStyle0 lineStyle fillStyle1 moveTo(x, y) lineTo(x, y)
DefineSprite ベクターやラスター等のイメージデータやテキスト、またSpriteなど表示オブジェクトを配置したり、アニメーションさせたりする FlashLiteではタイムラインを持つMovieClipのみ ActionScriptも内包 Stage全体も仲間
DefineSprite PlaceObject毎に,<use>に変換 全体を<g>でグループ化 アニメーションはまずは考えないので、その他のタグは無視します SVGに変えるだけならPlaceObject2,3の情報は要らない
DefineSprite CharacterId xlink:href=“#<ここ>”; Depth 表示順 Matrix transform=“matrix(<ここ>)” ColorTransform opacity=“<ここにAlphaMultTerm>” feColorMatrixフィルタが理想だが実際はブラウザが対応してない
Stage Define定義は<defs>で登録する StageのPlaceObject(<use>)を<g>の中に記述 SWF Formatでは1px=20で表現しているのでroot直下のgにはtransform=“scale(0.05)”
Stage <svg>   <defs>     <image id=“c1” xlink:href=“foo.jpg”            width=“100” height=“10” />     <g id=“c2”>       <path d=“…”>     </g>   </defs>   <g transform=“scale(0.05)”>     <use>     <use>   </g> </svg>
SWFをSVGにすると iPhone/Androidで見るサムネイルはクリア ガラケーのサムネイルもSVG > ImageすればSWF > Imageよりも楽に動的に生成できる(変換用にFlashを起動するサーバーとか要らない) アニメーションさせると嬉しい
ご清聴ありがとうございました

More Related Content

What's hot

WordPressの多言語プラグイン「qTranslate」で、あなたのサイトも世界にデビュー♪
WordPressの多言語プラグイン「qTranslate」で、あなたのサイトも世界にデビュー♪WordPressの多言語プラグイン「qTranslate」で、あなたのサイトも世界にデビュー♪
WordPressの多言語プラグイン「qTranslate」で、あなたのサイトも世界にデビュー♪
Chieko Aihara
 

What's hot (11)

難しいよね、コードレビュー
難しいよね、コードレビュー難しいよね、コードレビュー
難しいよね、コードレビュー
 
WinFormsからWPFへ
WinFormsからWPFへWinFormsからWPFへ
WinFormsからWPFへ
 
Msを16倍出し抜くwpf開発2回目
Msを16倍出し抜くwpf開発2回目Msを16倍出し抜くwpf開発2回目
Msを16倍出し抜くwpf開発2回目
 
証券取引アプリについて
証券取引アプリについて証券取引アプリについて
証券取引アプリについて
 
Rails templateで開発の初速を上げよう
Rails templateで開発の初速を上げようRails templateで開発の初速を上げよう
Rails templateで開発の初速を上げよう
 
♡PHPが恋しい話♡
♡PHPが恋しい話♡♡PHPが恋しい話♡
♡PHPが恋しい話♡
 
カスタムフィールドの光と闇。 または、愛について。
カスタムフィールドの光と闇。 または、愛について。カスタムフィールドの光と闇。 または、愛について。
カスタムフィールドの光と闇。 または、愛について。
 
Msを16倍出し抜くwpf開発1回目
Msを16倍出し抜くwpf開発1回目Msを16倍出し抜くwpf開発1回目
Msを16倍出し抜くwpf開発1回目
 
WordPressの多言語プラグイン「qTranslate」で、あなたのサイトも世界にデビュー♪
WordPressの多言語プラグイン「qTranslate」で、あなたのサイトも世界にデビュー♪WordPressの多言語プラグイン「qTranslate」で、あなたのサイトも世界にデビュー♪
WordPressの多言語プラグイン「qTranslate」で、あなたのサイトも世界にデビュー♪
 
WPF開発での陥りやすい罠
WPF開発での陥りやすい罠WPF開発での陥りやすい罠
WPF開発での陥りやすい罠
 
初めてのプラグイン開発で学んだ教訓
初めてのプラグイン開発で学んだ教訓初めてのプラグイン開発で学んだ教訓
初めてのプラグイン開発で学んだ教訓
 

Similar to SWF LOVE (ASを使わないFlash勉強会)

a-blog cms 2.0 を活用した新しいWeb制作のワークフロー 札幌
a-blog cms 2.0 を活用した新しいWeb制作のワークフロー 札幌a-blog cms 2.0 を活用した新しいWeb制作のワークフロー 札幌
a-blog cms 2.0 を活用した新しいWeb制作のワークフロー 札幌
Kazumich YAMAMOTO
 

Similar to SWF LOVE (ASを使わないFlash勉強会) (12)

PHPカンファレンス2013 今ドキのPHPの書き方 ~PHP逆引きレシピ改訂版~
PHPカンファレンス2013 今ドキのPHPの書き方 ~PHP逆引きレシピ改訂版~PHPカンファレンス2013 今ドキのPHPの書き方 ~PHP逆引きレシピ改訂版~
PHPカンファレンス2013 今ドキのPHPの書き方 ~PHP逆引きレシピ改訂版~
 
いまどき(これから)のPHP開発
いまどき(これから)のPHP開発いまどき(これから)のPHP開発
いまどき(これから)のPHP開発
 
魔法少女 Laravel 2014
魔法少女 Laravel 2014魔法少女 Laravel 2014
魔法少女 Laravel 2014
 
新人エンジニアがフレームワークについて調べたこと
新人エンジニアがフレームワークについて調べたこと新人エンジニアがフレームワークについて調べたこと
新人エンジニアがフレームワークについて調べたこと
 
PHP conference kansai2018_ishihara
PHP conference kansai2018_ishiharaPHP conference kansai2018_ishihara
PHP conference kansai2018_ishihara
 
ライブラリ・ファースト 第91回 PHP勉強会@東京 #phpstudy
ライブラリ・ファースト 第91回 PHP勉強会@東京 #phpstudyライブラリ・ファースト 第91回 PHP勉強会@東京 #phpstudy
ライブラリ・ファースト 第91回 PHP勉強会@東京 #phpstudy
 
PHP-MLを使用して気軽に機械学習にトライしてみる
PHP-MLを使用して気軽に機械学習にトライしてみるPHP-MLを使用して気軽に機械学習にトライしてみる
PHP-MLを使用して気軽に機械学習にトライしてみる
 
俺 と 今年度 Civic Hack Night 運営
俺 と 今年度 Civic Hack Night 運営俺 と 今年度 Civic Hack Night 運営
俺 と 今年度 Civic Hack Night 運営
 
フレームワークを使うべき 3 つの理由
フレームワークを使うべき 3 つの理由フレームワークを使うべき 3 つの理由
フレームワークを使うべき 3 つの理由
 
Ha4goもくもく報告2016年11月分
Ha4goもくもく報告2016年11月分Ha4goもくもく報告2016年11月分
Ha4goもくもく報告2016年11月分
 
a-blog cms 2.0 を活用した新しいWeb制作のワークフロー 札幌
a-blog cms 2.0 を活用した新しいWeb制作のワークフロー 札幌a-blog cms 2.0 を活用した新しいWeb制作のワークフロー 札幌
a-blog cms 2.0 を活用した新しいWeb制作のワークフロー 札幌
 
第55回PHP勉強会
第55回PHP勉強会第55回PHP勉強会
第55回PHP勉強会
 

Recently uploaded

FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance
 
2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx
2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx
2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx
ssuserbefd24
 

Recently uploaded (14)

FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
 
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
 
【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow
 
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
 
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
 
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
 
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
 
2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx
2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx
2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx
 

SWF LOVE (ASを使わないFlash勉強会)