エンタープライズでの JavaScript – 質問に答えます
こんにちは、ゼノフィnakamuraです。
プレゼンテーションの終わり (~56:00) では、いくつか時間の都合上答えることができなかった重要な質問がありました。それらについて、必ず返答をするという約束をしていました。以下がその返答となっております。
JavaScript フレームワークのアップグレード
どんな JavaScript フレームワーク (特に Ext JS) でも、アップグレードのサポートという面ではどくれらい発達していますでしょうか? Ext JS 3 から 4 は Java 5 から 6 のアップグレードに比べると、かなり大変でした。よりアップグレードが簡単に行える JavaScript フレームワークは今後考えていますか?
これはプレゼンテーション中に、我々もあげた大きな懸念事項です。あなたが指摘するように、エンタープライズテクノロジープラットフォーム (例:Java) は、 Web 技術に比べると非常に長いリリースサイクルを持っています。 Wikipedia によると、J2SE 5 と Java SE 6 の間の大きなバージョン変化には2年かかりました。
近年の HTML5 の爆発的な浸透により、 Web 技術 (特に JavaScript) は莫大な数と量のイノベーションを楽しんでいます。これはブラウザが継続的に新しい HTML5 の機能を実装しているからでもあります。そういったイノベーションの欠点は、技術があまりにも速いスピードで変化していくため、レガシーブラウザ (例:IE 8 ) と最新バージョンの Chrome とでは、大きな機能差が生まれてしまっていることです。
ウェビナー中で、一般的に人気のあるマイクロフレームワーク (AngularJS、jQuery、など) の最新バージョンでは、完全にレガシーブラウザへの対応をやめてしままったことをお話ししました。これは古いブラウザのサポートをここしばらくは継続しなければならない企業や組織にとっては大きな懸念事項なのです。そして、そういった意味では多くの JavaScript フレームワークはアップグレードに関して言えば、発達しきっているとは言えません。
ですが、Sencha はしっかりと企業のニーズに応えることに力を注ぎ、Ext JS 3 から 4 への移行時にお客様が体験したことから多くを学びました。まず、我々の最新リリース (Ext JS 5) では 4.x からのアップグレードがスムーズに行えるように気をつけました。次に、顧客企業が必要としているレガシーブラウザへのサポートを続けました。そして、お客様のアップグレード経験に基づき、アップグレードパスや前方後方互換を標準のロードマップ項目としました。
全ての JavaScript フレームワークがより長い、より安定してスムースなリリースサイクルに発達していくかどうかは何とも言えませんが、Ext JS がこの分野では断トツでリーダーだと言えるでしょう。
Browser Support ブラウザーサポート
Sencha は過去のブラウザのサポートに関してはどういったルールや基準があるのでしょうか?例えばいつ IE 8 のサポートを止めますか?
どのブラウザをサポートするかを Sencha が決める唯一のルールは、お客様のご要望です。
2011年に Ext JS 4.0 をリリースした時、ブラウザの状況は今とは少し違うものでした。IE 6 がまだマーケットの大きな割合を占めていて、Chrome は6週間での短いリリースサイクルが始まったばかりでした。モバイルブラウザは成熟からはほど遠いもので、モバイルでの戦略を展開する企業も数少ないものでした。
今日のブラウザの状況は大きく変わりましたし、エンタープライズの Web アプリケーションの必要条件も変わってきました。お客様にとって IE 8 のサポートは明らかに優先順位の高いものですが、それ以前のもののサポートが必要な組織は数すくないです。そして、そういったお客様には、我々は Customized Extended Support Program を通してサポートしています。それとは逆に、多くのお客様からモバイルブラウザへのサポートをという声をいただきます、特にタブレットでの使用が多いです。それ故に、Ext JS 5.0 (今年の始めにリリース) は、そういったお客様のニーズに応える形で進化を遂げました。
いつ IE 8 へのサポートを止めるか?もちろん近い将来ではありません。企業のお客様の大半はまだ IE 8 のサポートが必要だと述べていますし、 Net Market Share の調査の結果でも IE 8 はまだそれなりのシェアを持っています。
レガシーブラウザのサポートは、Ext JS が他を凌駕する機能の一つであることは間違いありません。新しい機能を増やしていくと同時に、お客様と一緒に (遠ざからずに) 進化していくことも目標です。
コードの特殊化
Micro-frameworks are specific. How can Sencha guarantee best-in-class features for each specialization? マイクロフレームワークは非常に限定されたものです。Sencha はそういった特殊な分野でも最高の品質をどう保証できるのでしょうか?
私はウェビナー内でもマイクロフレームワークというものは (本来の意味では) 、エンタープライズアプリケーションが必要とする機能の部分集合を実装したものにすぎません。それは悪いことではありません。マイクロフレームワークはその特定の分野で特殊化することで最高な機能を提供することもできます。
その点だけに関して言えば、Sencha は限定された分野だけに特化したマイクロフレームワークと張り合うのは難しいと思うかもしれません。ひとつの例はグラフ化やヴィジュアライゼーション(可視化) かもしれません。Ext JS は、グラフ化や可視化のパッケージが同梱されていますが、Senchaが「ベスト」であることをどう保証できるか?この質問にはいくつか答えがあります。
まず、どのフレームワークが「ベスト」かという質問はどんな時も無意味な質問です。「ベスト」というのはクオリティでしょうか?パフォーマンスでしょうか?それとも拡張性でしょうか?これは主観によって変わる問題であり、「ベスト」というのは与えられた状況でのみ言えることなのです。我々の見方では、Ext JS は全ての機能が完全に統合された拡張性の高いフレームワークを提供しています。ビルトインの機能が特定のニーズを満たさない場合でも、フレームワークに存在するクラスを簡単に拡張したり変更できることを保証します。これを、一貫したコードスタイルを使ってすることができます。マイクロフレームワークは基本的に限定されたものであるため、保証などはありません。ライブラリが完璧にニーズに応えられるものでない場合、拡張やカスタマイズを念頭に置いて作られたわけではないコードとにらめっこを続けることはよくあることでしょう。
次に頭に入れて置かなければいけないことは、マイクロフレームワークは外界から隔離された状態で使われているわけではないということです。特殊なチャートライブラリは他のアプリケーションスタックに結びつけなければならず、全てのパーツが統合されているわけではないので、これは非常に時間のかかる面倒くさい作業となってしまいます。
最後に、特定の仕事に適したツールを見つけるということはものすごく重要なことです。Ext JS は機能性豊かで、複雑なビジネスアプリケーションを作るのに最適です。そして企業が求めているニーズの大半に応えられる機能を提供するのが我々のフレームワークですが、どうしても Ext JS が特化していない分野 (例:暗号化アルゴリズム) でサードパーティーライブラリを使わなければいけない場合があるかもしれません。Ext JS は他のライブラリともうまく共存します。ウェビナーでは複雑な依存関係チェーンは長期的なメンテナンスを考えると問題をたくさん抱えていることを警告しただけです。
Performance パフォーマンス
Sencha アプリの HTML5 パフォーマンスではどの様な進歩がみられるでしょうか?モバイルアプリ開発ではネイティブアプリを追い抜いてスタンダードになりつつありますよね?
Sencha のエンジニア、Ross Gerbasi は最近 「iOS 8 での HTML5 のパフォーマンスは劇的に速くなった」といった内容の記事 (訳注: 日本語訳はこちら) を書きました。しかし、それと同時に直されねばならないバグもたくさんあるということも述べています。
Sencha は HTML5 が向かっている方向に間違いはないと確信しているため、戦略的に HTML5 に集中してきました。JavaScript のパフォーマンスは Web ビュー、モバイルブラウザ、共に改良されていくことでしょう。
ウェビナー内では、アプリケーションを作る上での様々なアプローチについて触れました。HTML5 でネイティブアプリのパフォーマンスに打ち勝つのは難しいことです。これは単純にネイティブアプリが物理OS に一歩近い技術で作られているからです。しかし、HTML5 アプリケーションはそれでも素晴らしく速いスピードを達成できます。Sencha は2年前に Fastbook のデモでこれを証明しました。そして、それ以降は他の人々も、パフォーマンスが素晴らしすぎてネイティブかどうか区別がつかないくらい魅力的な HTML5 アプリを作っています。
我々から言えることは、HTML5 は既にモバイルアプリには素晴らしいパフォーマンスを提供していて、今後はこういった質問が出なくなるくらいパフォーマンスは向上し、進化していくでしょうということです。
セキュリティー
フレームワークはどうやってセキュアにするのでしょうか?基本的に、お客様が納得するようなセキュリティの保証はどの様にあるのでしょうか?
セキュリティーはエンタープライズアプリケーションに関して言えば非常に大きな議題です。しかし、アプリケーションのセキュリティーと言っても様々なものがあります。ブラウザアプリケーションは実行時に誰でもデバッグできるようになっているため、本質的にセキュアではありません。Sencha がどの様にセキュリティーに取り組んでいるかを見てみましょう。
Ext JS フレームワークでは、多くのクラスは一般的によくあるセキュリティー脅威を和らげるための設定ができます。例えば、 Ext.ElementLoader は、他の設定がされていない限りにおいてリモートスクリプトがロードされるのを自動的に防ぎます。ユーザーが入力できるクラス (例: Ext.form.field.Text ) は、特定の文字や表現の入力の直接入力を防ぐように設定でき、入力情報を送信時に確認させることもできます。また、Ext JS は必要なセキュリティーを実装できるいくつかのユーティリティ ( Ext.util.Format.stripScripts や stripTags ) が同梱されています。
しかし、先ほど述べたようにブラウザは本質的にはセキュアではありません。クライアントアプリケーションが直接的なユーザー入力を防いだとしても、知識のある開発者は簡単にデバッグツールを開いて、スクリプトロジック、DOM インタラクションを操作したり、localStorage にアクセスできてしまいます。最終的にはブラウザ内で走るクライエントアプリケーションのセキュリティーははサーバーサイドとネットワークセキュリティーに委ねられています。
HTML5 で作られたモバイルアプリケーションの場合、 Web アプリケーションを Cordova の様なツールでラップすることでハッカーを困らすことはできるかもしれません。しかし、残念ながら Cordova アプリケーションも完全にセキュアなものではありません。
我々は企業が HTML5 を使ってモバイルアプリケーションを作る上でのセキュリテイーへの懸念を解決するために、 Sencha Space を作りました。 最近のホワイトペーパー では、いかに Sencha Space がリスクを下げ、セキュリティーを強め、アプリケーションやデータを所持する上でかかるコストを削減できるかを説明しています。
結論
Sencha は HTML5 と JavaScript がエンタープライズソフトウェア開発の長期経済にもたらす影響について理解しています。そして、Ext JS はより企業がアプリケーションを効率よく作れるように戦略的にエンジニアリングされています。他にも質問があれば自由にお聞きください。
先週のウェビナーを楽しんでいただけたなら良かったなと思っています。11月には Sencha Space 1.2 の新機能と、Sencha Space がいかにクロスプラットフォームで HTML5 アプリケーションを簡単に開発してデプロイできるものかを解説しますので、どうぞご参加下さい。