vaguely

和歌山に戻りました。ふらふらと色々なものに手を出す毎日。

dotnetConf 関西2017に参加してきました

はじめに

10/14に日本マイクロソフト関西支店で行われた、dotnetConf関西 2017に参加してきました。

connpass.com

4セッション + LT大会で、バラエティ豊かな内容を聴くことができました。

聴き逃しや勘違いなどもあるかとは思いますが、聴きながら書き留めたメモを中心に書き残しておきます。
(修正などはご指摘いただければ対応します)

またスライドは後から公開されたものがあればリンクを追加する予定です。

.NETの今と未来~デバイス&クラウドネイティブを目指して

dotnetConfについてや、セッションのタイトル通り15年前!に登場した.NETが今どう変わっているか、今後どのように進んでいくか、
ということが紹介されました。

2017/10/22更新
dotnetConf関西2017のものに差し替えました

www.slideshare.net

ここからメモ


dotnetConfについて

dotnetConfはオンラインが中心。ただし今回のようにローカルイベントも世界各地で行われている。

channel9.msdn.com

Twitterでの盛り上がりはマイクロソフト本社にも伝わる。そのためどんどんツイートしてほしいとのこと。

マイクロソフト社の活動としてはAzureがメインになってきている。
ただし.NETは.NETで変わらず活動していく。

.NET Framework、.NET Core

Windows上で動作する .NET Framework (現行ver.4.7)と、
マルチプラットフォームで動作する .NET Core (現行ver.2.0。ベースの一部はMono)。

これらは今後も統合されるようなものではなく、それぞれ進化していく。

ただし.NET Frameworkの資産を .NET Core、 Xamarin でも活用できるように、
共通化( .NET Standard ?)も進めていく。

実装は C# がメインであり、最初に実装されはするが、 VB.net 、 F# もしっかりサポートしていく( .NET Framework、 .NET Core 共に)

Xamarin

Xamarinには2種類の作り方がある。

  • Xamarin Native -> UI部分はそれぞれのプラットフォームに合わせて作り、共通処理をひとまとめ
  • Xamarin Forms -> UI部分から共通。ただしプラットフォームによって制限もあり?

どちらで開発するにしても、iOS開発にはXCodeが必要。

Xamarin Live Player を使うと、 Visual StudioiOSバイスをペアリング -> Visual Studio で Xamarin.iOSデバッグが可能。

ただし XCode でビルドした状態と全く同じ、というわけではないので最終出力する部分は MacXCode が必要。

.NET Standard

.NET Standard は、 .NET Framework 、 .NET Core 、 Xamarin で共通で利用できるコード。

ver.2.0で2万以上のコードが共通化された。

利用方法としては、共通化させたいコードを .NET Standard ライブラリとして切り出す -> ライブラリとして使用可能
( Nuget パッケージも同時作成)

Container + Docker

現在はCloud上にあらかじめ用意されている機能・サービスを活用していく Cloud Native が中心になってきた。

App service on Linux & Web App for Containers

今までベース部分のOSはWindowsだったが、Linux を使うものが登場した(App service on Linux)。

コンテナでランタイムを実装する -> コンテナさえ動くようにすれば、どこでも動かすことができるように

Write-once, Run-anywhere

Containerを使う上で必要なファイルも Visual Studio で生成・編集できるように。

Visual Studio 2017 では Docker を利用する機能が内包されている。
通常のビルドと同じような操作で Docker のビルドをすることができる。

Serverless

Azure Functions -> AWS の Lambda のような、Serverless を実現する機能。

Functions は Visual Studio で、 .NETC# を使って開発可能。

動作するのはユーザーからトリガーを引くための操作が行われた場合。

ローカルで動かしている.NETコードを基本そのままクラウドに上げることができる

よりモダナイズされた環境での開発・サービス提供を


ここまで

感想

.NET って本当に幅広いんだなぁ(こなみかん)

お話の中で特に気になったのは .NET Standard と Azure でした。

.Net Standard は、例えば自分の普段の作業では Unity と UWP で処理を共通化させる、といったことができそうです。

また、処理を共通化させることができる、という意味ではネイティブだけでなく、 Xamarin にも取り組んでみようかなぁ。

あと Azure はそれ自体も気になるところですし、 Functions も C# で書くのであれば、
AWS Lambda よりも情報を集めやすそうな気がします。
( AWS Lambda では C# がメインの言語ではないため、
他の言語の情報を変換する必要があると思うので)

お試し枠もあるようなので、こちらも近いうちに触ってみたいと思います。

Visual Studio拡張とRoslynとDotNet.exeなどいろいろ

Visual Studio拡張機能を作成した時にハマったあれこれが紹介されました。

2017/10/22更新
dotnetConf関西2017のものに差し替えました

www.slideshare.net

ここからメモ


拡張:Extensibility -> VSIXプロジェクト

下位互換性をもたせたい場合も、最新(Max ver)のVSで作成する

右クリックでメニューを追加したい場合、Custom Commandを追加し、実装する

ファイル名がすべてCommand名と共通のものになるため、全体に関連するファイルなどはリネームしたほうが良い

例)
  • RClickCommandPackage.vsct -> ExTest.vsct
  • RClickCommandPackage.cs -> ExTestPackage.cs

ドッキングウィンドウの追加は Custom Command Window?を使う

VS2017でしか使えないパッケージが含まれていてVS2015で使った瞬間クラッシュした


VS2015で作るとVS2017にはインストールできない

関数の型を調べるためにリフレクションを使おうとすると、VSがdllを開きっぱなしにしてしまい、
ビルド時?にエラー(Warning?)が出るので拡張を作る上では問題がある


ここまで

感想

Visual Studio を使って Visual Studio拡張機能を作成する、というのはまだツラいところがあるのだなぁ
(最新版の Visual Studio が出るたびにビルドし直す必要があったり、プロジェクトのテンプレートにゴミが入っていてエラーになったり)
というのが正直な感想ではあります(´・ω・`)

ただ、ここも今後改善されてはくるのだろうと思いますし、
やっぱり自分の使い方に合わせて機能を追加していけるのは良いと思うので、自分としても挑戦はしてみたいなぁ、とも思いました。

また、紹介されていた拡張機能も試してみたいところ。

.NET Standard入門

最初のセッションでも紹介された、 .NET Standard についてガッツリ紹介されました。

www.slideshare.net

ここからメモ


.NET Standard は、 .NET Framework 、 .NET Core 、 Xamarin のどれかだけにべったり依存したものではない。

一般的には可能な限り最小バージョンの .NET Standardを使うのが推奨される。

最適なバージョンは Visual Studio 側で静的に見てくれるわけではないため、
バージョン指定 -> コンパイル -> エラーが出たらバージョンを上げる
という作業を繰り返す必要がある。

実際にはライブラリを作るときに.NET standardが利用される。

  • Shared library - Assemblyを共有しない。共有プロジェクト(ソースコードレベルの共有)
  • PCL - 今はあまり使われていない
  • .NET Standard - Assemblyを共有

今後は .NET Standard を使うことが推奨される?

PCL は .NET Standardの各バージョンと互換性がある。
足りないものはNugetでとってきて解決する。

Visual Studio 2017 Update4 からは .NET Standard2.0 のインストールをしなくても使える、らしい。

dnSpyでデコンパイル

(dnSpyについてはこの辺が参考になりそう?)

https://qiita.com/NetSeed/items/54fbf30cb21c77c05c41

dllでは型が定義されているのではなく、 TypeForwardedTo でアトリビュートで指定されているだけ

同じString型でも、 WindowsAndroid などターゲットに応じて全く別のクラスを参照している
(違いは.NET Coreが吸収する)

最終的には .NET Core の Library を参照するわけだが、そこまでの過程はプラットフォームごとに異なっている。

Nuget Package を参照したクラス?ライブラリを参照した Console App を実行するとエラーでクラッシュする ↓ 実行時に必要なライブラリもファイルを移動しないため

ValueTuple は .NET Framework4.7 から使用できる。 ただし、4.6の場合も .NET Standard で定義してそれを読み込むと.NET Framework からでも使用できる。

ただし、dllファイルを大量に引き連れてきてしまうので注意。


ここまで

感想

自分の実力的に理解しきれなかったところがたくさんあった、
というのが正直なところですが、公開された資料やお話の中にあったキーワードを元に、
中身を追いかけていこうと思います。

また、ググった感じでは Unity で .NET Standard のライブラリを作る、利用する、といった情報は少ないようですが、
こちらも試したいところ。

Introducing Fluent Design System あるいは Metro の先を紡ぐ手がかり

スキューモーフィズムから Metro (Modern UI)を経て、
Hololens などの Mixed Reality などにも対応する、
Fluent Design について紹介されました。

2017/10/22更新
スライドのリンクを追加しました

www.slideshare.net

ここからメモ


スキューモーフィズム -> Metro -> UWP(PCやスマホだけでなく、ラズパイやHololens)にも対応

Hololensの登場により、UIが画面の外に出てくるようになった

Fluent Design * Project Neon Fall Creates Updateで利用可能 * Light、Depth、Motion、Material、Scaleの5つの要素 * コンテンツが繋がっていくデザイン * 3D時代のWindowsのためのデザインシステム * フラットでもなく、スキューモーフィズムでもない、物質の本質を表現する

XamlでAcrylicBrush要素を使うことでアクリルブラシが使用可能に (アクリル板のように半透明になるイメージ)

Lightはマウスカーソルを光源?としてボタンなどにライトを当てることができる

MR Design Lab: UIサンプル

github.com

色遣いも決まりがある。

半透明とはいえ、Vista時代のものとは意味が異なっている


ここまで

感想

Fluent Design については、一番普段の仕事に近いのに全く知らなかったため、
早くキャッチアップせねば、という気持ちです(;´Д`)

最近(というほどでもないけど)登場したデザインとしては他に Material Design がありますが、
テイストなどは異なるものの、紙や光など自然界にあるものを表現する、
という部分に共通点があるのかな、などとぼんやり思いました。

LT

本編も濃ければLTも濃い。

あまり書き留めることはできませんでしたが、どれも聴きどころ満載な感じでしたw

- Manga-Yonda!!

www.slideshare.net

ここからメモ


XAML条件分岐 

今までは XAML の中で条件分岐を表現するのは難しかった

blog.tmyt.jp

現在は Conditional XAML を使うことで、条件分岐が使えるようになった。

が、制限はあり、C#でifを書くようには使えないっぽい

Xamarin

Xamarin NativeでもMVVMCrossなどを使うことでDataBindingが使える

Azure Machine LearningでCNNを使って二次元の顔判定

Azure Machine LearningではGUI機械学習ができる

学習に24時間以上かけられない、という制限がある

その他

www.instagram.com

なお懇親会にも参加させてもらいましたが、
持ち前のコミュ障を発揮してあまりお話することができずorz

ま、まぁこの辺は次回リベンジということで。

あとお話を聴いているだけでも楽しかった、ということは付け加えておきます。

おわりに

実は .NET 関連の勉強会は初めての参加でしたが、
参加されている方や雰囲気もどことなく違っていて新鮮でした。

.NET Standard や Azure など、気になる情報もたくさん得られたので、
時間はかかるかもですが一つずつ試してみようと思います。

スタッフの皆様、参加された皆様、会場やWifiなどを提供いただいたマイクロソフト様、ありがとうございました!

最後に...