uhs

Unsung Heroes

build

28 9月

Roslyn の恐怖 - Compiler as a service の全貌

//build/ カンファレンスで、個人的にもっともショッキングだったのが、Future directions for C# and Visual Basicというセッション。Anders HejisbergというTurbo Pascalの原作者であり、Delphiの開発指揮、C#/.NET Frameworkの設計を行った人。

DSC03585

セッションの前半は度々登場する非同期コードやCaller info attributesなどのC#新機能を紹介していましたが、本当にしゃべりたかったのは、その後のC#5.0の先を示す話題だったようです。

DSC03586DSC03587DSC03592DSC03594

以前から同氏が推進しているCompiler as a service (CaaS)プロジェクトであるRoslynがCTPを迎える模様。うたい文句と概要は知っていたものの、ツールとしてどのような機能を擁するのか、今回明らかになりました。

DSC03596DSC03597

従来は上記のように、コンパイラはブラックボックスでしたが、Roslynでは以下のように、レキシカルアナライザとか、ビルディングブロックとなる要素をAPI化して、見通しをよくしたものという考え方です。決してWeb上にSOAPやRESTで公開するようなものではなく、サービスを細かく分けてユーザが自由に組み合わせて利用できるという精神がSaaS的なのです。

image

以下のようにコンパイラパイプラインをそれぞれAPI化したものです。それらを用いることで、Visual Studio IDEのような、シンタックスハイライティング、リファクタリング支援、オブジェクトブラウザなどが実現されているわけですから、実際にはVisual Studioの一部の機能を抜き出したものともいえるかもしれません。

image

自分自身のリファクタリングロジックを考えたり、さまざまなツールを開発することができます。

10月中旬にCTPがリリースされる予定です。実際にRoslynを利用したデモ。以下のようにRoslyn.Scriptingというネームスペースが割り当てられています。

DSC03599DSC03600

以下のように ScriptEngineに文字列で記述したソースコードを引き渡すと、ただちにコンパイル、動的に実行ができます。

image

また、関数を定義することも可能。

image+

さらに、ダイナミックに宣言された関数をローカルのデリゲートへ代入して、その関数を実行、などという変態プログラミングもできます。動的コンパイルのセッションといわゆる通常の静的コードがシームレスにつながっているようです。

image

ここまで来て、なんとなくピンと来たのですが、新しいウィンドウとしてC# Interactiveモードというのが用意されています。いわゆるインタープリタといえますが、スクリプト言語と違い、静的タイプ言語の強みとして、C#のコードコンプリーションがフルに使えるという恩恵も受けられます。

image

csファイルエディタから、コードを選択しリターンキーを押すとその部分がインタラクティブウィンドウで即時実行ができます。

image

関数定義もこのように直ちに反映されます。

image

次にファイル名を列挙するコードを入れますが、ライブラリが無いとのことでエラーになります。そこでエディタではなじみのアイコンがインタラクティブモードでも現れます。すなわち、usingのオートインサートがインタプリタでも利用できるということです。

image

ここまで来るとなんでもありです。WPFのGUIもインタラクティブに構築可能です。

image

プログラム中から、ソースコードを操作することができ、以下のようにセマンティックモデルと呼ばれるツリー上の構文木に対して、Linq Queryを投げたり、実際に操作したりできます。

image

最後に極め付けは、C#/VB間のソースコード自動変換。単純にコピーアンドペーストするだけで自動的に変換されます。

imageimage

このコードよく見ると、ダイナミックにC#コードをコンパイルしているので、VBコンパイラ中でC#コンパイラが動いていることになります。

さらにこのコンバートプロセスをコードで制御することも非常に容易です、以下のようにConvertというメソッドを呼べばOKです。

image

このような機能がVisual Studioにもうすぐ統合されるとなるとワクワクしてしまいますね。

これによって、いくつかのスクリプト言語は役目を終えてしまうのではないかと、思えるほどのインパクトがあるかもしれません。

27 9月

//build/ 2011 カンファレンス初日 〜 Keynote #1 その6

キーノートの最後はChris JonesVice PresidentによるWIndows Live関連の機能紹介。

DSC03260DSC03241

以下はメールアプリの例。Windows Liveアカウントに対応したHotmailやカレンダーなどが参照できる。

DSC03242DSC03244

以下はPeopleアプリ。Windows Phone 7のPeopleハブと同様のソーシャル亜久里げーしょん機能を持つ。左下はPhotosアプリで、これもWP7と同様に、Facebook上の写真なども統合して参照できる。

DSC03245DSC03246

またLiveアカウントに対応して、複数のPC間でHDD内のコンテンツを参照することができるという恐るべきデモ。これは写真のみならず、ファイルシステム全体を見渡すことができる。さらにWindows Phone 7とも同期をすることができる。

DSC03247DSC03249

Developer Previewアプリとしては17のアプリが17のチームにより開発された。これらは実は夏のMSの学生インターンシップによるもので彼らが最初のWindows 8デベロッパーだということで歓声を受けていた。

DSC03254DSC03256

RTMへの道筋はBeta -> RC -> RTM -> GA(general availability)といういつものパスを通るとのこと。同行者の情報ではこれから9か月でRTMという噂も聞きました。

DSC03258

27 9月

//build/ 2011 カンファレンス初日 〜 Keynote #1 その5

続いてSinofsky自身によるプロフェッショナルプラットフォームのデモ。ログインパネルでWindows Undateの報告を見ることができる。これまでポップアップやワーニングが出まくっていたのとは対照的にシンプルな印象を与えます。

DSC03218DSC03219

どうもシノフスキーはこの新しいタスクマネージャがお気に入りのようで、よりスマートになった機能を紹介していた。アプリケーションのサスペンド状態の表示、この状態では全くCPUを消費しない。左下はCPU,MEMORY,DISKなどの占有率を一覧が可能になったビュー。右下はよりクールになったグラフ表示。

DSC03222DSC03223

左下はWindows Assesment Console。パフォーマンスのチェックや各種のテストを行ってマシンんを管理できる。

DSC03227DSC03228

リモートデスクトップは、リモートのPCにタッチパネルが無くても、手元のタブレットからアクセスできたり、キーボードをリモートで使えたりする。

DSC03229DSC03230

またこれまでマルチモニタ時は、タスクバーの片方(メインスクリーン側)にしかスタートメニューは出なかったが、WIn8からは各スクリーンにタブを表示するようにできる。

image

また以下のように片方をメトロスタイル、片方をデスクトップにしたりもできるので、開発マシンが2画面の場合は重宝しそうである。

image

27 9月

//build/ 2011 カンファレンス初日 〜 Keynote #1 その4

続いて、ハードウェアプラットフォームについての紹介。Michael Angiulo副社長のデモ。

DSC03184DSC03185

さまざまなハードウェアをサポートすることを説明するが、最初にハイエンドのサーバマシンからタブレットまで同じスピードで起動するという点を確認。現行のWindows 7PCでもだいたい8秒で起動します。

DSC03186DSC03197

以下はQualcomのSnapdragon SoCによるシステムに、デバッグカードを刺したデモ。電力消費をグラフ化しているが、新しいConnected stanbyにより、間欠的なパワーONによるネットワーク状態の確認をしている様子と、パワーOFF後すぐに電力消費が0になる様を紹介していた。

DSC03191DSC03190

以下は他の3種類のSoCチップベースタブレットの紹介。左はNvidia Tegra3システム、右はTI OMAPシステム、奥がIntel Atomシステム。全く同じビルドのARM OSが起動している。

image

USB3.0のデモ、256TBのHDDを扱えることを述べた後、GTX580を3機備えたモンスターマシンの紹介。4.7TFLOPSをたたき出すという。2005年のスーパーコンピュータと同様の性能だそうです。下右はUnbeleivably ReakusticなDirectXレンダリングの例。Windows 8 MetroアプリはすべてこれらのGPUアクセラレーションの恩恵を受ける。

DSC03192DSC03195

タッチパネルは、周囲に1ドット幅の検出センサーを設けて、スワイプ操作を読み取ります。

DSC03196DSC03216

以下のようにさまざまなディスプレーサイズをサポートするが、これまでのようにサイズが任意ではなく限られた画面解像度を規定している。

DSC03199

センサーは3軸ジャイロ、加速度センサー、地磁気センサーをサポートし、これらはSensor FusionAPIとして一つにまとめられてアクセスできる。これを3行のコードでアクセスできる点を強調していた。またNFCもサポートし、タグの読み取りでもも行っていた。また右下のような非常に薄いWindows 7マシンで動作しているところを示す。

DSC03200DSC03208

次にSamsungのタブレットPCを紹介。いきなり分解して、実際の中身は装備された機能を紹介しながら、実際はバッテリーの方が大きいとのこと。

image

そしていよいよDeveloper PCの紹介。上記のST MicroセンサーフュージョンチップやGPS,SSD,EFI,フラッシュなどを備えている。

DSC03210

隣の倉庫に5000台用意しているぜ!と紹介すると会場から大歓声。

DSC03211DSC03212

開発者向けのDeveloper Preview PCを使うことで、Windows 8の新しいインターフェイスを試すことができるとともに、そのままこのマシンでVisual Studio を利用して開発ができる。

DSC03213

ハードウェア環境はこれまでの延長線上にあるものと考えてよさそうですが、特に電源周りで長時間稼働が望まれるARMシステムに合わせた改良が見られるようです。

26 9月

//build/ 2011 カンファレンス初日 〜 Keynote #1 その3

WinRTの紹介のあと、実際のMetroアプリケーションの開発をデモしました。

DSC03159

Antoine Leblondが紹介します。よしよし俺が見せてやろうと、と手をすりながら現れたのが印象的でした。

DSC03160

Visual Studio 11によるSuper EasyなMetroアプリケーション開発の紹介。

DSC03161

当然ながらVisual StudioのプロジェクトとしてJavaScriptが加わっています。一番上に出ているのは単にアルファベット順ということです。C++のみDirectXプロジェクトが存在するほかはすべて同じテンプレートを持っています。

DSC03162

例では画像をタッチで編集するアプリPhotoDoodleを簡単に作成していました。コード量は80ライン程度。

DSC03165

これをMetroスタイルに化けさせるデモを行っています。以下のようにBlendをつかってHTML5/JavaScriptも編集できるので、あたかもBlendがWebページ編集ツールになったかのようです。

DSC03171

フォトピッカーを利用する場合は、このように完全にMetroスタイルのピッカーが現れ、ユーザがこの部分を開発する必要はありません。またこのピッカーはFacebookなどソーシャルサービスの画像なども接続することができます。これはすべてOS側が用意する機能になります。この辺はWindows Phone 7開発をしたことがある人ならおなじみの機能です。

image

以下のように構成して、Metroアプリ風のレイアウトにしたところで、投稿します。

image

以下のようにストアに登録するデモですが、これがUpload Packageというメニューで直接行えるようになります。

image

以下がストアの画面。残念ながらこれもPreview PCでは対応していません。

DSC03175

このアプリケーションを登録したところ。

DSC03177

このストアはMetroアプリのみでなく、たとえばQuickenのようなレガシースタイルのWindowsアプリケーションの配布も可能とのこと。ギャラリーのみとして、実際の販売はメーカーサイトでというような柔軟な対応も可能だそうです。

DSC03178

Windows8アプリ開発は、Windows Phone 7の様式、すなわちスマートフォン文化に大きく影響を受けた開発環境、アプリケーション販売の仕組みを取り入れるという説明が、わかりやすいと思います。

Follow us on
記事検索
Application
primaryImage Download-JP-Med
Night Meets Light

screenshot_99 Download-JP-Med
Weekend Overdrive

primaryImage Download-JP-Med
家政婦のMTA
Google Sitemaps用XML自動生成ツール
Archives
楽天
  • ライブドアブログ