++C++; // 未確認飛行 C ブログ

http://ufcpp.net/

Windows 8、WinRT

with one comment

BUILD、まだ基調講演くらいしか見れていませんが、それだけでもなかなかに素敵。

そして、公開されて間もないWindows 8の開発者プレビュー、さっそく使ってみているわけですが。

WinRT

開発者的に気になっていたのは、うわさのWinRT。

コードネームとかじゃなく、正式名称的にもこの名前でよかったわけですが、実物見るとなかなかに楽しそう。

Metroアプリ vs 既存デスクトップ

開発スタイル的には全く別系統でした。いわば、Silverlight と WPF みたいなもの。

  • Metro アプリ
    • タブレット向け、タッチUI
    • たぶん、ARM版で快適に動かそうと思ったらこっち
    • App Storeで配布できるのはこっちだけ
    • WinRTを使って作る(ネイティブ、.NET、JavaScriptから使える)
    • 感覚的に、一番近いのはWindows Phone 7向けSilverlight(が、.NET 4.5相当のクラスいろいろ取り入れた感じ)
  • 既存デスクトップ
    • まんま、今まで通り
    • Win7タブレットを触ったことがある人なら、タッチに向かないことはご存じのとおり
    • OSのかなり低層に触れてない限り、XPとかのアプリもバイナリそのままで動くのではないかと
    • App Storeで配布できない(そもそもARM版で動くの?動くには動くみたいだけど、快適か?過去のアプリがどこまで互換性ある?)
    • .NET Framwork 4.5が出ました
      • WPFも強化されています

WinRTと.NET Core

さて、そもそもWinRTとは

  • Win32の置き換えで、COM(の焼き直し)なネイティブAPI
  • .NETから見ると、普通に単なる.NETのクラス ライブラリに見える(P/Invoke不要)
    • ちなみに、名前空間はWindowsから始まる
  • HTML5+JavaScriptなMetroアプリからも呼べる(まあ、昔でいうActiveXみたいな状態)
  • クラスやメソッドの設計もかなりきれい。たとえばUI層なら、WPFを再設計した感じ
    • どのクラスがどの名前空間にあるかはかなり再整理されてる
    • たとえば、INotifyPropertyChangedはWindows.UI.Xaml.Data名前空間
  • UIはXAMLで記述
    • C++からもXAMLが使える
    • コピペで動くレベルでかなりSilverlightなXAML
  • サンドボックス化されてて、App Storeに登録するにあたって「このアプリはネットワークを使います」みたいなのが全部申告される

それで、ですよ。問題は、実は .NET Framework が2系統に分かれます。

  • .NET Core: WinRT、つまり、Metroアプリから使える .NET
    • パッと見た感じ、今現在 Portable Library で使える範囲(どこまで一緒かは要検証)
      • async/awaitは使える状態になってる
    • Metroアプリ = .NET Core + WinRT なので、感覚的には非常に Silverlight for WP7 に近い
    • WinRTとの連携のために、メタデータの読み込み部分あたりに手が入ってるっぽい
  • .NET Framework 4.5: デスクトップ版。
    • 要するに、現在の .NET Framework の新バージョン
    • 仮想マシン的には .NET 4 のものと一緒。ライブラリの追加
      • async/awaitのための拡張(Task.GetAwaiterとか)
      • TPL Dataflow 追加
      • その他、WPF, WCF, WF なども色々更新あり

今の、Out-of-browser Silverlight VS WPF な構図とあまり変わらなかったり。

今から備えるMetroアプリ

WPFやSilverlightで、Portable Library使ってモデル書いてれば、かなり低コストで移行可能かと。

Windowsフォーム?てめぇはダメだ。(モデルに関してはそこまでダメでもないけども。)

Portable Libraryを使った開発については以下のスライド参照(Silverlightを囲む会で発表したもの)。

経験的には、コピペまで認めるなら、90%くらいコード共有可能。

これからのXAMLアプリ?

さて、ここからは推測まじり。

WPFとSilverlightとWinRTとWindows Phone 7と。9割方コピペで作れるXAMLファミリーがまた増えました。

まあ、世の中いきなり移行できるものなら幸せですよ。

WinRT は今のところ、Metroアプリ専用、つまり、ターゲットはタッチ操作UI。

(今の開発者プレビューで、「今のままだとマウスで使えた代物じゃねーよ」ってフィードバックが入りまくって、製品版までには、マウスとキーボードでもMetroアプリを快適に使えるようになる可能性も高いですが。)

据え置きPC

当然、現状のPCはマウスとキーボードが前提で、タッチ操作に最適化されたアプリだとかえって使いにくい。

なので、当面、引き続き普通にデスクトップ アプリ(WPF とか、OoB Silverlight とか)を書くことになると思います。そして、WPFとSilverlight、どっちがいいの?という悩みも消えません。両方に対して、引き続き改善が入っています。

とはいえ、Metroアプリがあることによって、タッチ操作な新入力デバイスが流行ってくれるかも。それに、Kinectにも期待。

タブレットPC

Atom搭載なタブレットは、たぶん、Metroアプリもデスクトップ アプリも両方動きます。

ただし、デスクトップ アプリの場合、右クリックがない前提でアプリを書かないと、タブレットでの利用はきつい。マウスでも使えて、タッチでも使えるぎりぎりの妥協案はリボンUIかもしれない(リボン化された Explorer を見ていて)。

ARM版は、ひょっとしたら、Metroオンリーで考えたほうがいいのかな?

タブレットPCからリモート デスクトップ接続

今後、増えていきそうな利用方法として、外出時にはノートPC持たず、タブレットのみ持ち歩き、そのタブレットからリモート デスクトップ接続して仕事ってのが考えられます。

サーバーOSであるWindows Server 8にすらMetro UIが搭載される理由。

こういう利用方法を考えると、「据え置きPCがターゲットだから、マウス前提でいいや」とは言いづらくなると思います。上記のとおり、マウス前提なんだけども、ぎりぎりタッチ操作できるUIを考えなきゃいけないという極めて面倒な事態に…

携帯電話

今回の発表を見て一番不透明(言及なし)なのはこれ。

Metroアプリは、Windows Phone 7アプリを参考に作られてるっぽい雰囲気なので、Windows 8上で現状のWindows Phone 7アプリを動かすのもそんなに苦ではなさそうな。

マイクロソフトの出している求人情報によれば、今、Windows Phone 8 と Windows 8のアプリ開発モデルの統合を研究中だそうで、Windows Phone 8が出るころには本当に統合されるかも。

ちなみに、上記の WinRT の説明のとおり、Windows Phone 7 のアプリから WinRT への移植はかなり簡単だと思います。

Windows 7以前

WinRT、Windows 8の上に載っている形になっているので、Windows 7にも拡張ランタイムとして載せれそうなもの。というか、うわさだと載せる?

Visual Studio 11

で、Visual Studio も開発者プレビューが出たわけですが。

11って数字は内部バージョン番号ですね。2005→8、2008→9、2010→10。なので、次は11。2011年中に出るって意味ではないです。時期はいまだ名言されていないので、2012とも限らず。まあ、大方の予想では2012年の春から夏にかけてだと思われていますが。

VS11単体ダウンロードもできるみたいですね。MSDNサブスクライバー向けにはすでにダウンロード提供されていて、一般にも数日中に公開予定。

Windows 7にもインストール可能です。ただし、この場合はMetroアプリの開発はできないみたいです。WinRTを触ってみたければ、Windows 8でないとダメっぽい。

普通に、次期バージョンのC#(async/await)を試してみたいだけとかならWindows 7へのインストールでいいと思います。

Written by ufcpp

2011年9月15日 @ 18:30

カテゴリー: .NET, C#

Tagged with ,

コメント / トラックバック1件

Subscribe to comments with RSS.

  1. […] WinRTか。。 投稿日: 2011年9月18日 作成者: sfpgmr Windows 8、WinRT […]

    WinRTか。。 | S.F.Page

    2011年9月18日 at 05:44


コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。