SlideShare a Scribd company logo
.NET Core 1.0 と
マルチプラットフォーム
Deep Dive
荒井 省三
アジェンダ
• project.json
• Microsoft.NETCoreApp
• NETStandard Libaray
• .NET Core と BCL
• 新しい PCL とは
.NET Core とは
.NET Framework .NET Core XAMARIN
アプリ
モデル
ベース
ライブラリ
.NET Core とは
.NET Framework .NET Core XAMARIN
アプリ
モデル
ベース
ライブラリ
コンソール アプリ
Project.json
{
"version": "1.0.0-*",
"buildOptions": {
"emitEntryPoint": true
},
"dependencies": {
"Microsoft.NETCore.App": {
"type": "platform",
"version": "1.0.0"
}
},
"frameworks": {
"netcoreapp1.0": {
"imports": "dnxcore50"
}
}
}
Project.json
• platform
• Microsoft.NETCore.App
• frameworks
• netcoreapp1.0
"imports": "dnxcore50"
Microsoft.NETCore.App
• .NET Core の依存関係のみを定義したメタ データ パッケージ
"Libuv"
"Microsoft.CodeAnalysis.CSharp " exclude="Compile"
"Microsoft.CodeAnalysis.VisualBasic " exclude="Compile"
"Microsoft.CSharp" version="4.0.1"
"Microsoft.NETCore.DotNetHostPolicy" version="1.0.1"
"Microsoft.NETCore.Runtime.CoreCLR" version="1.0.2"
"Microsoft.VisualBasic" version="10.0.1"
"NETStandard.Library" version="1.6.0"
"System.Buffers" version="4.0.0"
"System.Collections.Immutable" version="1.2.0"
"System.ComponentModel" version="4.0.1"
"System.ComponentModel.Annotations" version="4.1.0"
"System.Diagnostics.DiagnosticSource" version="4.0.0"
"System.Diagnostics.Process" version="4.1.0"
"System.Dynamic.Runtime" version="4.0.11"
"System.Globalization.Extensions" version="4.0.1"
"System.IO.FileSystem.Watcher" version="4.0.0"
"System.IO.MemoryMappedFiles" version="4.0.0"
"System.IO.UnmanagedMemoryStream" version="4.0.1"
"System.Linq.Expressions" version="4.1.0"
"System.Linq.Parallel" version="4.0.1"
"System.Linq.Queryable" version="4.0.1"
"System.Net.NameResolution" version="4.0.0"
"System.Net.Requests" version="4.0.11"
"System.Net.Security" version="4.0.0"
"System.Net.WebHeaderCollection" version="4.0.1"
"System.Numerics.Vectors" version="4.1.1"
"System.Reflection.DispatchProxy" version="4.0.1"
"System.Reflection.Metadata" version="1.3.0"
"System.Reflection.TypeExtensions" version="4.1.0"
"System.Resources.Reader" version="4.0.0"
"System.Runtime.Loader" version="4.0.0 " exclude="Compile"
"System.Security.Cryptography.Algorithms" version="4.2.0"
"System.Security.Cryptography.Encoding" version="4.0.0"
"System.Security.Cryptography.Primitives" version="4.0.0"
"System.Security.Cryptography.X509Certificates" version="4.1.0"
"System.Threading.Tasks.Dataflow" version="4.6.0"
"System.Threading.Tasks.Extensions" version="4.0.0"
"System.Threading.Tasks.Parallel" version="4.0.1"
"System.Threading.Thread" version="4.0.0"
"System.Threading.ThreadPool" version="4.0.10"
Microsoft.NETCore.Runtime.CoreCLR
• 依存関係のみを定義したメタ データ パッケージ
"Microsoft.NETCore.Jit" version="1.0.2"
"Microsoft.NETCore.Windows.ApiSets" version="1.0.1"
Microsoft.NETCore.Jit
• プラットフォームごとのランタイム パッケージへの定義のみ
runtime.json (コンパイル ターゲットによって切り替える)
{
"runtimes": {
"win7-x64": {
"Microsoft.NETCore.Jit": {
"runtime.win7-x64.Microsoft.NETCore.Jit": "1.0.2"
}
},
"win7-x86": {
"Microsoft.NETCore.Jit": {
"runtime.win7-x86.Microsoft.NETCore.Jit": "1.0.2"
}
},
"debian.8-x64": {
"Microsoft.NETCore.Jit": {
"runtime.debian.8-x64.Microsoft.NETCore.Jit": "1.0.2"
}
},
Microsoft.NETCore.Windows.ApiSets
• プラットフォームごとのランタイム パッケージへの定義のみ
runtime.json (コンパイル ターゲットによって切り替える)
{
"runtimes": {
"win10": {
"Microsoft.NETCore.Windows.ApiSets": {}
},
"win7-x64": {
"Microsoft.NETCore.Windows.ApiSets": {
"runtime.win7-x64.Microsoft.NETCore.Windows.ApiSets": "1.0.1"
}
},
"win7-x86": {
"Microsoft.NETCore.Windows.ApiSets": {
"runtime.win7-x86.Microsoft.NETCore.Windows.ApiSets": "1.0.1"
}
},
NETStandard.Library 1/3
• .NET Core の BCL に相当するメタ データ パッケージ
• この場合は、dnxcore50 なので Universal Windows Platform となり、NET Standard 1.3
"Microsoft.NETCore.Platforms" version="1.0.1" ランタイム ターゲットによる切り替え情報
"Microsoft.Win32.Primitives" version="4.0.1"
"System.AppContext" version="4.1.0"
"System.Collections" version="4.0.11"
"System.Collections.Concurrent" version="4.0.12"
"System.Console" version="4.0.0"
"System.Diagnostics.Debug" version="4.0.11"
"System.Diagnostics.Tools" version="4.0.1"
"System.Diagnostics.Tracing" version="4.1.0"
"System.Globalization" version="4.0.11"
"System.Globalization.Calendars" version="4.0.1"
"System.IO" version="4.1.0"
"System.IO.Compression" version="4.1.0"
"System.IO.Compression.ZipFile" version="4.0.1"
NETStandard.Library 2/3
"System.IO.FileSystem" version="4.0.1"
"System.IO.FileSystem.Primitives" version="4.0.1"
"System.Linq" version="4.1.0"
"System.Linq.Expressions" version="4.1.0"
"System.Net.Http" version="4.1.0"
"System.Net.Primitives" version="4.0.11"
"System.Net.Sockets" version="4.1.0"
"System.ObjectModel" version="4.0.12"
"System.Reflection" version="4.1.0"
"System.Reflection.Extensions" version="4.0.1"
"System.Reflection.Primitives" version="4.0.1"
"System.Resources.ResourceManager" version="4.0.1"
"System.Runtime" version="4.1.0"
"System.Runtime.Extensions" version="4.1.0"
"System.Runtime.Handles" version="4.0.1"
"System.Runtime.InteropServices" version="4.1.0"
"System.Runtime.InteropServices.RuntimeInformation" version="4.0.0"
"System.Runtime.Numerics" version="4.0.1"
NETStandard.Library 3/3
"System.Security.Cryptography.Algorithms" version="4.2.0"
"System.Security.Cryptography.Encoding" version="4.0.0"
"System.Security.Cryptography.Primitives" version="4.0.0"
"System.Security.Cryptography.X509Certificates" version="4.1.0"
"System.Text.Encoding" version="4.0.11"
"System.Text.Encoding.Extensions" version="4.0.11"
"System.Text.RegularExpressions" version="4.1.0"
"System.Threading" version="4.0.11"
"System.Threading.Tasks" version="4.0.11"
"System.Threading.Timer" version="4.0.1"
"System.Xml.ReaderWriter" version="4.0.11"
"System.Xml.XDocument" version="4.0.11"
Microsoft.NETCore.Runtime.CoreCLR
• プラットフォームごとのランタイム パッケージへの定義のみ
runtime.json (コンパイル ターゲットによって切り替える)
{
"runtimes": {
"win8-arm": {
"Microsoft.NETCore.Runtime.CoreCLR": {
"runtime.win8-arm.Microsoft.NETCore.Runtime.CoreCLR": "1.0.2-rc3-24212-01"
}
},
"win7-x64": {
"Microsoft.NETCore.Runtime.CoreCLR": {
"runtime.win7-x64.Microsoft.NETCore.Runtime.CoreCLR": "1.0.2"
}
},
"win7-x86": {
"Microsoft.NETCore.Runtime.CoreCLR": {
"runtime.win7-x86.Microsoft.NETCore.Runtime.CoreCLR": "1.0.2"
}
},
.NET Core と BCL の関係
• さようなら mscorlib.dll
• ようこそ System.Runtime.dll
• BCL 全体を管理するメタ データ パッケージ
.NET Standard Library
• 依存関係の管理
• ターゲット プラットフォームの管理
.NET Standard Library とは何か
• 次世代の PCL (Portable Class Library)
• .NET Core ランタイム上で動作する BCL を実現させるもの
メタデータ パッケージ
• PCL との類似点
• バイナリ コードを共有できる API 定義
• PCL との相違点
• PCL がプラットフォーム間の共通部分に焦点を当てているのに対して、
API セットに焦点を当てている
• バージョン管理がシンプルなのに対して、PCL は複雑 (番号管理)
• プラットフォームに依存しない目的に対して、PCL プロファイルは
Microsoft プラットフォームを目的にしている
PCL プロファイル 151
.NET framework
4.5.1
Windows 8.1
Windows
Phone 8.1
.NET Standard Library
プラットフォーム 別名
.NET Standard netstandard 1.0 1.1 1.2 1.3 1.4 1.5 1.6
.NET Core netcoreapp → → → → → → 1.0
.NET Framework net → 4.5 4.5.1 4.6 4.6.1 4.6.2 4.6.3
Mono/Xamarin Platforms → → → → → → *
Universal Windows Platform uap → → → → 10.0
Windows win → 8.0 8.1
Windows Phone wpa → → 8.1
Windows Phone Silverlight wp 8.0 →
Target Framework バージョン
Framework 最新
バージョン
Target
Framework
Moniker(TFM)
Compact Target
Framework
Moniker(TFM)
.NET
Standard
バージョン
メタ データ パッケージ
.NET Standard 1.6 .NETStandard,
Version=1.6
netstandard1.6 N/A NETStandardLibrary
.NET Core
Application
1.0 .NETCoreApp,
Version=1.0
netcoreapp1.0 1.5 Microsoft.NETCore.App
.NET Framework 4.6.3 .NETFramework,
Version=4.6.3
net463 1.4 N/A
PCL との互換性
• .NET Standard Library 1.0、1.1、1.2 は PCL プロファイルと互換がある
• Microsoft.NETCore.Portable.Compatobility
名前 .NET Portable Subset
Profile 7 .NET Framework 4.5, Windows 8 1.1
Profile 3.1 Windows 8.1, Windows Phone Silverlight 8.1 1.0
Profile 3.2 Windows 8.1, Windows Phone 8.1 1.2
Profile 44 .NET Framework 4.5.1, Windows 8.1 1.2
Profile 49 .NET Framework 4.5, Windows Phone Silverlight 8 1.0
Profile 78 .NET Framework 4.5, Windows 8, Windows Phone Silverlight 8 1.0
Profile 84 Windows Phone 8.1, Windows Phone Silverlight 8.1 1.0
Profile 111 .NET Framework 4.5, Windows 8, Windows Phone Silverlight 8.1 1.1
Profile 151 .NET Framework 4.5.1, Windows 8.1, Windows Phone 8.1 1.2
Profile 157 Windows 8.1, Windows Phone 8.1, Windows Phone Silverlight 8.1 1.0
Profile 259 .NET Framework 4.5, Windows 8, Windows Phone 8.1, Windows Phone Silverlight 8 1.0
.NET Standard Library とは
• マルチ プラットフォームへ対応するための新しい PCL
• 従来までの PCL とは異なるアプローチ
• nuget バージョン 3.x が必須のアプローチ
型を参照するとは何か
using System;
namespace ConsoleApplication
{
public class Program
{
public static void Main(string[] args)
{
Console.WriteLine("Hello World!");
var s = Console.ReadLine();
}
}
}
メタデータ 1/2
Token Version Flags PublicKey Name Culture HashValue
23000001 4.1.0.0 0 b03f5f7f11d50a3a System.Runtime
23000002 4.0.0.0 0 b03f5f7f11d50a3a System.Console
AssemblyRef(0x23)
Token ResolutionScope Name Namespace
01000003 23000001 DebuggableAttribute System.Diagnostics
…
01000008 23000001 Object System
01000009 23000002 Console System
TypeRef(0x01)
TypeRef メタデータは、ResolusionScope によってアセンブリを特定する
AssemblyRef メタデータは、アセンブリ識別子を記録している
メタデータ 2/2
Token ResolutionScope Name Namespace
01000003 23000001 DebuggableAttribute System.Diagnostics
…
01000008 23000001 Object System
01000009 23000002 Console System
TypeRef(0x01)
Token MemberRefParent Name Signature
0a000001 01000001 .ctor 0x20010108 (引数1、I4、void)
…
0a000007 01000009 WriteLine 0x0001010e (引数1、string、void)
0a000008 01000009 ReadLine 0x00000e (引数無し、string)
MemberRef(0x0a)
シグネチャは、メソッドの呼び出し規約、パラメータ、戻り値などを符号化した値
シグネチャによって、オーバーロードされたメソッドを特定できる
Bait and Switch
• 型を参照することをメタデータでは
• アセンブリ参照(アセンブリ識別子)
• 型(クラス)名
• メソッド名とメソッド シグネチャ
• パッケージ システムを使ったテクニック
• コンパイル時は、メタデータのみを解決
• 配布時にプラットフォーム固有のアセンブリに置き換える
• メタデータの特徴を活用したテクニック
• AssemblyRef, TypeRef, MemberRef
まとめ
• .NET Core は パッケージングによってマルチ プラットフォー
ムへ対応
• nuget 3.x がパッケージ 管理
• .NET Standard Library
• 依存関係を管理するメタ データ パッケージ
• パッケージ
• コンパイル時に参照する PCL
• 配布時に使用するプラットフォーム依存 PCL
Appendix
メソッド シグネチャ
呼び出し規約の論理和
0x20 HASTHIS, 0x00 DEFAULT, 0x10 GENERIC, 0x05 VARARG,
0x40 EXPLICITHIS
ジェネリックのパラメータ数 (int32 符号化数字、2-4バイト)
ジェネリックでなければ省略される
パラメータ数 (int32 符号化数字、2-4バイト)
戻り値の型
0x01 void, 0x0e string, 0x02 bool, 0x08 i4
パラメータの型 (パラメータの数だけ繰り返す)
参考資料
• ISO/IEC 23271
Common Language Infrastructure (CLI)
• X 3016 : 2009 ISO/IEC 23271 : 2006
共通言語基盤 (CLI)

More Related Content

What's hot

.NET Core 5 ~ Windows, Linux, OS X そして Docker まで ~
.NET Core 5 ~ Windows, Linux, OS X そして Docker まで ~.NET Core 5 ~ Windows, Linux, OS X そして Docker まで ~
.NET Core 5 ~ Windows, Linux, OS X そして Docker まで ~
Akira Inoue
 
C# 3.0 以降
C# 3.0 以降C# 3.0 以降
C# 3.0 以降
Fujio Kojima
 
Firefoxの開発プロセス
Firefoxの開発プロセスFirefoxの開発プロセス
Firefoxの開発プロセスMakoto Kato
 
OpenJDK コミュニティに参加してみよう #jjug
OpenJDK コミュニティに参加してみよう #jjugOpenJDK コミュニティに参加してみよう #jjug
OpenJDK コミュニティに参加してみよう #jjug
Yuji Kubota
 
【BS4】時は来たれり。今こそ .NET 6 へ移行する時。
【BS4】時は来たれり。今こそ .NET 6 へ移行する時。 【BS4】時は来たれり。今こそ .NET 6 へ移行する時。
【BS4】時は来たれり。今こそ .NET 6 へ移行する時。
日本マイクロソフト株式会社
 
.NET Compiler Platform
.NET Compiler Platform.NET Compiler Platform
.NET Compiler Platform
信之 岩永
 
Open Liberty: オープンソースになったWebSphere Liberty
Open Liberty: オープンソースになったWebSphere LibertyOpen Liberty: オープンソースになったWebSphere Liberty
Open Liberty: オープンソースになったWebSphere Liberty
Takakiyo Tanaka
 
(ゲームじゃない方の)switchで遊びたい話
(ゲームじゃない方の)switchで遊びたい話(ゲームじゃない方の)switchで遊びたい話
(ゲームじゃない方の)switchで遊びたい話
Masanori Masui
 
OpenShift from Easy way to Hard ? Way
OpenShift from Easy way to Hard ? WayOpenShift from Easy way to Hard ? Way
OpenShift from Easy way to Hard ? Way
ロフト くん
 
DEV-002_.NET Core/ASP.NET Core が実現するクロスプラットフォーム .NET の今と未来
DEV-002_.NET Core/ASP.NET Core が実現するクロスプラットフォーム .NET の今と未来DEV-002_.NET Core/ASP.NET Core が実現するクロスプラットフォーム .NET の今と未来
DEV-002_.NET Core/ASP.NET Core が実現するクロスプラットフォーム .NET の今と未来
decode2016
 
C# 8.0 非同期ストリーム
C# 8.0 非同期ストリームC# 8.0 非同期ストリーム
C# 8.0 非同期ストリーム
信之 岩永
 
jjugccc2018 app review postmortem
jjugccc2018 app review postmortemjjugccc2018 app review postmortem
jjugccc2018 app review postmortem
tamtam180
 
Recap: PowerShell Core
Recap: PowerShell CoreRecap: PowerShell Core
Recap: PowerShell Core
Kazuki Takai
 
Windows PowerShell によるWindows Server 管理の自動化 v4.0 2014.03.13 更新版
Windows PowerShell によるWindows Server 管理の自動化 v4.0 2014.03.13 更新版Windows PowerShell によるWindows Server 管理の自動化 v4.0 2014.03.13 更新版
Windows PowerShell によるWindows Server 管理の自動化 v4.0 2014.03.13 更新版
junichi anno
 
Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2
Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2
Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2
tamtam180
 
phpspecで始めるBDD
phpspecで始めるBDDphpspecで始めるBDD
phpspecで始めるBDD
Yuuki Takezawa
 
はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入
Yu Nobuoka
 
Mozillaのビルドインフラ
MozillaのビルドインフラMozillaのビルドインフラ
Mozillaのビルドインフラ
Makoto Kato
 
microPCFを使ってみよう
microPCFを使ってみようmicroPCFを使ってみよう
microPCFを使ってみよう
Hiroaki_UKAJI
 
PowerShell の基本操作とリモーティング&v3のご紹介 junichia
PowerShell の基本操作とリモーティング&v3のご紹介 junichiaPowerShell の基本操作とリモーティング&v3のご紹介 junichia
PowerShell の基本操作とリモーティング&v3のご紹介 junichiajunichi anno
 

What's hot (20)

.NET Core 5 ~ Windows, Linux, OS X そして Docker まで ~
.NET Core 5 ~ Windows, Linux, OS X そして Docker まで ~.NET Core 5 ~ Windows, Linux, OS X そして Docker まで ~
.NET Core 5 ~ Windows, Linux, OS X そして Docker まで ~
 
C# 3.0 以降
C# 3.0 以降C# 3.0 以降
C# 3.0 以降
 
Firefoxの開発プロセス
Firefoxの開発プロセスFirefoxの開発プロセス
Firefoxの開発プロセス
 
OpenJDK コミュニティに参加してみよう #jjug
OpenJDK コミュニティに参加してみよう #jjugOpenJDK コミュニティに参加してみよう #jjug
OpenJDK コミュニティに参加してみよう #jjug
 
【BS4】時は来たれり。今こそ .NET 6 へ移行する時。
【BS4】時は来たれり。今こそ .NET 6 へ移行する時。 【BS4】時は来たれり。今こそ .NET 6 へ移行する時。
【BS4】時は来たれり。今こそ .NET 6 へ移行する時。
 
.NET Compiler Platform
.NET Compiler Platform.NET Compiler Platform
.NET Compiler Platform
 
Open Liberty: オープンソースになったWebSphere Liberty
Open Liberty: オープンソースになったWebSphere LibertyOpen Liberty: オープンソースになったWebSphere Liberty
Open Liberty: オープンソースになったWebSphere Liberty
 
(ゲームじゃない方の)switchで遊びたい話
(ゲームじゃない方の)switchで遊びたい話(ゲームじゃない方の)switchで遊びたい話
(ゲームじゃない方の)switchで遊びたい話
 
OpenShift from Easy way to Hard ? Way
OpenShift from Easy way to Hard ? WayOpenShift from Easy way to Hard ? Way
OpenShift from Easy way to Hard ? Way
 
DEV-002_.NET Core/ASP.NET Core が実現するクロスプラットフォーム .NET の今と未来
DEV-002_.NET Core/ASP.NET Core が実現するクロスプラットフォーム .NET の今と未来DEV-002_.NET Core/ASP.NET Core が実現するクロスプラットフォーム .NET の今と未来
DEV-002_.NET Core/ASP.NET Core が実現するクロスプラットフォーム .NET の今と未来
 
C# 8.0 非同期ストリーム
C# 8.0 非同期ストリームC# 8.0 非同期ストリーム
C# 8.0 非同期ストリーム
 
jjugccc2018 app review postmortem
jjugccc2018 app review postmortemjjugccc2018 app review postmortem
jjugccc2018 app review postmortem
 
Recap: PowerShell Core
Recap: PowerShell CoreRecap: PowerShell Core
Recap: PowerShell Core
 
Windows PowerShell によるWindows Server 管理の自動化 v4.0 2014.03.13 更新版
Windows PowerShell によるWindows Server 管理の自動化 v4.0 2014.03.13 更新版Windows PowerShell によるWindows Server 管理の自動化 v4.0 2014.03.13 更新版
Windows PowerShell によるWindows Server 管理の自動化 v4.0 2014.03.13 更新版
 
Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2
Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2
Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2
 
phpspecで始めるBDD
phpspecで始めるBDDphpspecで始めるBDD
phpspecで始めるBDD
 
はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入
 
Mozillaのビルドインフラ
MozillaのビルドインフラMozillaのビルドインフラ
Mozillaのビルドインフラ
 
microPCFを使ってみよう
microPCFを使ってみようmicroPCFを使ってみよう
microPCFを使ってみよう
 
PowerShell の基本操作とリモーティング&v3のご紹介 junichia
PowerShell の基本操作とリモーティング&v3のご紹介 junichiaPowerShell の基本操作とリモーティング&v3のご紹介 junichia
PowerShell の基本操作とリモーティング&v3のご紹介 junichia
 

Viewers also liked

What, Why, How Create OSS Libraries - 過去に制作した30のライブラリから見るC#コーディングテクニックと個人OSSの...
What, Why, How Create OSS Libraries - 過去に制作した30のライブラリから見るC#コーディングテクニックと個人OSSの...What, Why, How Create OSS Libraries - 過去に制作した30のライブラリから見るC#コーディングテクニックと個人OSSの...
What, Why, How Create OSS Libraries - 過去に制作した30のライブラリから見るC#コーディングテクニックと個人OSSの...
Yoshifumi Kawai
 
Beachhead implements new opcode on CLR JIT
Beachhead implements new opcode on CLR JITBeachhead implements new opcode on CLR JIT
Beachhead implements new opcode on CLR JIT
Kouji Matsui
 
ZeroFormatterに見るC#で最速のシリアライザを作成する100億の方法
ZeroFormatterに見るC#で最速のシリアライザを作成する100億の方法ZeroFormatterに見るC#で最速のシリアライザを作成する100億の方法
ZeroFormatterに見るC#で最速のシリアライザを作成する100億の方法
Yoshifumi Kawai
 
RuntimeUnitTestToolkit for Unity
RuntimeUnitTestToolkit for UnityRuntimeUnitTestToolkit for Unity
RuntimeUnitTestToolkit for Unity
Yoshifumi Kawai
 
NextGen Server/Client Architecture - gRPC + Unity + C#
NextGen Server/Client Architecture - gRPC + Unity + C#NextGen Server/Client Architecture - gRPC + Unity + C#
NextGen Server/Client Architecture - gRPC + Unity + C#
Yoshifumi Kawai
 
マイクロサービスバックエンドAPIのためのRESTとgRPC
マイクロサービスバックエンドAPIのためのRESTとgRPCマイクロサービスバックエンドAPIのためのRESTとgRPC
マイクロサービスバックエンドAPIのためのRESTとgRPC
disc99_
 
Azure Storage Partition Internals
Azure Storage Partition  Internals Azure Storage Partition  Internals
Azure Storage Partition Internals
Takekazu Omi
 
.NET Coreとツール類の今
.NET Coreとツール類の今.NET Coreとツール類の今
.NET Coreとツール類の今
Yuki Igarashi
 
Photon Server Deep Dive - PhotonWireの実装から見つめるPhotonServerの基礎と応用
Photon Server Deep Dive - PhotonWireの実装から見つめるPhotonServerの基礎と応用Photon Server Deep Dive - PhotonWireの実装から見つめるPhotonServerの基礎と応用
Photon Server Deep Dive - PhotonWireの実装から見つめるPhotonServerの基礎と応用
Yoshifumi Kawai
 
Memcachedの仕組みと設定
Memcachedの仕組みと設定Memcachedの仕組みと設定
Memcachedの仕組みと設定Tatsuya Akashi
 
Functional go
Functional goFunctional go
Functional go
Geison Goes
 
ZeroFormatter/MagicOnion - Fastest C# Serializer/gRPC based C# RPC
ZeroFormatter/MagicOnion - Fastest C# Serializer/gRPC based C# RPCZeroFormatter/MagicOnion - Fastest C# Serializer/gRPC based C# RPC
ZeroFormatter/MagicOnion - Fastest C# Serializer/gRPC based C# RPC
Yoshifumi Kawai
 
MySQLの文字コード事情
MySQLの文字コード事情MySQLの文字コード事情
MySQLの文字コード事情
Masahiro Tomita
 
Goをカンストさせる話
Goをカンストさせる話Goをカンストさせる話
Goをカンストさせる話
Moriyoshi Koizumi
 
Goでヤフーの分散オブジェクトストレージを作った話 Go Conference 2017 Spring
Goでヤフーの分散オブジェクトストレージを作った話 Go Conference 2017 SpringGoでヤフーの分散オブジェクトストレージを作った話 Go Conference 2017 Spring
Goでヤフーの分散オブジェクトストレージを作った話 Go Conference 2017 Spring
Yahoo!デベロッパーネットワーク
 
HoloLens x Graphics 入門
HoloLens x Graphics 入門HoloLens x Graphics 入門
HoloLens x Graphics 入門
hecomi
 
Plen2で始めるロボット制御の基本
Plen2で始めるロボット制御の基本Plen2で始めるロボット制御の基本
Plen2で始めるロボット制御の基本
Masuda Tomoaki
 
Androidとの同時開発だけどモデルをC++で書けば問題ないよねっ
Androidとの同時開発だけどモデルをC++で書けば問題ないよねっAndroidとの同時開発だけどモデルをC++で書けば問題ないよねっ
Androidとの同時開発だけどモデルをC++で書けば問題ないよねっ
Koji Hasegawa
 
2015 0227 OSC-Spring Tokyo NETMF
2015 0227 OSC-Spring Tokyo NETMF2015 0227 OSC-Spring Tokyo NETMF
2015 0227 OSC-Spring Tokyo NETMF
Atomu Hidaka
 
C++ と Visual Studio による Android 開発
C++ と Visual Studio による Android 開発C++ と Visual Studio による Android 開発
C++ と Visual Studio による Android 開発
友太 渡辺
 

Viewers also liked (20)

What, Why, How Create OSS Libraries - 過去に制作した30のライブラリから見るC#コーディングテクニックと個人OSSの...
What, Why, How Create OSS Libraries - 過去に制作した30のライブラリから見るC#コーディングテクニックと個人OSSの...What, Why, How Create OSS Libraries - 過去に制作した30のライブラリから見るC#コーディングテクニックと個人OSSの...
What, Why, How Create OSS Libraries - 過去に制作した30のライブラリから見るC#コーディングテクニックと個人OSSの...
 
Beachhead implements new opcode on CLR JIT
Beachhead implements new opcode on CLR JITBeachhead implements new opcode on CLR JIT
Beachhead implements new opcode on CLR JIT
 
ZeroFormatterに見るC#で最速のシリアライザを作成する100億の方法
ZeroFormatterに見るC#で最速のシリアライザを作成する100億の方法ZeroFormatterに見るC#で最速のシリアライザを作成する100億の方法
ZeroFormatterに見るC#で最速のシリアライザを作成する100億の方法
 
RuntimeUnitTestToolkit for Unity
RuntimeUnitTestToolkit for UnityRuntimeUnitTestToolkit for Unity
RuntimeUnitTestToolkit for Unity
 
NextGen Server/Client Architecture - gRPC + Unity + C#
NextGen Server/Client Architecture - gRPC + Unity + C#NextGen Server/Client Architecture - gRPC + Unity + C#
NextGen Server/Client Architecture - gRPC + Unity + C#
 
マイクロサービスバックエンドAPIのためのRESTとgRPC
マイクロサービスバックエンドAPIのためのRESTとgRPCマイクロサービスバックエンドAPIのためのRESTとgRPC
マイクロサービスバックエンドAPIのためのRESTとgRPC
 
Azure Storage Partition Internals
Azure Storage Partition  Internals Azure Storage Partition  Internals
Azure Storage Partition Internals
 
.NET Coreとツール類の今
.NET Coreとツール類の今.NET Coreとツール類の今
.NET Coreとツール類の今
 
Photon Server Deep Dive - PhotonWireの実装から見つめるPhotonServerの基礎と応用
Photon Server Deep Dive - PhotonWireの実装から見つめるPhotonServerの基礎と応用Photon Server Deep Dive - PhotonWireの実装から見つめるPhotonServerの基礎と応用
Photon Server Deep Dive - PhotonWireの実装から見つめるPhotonServerの基礎と応用
 
Memcachedの仕組みと設定
Memcachedの仕組みと設定Memcachedの仕組みと設定
Memcachedの仕組みと設定
 
Functional go
Functional goFunctional go
Functional go
 
ZeroFormatter/MagicOnion - Fastest C# Serializer/gRPC based C# RPC
ZeroFormatter/MagicOnion - Fastest C# Serializer/gRPC based C# RPCZeroFormatter/MagicOnion - Fastest C# Serializer/gRPC based C# RPC
ZeroFormatter/MagicOnion - Fastest C# Serializer/gRPC based C# RPC
 
MySQLの文字コード事情
MySQLの文字コード事情MySQLの文字コード事情
MySQLの文字コード事情
 
Goをカンストさせる話
Goをカンストさせる話Goをカンストさせる話
Goをカンストさせる話
 
Goでヤフーの分散オブジェクトストレージを作った話 Go Conference 2017 Spring
Goでヤフーの分散オブジェクトストレージを作った話 Go Conference 2017 SpringGoでヤフーの分散オブジェクトストレージを作った話 Go Conference 2017 Spring
Goでヤフーの分散オブジェクトストレージを作った話 Go Conference 2017 Spring
 
HoloLens x Graphics 入門
HoloLens x Graphics 入門HoloLens x Graphics 入門
HoloLens x Graphics 入門
 
Plen2で始めるロボット制御の基本
Plen2で始めるロボット制御の基本Plen2で始めるロボット制御の基本
Plen2で始めるロボット制御の基本
 
Androidとの同時開発だけどモデルをC++で書けば問題ないよねっ
Androidとの同時開発だけどモデルをC++で書けば問題ないよねっAndroidとの同時開発だけどモデルをC++で書けば問題ないよねっ
Androidとの同時開発だけどモデルをC++で書けば問題ないよねっ
 
2015 0227 OSC-Spring Tokyo NETMF
2015 0227 OSC-Spring Tokyo NETMF2015 0227 OSC-Spring Tokyo NETMF
2015 0227 OSC-Spring Tokyo NETMF
 
C++ と Visual Studio による Android 開発
C++ と Visual Studio による Android 開発C++ と Visual Studio による Android 開発
C++ と Visual Studio による Android 開発
 

Similar to .NET Core とマルチプラットフォーム

CLI と BCL
CLI と BCLCLI と BCL
CLI と BCL
shozon
 
.NETクロスプラットフォーム
.NETクロスプラットフォーム.NETクロスプラットフォーム
.NETクロスプラットフォーム
Yasushi Kato
 
20160709 .NET Core on RHEL
20160709  .NET Core on RHEL20160709  .NET Core on RHEL
20160709 .NET Core on RHEL
Takayoshi Tanaka
 
Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~
Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~
Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~
Akira Inoue
 
【BS2】.NET 6 最新アップデート
【BS2】.NET 6 最新アップデート【BS2】.NET 6 最新アップデート
【BS2】.NET 6 最新アップデート
日本マイクロソフト株式会社
 
Dotnetcore30forwindesktop
Dotnetcore30forwindesktopDotnetcore30forwindesktop
Dotnetcore30forwindesktop
ru pic
 
Hello ".NET" World
Hello ".NET" WorldHello ".NET" World
Hello ".NET" World
将 高野
 
Vertica 8.0.0 新機能
Vertica 8.0.0 新機能Vertica 8.0.0 新機能
Vertica 8.0.0 新機能
Kaito Tono
 
ASP.NET 新時代に向けて ~ ASP.NET 5 / Visual Studio 2015 基礎解説
ASP.NET 新時代に向けて ~ ASP.NET 5 / Visual Studio 2015 基礎解説ASP.NET 新時代に向けて ~ ASP.NET 5 / Visual Studio 2015 基礎解説
ASP.NET 新時代に向けて ~ ASP.NET 5 / Visual Studio 2015 基礎解説Akira Inoue
 
.NET vNext
.NET vNext.NET vNext
.NET vNext
信之 岩永
 
ASP.NET vNextの全貌
ASP.NET vNextの全貌ASP.NET vNextの全貌
ASP.NET vNextの全貌
A AOKI
 
TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc...
TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc...TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc...
TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc...Akira Inoue
 
.NET Core と Container, そして Azure Web Apps on Linux による Web アプリ開発最前線
.NET Core と Container, そして Azure Web Apps on Linux による Web アプリ開発最前線.NET Core と Container, そして Azure Web Apps on Linux による Web アプリ開発最前線
.NET Core と Container, そして Azure Web Apps on Linux による Web アプリ開発最前線
Akira Inoue
 
Getting Started .NET Core
Getting Started .NET CoreGetting Started .NET Core
Getting Started .NET Core
Yuta Matsumura
 
Mvc conf session_1_osada
Mvc conf session_1_osadaMvc conf session_1_osada
Mvc conf session_1_osada
Hiroshi Okunushi
 
CEDEC 2013 Unity on Windows 8
CEDEC 2013 Unity on Windows 8CEDEC 2013 Unity on Windows 8
CEDEC 2013 Unity on Windows 8
Akira Onishi
 
170622 02
170622 02170622 02
170622 02
openrtm
 
本格化するクラウド ネイティブに向けて進化する開発プラットフォームと .NET
本格化するクラウド ネイティブに向けて進化する開発プラットフォームと .NET本格化するクラウド ネイティブに向けて進化する開発プラットフォームと .NET
本格化するクラウド ネイティブに向けて進化する開発プラットフォームと .NET
Akira Inoue
 

Similar to .NET Core とマルチプラットフォーム (20)

CLI と BCL
CLI と BCLCLI と BCL
CLI と BCL
 
20060419
2006041920060419
20060419
 
.NETクロスプラットフォーム
.NETクロスプラットフォーム.NETクロスプラットフォーム
.NETクロスプラットフォーム
 
20050903
2005090320050903
20050903
 
20160709 .NET Core on RHEL
20160709  .NET Core on RHEL20160709  .NET Core on RHEL
20160709 .NET Core on RHEL
 
Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~
Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~
Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~
 
【BS2】.NET 6 最新アップデート
【BS2】.NET 6 最新アップデート【BS2】.NET 6 最新アップデート
【BS2】.NET 6 最新アップデート
 
Dotnetcore30forwindesktop
Dotnetcore30forwindesktopDotnetcore30forwindesktop
Dotnetcore30forwindesktop
 
Hello ".NET" World
Hello ".NET" WorldHello ".NET" World
Hello ".NET" World
 
Vertica 8.0.0 新機能
Vertica 8.0.0 新機能Vertica 8.0.0 新機能
Vertica 8.0.0 新機能
 
ASP.NET 新時代に向けて ~ ASP.NET 5 / Visual Studio 2015 基礎解説
ASP.NET 新時代に向けて ~ ASP.NET 5 / Visual Studio 2015 基礎解説ASP.NET 新時代に向けて ~ ASP.NET 5 / Visual Studio 2015 基礎解説
ASP.NET 新時代に向けて ~ ASP.NET 5 / Visual Studio 2015 基礎解説
 
.NET vNext
.NET vNext.NET vNext
.NET vNext
 
ASP.NET vNextの全貌
ASP.NET vNextの全貌ASP.NET vNextの全貌
ASP.NET vNextの全貌
 
TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc...
TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc...TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc...
TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc...
 
.NET Core と Container, そして Azure Web Apps on Linux による Web アプリ開発最前線
.NET Core と Container, そして Azure Web Apps on Linux による Web アプリ開発最前線.NET Core と Container, そして Azure Web Apps on Linux による Web アプリ開発最前線
.NET Core と Container, そして Azure Web Apps on Linux による Web アプリ開発最前線
 
Getting Started .NET Core
Getting Started .NET CoreGetting Started .NET Core
Getting Started .NET Core
 
Mvc conf session_1_osada
Mvc conf session_1_osadaMvc conf session_1_osada
Mvc conf session_1_osada
 
CEDEC 2013 Unity on Windows 8
CEDEC 2013 Unity on Windows 8CEDEC 2013 Unity on Windows 8
CEDEC 2013 Unity on Windows 8
 
170622 02
170622 02170622 02
170622 02
 
本格化するクラウド ネイティブに向けて進化する開発プラットフォームと .NET
本格化するクラウド ネイティブに向けて進化する開発プラットフォームと .NET本格化するクラウド ネイティブに向けて進化する開発プラットフォームと .NET
本格化するクラウド ネイティブに向けて進化する開発プラットフォームと .NET
 

Recently uploaded

生成AIの実利用に必要なこと-Practical Requirements for the Deployment of Generative AI
生成AIの実利用に必要なこと-Practical Requirements for the Deployment of Generative AI生成AIの実利用に必要なこと-Practical Requirements for the Deployment of Generative AI
生成AIの実利用に必要なこと-Practical Requirements for the Deployment of Generative AI
Osaka University
 
Humanoid Virtual Athletics Challenge2024 技術講習会 スライド
Humanoid Virtual Athletics Challenge2024 技術講習会 スライドHumanoid Virtual Athletics Challenge2024 技術講習会 スライド
Humanoid Virtual Athletics Challenge2024 技術講習会 スライド
tazaki1
 
気ままなLLMをAgents for Amazon Bedrockでちょっとだけ飼いならす
気ままなLLMをAgents for Amazon Bedrockでちょっとだけ飼いならす気ままなLLMをAgents for Amazon Bedrockでちょっとだけ飼いならす
気ままなLLMをAgents for Amazon Bedrockでちょっとだけ飼いならす
Shinichi Hirauchi
 
ろくに電子工作もしたことない人間がIoT用ミドルウェアを作った話(IoTLT vol112 発表資料)
ろくに電子工作もしたことない人間がIoT用ミドルウェアを作った話(IoTLT  vol112 発表資料)ろくに電子工作もしたことない人間がIoT用ミドルウェアを作った話(IoTLT  vol112 発表資料)
ろくに電子工作もしたことない人間がIoT用ミドルウェアを作った話(IoTLT vol112 発表資料)
Takuya Minagawa
 
20240621_AI事業者ガイドライン_セキュリティパートの紹介_SeiyaShimabukuro
20240621_AI事業者ガイドライン_セキュリティパートの紹介_SeiyaShimabukuro20240621_AI事業者ガイドライン_セキュリティパートの紹介_SeiyaShimabukuro
20240621_AI事業者ガイドライン_セキュリティパートの紹介_SeiyaShimabukuro
Seiya Shimabukuro
 
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobodyロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
azuma satoshi
 
iMacwoSu_Gong_de_barabaranishitaHua_.pptx
iMacwoSu_Gong_de_barabaranishitaHua_.pptxiMacwoSu_Gong_de_barabaranishitaHua_.pptx
iMacwoSu_Gong_de_barabaranishitaHua_.pptx
kitamisetagayaxxx
 
ヒアラブルへの入力を想定したユーザ定義型ジェスチャ調査と IMUセンサによる耳タッチジェスチャの認識
ヒアラブルへの入力を想定したユーザ定義型ジェスチャ調査と IMUセンサによる耳タッチジェスチャの認識ヒアラブルへの入力を想定したユーザ定義型ジェスチャ調査と IMUセンサによる耳タッチジェスチャの認識
ヒアラブルへの入力を想定したユーザ定義型ジェスチャ調査と IMUセンサによる耳タッチジェスチャの認識
sugiuralab
 
協働AIがもたらす業務効率革命 -日本企業が押さえるべきポイント-Collaborative AI Revolutionizing Busines...
協働AIがもたらす業務効率革命 -日本企業が押さえるべきポイント-Collaborative AI Revolutionizing Busines...協働AIがもたらす業務効率革命 -日本企業が押さえるべきポイント-Collaborative AI Revolutionizing Busines...
協働AIがもたらす業務効率革命 -日本企業が押さえるべきポイント-Collaborative AI Revolutionizing Busines...
Osaka University
 
無形価値を守り育てる社会における「デー タ」の責務について - Atlas, Inc.
無形価値を守り育てる社会における「デー タ」の責務について - Atlas, Inc.無形価値を守り育てる社会における「デー タ」の責務について - Atlas, Inc.
無形価値を守り育てる社会における「デー タ」の責務について - Atlas, Inc.
Yuki Miyazaki
 
「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演
「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演
「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演
嶋 是一 (Yoshikazu SHIMA)
 
【JSAI2024】LLMエージェントの人間との対話における反芻的返答の親近感向上効果_v1.1.pdf
【JSAI2024】LLMエージェントの人間との対話における反芻的返答の親近感向上効果_v1.1.pdf【JSAI2024】LLMエージェントの人間との対話における反芻的返答の親近感向上効果_v1.1.pdf
【JSAI2024】LLMエージェントの人間との対話における反芻的返答の親近感向上効果_v1.1.pdf
ARISE analytics
 
なぜそのDDDは効果が薄いのか?名ばかりDX案件での経験を踏まえて培った他の思考を交えた現代風?のDDD
なぜそのDDDは効果が薄いのか?名ばかりDX案件での経験を踏まえて培った他の思考を交えた現代風?のDDDなぜそのDDDは効果が薄いのか?名ばかりDX案件での経験を踏まえて培った他の思考を交えた現代風?のDDD
なぜそのDDDは効果が薄いのか?名ばかりDX案件での経験を踏まえて培った他の思考を交えた現代風?のDDD
ssuserfcafd1
 
生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI
生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI
生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI
Osaka University
 
ハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMM
ハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMMハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMM
ハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMM
osamut
 

Recently uploaded (15)

生成AIの実利用に必要なこと-Practical Requirements for the Deployment of Generative AI
生成AIの実利用に必要なこと-Practical Requirements for the Deployment of Generative AI生成AIの実利用に必要なこと-Practical Requirements for the Deployment of Generative AI
生成AIの実利用に必要なこと-Practical Requirements for the Deployment of Generative AI
 
Humanoid Virtual Athletics Challenge2024 技術講習会 スライド
Humanoid Virtual Athletics Challenge2024 技術講習会 スライドHumanoid Virtual Athletics Challenge2024 技術講習会 スライド
Humanoid Virtual Athletics Challenge2024 技術講習会 スライド
 
気ままなLLMをAgents for Amazon Bedrockでちょっとだけ飼いならす
気ままなLLMをAgents for Amazon Bedrockでちょっとだけ飼いならす気ままなLLMをAgents for Amazon Bedrockでちょっとだけ飼いならす
気ままなLLMをAgents for Amazon Bedrockでちょっとだけ飼いならす
 
ろくに電子工作もしたことない人間がIoT用ミドルウェアを作った話(IoTLT vol112 発表資料)
ろくに電子工作もしたことない人間がIoT用ミドルウェアを作った話(IoTLT  vol112 発表資料)ろくに電子工作もしたことない人間がIoT用ミドルウェアを作った話(IoTLT  vol112 発表資料)
ろくに電子工作もしたことない人間がIoT用ミドルウェアを作った話(IoTLT vol112 発表資料)
 
20240621_AI事業者ガイドライン_セキュリティパートの紹介_SeiyaShimabukuro
20240621_AI事業者ガイドライン_セキュリティパートの紹介_SeiyaShimabukuro20240621_AI事業者ガイドライン_セキュリティパートの紹介_SeiyaShimabukuro
20240621_AI事業者ガイドライン_セキュリティパートの紹介_SeiyaShimabukuro
 
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobodyロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
 
iMacwoSu_Gong_de_barabaranishitaHua_.pptx
iMacwoSu_Gong_de_barabaranishitaHua_.pptxiMacwoSu_Gong_de_barabaranishitaHua_.pptx
iMacwoSu_Gong_de_barabaranishitaHua_.pptx
 
ヒアラブルへの入力を想定したユーザ定義型ジェスチャ調査と IMUセンサによる耳タッチジェスチャの認識
ヒアラブルへの入力を想定したユーザ定義型ジェスチャ調査と IMUセンサによる耳タッチジェスチャの認識ヒアラブルへの入力を想定したユーザ定義型ジェスチャ調査と IMUセンサによる耳タッチジェスチャの認識
ヒアラブルへの入力を想定したユーザ定義型ジェスチャ調査と IMUセンサによる耳タッチジェスチャの認識
 
協働AIがもたらす業務効率革命 -日本企業が押さえるべきポイント-Collaborative AI Revolutionizing Busines...
協働AIがもたらす業務効率革命 -日本企業が押さえるべきポイント-Collaborative AI Revolutionizing Busines...協働AIがもたらす業務効率革命 -日本企業が押さえるべきポイント-Collaborative AI Revolutionizing Busines...
協働AIがもたらす業務効率革命 -日本企業が押さえるべきポイント-Collaborative AI Revolutionizing Busines...
 
無形価値を守り育てる社会における「デー タ」の責務について - Atlas, Inc.
無形価値を守り育てる社会における「デー タ」の責務について - Atlas, Inc.無形価値を守り育てる社会における「デー タ」の責務について - Atlas, Inc.
無形価値を守り育てる社会における「デー タ」の責務について - Atlas, Inc.
 
「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演
「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演
「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演
 
【JSAI2024】LLMエージェントの人間との対話における反芻的返答の親近感向上効果_v1.1.pdf
【JSAI2024】LLMエージェントの人間との対話における反芻的返答の親近感向上効果_v1.1.pdf【JSAI2024】LLMエージェントの人間との対話における反芻的返答の親近感向上効果_v1.1.pdf
【JSAI2024】LLMエージェントの人間との対話における反芻的返答の親近感向上効果_v1.1.pdf
 
なぜそのDDDは効果が薄いのか?名ばかりDX案件での経験を踏まえて培った他の思考を交えた現代風?のDDD
なぜそのDDDは効果が薄いのか?名ばかりDX案件での経験を踏まえて培った他の思考を交えた現代風?のDDDなぜそのDDDは効果が薄いのか?名ばかりDX案件での経験を踏まえて培った他の思考を交えた現代風?のDDD
なぜそのDDDは効果が薄いのか?名ばかりDX案件での経験を踏まえて培った他の思考を交えた現代風?のDDD
 
生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI
生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI
生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI
 
ハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMM
ハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMMハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMM
ハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMM
 

.NET Core とマルチプラットフォーム

  • 1. .NET Core 1.0 と マルチプラットフォーム Deep Dive 荒井 省三
  • 2. アジェンダ • project.json • Microsoft.NETCoreApp • NETStandard Libaray • .NET Core と BCL • 新しい PCL とは
  • 3. .NET Core とは .NET Framework .NET Core XAMARIN アプリ モデル ベース ライブラリ
  • 4. .NET Core とは .NET Framework .NET Core XAMARIN アプリ モデル ベース ライブラリ
  • 6. Project.json { "version": "1.0.0-*", "buildOptions": { "emitEntryPoint": true }, "dependencies": { "Microsoft.NETCore.App": { "type": "platform", "version": "1.0.0" } }, "frameworks": { "netcoreapp1.0": { "imports": "dnxcore50" } } }
  • 7. Project.json • platform • Microsoft.NETCore.App • frameworks • netcoreapp1.0 "imports": "dnxcore50"
  • 8. Microsoft.NETCore.App • .NET Core の依存関係のみを定義したメタ データ パッケージ "Libuv" "Microsoft.CodeAnalysis.CSharp " exclude="Compile" "Microsoft.CodeAnalysis.VisualBasic " exclude="Compile" "Microsoft.CSharp" version="4.0.1" "Microsoft.NETCore.DotNetHostPolicy" version="1.0.1" "Microsoft.NETCore.Runtime.CoreCLR" version="1.0.2" "Microsoft.VisualBasic" version="10.0.1" "NETStandard.Library" version="1.6.0" "System.Buffers" version="4.0.0" "System.Collections.Immutable" version="1.2.0" "System.ComponentModel" version="4.0.1" "System.ComponentModel.Annotations" version="4.1.0" "System.Diagnostics.DiagnosticSource" version="4.0.0" "System.Diagnostics.Process" version="4.1.0" "System.Dynamic.Runtime" version="4.0.11" "System.Globalization.Extensions" version="4.0.1" "System.IO.FileSystem.Watcher" version="4.0.0" "System.IO.MemoryMappedFiles" version="4.0.0" "System.IO.UnmanagedMemoryStream" version="4.0.1" "System.Linq.Expressions" version="4.1.0" "System.Linq.Parallel" version="4.0.1" "System.Linq.Queryable" version="4.0.1" "System.Net.NameResolution" version="4.0.0" "System.Net.Requests" version="4.0.11" "System.Net.Security" version="4.0.0" "System.Net.WebHeaderCollection" version="4.0.1" "System.Numerics.Vectors" version="4.1.1" "System.Reflection.DispatchProxy" version="4.0.1" "System.Reflection.Metadata" version="1.3.0" "System.Reflection.TypeExtensions" version="4.1.0" "System.Resources.Reader" version="4.0.0" "System.Runtime.Loader" version="4.0.0 " exclude="Compile" "System.Security.Cryptography.Algorithms" version="4.2.0" "System.Security.Cryptography.Encoding" version="4.0.0" "System.Security.Cryptography.Primitives" version="4.0.0" "System.Security.Cryptography.X509Certificates" version="4.1.0" "System.Threading.Tasks.Dataflow" version="4.6.0" "System.Threading.Tasks.Extensions" version="4.0.0" "System.Threading.Tasks.Parallel" version="4.0.1" "System.Threading.Thread" version="4.0.0" "System.Threading.ThreadPool" version="4.0.10"
  • 9. Microsoft.NETCore.Runtime.CoreCLR • 依存関係のみを定義したメタ データ パッケージ "Microsoft.NETCore.Jit" version="1.0.2" "Microsoft.NETCore.Windows.ApiSets" version="1.0.1"
  • 10. Microsoft.NETCore.Jit • プラットフォームごとのランタイム パッケージへの定義のみ runtime.json (コンパイル ターゲットによって切り替える) { "runtimes": { "win7-x64": { "Microsoft.NETCore.Jit": { "runtime.win7-x64.Microsoft.NETCore.Jit": "1.0.2" } }, "win7-x86": { "Microsoft.NETCore.Jit": { "runtime.win7-x86.Microsoft.NETCore.Jit": "1.0.2" } }, "debian.8-x64": { "Microsoft.NETCore.Jit": { "runtime.debian.8-x64.Microsoft.NETCore.Jit": "1.0.2" } },
  • 11. Microsoft.NETCore.Windows.ApiSets • プラットフォームごとのランタイム パッケージへの定義のみ runtime.json (コンパイル ターゲットによって切り替える) { "runtimes": { "win10": { "Microsoft.NETCore.Windows.ApiSets": {} }, "win7-x64": { "Microsoft.NETCore.Windows.ApiSets": { "runtime.win7-x64.Microsoft.NETCore.Windows.ApiSets": "1.0.1" } }, "win7-x86": { "Microsoft.NETCore.Windows.ApiSets": { "runtime.win7-x86.Microsoft.NETCore.Windows.ApiSets": "1.0.1" } },
  • 12. NETStandard.Library 1/3 • .NET Core の BCL に相当するメタ データ パッケージ • この場合は、dnxcore50 なので Universal Windows Platform となり、NET Standard 1.3 "Microsoft.NETCore.Platforms" version="1.0.1" ランタイム ターゲットによる切り替え情報 "Microsoft.Win32.Primitives" version="4.0.1" "System.AppContext" version="4.1.0" "System.Collections" version="4.0.11" "System.Collections.Concurrent" version="4.0.12" "System.Console" version="4.0.0" "System.Diagnostics.Debug" version="4.0.11" "System.Diagnostics.Tools" version="4.0.1" "System.Diagnostics.Tracing" version="4.1.0" "System.Globalization" version="4.0.11" "System.Globalization.Calendars" version="4.0.1" "System.IO" version="4.1.0" "System.IO.Compression" version="4.1.0" "System.IO.Compression.ZipFile" version="4.0.1"
  • 13. NETStandard.Library 2/3 "System.IO.FileSystem" version="4.0.1" "System.IO.FileSystem.Primitives" version="4.0.1" "System.Linq" version="4.1.0" "System.Linq.Expressions" version="4.1.0" "System.Net.Http" version="4.1.0" "System.Net.Primitives" version="4.0.11" "System.Net.Sockets" version="4.1.0" "System.ObjectModel" version="4.0.12" "System.Reflection" version="4.1.0" "System.Reflection.Extensions" version="4.0.1" "System.Reflection.Primitives" version="4.0.1" "System.Resources.ResourceManager" version="4.0.1" "System.Runtime" version="4.1.0" "System.Runtime.Extensions" version="4.1.0" "System.Runtime.Handles" version="4.0.1" "System.Runtime.InteropServices" version="4.1.0" "System.Runtime.InteropServices.RuntimeInformation" version="4.0.0" "System.Runtime.Numerics" version="4.0.1"
  • 14. NETStandard.Library 3/3 "System.Security.Cryptography.Algorithms" version="4.2.0" "System.Security.Cryptography.Encoding" version="4.0.0" "System.Security.Cryptography.Primitives" version="4.0.0" "System.Security.Cryptography.X509Certificates" version="4.1.0" "System.Text.Encoding" version="4.0.11" "System.Text.Encoding.Extensions" version="4.0.11" "System.Text.RegularExpressions" version="4.1.0" "System.Threading" version="4.0.11" "System.Threading.Tasks" version="4.0.11" "System.Threading.Timer" version="4.0.1" "System.Xml.ReaderWriter" version="4.0.11" "System.Xml.XDocument" version="4.0.11"
  • 15. Microsoft.NETCore.Runtime.CoreCLR • プラットフォームごとのランタイム パッケージへの定義のみ runtime.json (コンパイル ターゲットによって切り替える) { "runtimes": { "win8-arm": { "Microsoft.NETCore.Runtime.CoreCLR": { "runtime.win8-arm.Microsoft.NETCore.Runtime.CoreCLR": "1.0.2-rc3-24212-01" } }, "win7-x64": { "Microsoft.NETCore.Runtime.CoreCLR": { "runtime.win7-x64.Microsoft.NETCore.Runtime.CoreCLR": "1.0.2" } }, "win7-x86": { "Microsoft.NETCore.Runtime.CoreCLR": { "runtime.win7-x86.Microsoft.NETCore.Runtime.CoreCLR": "1.0.2" } },
  • 16. .NET Core と BCL の関係 • さようなら mscorlib.dll • ようこそ System.Runtime.dll • BCL 全体を管理するメタ データ パッケージ .NET Standard Library • 依存関係の管理 • ターゲット プラットフォームの管理
  • 17. .NET Standard Library とは何か • 次世代の PCL (Portable Class Library) • .NET Core ランタイム上で動作する BCL を実現させるもの メタデータ パッケージ • PCL との類似点 • バイナリ コードを共有できる API 定義 • PCL との相違点 • PCL がプラットフォーム間の共通部分に焦点を当てているのに対して、 API セットに焦点を当てている • バージョン管理がシンプルなのに対して、PCL は複雑 (番号管理) • プラットフォームに依存しない目的に対して、PCL プロファイルは Microsoft プラットフォームを目的にしている
  • 18. PCL プロファイル 151 .NET framework 4.5.1 Windows 8.1 Windows Phone 8.1
  • 19. .NET Standard Library プラットフォーム 別名 .NET Standard netstandard 1.0 1.1 1.2 1.3 1.4 1.5 1.6 .NET Core netcoreapp → → → → → → 1.0 .NET Framework net → 4.5 4.5.1 4.6 4.6.1 4.6.2 4.6.3 Mono/Xamarin Platforms → → → → → → * Universal Windows Platform uap → → → → 10.0 Windows win → 8.0 8.1 Windows Phone wpa → → 8.1 Windows Phone Silverlight wp 8.0 →
  • 20. Target Framework バージョン Framework 最新 バージョン Target Framework Moniker(TFM) Compact Target Framework Moniker(TFM) .NET Standard バージョン メタ データ パッケージ .NET Standard 1.6 .NETStandard, Version=1.6 netstandard1.6 N/A NETStandardLibrary .NET Core Application 1.0 .NETCoreApp, Version=1.0 netcoreapp1.0 1.5 Microsoft.NETCore.App .NET Framework 4.6.3 .NETFramework, Version=4.6.3 net463 1.4 N/A
  • 21. PCL との互換性 • .NET Standard Library 1.0、1.1、1.2 は PCL プロファイルと互換がある • Microsoft.NETCore.Portable.Compatobility 名前 .NET Portable Subset Profile 7 .NET Framework 4.5, Windows 8 1.1 Profile 3.1 Windows 8.1, Windows Phone Silverlight 8.1 1.0 Profile 3.2 Windows 8.1, Windows Phone 8.1 1.2 Profile 44 .NET Framework 4.5.1, Windows 8.1 1.2 Profile 49 .NET Framework 4.5, Windows Phone Silverlight 8 1.0 Profile 78 .NET Framework 4.5, Windows 8, Windows Phone Silverlight 8 1.0 Profile 84 Windows Phone 8.1, Windows Phone Silverlight 8.1 1.0 Profile 111 .NET Framework 4.5, Windows 8, Windows Phone Silverlight 8.1 1.1 Profile 151 .NET Framework 4.5.1, Windows 8.1, Windows Phone 8.1 1.2 Profile 157 Windows 8.1, Windows Phone 8.1, Windows Phone Silverlight 8.1 1.0 Profile 259 .NET Framework 4.5, Windows 8, Windows Phone 8.1, Windows Phone Silverlight 8 1.0
  • 22. .NET Standard Library とは • マルチ プラットフォームへ対応するための新しい PCL • 従来までの PCL とは異なるアプローチ • nuget バージョン 3.x が必須のアプローチ
  • 23. 型を参照するとは何か using System; namespace ConsoleApplication { public class Program { public static void Main(string[] args) { Console.WriteLine("Hello World!"); var s = Console.ReadLine(); } } }
  • 24. メタデータ 1/2 Token Version Flags PublicKey Name Culture HashValue 23000001 4.1.0.0 0 b03f5f7f11d50a3a System.Runtime 23000002 4.0.0.0 0 b03f5f7f11d50a3a System.Console AssemblyRef(0x23) Token ResolutionScope Name Namespace 01000003 23000001 DebuggableAttribute System.Diagnostics … 01000008 23000001 Object System 01000009 23000002 Console System TypeRef(0x01) TypeRef メタデータは、ResolusionScope によってアセンブリを特定する AssemblyRef メタデータは、アセンブリ識別子を記録している
  • 25. メタデータ 2/2 Token ResolutionScope Name Namespace 01000003 23000001 DebuggableAttribute System.Diagnostics … 01000008 23000001 Object System 01000009 23000002 Console System TypeRef(0x01) Token MemberRefParent Name Signature 0a000001 01000001 .ctor 0x20010108 (引数1、I4、void) … 0a000007 01000009 WriteLine 0x0001010e (引数1、string、void) 0a000008 01000009 ReadLine 0x00000e (引数無し、string) MemberRef(0x0a) シグネチャは、メソッドの呼び出し規約、パラメータ、戻り値などを符号化した値 シグネチャによって、オーバーロードされたメソッドを特定できる
  • 26. Bait and Switch • 型を参照することをメタデータでは • アセンブリ参照(アセンブリ識別子) • 型(クラス)名 • メソッド名とメソッド シグネチャ • パッケージ システムを使ったテクニック • コンパイル時は、メタデータのみを解決 • 配布時にプラットフォーム固有のアセンブリに置き換える • メタデータの特徴を活用したテクニック • AssemblyRef, TypeRef, MemberRef
  • 27. まとめ • .NET Core は パッケージングによってマルチ プラットフォー ムへ対応 • nuget 3.x がパッケージ 管理 • .NET Standard Library • 依存関係を管理するメタ データ パッケージ • パッケージ • コンパイル時に参照する PCL • 配布時に使用するプラットフォーム依存 PCL
  • 29. メソッド シグネチャ 呼び出し規約の論理和 0x20 HASTHIS, 0x00 DEFAULT, 0x10 GENERIC, 0x05 VARARG, 0x40 EXPLICITHIS ジェネリックのパラメータ数 (int32 符号化数字、2-4バイト) ジェネリックでなければ省略される パラメータ数 (int32 符号化数字、2-4バイト) 戻り値の型 0x01 void, 0x0e string, 0x02 bool, 0x08 i4 パラメータの型 (パラメータの数だけ繰り返す)
  • 30. 参考資料 • ISO/IEC 23271 Common Language Infrastructure (CLI) • X 3016 : 2009 ISO/IEC 23271 : 2006 共通言語基盤 (CLI)