クロスプラットフォーム ~OpenFL 考察~
仕事の都合上、複数のプラットフォーム上(Win,Mac,iOS)で動作可能なアプリケーションの開発が必要になりそうだ。
ネットワークが接続できない環境での使用が必須で、残念ながらWEBではなく、アプリでの開発が必要な案件だ。
要員を投入してそれぞれのプラットフォームごとに開発を行うのも可能だが、過去の経験で、同一仕様でWindowsとHP-UX向けの運用支援スクリプトを作成した際、仕様の誤差が最後まで縮まらず大変苦労した経験がある。
できれば、単一ソースで作成し、複数環境で動作可能なアプリケーションを実現したい。
今もっている技術で実現可能なのは、Javaだ。
しかしながら、Javaで作られたクロスプラットフォームのアプリケーションをいくつか使ったみたが、ほとんどは開発支援用のツールだ。しかも、動作は緩慢で、Windows以外のプラットフォームでの操作感に違和感がある。ツールや使用環境が限られるアプリケーションであれば我慢できるが、一般公開するようなアプリケーションの作成には不向きだ。
次に考えられるのが、AdobeAIR。日本郵政が提供している「はがきデザインキット」で使用したことがある。(逆に他のアプリケーションは見たことがない)
これは主にWEB開発に利用できる技術(HTMLやFlash)でリッチなデスクトップアプリケーションを作成することができるものである。確かに非常にきれいなU/Iであり、一般公開するアプリケーションとして十分に耐えうるものではある。しかし、とにかく重い。起動までに時間がかかりすぎて、作業を中断することもたびたびあった。我慢して、ということも可能だが、開発者側の都合を、使用者に押し付けるようで、少々心苦しい。
そこで他に選択肢がないか調べた結果、「OpenFL」というゲームやアプリケーションを構築するためのソフトウェア開発キットがあった。すばらしいのは、出力形態がiOS、Android、BlackBerry、Windows、Mac、Linux、FlashとHTML5に対応しているのだが、単一ソースからそれぞれのプラットフォーム向けにネイティブコードを出力してコンパイルするのだ。Java、AdobeAIRの動作が緩慢な理由は、クロスプラットフォームを実現するためにVMという仮想マシン上で中間コードを実行するためである。ネイティブコードでコンパイルするのであれば、パフォーマンスに関してはかなり期待することができる。比較的新しい技術のようで、参考文献はまだ少ない。
だが、このような技術はエンジニアとしてワクワクする。次回、環境を構築して評価してみたい。