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

http://ufcpp.net/

WinRT に関する誤解

with one comment

まあ、ます先に、ダウンロード リンク一覧を

で、やっぱいろいろと誤解されてるなぁ。

【×】 HTML5+JavaScript で書かなきゃいけないのかな

今現在、.NET のスキルを持っている人が HTML5 で Metro アプリを書くメリットはほとんどないと思います。

逆に、今現在、HTML5 のスキルを持っている人なら、HTML5 で書く。

「両方できるけどしいて言うなら?」と聞かれたなら、まあ…

Anders Hejlsberg の Future directions for C# and Visual Basic で、Anders が、「JavaScript にあってうれしいものは、全部 C# にもあってうれしいよ」みたいなことを言った瞬間、会場が大喝采。

そして、WinRT は非同期 API だらけになります。処理に50ミリ秒以上かかる(可能性のある)ものは、基本的に非同期 API しか提供されないそうです。そのタイミングで、C# 5.0 の async が来る。.NET にだけ強いアドバンテージがあります。

【×】 Metro 版 IE でプラグインが使えないのは Adobe 排除だ

Adobe とマイクロソフト、密にやり取りして、Metro 版 AIR を作ってるんですって。

ブラウザー プラグインの時代は終わった(実際に終わるのはだいぶ先のことだと思いますが)ってことですかねぇ。

デスクトップ版の Silverlgiht も、どんどん Out of Browser 方面で強化されてますし。要は、デプロイが楽な Windows デスクトップ アプリ扱い。

ちなみに、デスクトップ版の IE は今までどおりです。ある日突然ブラウザー プラグインがなくなることはありえないです。

余談になりますけど、Youtube は普通に HTML5 video タグで動画が見えるみたいですねぇ。

【×】 C++/CLI かよ。WinRT は CLR か?

違うよ、全然違うよ。

WinRT はネイティブです。

.NET 側/ JavaScript 側から見て

.NET 側から見ると、普通に .NET のクラスに見えるネイティブです。

今までの P/Invoke とか、COM の ref Type.Missing 地獄がないのがいいところ。

なんかところどころ、規約ベースの暗黙的な型の置き換えやってますねぇ。WinRT 側だと IVector っていうインターフェイスが、.NET 側からは .NET 標準の IList に見えたり。

.NET 側で作ったクラスを C++ や JavaScript 側から使いたければ、いくつかのルール守れとか。ちなみに、ルールは例えば、

  • public なクラスは sealed にしろ
  • public なプロパティ、メソッドなどで使う型は WinRT 上で定義されているもの(と、それに暗黙的に変換できるもの)だけにしろ
  • 構造体使うなら、public なフィールドだけにしろ

等々。

C++/CX

C++ 側、パッと見、C++/CLI に見えるデモ コード、実は C++ Component Extension (C++/CX)っていうらしい。

仕組み的には、ビルド時に標準 C++ なコードを生成するような感じで、WinRT の呼び出しコストはほとんどない(単に仮想関数呼ぶだけというレベル)とか。

TOOL-690: Under the covers with C++ for Metro style apps を参照:

image

ほぼ C++/CLI だけど微妙に“似て非なる”感あるのが嫌すぎるものの、.NET のクラスを呼び出すようなコストがかからない点は素敵。

WPF とはなんだったのか

ずっと WPF やってきた人間からすると、WPF で苦しみもがいて頑張ってたことが、ようやく実を結びそうだなぁという感慨深い気持ちなわけですが。

知らない人から見たら、「また既存技術捨てて新しいもん作るのかよ」にしか見えないのかなぁ。残念。

Windows 8 でしか動かないんだったら WinRT なんて流行るわけないよ

そんないきなりの置き換えを狙ってるわけないし。

各社 HTML5 推しだけど、IE6 がいまだ数%現役なのと一緒で、「WinRT 推しだけど、延々と Win32 が残る」みたいなもんだと思えば。

つくづく、iPhone の良さは、Mac 低迷期に既存のしがらみ捨てて作り直されてるとこだなぁと思う。

Written by ufcpp

2011年9月17日 @ 14:54

カテゴリー: .NET, C#

Tagged with ,

1件のフィードバック

Subscribe to comments with RSS.

  1. […] Tagged Under : helloworld, Mac, mo, monodevelop, MonoMac, noDevelop, コード, サンプル, 四苦八苦, 新, 最新版, 走 tweetmeme_style = 'compact';tweetmeme_url='http://gazou2.mbsrv.net/img001/?p=9161';http://gazou2.mbsrv.net/img001/?p=9161【【新・mac】【C#, C♯, C#】 MonoMac 【Mo noDevelop】】monodevelop最新版入れて、四苦八苦しつつもなんとか helloworldサンプルコードを走ら…2ch_linkdeai.rank2000.com/addins.monodevelop.com/Alpha/Mac/2.4sourceforge.net/apps/phpbb/gtk-osx/viewtopic.php?f=3&t=59macwiki.sourceforge.jp/wiki/index.php/%E3%83%AA%E3%82%B9%E3%83%88/%E3%82%A4%E3%83%B3%E3%83%97%E3%83%83%E3%83%88%E3%83%A1%E3%82%BD%E3%83%83%E3%83%89blog.xamarin.com/2011/12/06/holiday-season-beta-packages/ikura.2ch.net/test/read.cgi/news/1324809540/11toro.2ch.net/test/read.cgi/tech/1253450199/awabi.2ch.net/test/read.cgi/poverty/1326781620/toro.2ch.net/test/read.cgi/tech/1329023778/github.com/mono/winformscode.google.com/p/uim/wiki/UimSystemConfigurationja.wikipedia.org/wiki/GTK%2Bbloodlinejp.ddo.jp/blog/?p=723ufcpp.wordpress.com/2011/09/17/winrt-%E3%81%AB%E9%96%A2%E3%81%99%E3%82%8B%E8%AA%A4%E8%A7%A3/stackoverflow.com/questions/6806326/monodevelop-on-ubuntu-console-readline-doesnt-workmonobook.orgwww.mono-project.com/Gui_Toolkitsmonobook.org/wiki/MonoMac […]


コメントを残す