.NET Framework 4.5.1の新機能を、4.5も含めて概説。Win 8.1時代のアプリがどうなるかについても考察する。
本稿では.NET Framework 4.5.1の新機能を、4.5も含めて紹介する。その説明に入る前に、現状の.NETの戦略を明確にしておきたい。
1990年代中盤にインターネット対応へと自社のOS戦略のかじを大きく切り、2000年代初頭に.NET構想を提唱して以来、マイクロソフトはネットワークを念頭に置いたOS/アプリ戦略を採り続けてきた。そして現在、マイクロソフトは「デバイス&サービス戦略」を提唱し、ソフトウェア企業からデバイスとサービスを2つの軸足とした企業へと変化しようとしている。
「デバイス&サービス戦略」からは2つの意味合いが感じ取れる。1つはもちろん、これからはマイクロソフト自身がリファレンスモデルとなるような「デバイス」(ハードウェア)を開発/提供していくということだ。SurfaceとXboxはその代表であり、Windows Phoneも将来的にはマイクロソフト自身の手によって市場に投下されると思われる。その一方で、これまでにエコシステムを構築してきたPCメーカーの立場も尊重されるはずだ。
マイクロソフトが手がけるのは恐らく、Windowsプラットフォームの将来的なビジョンを示す(エッジの立った、しかし、オーソドックスな作りの)ハードウェアだ。そして、PCメーカーはそのビジョンに独自価値を付加した製品を提供することで、総体としては、Windowsプラットフォームに統一されながらも多様性のあるエコシステムが形成されていくと思われる。この差は、「パッケージ版のWindows」と、「PCにプレインストールされカスタマイズされたWindows」の違いのようであると例えられるかもしれない。
もう1つの意味合いは「サービス」を多種多様な「デバイス」に向けて提供していくということだ。このとき、デバイスは単にWindowsをプラットフォームとするものだけを指すのではない。現在、PC以外のプラットフォームで優位にあるのは、iOSやAndroidなどをOSとするデバイスであり、Windowsデバイスでもそれ以外のデバイスでも、透過的にサービスを利用できるようにすることが肝要だ(ということは、インターネット標準のテクノロジを使うことが肝要だ)。
ネットワーク環境やコンピューティング環境の変化もある。タブレットPC/スマートフォン/モバイルルータなどの登場により、固定回線がない環境でもネットワークへの恒常的な接続が当たり前のことになり、さらにタッチ操作によるデバイス操作、各種センサー類と連携したユーザーエクスペリエンス(UX)など、従来とは異なる様式でコンピュータが利用されるようになった。キーボードやマウスは依然として重要な入力装置であるが(デスクトップ/ノートではこれは今後も最重要な入力デバイスであり続けるだろう)、タッチ操作、音声認識/音声合成による入出力、身振り手振りによる入力など、コンピュータの操作体系にはさらなる進化を遂げるだけの余地が大いにある。
デバイスが常にネットワークに接続され、その操作方法も変化しつつある中で、新たな形態のアプリが生まれ、Windowsアプリにも変化が訪れた。Windowsストア・アプリがそれだ。その一方で、従来のデスクトップ・アプリもWindows 8では健在だ(し、そこをマイクロソフトが捨てることはないだろう)。
かくして、Windows 8(以下、Win 8)は「デスクトップ・アプリ(ここではWebアプリを含む)」と「Windowsストア・アプリ」という2種類のアプリを実行するプラットフォームとなった。
前者については従来どおり、にC/C++からはWin32、.NET言語からは.NET Framework、HTML/JavaScriptではInternet Explorer(以下、IE)などのWebブラウザの実行エンジンが使用される。
そして、後者をサポートするために「Windows Runtime」(以下、WinRT)と呼ばれるAPIが生まれた。とはいえ、WinRTはネイティブAPIでありながら、.NET言語とJavaScript/HTMLの両者から透過的にアクセスできるような仕組みを備えており、.NET Frameworkからはサブセットのように見える。.NET開発者にとっては、それほど違和感なくWinRTの世界に慣れ親しむことができるはずだ。
以下、本稿では、この両者を対象に.NET Framework 4.5/4.5.1で導入された機能について見ていくことにする。
「WebサイトやWebサービスが提供するコンポーネント群をインターネット標準に準じたインターフェイスで接続してアプリを構築し、さまざまなデバイスからそれらを利用する。」
これは、2000年初夏に.NET構想が提唱された際のビジョンをざっくりとまとめた表現だ。2011年に改訂された本フォーラムの記事「.NETとは何か?」に掲載されている、その当時の.NETのビジョンを以下に示す。
上の図には登場していないが、当時から.NETでは非マイクロソフトテクノロジとの相互運用性に重きが置かれていた(ただし、その主な対象となっていたのはJavaである)。そして、「インターネット標準に準じたインターフェイス」とは当時はSOAP/WSDL/UDDIといったテクノロジだった。
つまり、「マイクロソフトテクノロジで作られたXML Webサービスでも、Javaで書かれたXML Webサービスでも、SOAPを使って接続すればみんな幸せ」というのが、初期の.NETのビジョン(の1つ)だったのだ。そして、こうした世界を構築するために必要なものとして生まれたのが.NET FrameworkやCLRなどの技術だ。
ひるがえって、2013年秋。上の図は全く役に立たないものになっているかというと、実はそうでもない。右下の「企業」にある「.NET」と書かれた赤丸を「Windows Server」や「Windows Azure」に置き換えて、「XML Webサービス」から「XML」を取り除き、PDAや携帯電話を今っぽくタブレットPCやスマートフォンに置き換えてみよう。大ざっぱに現在の.NETを取り巻く環境に近いものが出来上がるはずだ。「.NETとは何か?」では「Microsoft .NETはすでに死語」と書かれており、用語としては、それは正しいのだが、その理念は変遷を繰り返しながら(ソフトウェア+サービスや3スクリーン+クラウドなどに何度も名前を変えながら)今でもしっかりと生きているのである。
これはマイクロソフトが提供する.NETのホームページからダウンロードできる「ビジネス アプリケーション向け.NET テクノロジ ガイド」に次のような記述があることからも分かる。
『かつてForum 2000において、Bill Gatesは「Webサイトが個々に独立している状態から、交換可能なコンポーネントから成るインターネットへと移行し、さまざまなデバイスとサービスを組み合わせることで、一貫性のあるユーザー主導のエクスペリエンスを実現する」ことが.NETの目標だと説明しました。こうした.NETの初期のビジョンは、多様なデバイスとサービスを通じたエクスペリエンスが、ソフトウェア開発に対する業界全体の意識を変化させつつある点など、今日開発者を取り巻いている環境と驚くほど一致しています。』
では何が変わったのか。1つには上でも述べたとおり、コンピューティング環境が大きく変わったことだ。ただし、.NET構想提唱時からマイクロソフトはタブレットPCやモバイル環境でのネットワーク常時接続は念頭に置いていたと思われる。一方、.NETという観点からの一番大きな変化は、SOAPなどの重量級のプロトコルではなく、HTTP verbやJSON、ODataなどのもっと軽量なプロトコルがWebサービスを接続するためのインターフェイスとなったことだろう。Windows Azureが登場して、オンプレミスだけではなくクラウド上でも.NETテクノロジを活用したソフトウェアを展開できるようになったことも、当時とは大きく異なる。.NET Frameworkをはじめとする技術が着実に進化を遂げているのはもちろんのこと。それでも、.NET構想の中核となった理念は今でもしっかりと生き続けているのだ。
Copyright© Digital Advantage Corp. All Rights Reserved.