Windows 8 Developer Preview

流行り物に乗ってみるのも大事なこと。とりあえず、インストールしてみましたよ。出たばっかりのVMware Workstation 8に。
なんか、VMでも起動がやたらと早い印象があります。田ボタンがうげぇという事になってるのには慣れることができるかどうか未知数ですね。なんか、向かっている未来がLionと同じなのは分かるんですが、正しいかどうかは良く分かりません。

Explorer

なんであれ、GUIの変化はやっぱり気になります。Explorerもリボンになりましたが、リボンをたたむと、メニュー+ツールバー+ダイアログが一つになった感じのGUIになるので、実は使いやすくて好きです。深いところにあるはずの設定が表に出てきてくれていると考えるといろいろとやりやすくなったなぁと思う感じです。

最初に気づいたのは、「別のプロセスでExplorerを起動」がわかりやすいところに出てきていること。これ、動くといろいろと重宝できるんですよね。今までは、設定がいろいろ面倒だったので使う人は少なかったと思いますが。

f:id:espresso3389:20110916042632p:image

次に、管理者としてコマンドプロンプトを表示する奴。これも、レジストリをいじれば直ぐに出せるんですが、標準では無かった。素敵。

f:id:espresso3389:20110916042629p:image

で、「パスとしてコピー」。これもWindows 7では、[Shift]+右クリックという、知っている人しか出せないような必殺技だったので、リボン上に出てきてくれたのは凄くうれしい。

f:id:espresso3389:20110916042630p:image

次に拡張子の表示・非表示と、システムのファイルの表示・非表示の設定。これも、場合によっては、一時的に表示したいけど、やっぱり非表示にしておきたいとかいうシチュエーションは意外とあったので、わかりやすい場所に出てきたのは歓迎。

f:id:espresso3389:20110916042631p:image

気になったところとしては、Windows 7は、クリーンインストール直後は、ウイルス対策がインストールされてないよって頻繁に表示されてうるさかったんだけど、Windows 8 Developer Previewでは、何も出てこないこと。よく見ると、

f:id:espresso3389:20110916042633p:image

Windows Defenderさんが守ってくれている模様。これは、Windows 8では、本格的にウイルス対策がプリインストールになるのかな?良く分かりません。

Visual Studio 11

Generalの下にある、"Enable Tailored Features"って何?

f:id:espresso3389:20110916044153p:image

Debuggingの下には、GPU関連のデバッグ項目が追加されております。おぉ。

f:id:espresso3389:20110916044317p:image

C/C++のGeneralには、WinRTの文字が。

f:id:espresso3389:20110916044318p:image

そして、Code Generationには、#pragma による明示的なforループの展開に関するオプションが。OpenMPじゃなくてもパラレル化するみたいな。

f:id:espresso3389:20110916044652p:image

あとは、Linkerの下に、WinMDのメタデータ付与の項目が。

f:id:espresso3389:20110916044805p:image

で、WinRTを使うと、次のサンプル(スケルトン)みたいなコードが書けるようになるみたいです。って・・・、これ、C++/CLIなんじゃと思うコードなんですが、"Enable Windows Run Time Extensions"によって書けるようになったコードみたいです。
これでネイティブコードでもメタデータを持ったコードが書けてうれしいねぇという話の模様。WinRTがWindows 7にもバックポートされれば、そろそろ居なくなるはずのXPを無視して幸せにコードが書けるようになるんですけどねぇ。

#pragma once

using namespace Windows::Foundation;

namespace WinRTComponentDll1
{
  public delegate void SomeEventHandler(int i);

  public ref class WinRTComponent sealed
  {
    int _propertyAValue;

  public:
    WinRTComponent ();
    ~WinRTComponent ();

    property int PropertyA
    {
      int get() { return _propertyAValue; }
      void set(int propertyAValue) { _propertyAValue = propertyAValue; }
    }

    int Method(int i);

    event SomeEventHandler^ someEvent;
  };
}
// WinRTComponent.h