- 2011-06-21 (火) 16:08
- Flash
かなり、シェアが減りましたが、未だにFlashlite1.1のコンテンツを求められることがあります。
Flashlite1.1というバージョンでは外部のファイルの読み込みが出来る仕様になっているのですが、実際には「一度ボタンをおさなければならない」「キャリアによっては読み込み容量に制限がある」「リクエストの送信方式がキャリアや発売時期によって使えるものと使えないもが出てくる」などの問題から、サーバーサイドでswf作成する、すなわちサーバー合成ということをするケースがあったりします。
昨今のSNSの携帯ゲーム(フィーチャーフォン) などでも多く見られると思います。
Flashliteでのサーバー合成というと一般的に以下のような技術を考えたりします。
- ming(PHPライブラリ)でファイル操作、合成
- swfmillを使って「xml」←→「swf」変換による操作、合成
- 独自にバイナリ解析してベースのファイルから変数や画像などを差し替える
バイナリ解析をして、操作、合成を行って、再構築するやり方などは、その辺りの理屈がわかる方には、ムダもなく処理が早くて良いようなのですが、僕はこのあたりさっぱりです。
随分前にFlash-JPのフォーラムで、このバイナリ解析をしてswfの合成をされている方がその技術の紹介をしてくれていました。
数年前に、この方が作られた、ベースのswfに変数を追加し書きだすPHPを使って、サーバー合成のコンテンツを作ったことがあります。
ベースのswf→PHPでファイルをバイナリ展開→GETやPOSTで受け取った値を、バイナリデータとして埋め込み→バイナリの長さを変更→swf書き出し
サーバー合成による、サーバーの負荷が想定できなかったので、アクセス数の想定がそれほど多く無いコンテンツに導入しました。(多分内容的には画像の置換などしていないので、相当速いとは思います)
つい先日、Flashlite1.1のコンテンツの発注を頂いたのですが、わりと頻繁に更新があるものの、Flash IDEの編集環境を開いて、更新作業をすることを想定したものでした。
作ってみると、画像の差し替えはなく、文字やリンク先の差し替えのみでしたので、HTMLのフォームから差し替えのテキストを入力してもらって、動的に作ったswfを静的に差し替えてもらうような仕組みを作った方が、僕の更新作業が無くて良いのではと思い、数年ぶりに上記の技術を使って、サーバー合成のコンテンツを作りました。
数年ぶりにやったせいもあるのか、うまく行かない・・。
変に思い、簡易的なファイルで試してみてもうまく行かない???ナンデ?
書きだした感じだと、ファイルが壊れているような感じです。
色々と怪しいところはどこかと探しているうちに、僕が使わせてもらっているプログラムでは、「XMPメタデータ」があるとダメなことが判明しました。
CS5では、この「XMPデータを含める」にデフォルトでチェック入っていたりします。
このデータには、タイトル、作成者、説明、著作権等のメタデータをswfに組み込む事で、組み込みの機械の方で色々な機能や制限をつけることができたりするようです。
一般の制作者で、このデータが必要なところがあるのか疑問だったのですが、再配布の防止などができたりするようですね。
このXMPデータは、普段僕はチェックを外しています。
特段、再配布の防止など関係なければ、このデータが持つ情報1KBが勿体ないからです!
今回、たまたまこれにチェックがついていました。
バイナリ書き換えのプログラムを書かれた時代からすると、このXMPの仕様がまだ無い時代なので、きっとバイナリの長さが合わずに壊れちゃったんだろうと推測しています。
そのチェックを外すことでちゃんと変数が追加できるようになりました。
良かった良かった。
Comments:0
Trackbacks:0
- Trackback URL for this entry
- http://blog.activefactor.org/2011/06/flashlite%e5%90%88%e6%88%90%e6%99%82%e3%81%aexmp%e3%83%a1%e3%82%bf%e6%83%85%e5%a0%b1/trackback/
- Listed below are links to weblogs that reference
- Flashlite合成時のXMPメタ情報 from あたまの中の文字
