LoginSignup
5
2

More than 5 years have passed since last update.

de:code 2018 [AD14] .NET Everywhere ~ .NET が創る Mobile & Cloud Native プラットフォームの未来

Last updated at Posted at 2018-06-01

de:code 2018に参加してきましたのでその結果をまとめています。

内容の間違い、誤字脱字等はご了承ください。正確なところは、本家のサイトを参照いただければと思います。

タイトル等

タイトル

de:code 2018 [AD14] .NET Everywhere ~ .NET が創る Mobile & Cloud Native プラットフォームの未来

演者

井上 章さん 日本マイクロソフト株式会社

日時

2018/05/22 17:10-18:00

概要

現状の.NETの状況がどのようになっているのか、どのようにどの技術を使用していけばよいのか、についてのセッションとなる。

実例

画像

モバイルで動作しているアプリケーション。予約、サービスが動いており、ホテル、従業員、スタッフが使用している。

使用するデバイスは、Android、iOS、PCまで様々となる。

この中で、アプリ開発のチャレンジが出てくる。

  • 画面サイズ、レイアウトが多様な中でどのように作っていくか。
  • 様々なデバイス(スマートスピーカー、ホロレンズ)でアプリケーションを動かしてほしい
  • AIを使用してほしい!
    • どうしろと?

Microsoft .NETの歴史を振り返ってみよう

去年で15周年となる。2002年のコマーシャルでは、ワインの流通業者と売る側で.NETが動いていてダイレクトにつながることができる、というCMとなっていた。

.NETの基本構成

基本構成

基本としてWindows上でしか使うことができないというものだったが、クラウドを使用する上でもっと変わらなければならない。

画像

2012年にScott Hanselmanが「ASP.NETがオープンソースになり、もっと楽しいものになる(意訳)」と言っているが、これが現実のものとなってきている。

画像

現在の.NET Coreに生かされているのが2014年のOne ASP.NET構想(KATANA Project)となる。

現在(2018)年の状況

現在

.NET Framework

Windows上で動作する。

.NET Core

Windows、Mac、Linux上で動作する。ただし、GUI(UWP)については、Windows上でしか動かない。

Xamarin

Windows、iOS、Android、Mac上で動作する。

.NET Standard

.NET Standardは、各フレームワーク間の共通ライブラリの実装に使用する。

.NET 開発者の増加

画像

アクティブな開発者が、昨年(2017年)に100万人以上増加している。ここで大事なのは、アクティブということである。最近の開発ツールと同様に、Visual Studioはテレメトリ情報を取得しているので、インストール数ではなく、実際にアクティブな開発者ということである。

オープンソース

またGitHubへの登録状況を見ても増加状況にあり、すごく盛り上がっている状況である。

.NET の各言語の対応状況

VB.NET開発者としては、.NET Coreも出てきた状況で、VB.NETはどういう状況にあるのか、ということが気になるところだと思う。

下に示すように.NET Coreでも各言語(C#, VB.NET, F#)の対応は進んできており、C#しかサポートされなくなる、ということはないので安心してほしい。

対応状況

Xamarin

画面デザインの共有

画面デザインを共有したいなら、Xamarin Native Formsで画面を共有する。画面を共有するなら、最近主に使われている手法である。

Xamarinのコンパイルとパフォーマンス

コンパイル

iOSは事前コンパイル、Androidは実行時コンパイルとなる。どちらの場合も、Nativeで動作する形となるため、高いパフォーマンスを発揮できる

Build 2018で発表されたアップデート

アップデート

  • Xamarin.FomrsがアップデートでCSSに対応する
  • 共通のライブラリとして、Xamarin.Essencialsが利用できる
  • Android Emulator for Hyper-V 対応が出てきている。速度が早いのが特徴

Xamarin.Forms on the Web

Xamarin on the Web

XamarinのコードをWeb Assemblyとしてコンパイルすることで、ブラウザ上で動作させることができる

.NET Frameworkの統一化

統一化

.NET Framework、.NET Core、Xamarinで、コードライブラリの共有化を行いたい、という要望、方向性がある

.NET Standard

仕様

考え方としては、HTML5と同じ。すでに仕様はできており、できている仕様に対して、各Frameworkが実装していくという考え方となる。

統一仕様詳細

基本的に、各Frameworkが実装するというのは、既に述べられた通りだが、Type Fowarding(型の転送)については、共通DLLを経由して行うことになる。

デモ

Xamarin.Formsと.NET Framework、同じプログラムをそれぞれで作成し、共有コードは.NET Standardで共有しているというデモが行われた。

ソースは、GitHubのリポジトリで公開するかも、とのこと。

また、iOSの実機で、顔認証で特定の人しか使えないアプリケーション、画像認識して、ラーメンを判定するアプリケーションのデモが行われた。

.NET Core 2.1(RC)

アナウンス

RC版だが、既に製品で使える状態。パフォーマンスは、SDKでもランタイムも改善している。ランタイムだけではなく、SDKも改善しているということで、開発時の効率改善も見込まれる。

実装予定の機能一覧

機能一覧

ラズパイもサポートしている。実装としては、ラズパイ上のDockerコンテナで動くので、ラズパイ上で動作する.NET Coreベースのアプリケーションを作ることができる

デモ

Signal Rを使うと、リアルタイムのWebサービスを作ることができる

Blazor

Blazor

Browser + Razor = Blazor

すべてのブラウザーで動作させることができ、Reactiveなどを知らなくても、.NETでクライアント側のWeb UIをビルドすることができる。

Web Assemblyとなるため、ブラウザにプラグインなどは不要である。

クライアントとC#でのコードの共有、C#の強く型付けされた開発、.NETの安定性と一貫性を受けた開発が実現できる。

デモ

ポイントとして、WebアプリケーションにDLLが配布されていることをChromeの開発者ツールで確認した。

読み込み速度が重くなるのでは?という疑問については、最近はJSも大きくなってきていることを考えると、誤差範囲になるのでは、と想定しているとのこと。

実行はクライアントのOSのNativeで動作するので速度的にも有利になる。実装としては、コンパイルされてブラウザー側で動いている形になる。

.NET Core 3.0

今年度後半にはPreview版が出てくる。

Desktop Packs

概要図

Desktop Packsが実装される。

Desktop Packsを追加することで、Windows OSの.NET Core上でWPFのアプリケーションが動くことになる。

デスクトップアプリケーションで、なぜ.NET Coreが必要となるのか

選択肢

  • side by sideで実行されるため、環境依存が少ない。
  • .NET Framework ライブラリのグローバル参照 or ローカル参照を選択することができる。これはコンパイル時に選択することになる。
  • 最新のAPIは、.NET Coreに先に実装されるため、.NET Coreを使用することで、最新機能を利用しやすくなる

新規アプリケーションでの選択肢

前項の利点を考えると、デスクトップアプリケーションの新しいプロジェクトでの選択肢として、.NET Coreを考慮に入れたほうが良い。

.Net And Machine Learning

.NETで機械学習を行うには、今回開発されていくことが発表となったML.NETを使用することになる。

Build your own (custom) ML Models

独自の学習モデルを作成することができる。そして、分析してその結果を出す。.NET のアプリケーションの中で、機械学習を使用できるようになる。

ML.NET 0.1 (Preview)

プレビュー

.NET Core 3.0のころには、1.0に近いものが出てくると考えられている。

.NETのモダナイズ

.NETアプリケーションがどのようにモダナイズ(近代化)されてきたか?

モダナイズ

まずはRehost

クラウドや仮想マシンが、オンプレミス以外の選択肢となった。しかし、これではまだまだモダナイズとはいかない。

コンテナへの対応

コンテナ

Windows Containerとしてクラウドで動かすこともできるようになった。
Minimal Code Changeであり、アーキテクチャの変更も少ないということが大事である。

クラウドネイティブ

落ちないアプリケーションを実現するために、必要になる。

Dockerなので、.NETCoreにしないといけないのか?そんなことはない。.NET Frameworkのままでよい。

共通

.NET Coreにしておけば、共通のDocker Containerを共通のDeploy単位とすることができる

.NET Everywhere

Everywhere

すべてのアプリのための統一プラットフォームとして、.NETを利用することができる。

Xamarin、.NET Coreなど、開発をする際に、複数を選択して開発することができる。

これから、さらに.NETは盛り上がっていく。

5
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
2