de:code2017の感想(day2)

2017年5月26日

2日目の覚え書きです。

Visual Studio 2017 と C# 7.0 の話

ちょまど氏のセッション。

Visual Studioについては、検索やデバッグ機能の強化がアツい。

検索窓にメソッド/フィールド/イベント…などの絞り込み機能が増えたり、検索結果の表示がきれいに整理されるようになった。

C#コード規約を絶対守るマン が取り込まれたのも面白い。this書くの面倒マン もクイックアクションでちょちょっとthisつけられるのですごい。

 

C# 7.0では、関数型を意識したアップデートが多め。

switchで型のマッチができたり(関数ガチ勢に刺されそう)、タプルが入った。out撲滅マンが出てきそう。

throwが式になった、というのもすごい。null合体演算子と組み合わせてワンライナーで例外飛ばせるのはアツい。

 

Desktop Bridgeの話

Win32以前とUWP以降のちがいと、Converterを使う際の注意点について。

一番のちがいは、プロセスの走り方。Win32以前のexeはプロセスが直に呼び出されて動作するが、UWP以降ではAppContainerの管理下で実行される。

Win32アプリをUWPに変換する"Desktop Bridge"は、プロセス仮想化の技術を用いて、起動はUWPと同じだがプロセスの動作は仮想的にWin32と同じ動作をするようになる。(ただし、仮想なので制約を受ける。)

Appxパッケージの実体はzipで、解凍するとexeが格納されているのが見える。しかし、直接クリックしてもAppContainer下で実行されないため、弾かれる。Desktop Bridgeで作成されたものは、これで勝手に実行できてしまうため、コピー対策などの観点から、AppContainer以外から起動されたら弾く処理をいれておくことをおすすめする。

 

++C++;の人、C#の今後

C#7.1~7.2~8.0~/.NET 2.0~/VS2017~で今後どうなっていくかの話。

C#4.0以降、5.0を作る班とRoslyn(+6.0)を作る班に分かれていたが、7.0にきてようやく合流し、整流化された感じらしい。停滞期から脱出。

(.NETはCoreとFrameworkの共存からStandardに集約される途中で、停滞期真っ最中。VS2017はCodeやfor Macなど分化しているため、今後停滞期がやってくるかもしれない。)

 

C#7.0以降は、小数点刻みのアップデートが予定されているが、これは実質はじめてのことで、今後の開発スピードが速くなっていくことに期待が持てる。C#7.1は今までは2~3年ごとだったところを、さっそく半年でリリースされるかもしれない。

C#7.2は"パフォーマンス"という大きなテーマを持って開発され、ヒープを有効利用できるような言語機能が追加される予定。

 

UWPのストア申請について

Windows Template Studio (http://aka.ms/wtsinstall)を用いた初期プロジェクト作成と、ストアに公開するためのappxパッケージ作成のデモ。

このテンプレートはすごく使いやすそうで、MVVMなコードが最初から生成されたり、多言語化がコピー+renameだけで出来たりする。

Appxパッケージ作成後には、WACK(認証キット)を事前に走らせておくことで、申請後に躓かなくて済む。

 

Buildで発表されたFluent Designのはなし

Fluent Designのキモは5つの要素(Light, Depth, Material, Scale, …)で、今後のHoloLensやIoTデバイス(組み込み)などを見据えて、広範囲で使いやすいデザインにするための指針のようなもの。

開発者として利用できるのはFall Creators Update以降で、Waveと呼ばれる段階ごとに順次配信される。Fall Creators UpdateではWave 1が配信され、ConnectedAnimation(コンテンツの移動が見やすくなる)やAcryl(半透明パネル)などが適用できるようになる。StyleやControllerの形で配信されるため、開発者にすぐに影響が出るようにはならないので安心してよいとのこと。