SlideShare a Scribd company logo
.NET Core 5
から概観する、
.NETのOSSへの取り組み
2016.02.20 NAGOYA COMCAMP 2016 POWERED BY MVPS
KOUJI MATSUI (@KEKYO2)
自己紹介
けきょ (@kekyo2)
ロードバイク乗り
Microsoft MVP for Visual Studio and Development Technology
認定スクラムマスター・スクラムプロダクトオーナー
Center CLRオーガナイザー
先に告知だけ
第六回Center CLR勉強会やります (2016.03.19)
ILの話とかやります
名古屋市 東生涯学習センター
https://centerclr.doorkeeper.jp/events/38884
NL名古屋・NLとはなんだったのか (2016.04.16)
NLの本称は進捗ダメ
ヤマネット名古屋セミナールーム
http://connpass.com/event/25541/
.NET Coreから概観する.NETのOSSへの取り組み
アジェンダ
What is .NET Core? (.NET Coreって何?)
Disposable Infrastructure (破棄可能な環境)
Integrated Development Environment (統合開発環境)
まとめ
キーワード: .NET Core
大雑把には、.NET Framework 4の後継(.NET 5.0)
現在はRC版。リリース日近し
.NET Core 5と呼ばれていたけど →
→ 先日、「.NET Core 1.0」と名称が変わることが発表され…
過渡期特有の「名称の統一期」のため、
やや混乱気味
キーワード: .NET Core 5
キーワード: .NET Core
.NET Framework 4と.NET Coreの関係
…
こんなつまんねー解説
やめだやめだ!!!
フォーマルなセミナーにでも行ってくれ
では、見てもらおうか。
まぁ、
まずは形から入らないとな!!!
.NET Coreのマルチプラットフォーム
Windowsは当然として
Mac OS
Linux (Ubuntu)
現在のところ、amd64(64ビット)のみ
◦ この後、x86とarmの作業が予定されている
Ubuntuは14.04(正式版では解消の見込み)
デモ: .NET Core on Ubuntu
Ubuntu 14.04 でのインストール
◦ sudo sh -c 'echo "deb [arch=amd64] http://apt-
mo.trafficmanager.net/repos/dotnet/ trusty main" >
/etc/apt/sources.list.d/dotnetdev.list'
◦ sudo apt-key adv --keyserver apt-mo.trafficmanager.net --
recv-keys 417A0893
◦ sudo apt-get update
◦ sudo apt-get install dotnet=1.0.0.001425-1
http://dotnet.github.io/
getting-started/
Ubuntu
デモ: .NET Core on Ubuntu
dotnet コマンド: ビルドやパッケージ生成・復元を行う
◦ MacOSやLinuxには、Visual Studioがない。
◦ mcs(mono)のようなコンパイラだけあっても、最近の開発事情に
マッチしない。
◦ 特にパッケージシステムとの連携(従来ならNuGet.exeに相当)
mkdir testapp
cd testapp
dotnet new  サンプルプロジェクトの生成
dotnet restore  NuGetパッケージの復元
dotnet run  コンパイルと実行
デモ: .NET Core on Ubuntu
dotnet new コマンド
◦ フォルダとサンプルコードを作る。
◦ project.json  Visual Studioでのcsprojに相当する。
dotnet restore コマンド
◦ project.jsonに記述された各NuGetパッケージをダウンロードする。
◦ .NET Coreも含む!! “NETStandard.Library”: “1.0.0-rc2-23811”
dotnet run コマンド
◦ dotnet buildを含む。ビルドし、生成されたコードを実行する。
デモ: .NET Core on Ubuntu
ビルドされたコード:
◦ dotnetコマンドを使わなく
ても実行可能
ビルド成果物(従来同様)
“emitEntryPoint”: true
の場合にのみ生成される
デモ: .NET Core on Ubuntu
dotnet build --native (.NET Native)
ネイティブコード生成
(付随ライブラリがない)
ネイティブコードを実行
.NET CoreさえNuGetパッケージ化された
project.lock.json: 参照されたパッケージ群のリスト
大量のNuGetパッケージ群
(キャッシュは~.nugget/packagesにある)
◦ 依存性を小さく:
プラットフォーム毎に必要となるパッ
ケージを分けられるように。
OSSプロジェクトで相互干渉を少なく。
◦ .NET Coreのビルド・実行環境の最小化:
.NETの環境を小さくすることで、DevOps
をやりやすく。
アジェンダ
What is .NET Core? (.NET Coreって何?)
Disposable Infrastructure (破棄可能な環境)
Integrated Development Environment (統合開発環境)
まとめ
.NETのコードだけの話じゃない
.NET がマルチプラットフォームに対応した所で、その周りの環境
が問題
◦ OS: Windows, Linux, FreeBSD, etc… ??
◦ Web hosting: IIS, Apache, nginx… ??
◦ Tool chains: Windows console vs PowerShell vs Bash vs etc… ??
◦ Build environments: devenv vs MSBuild vs Jenkins vs Bash vs etc… ??
◦ Deployments: NuGet vs msi vs xcopy vs scp vs git-pull vs etc… ??
開発のスムーズな適用には、
様々な問題がある
キーワード: Docker
Dockerは軽量実行コンテナ。
VMみたいなものだけど、その違いとは
https://www.docker.com/
キーワード: Docker
従来の仮想マシン技術(Hyper-V・VirtualBox・VMWare)との違い
App App App Container
Image
VM
Image
GB order
Large image
[Processes]
App
Env
App
Env
App
Env
Docker Engine
Host OS (Linux/Windows…)
Physical Machine
App App App
App
Env
App
Env
App
Env
Guest
OS
Guest
OS
Guest
OS
Hyper visor
Host OS (Linux/WIndows…)
Physical Machine
(Large resources)
[Virtual Machines]
キーワード: DockerHub
Dockerの技術的な中身よりも、Dockerの環境の方が重要!!
Dockerには、「DockerHub」があります。
◦ Gitに対するGitHubのように、コミュニ
ティベースのコンテナ公開が出来るシ
ステム。
◦ 元コンテナを指定して、派生コンテナ
を簡単に作れる。
→ .NET Coreを含むイメージを派生して、
自分のコードを埋め込んだコンテナを
作れる!
https://hub.docker.com/explore/
デモ: .NET Core on Docker
UbuntuにDockerを入れる。
◦ curl -fsSL https://get.docker.com/ | sh
◦ sudo usermod -aG docker <your-user-name>
デモ: .NET Core on Docker
Dockerからイメージを取得してdotnetコマンドを使えるように
するまで。
Ubuntu
14.04.3
netcore-
sample
DockerHubにあるUbuntuイメージ
Ubuntuイメージを継承した
イメージを作る
dotnet new
dotnet restore
dotnet build --native
GitHub: kekyo/netcore-sample
デモ: .NET Core on Docker
Dockerfileの定義
コードのビルドとDockerイメージのビルド
アジェンダ
What is .NET Core? (.NET Coreって何?)
Disposable Infrastructure (破棄可能な環境)
Integrated Development Environment (統合開発環境)
まとめ
キーワード: Visual Studio Code
いくらMacやLinux上で.NET Coreが動いても、Visual Studioが
Windows上でしか動かないのでわ…
マルチプラットフォーム前提のVisual Studio Code
◦ MacやLinuxでも動作
◦ https://code.visualstudio.com/
デモ: Visual Studio Code
Visual Studio CodeがLinuxでも動く
タネ明かし
Atomベース (https://atom.io/)
残念ながら、デバッグはまだ出来ない。
◦ .NET Coreではなく、monoベースなら可。
Visual Studioとの連携はない。が…
◦ 本家に縛られない分、開発は急ピッチで進められている。
◦ そもそも、Visual Studioで出来ることをすべて網羅する気はない(よう
に見える)。
Another VSというポジションから、WebMatrixの
後継のように見える。OSSであることが違いか
機能の拡張
Atomベース・Extensionが容易に作れることなどから、LL言語方面からの
需要が多い (JavaScript / TypeScript / Python / PHP…)
アジェンダ
What is .NET Core? (.NET Coreって何?)
Disposable Infrastructure (破棄可能な環境)
Integrated Development Environment (統合開発環境)
まとめ
まとめ
「MacやLinuxで.NETのコードが動く」というだけでは、もはや価値
を見出せない。
.NET Core に向けて、「総合的」な環境の整備に動き出した。
◦ ビルド環境(dotnetコマンドによるビルド・パッケージシステム連携)
◦ NuGetパッケージ細分化による、パッケージレベルでのプラットフォーム管理
を可能にする
◦ 実行環境の構築を自動化可能 (Dockerでの高速デプロイ・DevOpsへの連携)
◦ Windows以外での開発環境への布石
概観 .NET Core
「すばやく開発可能」
「依存性の排除」
OSSコミュニティの動きはとても早いので、開発(Devs)や運用
(Ops)が、他の要因に引きずられると非常に困る。
高速開発・高速リリース・高速運用、そして低コストな持続性のあ
るサイクルを維持する事が重要。
Visual Studioの高機能だが重量級の環境とそれを取り巻く文化が、進
化を停滞させうる遠因の一つではないか? そのアンチテーゼとも言
える気がします。
まだまだ問題は山積み…
時間があまれば、更なるデモ
ご清聴ありがとうございました!
GitHub: netcore-sample
◦ https://github.com/kekyo/netcore-sample
スライドはブログに上げます
◦ http://www.kekyo.net/

More Related Content

What's hot (20)

PDF
Thread affinity and CPS
Kouji Matsui
 
PPTX
Net fringejp2016
Yusuke Fujiwara
 
PDF
continuatioN Linking
Kouji Matsui
 
PPTX
.NET vNext
信之 岩永
 
PDF
SignalRブートキャンプ
Kouji Matsui
 
PDF
Hello! intermediate language
Kouji Matsui
 
PDF
これからの「async/await」の話をしよう
Kouji Matsui
 
PDF
C#の強み、或いは何故PHPから乗り換えるのか
Yoshifumi Kawai
 
PDF
async/awaitダークサイド is 何
Kouji Matsui
 
PDF
Final LINQ extensions III
Kouji Matsui
 
PDF
Pythonで始めるWebアプリケーション開発
Takahiro Kubo
 
PDF
メタプログラミングでExcel仕様書よさらば
Kouji Matsui
 
PDF
The History of Reactive Extensions
Yoshifumi Kawai
 
PDF
Angular ユーザーなら押さえておきたい! TypeScript と Visual Studio Code の基礎と活用
Akira Inoue
 
PDF
.NET の今と未来 ~ デバイス&クラウド ネイティブを目指して
Akira Inoue
 
PDF
async/await不要論
bleis tift
 
PPTX
Modern .NET
信之 岩永
 
PPTX
C#で速度を極めるいろは
Core Concept Technologies
 
PDF
動的なILの生成と編集
terurou
 
PDF
The History of LINQ
Yoshifumi Kawai
 
Thread affinity and CPS
Kouji Matsui
 
Net fringejp2016
Yusuke Fujiwara
 
continuatioN Linking
Kouji Matsui
 
.NET vNext
信之 岩永
 
SignalRブートキャンプ
Kouji Matsui
 
Hello! intermediate language
Kouji Matsui
 
これからの「async/await」の話をしよう
Kouji Matsui
 
C#の強み、或いは何故PHPから乗り換えるのか
Yoshifumi Kawai
 
async/awaitダークサイド is 何
Kouji Matsui
 
Final LINQ extensions III
Kouji Matsui
 
Pythonで始めるWebアプリケーション開発
Takahiro Kubo
 
メタプログラミングでExcel仕様書よさらば
Kouji Matsui
 
The History of Reactive Extensions
Yoshifumi Kawai
 
Angular ユーザーなら押さえておきたい! TypeScript と Visual Studio Code の基礎と活用
Akira Inoue
 
.NET の今と未来 ~ デバイス&クラウド ネイティブを目指して
Akira Inoue
 
async/await不要論
bleis tift
 
Modern .NET
信之 岩永
 
C#で速度を極めるいろは
Core Concept Technologies
 
動的なILの生成と編集
terurou
 
The History of LINQ
Yoshifumi Kawai
 

Viewers also liked (6)

PDF
抽象太郎ものがたり そして伝説へ
Kouji Matsui
 
PDF
不健康なIt戦士を健康的にするアレの話
Kouji Matsui
 
PDF
ポイントをおさえて移行しよう!Git乗り換え超初級
Kouji Matsui
 
PDF
SourceTreeで始めよう! Gitへの乗り換え指南
Kouji Matsui
 
PDF
プロ生ちゃんをひろっちゃう!
Kouji Matsui
 
PDF
Final LINQ Extensions II
Kouji Matsui
 
抽象太郎ものがたり そして伝説へ
Kouji Matsui
 
不健康なIt戦士を健康的にするアレの話
Kouji Matsui
 
ポイントをおさえて移行しよう!Git乗り換え超初級
Kouji Matsui
 
SourceTreeで始めよう! Gitへの乗り換え指南
Kouji Matsui
 
プロ生ちゃんをひろっちゃう!
Kouji Matsui
 
Final LINQ Extensions II
Kouji Matsui
 
Ad

Similar to .NET Coreから概観する.NETのOSSへの取り組み (20)

PDF
ASP.NET vNext / Visual Studio "14" に見る .NET の未来像
Akira Inoue
 
PDF
.NET Core と Container, そして Azure Web Apps on Linux による Web アプリ開発最前線
Akira Inoue
 
PDF
.NET Coreとツール類の今
Yuki Igarashi
 
PDF
.NET の過去、現在、そして未来
Akira Inoue
 
PDF
[TL04] .NET 15 周年の今こそ考えるクラウドネイティブ アプリケーションと .NET の活用
de:code 2017
 
PDF
ASP.NET 新時代に向けて ~ ASP.NET 5 / Visual Studio 2015 基礎解説
Akira Inoue
 
PDF
Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~
Akira Inoue
 
PPTX
実践 Web App for Containers! ~コンテナ開発の基礎からDevOps環境の構築まで~
Saki Homma
 
PDF
OWIN - .NETにおけるPSGI -
将 高野
 
PDF
Essentials of container
Toru Makabe
 
PDF
Linux & Mac OS でも動く! ~ クロスプラットフォーム対応に見る ASP.NET Core 5 の可能性 ~
Akira Inoue
 
PDF
Netラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考える
david9142
 
PPTX
ASP.NET vNextの全貌
A AOKI
 
PDF
くまあず Nchikita 140628-2
wintechq
 
PDF
Visual Studio 2019 GA ! ~ 最新情報 & これからの開発スタイル
Akira Inoue
 
PPTX
.NETクロスプラットフォーム
Yasushi Kato
 
PDF
The Twelve-Factor (A|M)pp with C#
Yuta Matsumura
 
PPTX
~初心者がこれから Web アプリの開発をするために~
Oda Shinsuke
 
PPTX
はじめてのAzure Web App for Containers! -コンテナの基礎から DevOps 環境の構築まで-
Saki Homma
 
PDF
[Japan Tech summit 2017] APP 001
Microsoft Tech Summit 2017
 
ASP.NET vNext / Visual Studio "14" に見る .NET の未来像
Akira Inoue
 
.NET Core と Container, そして Azure Web Apps on Linux による Web アプリ開発最前線
Akira Inoue
 
.NET Coreとツール類の今
Yuki Igarashi
 
.NET の過去、現在、そして未来
Akira Inoue
 
[TL04] .NET 15 周年の今こそ考えるクラウドネイティブ アプリケーションと .NET の活用
de:code 2017
 
ASP.NET 新時代に向けて ~ ASP.NET 5 / Visual Studio 2015 基礎解説
Akira Inoue
 
Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~
Akira Inoue
 
実践 Web App for Containers! ~コンテナ開発の基礎からDevOps環境の構築まで~
Saki Homma
 
OWIN - .NETにおけるPSGI -
将 高野
 
Essentials of container
Toru Makabe
 
Linux & Mac OS でも動く! ~ クロスプラットフォーム対応に見る ASP.NET Core 5 の可能性 ~
Akira Inoue
 
Netラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考える
david9142
 
ASP.NET vNextの全貌
A AOKI
 
くまあず Nchikita 140628-2
wintechq
 
Visual Studio 2019 GA ! ~ 最新情報 & これからの開発スタイル
Akira Inoue
 
.NETクロスプラットフォーム
Yasushi Kato
 
The Twelve-Factor (A|M)pp with C#
Yuta Matsumura
 
~初心者がこれから Web アプリの開発をするために~
Oda Shinsuke
 
はじめてのAzure Web App for Containers! -コンテナの基礎から DevOps 環境の構築まで-
Saki Homma
 
[Japan Tech summit 2017] APP 001
Microsoft Tech Summit 2017
 
Ad

More from Kouji Matsui (13)

PDF
Making archive IL2C #6-55 dotnet600 2018
Kouji Matsui
 
PDF
Matrix signal controller and BrainPad overview
Kouji Matsui
 
PDF
Fun with BrainPad
Kouji Matsui
 
PDF
What's Functional?
Kouji Matsui
 
PDF
Pitfall for WioLTE
Kouji Matsui
 
PDF
How to make the calculator
Kouji Matsui
 
PDF
Write common, run anywhere
Kouji Matsui
 
PDF
Locality of Reference
Kouji Matsui
 
PDF
You will be assimilated. Resistance is futile.
Kouji Matsui
 
PDF
How to meets Async and Task
Kouji Matsui
 
PDF
Beachhead implements new opcode on CLR JIT
Kouji Matsui
 
PDF
Async DeepDive basics
Kouji Matsui
 
PDF
Final LINQ Extensions
Kouji Matsui
 
Making archive IL2C #6-55 dotnet600 2018
Kouji Matsui
 
Matrix signal controller and BrainPad overview
Kouji Matsui
 
Fun with BrainPad
Kouji Matsui
 
What's Functional?
Kouji Matsui
 
Pitfall for WioLTE
Kouji Matsui
 
How to make the calculator
Kouji Matsui
 
Write common, run anywhere
Kouji Matsui
 
Locality of Reference
Kouji Matsui
 
You will be assimilated. Resistance is futile.
Kouji Matsui
 
How to meets Async and Task
Kouji Matsui
 
Beachhead implements new opcode on CLR JIT
Kouji Matsui
 
Async DeepDive basics
Kouji Matsui
 
Final LINQ Extensions
Kouji Matsui
 

.NET Coreから概観する.NETのOSSへの取り組み