javascript with flash で限界を超えるライブラリまとめ
javascriptはブラウザ上で動作する大変使い勝手の良いスクリプト言語ですが、ブラウザの上に乗っかっているということでいろいろと機能制限が多くできないことが多いです。
そこでflashです。actionscriptで書かれたswfファイルはブラウザ上で動作しつつもjavascriptが超えられない壁を越えてくれます。ビデオなどのメディアファイルも扱えますし、制限がありますがクロスドメインすることも可能です。
そこで、javascriptからflashを叩いて擬似的にjavascriptの機能を拡張しようというアプローチがあります。flashproxyっていうみたいです。そんなライブラリまとめです。
Flash / JavaScript Integration Kit
http://weblogs.macromedia.com/flashjavascript/
これはライブラリというよりはSDKかな?パッケージされているasをimportして自分が実行したいfunnctionを実装しなくてはいけない。これはメンドクサイ。
AFLAX
Asynchronous Flash and XMLという名前のライブラリ群、デモページを見るとその種類の多さとできる事の多様さに驚かされます。ただもやはjavascriptではないっていう印象のものも多数。音楽再生とかは素敵です。
SWFUpload
http://swfupload.mammon.se/index.php
ファイルアップロードを実現するライブラリ。同時にファイルを複数アップロードできるというのも良いですし、アップロードのキューが見れるのもjavascriptだけでは不可能ですね。デモも圧巻。
SoundManager 2
http://www.schillmania.com/projects/soundmanager2/
javascriptでは音楽を扱うこともできません。上記のライブラリを使えばmp3をjsで読み込んで再生することができます。サイトに音楽が流れるのはどうかと思いますが使い方次第では効果的ですよね。
JavaScriptでクリップボードを使う(IE/Firefox)
http://labs.unoh.net/2006/12/javascriptiefirefox.html
unoh labsさん公開のライブラリ、クリップボードを扱う際にfirefoxで上手く動作しないポイントをflashproxyで補っています。javascriptの限界を超えるだけではなくて問題点を解決する手段としても利用できるという好例ですかね?。
ローカルPCへ大容量データを保存するJavaScriptライブラリ「save2local.js」
http://labs.unoh.net/2007/01/pcjavascriptsave2localjs.html
こちらもunoh labsさん公開ライブラリ、こちらは上とうって変わって限界超えるタイプのライブラリ。flashのSharedObjectという機能を使ってローカルにデータを保存して置けるのですが、これをJSから叩くわけですね。サーバーにDBを用意しなくても良くなるかも?。
JavaScript から Flash の便利な機能を使う方法
http://labs.cybozu.co.jp/blog/kazuho/archives/2007/03/flashy.php
IMEのON・OFFを自動的に切り替えてくれるサンプルは素敵。フォーム入力時のユーザインターフェースを大幅に改善する気がする。初心者ほど文字入力に手間取りますからね。
Flash の TextField.getFontList() を JavaScript から呼び出す
http://labs.cybozu.co.jp/blog/takesako/2007/03/javascript_getallfonts.html
フォントリストの一覧を取得する。リッチテキストエディタ作成時に威力を発揮しそう。
Flash経由でAjax
http://unknownplace.org/memo/2006/12/09#e001
getとpostが使えるらしい。crossdomain.xmlの壁はあるが、javascriptの壁は軽く飛び越えた。
crossdomain.js
http://www.qrone.org/qrx/doc/crossdomain_js.html
上記と同様にXMLHTTPRequestぽいことができるライブラリです。こちらはflash内部で戻り値のXML?とJSON形式でE4Xぽく扱えるように値を戻してくれるということで、javascript側で戻り値のXMLを綺麗にパースする困難さを解消してくれる機能もあるようですね。
というわけで、flashと組み合わせることでjavascript単体でサーバーとの通信無くリッチなWEBサービスも作れるかもしれませんね。ローカルにデータが置けて、flashが外部サーバーにアクセスできれば後何が必要ですか?うーん。
楽しくなりそうです・・・。