さて、気ままに期末前にWebを語ってみよう。
現在、インターネットブラウザ上でアニメーションや高度なグラフィックを実装したいならば、Flashぐらいしか選択肢がないだろう。FlashとはAdobeが開発したブラウザ上で実行するある種のプログラムだ。もちろん規格はすべてAdobeがもっている。本家Flash作成ツールのAdobeFlashは有料だ。しかし、現在W3Cなどが査定している「HTML5」では、Flashの代わりとなる機能が搭載される予定だ。3D機能も使えるし、もはやデスクトップアプリケーションを開発しているような感じだ。マークアップランゲージでここまで出来るのはすごいし、ある意味、夢でもある。これで一挙に流れはFlashからHTML5に流れると思われる。確かに、FlashはAdobeがくそ高い金額で売ってるツールが必要だし、わざわざ見る人も無料だがFlashPlayer入れなければならない。それに対して、HTML5は無料で書けるし、ブラウザがあれば実行できる。見た目圧倒的にHTML5が有利に見える。
しかし、ここで一度見直す必要があるのではないか?Adobeをよいしょするわけではない(私自身Adobeの技術に感動したので多少偏見はあるが)が、あまり流れに乗りすぎると悪影響を及ぼしかねない。
さて、まだ私がHTML5を実際に使った訳ではなくインターネットの情報(それも限られた)を見て書いてるので、もしHTML5の認識が誤っていたらコメントなりなんなりで教えてください。
まずはユーザー視点(つまりブラウザでコンテンツを見る視点)で比べよう。なおユーザーにとって作るのが有料だろうが無料だろうが関係ないから金関連は後述。
確かにHTML5がFlashと違い、プラグインなしで利用出来るのは、ユーザーにとって圧倒的な便利さだ。しかし、ブラウザ上で直接動くがゆえに、JavaScriptのようにブラウザごとに対応する必要性がある。しかし、この辺はJavaScriptのように有志たちが作ったライブラリで解決可能だ。事実、HTML5自身がブラウザごとの差異を減らすことも目標にしていたので、差はそこまでないと見ていい。
次に操作性。実際にいじったことがないからなんとも言えないが、プラグインで稼働しないHTML5の方が優れていると考えて問題ないだろう。ただ、Webカメラとかはどうなるんでしょうか・・・・?分かりません。
しかし、Flashにはそう単純に割り切れない能力があります。それはレンダリングのアクセラレーションです。
なお、レンダリングとは簡単に言うとコンピューターが画面に絵(他にいい言い方ありますか?)を描いていく処理のことを言う。そして、Flashはそのレンダリング処理をGPUにさせることが可能だ。アクセラレーションが可能なのだ。GPUとは画面を扱う専用のコンピューターで、パソコンはどれもこのGPUが画面を扱う。もちろん、グラフィック関連の専用の処理に特化しており、ゲームプログラミングや動画製作をしたことある人は分かると思うが、レンダリングをGPUにやらせるかやらせないかで、特に3D関連処理のスピードが桁違いに変わる。HTML5には僕が気が付いてないだけであるかも知れないが、AdobeがAfterEffectsやPhotoshopで培った技術をなめることはできない。
ついでに余談だが、私は最初、Photoshopには軽くGIMPで対向できると信じていたんだが・・・・あるときPhotoshopを使ってカルチャーショックの様なものを感じた。GIMPでは到底勝てない・・・・。ブラシ一つとってもPhotoshopではIllustratorとの連携でベクターのブラシも使えるし、配置パターンを様々な設定にできる。しかも、フィルタもGIMPにはない高度なフィルタもある。そして、GIMPが苦手なテキスト処理が優れていて、ラクタライズせずにかなりの編集はできる。他にも様々な点で強さを見せてくる。また、Extendedでは3Dモデルを扱え、3ds maxなどのモデルを読み込み、テクスチャを編集したり、Photoshopを経由して他のAdobeのソフト(AfterEffectsなど)に読み込むことも可能だ。金額は高いが、それ相応の性能がある。
さて、話を戻そう。
グラフィック関連でのFlashの実力はあなどれない。
さて、HTML5はあくまでもマークアップランゲージのため、ブラウザはHTMLを読み込んでリンクを読みに行くことになる。しかし、Flashの場合は一つのswfにまとめることも可能だし、適宜サーバーから読み込むのも自由だ。複雑なプログラムを書いた際の制御という点ではFlashが強い。工夫すればどのブラウザでもユーザーに不快感を与えずに実行させることが可能だ。
そして、先程のに絡むんだが、単体での配布が容易な点もFlashが強い。マークアップランゲージではリンクを使うためファイル数が増えるのは必死だ。確かにアーカイブすればいいが、そのままでは実行できない。また、プログラマにとってFlashの場合、ソースコードが流出せず、自分の作品を守ることが可能だ。
また、言語のオブジェクト指向プログラミングが可能なActionScriptなため、本格的なプログラムを実装しやすい。
ついでに、かなりFlashをよいしょしているのは、HTML5を使ったことない&そもそもHTML5が決まってないwwってことで、アンチAdobeさんには辛いですが、「Adobeなんて大嫌いだ~!」って人もコメントでどしどし叩いてみてください。こちらも本気で相手しますよ(メラメラ)
次に作成環境の立派さですかね。Flash作成ツールにはいろいろあるのですが、ここでは本家AdobeFlashを例にとります。さて、HTML5の作成ツールですが・・・・好みですかね?僕は大抵PHPでHTMLやXHTML出力するんで、Web製作にeclipse使う変人ですが・・・・。さて、Flashは最初はタイムライン(まずこの時点でアニメーション用だが)とライブラリだけですが、はっきり言ってあり得ないレベルでカスタマイズ可能。しかもワークスペースという単位で保存でき、上のコンボボックスで簡単に切り替えられる。まあ、eclipseのパースペクティブみたいなやつ。ツールの強さはFlashがピカイチですね。っていうかPhotoshopとか使ってるやつならすんなり使えるwwある意味かなりせこいが。
そして、Flashは同じものをFlashだけでなくAdobeAIRでデスクトップアプリケーションにしたり、AdobeFlexでサーバーサイドプログラムにできる。
僕の説明をみると、どう考えてもFlashをよいしょしている。しかし、僕はよいしょ以前の問題だと考えている。
そもそもHTML5とFlashは対向しそうで対向してないのでは?Flashを単なるアニメーション、単なる動画プレイヤー、単なるゲームとして使っているものはHTML5などで置き換え可能だ。しかし、Flashはそんな簡単な用途に使う技術ではないと思う。これまではそういう単純なことすたできるものがFlashしかなかった。しかし、機能が多いFlashをそんな単純な要素に使うのは無駄だ。HTML5の登場によって選択肢が増え、単純なものはオーバーヘッド
の少ないHTML5で、複雑な機能はFlashで。本来これがあるべき形なのではないかと思う。ありとあらゆる技術を一つのFlashに頼っていた。今から考えるとおかしな話だ。そして、なぜこのような状態が続いていたのだろうか?もしかすると私たちIT技術者は何かを見失っていたのかもしれない。Flashは様々な機能があるし、商用で仕様がAdobeに隠されているがゆえに信頼があるとも言える。AdobeFlashでコンパイルエラーを無視したのを省けばFlashの動作は保証される。バージョンの問題はPlayerがバージョンアップを促す。しかし、HTMLは仕様が公開されているがゆえに、クソみたいなソースが横行し、ワールドワイドウェブが荒れる原因にもなった。一概にオープンがいいとは限らない。
Flashは単なるWebコンテンツではなく、ある意味、最強のグラフィックを搭載したクロスプラットフォームプログラムととらえるべきなのではと思う次第だ。