2012/02/26

Flexの将来

Adobeがモバイル向けFlash Playerのサポート停止とFlex SDKのオープンソースコミュニティへの寄贈を発表して以来、いろいろな情報や憶測が錯綜していたが、先週改めてAdobeから「FlexについてのAdobeの見解と今後の関わり方」(Adobe's view of Flex and its commitments to Flex in the future)という文書が公開されていたようなので、以下に簡単に要約してみた。



Flexの位置づけとAdobeが果たす役割

  • Adobe Flexは大規模なエンタープライズアプリケーション開発に適したアプリケーションフレームワークであったし、それは今後も変わらない。HTMLの進化は早いが、今後数年間はまだFlexが最適なソリューションである可能性がある。
  • Adobe Flex SDKはApache Flexプロジェクトに寄贈し、Apache Flex SDKになる。
  • Apache FlexプロジェクトはFlex SDKのメンテナンスとエンハンスをおこなう。一方Adobeは、開発ツールとFlashランタイム (Flash PlayerとAIR) をサポートしていく。
  • AdobeはApachにFlex SDKと関連技術を寄贈するとともに、フルタイムのFlex SDKエンジニアチームも提供する。Flexに従事するAdobeのエンジニアの人数は減るが、開発コミュニティと協力することでFlexに関わるアクティブなエンジニアの総数は増える。

Apacheに寄贈されるもの

  • Flex SDK
    これにはコアSDK、オートメーションライブラリ、AIR SDKのバイナリファイル、ドキュメント、仕様書、まだリリースしてないSparkコンポーネント群が含まれる。
  • Falcon Compiler
    現在開発中の次世代ActionScriptコンパイラ。
  • Falcon JS Compiler
    JavaScriptを出力ターゲットとした実験的なASコンパイラ。
  • Mustella
    AdobeがFlex SDKのテストのために開発・利用していたテスティングフレームワーク。
  • BlazeDS
    後に出てくるようにLCDSは寄贈されない。
  • Flex SDKのエンジニアチーム
    重大なバグとセキュリティ問題については過去のFlex SDKに対しても対応する。

今後もAdobeが自社開発を継続するもの

  • デスクトップブラウザ向けFlash Player
    デスクトップ向けFlash Playerは開発継続、モバイルブラウザ向けは開発停止。
  • Adobe AIR
    デスクトップとモバイルの両方でAIRをサポートする。
  • Flash Builder
    Apache Flexを利用したアプリケーション開発をサポートする。Apacheに寄贈したFalconコンパイラもいずれ取り込むかもしれない。一方、Apache Flex SDKのサポートを強化するため, デザインビュー, データ中心開発ツール、Flash Catalystワークフローは今後リリースするバージョン4.xでなくなる予定。
  • Flash Professional
  • AIR for Linux SDK
  • LCDS (LiveCycle Data Service)
  • LCCS (LiveCycle Collaboration Service)

Apacheに寄贈するかどうか現在検討中のもの

  • TLF (Text Layout Framework)
  • BlazeDS.NET
  • Gravity
  • FXG (Flash XML Graphics)
  • Squiggles
  • OSMF (Open Source Media Framework)

開発停止するもの

  • Flash Catalyst(Adobe CSにも同梱されなくなる)

Flashランタイム(Flash Player/AIR)の今後について

  • Flash Player 11.2とAIR 3.2を2012年第1四半期にリリースする。これらはいずれもSDK 4.6でビルドしたアプリケーションに対してテストをおこなう。今後リリースするFlash PlayerとAIRもFlex SDK 4.6で動作するようにテストをおこない、5年間は後方互換性を維持する。
  •  Flex SDK 4.6以前のバージョンについては、今後リリースするFlash Player / AIRでも動作することをAdobeが保証するが、これからリリースされるApache Flex SDKについてはApache Flex Projectが互換性と動作保証について責任を持つ。 
  • これまではFlexアプリケーションのニーズに応えるためにFlash PlayerとAIRに機能を追加してきたが、今後はAdobeのFlashプラットフォームのビジョンを実現するために機能強化していく。Apache Flexプロジェクトが新機能を利用することもあるだろうが、Apacheプロジェクトのためだけにランタイムに新機能を追加することはない。


以上。

2012/02/25

Flah Playerのロードマップ

先日Flash Playerのロードマップ(Adobe roadmap for the Flash runtimes)が発表された。簡単に言うと、今回のロードマップで表明されたのは以下の2点だ。

(1) Adobeは今後、ゲームと高品質ビデオ向け機能の開発に注力する。
(2) 同時にアーキテクチャと言語にも改善を加え、Webと各種モバイルデバイスで最高のエクスペリエンスを提供していく。

ただし、ゲームとビデオ分野にフォーカスすると言っても、既存のコンテンツが動かなくなるとか、これら以外の分野でFlashが使えなくなるということではない。今後の開発とバグ修正に当たって、これらの分野の優先度が高くなるということである。ロードマップの原文は英語だが、ここのページは日本語でよくまとめられているので、時間がなければこっちだけ見れば十分だろう。

ゲームでもなくビデオでもないビジネスアプリケーション開発者としてはあまりありがたくない方向性だが、内容をよく見てみると必ずしもゲームとビデオ一辺倒というわけではなく、最悪の事態は免れたという印象だ。一時はこのままレームダック化してしまうかもと思ったが、マルチスレッド対応などコアな言語機能のエンハンスなども計画されており、順調に行けばこのまま現役で存続しそうだ。

ちなみにこれとは別に先週公開された「FlexについてのAdobeの見解と今後の関わり方」(Adobe's view of Flex and its commitments to Flex in the future)という文書では、Adobeは相変わらず「Flexは企業アプリケーションおよびデータ中心アプリケーション開発にベストなソリューション」と謳っている。ゲームとビデオにフォーカスしたランタイム上で動作する企業アプリケーションとなって妙な気分になるが、とりあえず深いことは考えないことにしておこう。



2012/02/22

Flash Playerのバージョン確認方法

Flexアプリケーションを開発していると、ときどき今実行しているFlash Playerのバージョンが確認したくなることがある。そんなときに便利なのが、AdobeのFlash Player の状況確認ページだ。単にブラウザでこのページにアクセスするだけで、インストールされているFlash Playerプラグインのバージョンがわかる。

このページを開くと下のような画面が表示される。ちょっとわかりにくいが、ページの中ほどの「Flash Player のバージョンを確認」というセクションに「Version Information」という欄があり、そこに「You have version 11.1.102.62」とあるのがバージョン番号だ。どういうわけかここだけ英語になっている。


バージョン番号の右側に赤い大きな文字で「最新バージョンは11.1.102.62です」のように現時点での最新版のバージョン番号も表示してくれるので、インストールされいてるFlash Playerが最新版かどうかもわかる。

気をつけなければならないのは、これはブラウザのプラグインとしてインストールされているFlash Playerのバージョンだということ。なので、Internet ExplorerとFirefoxで異なるバージョンのプラグインを使っていると、表示されるバージョンは当然違ったものになる。

このページの難点は、今使っているFlash Playerがデバッグ版かリリース版かがわからない点だ。一般のユーザーであればデバッグ版を使うことはあり得ないので問題ないが、アプリケーション開発者の場合はこの2つの違いが区別できないと困る。そういうときは、本ページの本家本元である英語版のページに行けば良い。

Flash Playerのバージョン確認ページ(英語サイト)
Check the status of Flash Player version

こちらには下のように日本語版のページにはない開発者用の情報が追加されていて、Flash Playerのバージョンのほか、デバッグ版とリリース版の区別、OSの種類とバージョン、Video/Audio/ローカルファイル入出力がそれぞれサポートされているかどうかまでわかる。というわけで、じつのところ日本語ページではなく英語ページだけ使えばいいだろう。

2012/02/12

AndroidでiCloudのメールを使う方法

今朝スタバでカプチーノを飲んでいるうちに突然思い立って、スマフォ(SharpのIS03)でiCloudのメールを読めるようにしてみた。

IS03には「PCメール」というメーラーがあり、これを使うと複数のアカウントのメールを読み書きできる。すでに2つのアカウントを設定していたのでiCloudもすぐできると思ったら意外に難航したので書いておく。

最初にApple公式の「iCloud:メールサーバの情報」を見てアカウント情報を設定し、受信(IMAP4)のほうはすんなり行ったのだが、送信(SMTP)のほうはどうやっても「サーバに接続できません」のようなメッセージが出てきてしまってうまくいかない。ちょっと検索して調べてみると、PCメール側の設定を"SSL"ではなく"TLS"にするとうまくとのこと。さっそくやってみると、確かにつながった。それにしてもApple公式のページには"SSL"と書いてあるのに、PCメール側は"TLS"とはどういうことだろうと思ってちょっと調べたところ、どうやら以下のようなことらしい。

まずSMTPでセキュアな通信をする場合、大きく分けて2つの方法がある。1つは最初からセキュアな通信路を確保してその上でSMTPを使う方法(以下、SMTPsと表記)、もう1つはまず通常通りSMTPセッションを開始し、その後STARTTLSコマンドを送信して同じポート上でセキュアな通信に移行する方法(以下、STARTTLS)だ。SMTPsでは通常、465番のポートを使うのに対し、STARTTLSでは普通どおり25番または587番のポートを使う。

問題なのは、この2種類の方法の呼称がちゃんと決まってないことだ。iCloudのメールサーバはSTARTTLSなのだが、Appleはこれを"SSL"と呼んでいるのに対し、IS03のPCメールは"TLS"と表記している。だからPCメールで"TLS"を設定するとうまくいく。一方、PCメールの設定項目で"SSL"を選ぶとSMTPsになるので、当然ながら接続に失敗する。世の中ではほかにも"SMTP over SSL"とか"SSL/TLS"などの呼び名も使われているが、いずれもどちらの通信方法なのかはっきりしない。結局メール設定時によくわからないときは、"SSL"であれ"TSL"であれ(あるいはそれ以外であれ)、とにかくそれらしい設定項目すべてを試してみるのが良いようだ。

ちなみになんでこんなに呼称が混乱しているかというと、そもそもSSLがTLSに名称変更されたという経緯があるのに加え、STARTTLSにしろSMTPsにしろ結局どちらもTLSを使うことにあるようだ。SSLはversion 3.0までは"SSL"と呼ばれていたが、その後"TLS"に改称された。このためよく"SSL/TLS"と表記されるが、一方で"SSL"という呼称も根強く残っている(もしかしたら実際にversion 3.0以前のSSLを使っているケースもあるのかもしれない)。なお、wikipediaのSTARTTLSの記事によると、メジャーなプロバイダーではGoogle(GMail)とApple(iCloud)がSTARTTLSを使っているとのこと。

参考文献
  1. メールの送受信でSSLを利用して暗号化する(@ITの記事)
  2. SSL versus TLS versus STARTTLS
  3. Bug 350314 - STARTTLS is called TLS in user preferences (remaining IMAP/POP3 case)
  4. STARTTLS (wikipedia)