Introduction to Roslyn

Yuki Igarashi
Yuki IgarashiMicrosoft MVP / MSP Fellow at Microsoft MVP / MSP Fellow
Introduction to Roslyn
2014年5月31日 プログラミング生放送勉強会 第28回@東北大学
@bonprosoft
1
自己紹介
2
自己紹介
• Twitter: @bonprosoft (ぼんぷろ)
• 東北大学工学部の0x13歳
• 自然言語処理系の研究室でアルバイト中
• Microsoft Student Partners Fellow
3
Microsoft Student Partners
• Microsoft関連の技術を広めたい学生の集まり
• テクニカル職はもちろんマーケティング職もあります
http://www.microsoft.com/ja-jp/education/msp.aspx
4
Roslynとは
5
IS THE COMPILER A BLACK BOX?
• 既存のコンパイラはブラックボックス
 基本的に出力は成果物(アセンブリ)のみ
 途中で生成されたものはアセンブリ出力とともに消去
6
IS THE COMPILER A BLACK BOX?
7
IS THE COMPILER A BLACK BOX?
8
リアルタイムエラー分析
Syntax Highlighting
And more …
IntelliSense(コード補間)
IS THE COMPILER A BLACK BOX?
• IDEはコードに関する深い知識が必要
• 知識を得るためには、それぞれがコード解析のため
のコードを書く必要がある
 コンパイラ側と仕様を合わせる必要あり
 そもそも解析器は本当に2つ以上必要?
9
コンパイラを1つに
• ならコンパイラを1つにまとめよう
• コードに対してコンパイラだけが持つ情報を、API
として提供できる基盤
Roslyn
10
11
Class
Field
public Foo
private
string
X
CompilerCompilerSource code
Source code
Source
File
Source code
Source code
.NET
Assembly
Meta-programming Read-Eval-Print Loop
Language
Object Model
DSL Embedding
「BUILD 2011 TOOL-816T: Future directions for C# and Visual Basic」より
Roslynの利用例
• 以下のサイトにアクセス
http://vsshare.azurewebsites.net/
12
Roslynの利用例
• Visual Studioの拡張機能でコードを取得
• Roslynを用いて色付けを行いSignalRで配信
13
Roslynの利用例
14
Server
Presenter PC
(Visual Studio)
SignalR
Visual Studio拡張機能でコード取得
↓
Roslynで構文解析&意味解析
↓
SignalRで結果を送信
Roslynをcloneして…
15コンパイル時に「プロ生ちゃんマジ天使!」を文字列の最後に挿入
Roslynをcloneして…
16
• FizzBuzz編
Roslynの構成
17
.NETの仕様について
• コンパイラはネイティブコードではなくILを生成
18
.method public static void Main() cil managed
{
.entrypoint
.custom instance void [mscorlib]System.STAThreadAttribute::.ctor() = ( 01 00 00 00 )
// コード サイズ 14 (0xe)
.maxstack 8
IL_0000: nop
IL_0001: ldstr "Hello,Pronama!"
IL_0006: call void [mscorlib]System.Console::WriteLine(string)
IL_000b: nop
IL_000c: nop
IL_000d: ret
} // end of method Pronama::Main
.NETの仕様について
• 自称 言語処理系「VBCPP」のEmit部分
19
構文木とは
20
Class
Field
public Foo
private
string
X
Roslynで出来ること
• コード生成
• 一部のリファクタリング etcGenerate
• 木の改変
• Code Fixや一部のリファクタリング etcTransform
• 構文/意味解析
• 意味解析 etcAnalyze
21
Roslynの設計理念
• Roslynでは普遍性を基本理念としている
 「あるツールが影響を与えたせいで、他のツールに危害が
加わる」という状態を防ぐため
• データに変更を加える際は、基本的に一部分だけが
異なるような新しいデータを作ることになる
22
Compiler APIs(Compiler Layer)
Roslynが提供するAPI
23
Compiler APIs
(Scripting APIs)
Workspaces APIs(Services Layer)
Features APIs(Editor Services Layer)
Compiler APIs(Compiler Layer)
Roslynが提供するAPI
24
Compiler APIs
(Scripting APIs)
Workspaces APIs(Services Layer)
Features APIs(Editor Services Layer)
Compiler APIs
• 主にコンパイラに関するAPIを提供
• 主に3層に分かれている
 コア部分
 言語別部分
 (フロント部分)
25
Compiler APIs
• コア部分
 Microsoft.CodeAnalysis.dll
 言語特有でない、すべての編集・解析プロセスを含む
 Emit APIや、Syntax Tree APIの基本的・抽象的な構造、
及び(拡張)メソッドを持つ
26
Compiler APIs
• 言語別部分
 Microsoft.CodeAnalysis.VisualBasic.dll
 Microsoft.CodeAnalysis.CSharp.dll
 コア部分を継承し、言語毎のパーサーや解析ロジックを持つ
 実際にコードをコンパイルするときに呼び出される
27
Compiler APIs
• フロント部分
 rcsc.exeやrvbc.exe (Roslyn版コンパイラ) 、そして
VBCSCompiler.exeを含む
 ここではコマンドラインをパースして先ほどまでのレイ
ヤーを呼ぶだけ
28
Compiler APIs
• デモ
 コンパイラAPIを用いて何か作ってみましょう
29
Compiler APIs Demo1 (追記)
• 単純な構文のみを検証するプログラム
30
Dim tree = VisualBasicSyntaxTree.ParseText(code)
Dim errors As New List(Of ErrorItem)
For Each item In tree.GetDiagnostics
errors.Add(New ErrorItem With {.Message = item.GetMessage,
.Location = item.Location.SourceSpan.ToString,
.Id = item.Id,
.Severity = item.Severity.ToString})
Next
Compiler APIs Demo1 (追記)
• 実行結果
31
Compiler APIs Demo1 (追記)
• 実行結果に関して
 単純に構文のエラーは解析できる
 変数名の重複や存在しない名前(型やメソッド等)を入力し
ても通ってしまう
32
Compiler APIs Demo2 (追記)
• Semantic Analysisを用いて、意味も検証する
33
Dim tree = VisualBasicSyntaxTree.ParseText(code)
Dim compilation = VisualBasicCompilation.Create("pronama",
{tree},
{New MetadataFileReference(GetType(Object).Assembly.Location)})
Dim errors As New List(Of ErrorItem)
For Each item In compilation.GetDiagnostics
errors.Add(New ErrorItem With {.Message = item.GetMessage,
.Location = item.Location.SourceSpan.ToString,
.Id = item.Id,
.Severity = item.Severity.ToString})
Next
Compiler APIs Demo2 (追記)
• 実行結果
34
Compiler APIs Demo2 (追記)
• 実行結果に関して
 構文エラーはもちろん解析可能
 変数名の重複や存在しない名前(型やメソッド等)を入力し
たらエラーを出力してくれる
 「変数が使われていない」等の警告も出力
 データフロー解析(どこで変数を参照しているか等)も行え
る
35
Compiler APIs
• Scripting APIsに関して
( https://roslyn.codeplex.com/wikipage?title=FAQ#What happened to the REPL and
hosting scripting APIs より)
36
Compiler APIs(Compiler Layer)
Roslynが提供するAPI
37
Compiler APIs
(Scripting APIs)
Workspaces APIs(Services Layer)
Features APIs(Editor Services Layer)
Workspace APIs
• 主にワークスペースに関するAPIを提供する
 Microsoft.CodeAnalysis.Workspaces.dll
 Microsoft.CodeAnalysis.VisualBasic.Workspaces.dll
 Microsoft.CodeAnalysis.CSharp.Workspaces.dll
38
Workspace APIs
• プロジェクトファイルの構造や基本的なリファクタ
リング機能を含む
 プロジェクトファイル全体を把握しないとできない機能
(ex. 参照関係やすべての検索機能等)を提供
 ソースコードと参照関係を含むProjectとSolutionの管理
39
Workspace APIs
40
Dim workspace = MSBuild.MSBuildWorkspace.Create()
Dim solution = Await workspace.OpenSolutionAsync(dlg.FileName)
For Each projectId In solution.ProjectIds
Dim project = solution.GetProject(projectId)
Console.WriteLine("+ Project" + vbCrLf + " FileName: {0}, Lang: {1}, Id: {2}",
project.Name, project.Language, project.Id.ToString)
For Each docId In project.DocumentIds
Dim document = project.GetDocument(docId)
Console.WriteLine("- File" + vbCrLf + " Name: {0}, Path: {1}, ID: {2}",
document.Name, document.FilePath, document.Id)
Next
Next
• ソリューションに含まれるファイルの一覧を出力
Workspace APIs
41
Dim document = project.GetDocument(project.DocumentIds(0))
Dim version = Await document.GetTextVersionAsync()
Dim text = Await document.GetTextAsync()
Console.WriteLine("Version: {0}" + vbCrLf + “Text: {1}" version.ToString , text.ToString)
old = document
Dim newDocument = Await Formatter.FormatAsync(document)
Dim diff = Await newDocument.GetTextChangesAsync(old)
version = Await newDocument.GetTextVersionAsync()
text = Await newDocument.GetTextAsync()
Console.WriteLine("Version: {0}" + vbCrLf + “Text: {1}" version.ToString , text.ToString)
For Each change In diff
Console.WriteLine("*Change* + vbCrLf + "Place: {0}" + vbCrLf +"NewText: " ,
change.Span.ToString , change.NewText)
Next
• とあるファイルの整形を行い、その整形箇所を表示
Compiler APIs(Compiler Layer)
Roslynが提供するAPI
42
Compiler APIs
(Scripting APIs)
Workspaces APIs(Services Layer)
Features APIs(Editor Services Layer)
Feature APIs
• 各種リファクタリングやQuick FixなどのAPIを提供
 Microsoft.CodeAnalysis.Features.dll
 NuGetでは Microsoft.CodeAnalysis.CodeActions という
名前
• 言語別で詳細なツールを作成することが可能
43
Code Fix
44
• VBでメソッドを呼び出す際、()をつけないと警告を
出すようにするCode Fix
Feature APIs
• デモ
 Code Fixを作ってみます
45
Roslyn Q&A
46
DLR vs. Roslyn
• Dynamic Language Runtime(動的言語ランタイム)
 IronPythonやIronRubyをサポート
• DLRとRoslynは目的に違う
 RoslynはVisual Studio他との関わり合いを重視
 DLRは動的に動的言語に言語機能を提供するための技術
47
DLR vs. Roslyn
• ILの生成
 DLRはSystem.Linq.Expressions 以下の式ツリーを使用
 RoslynはEmit APIにより直接ILを生成している
=> パフォーマンスの向上につながる
48
DSL with Roslyn
• 既存のパーサーの構文の拡張も、オープンソースに
伴ってできるようになった(未確認)
• パーサーをすべて自前で用意してもよい
 その場合自分のパーサーでRoslynのASTを生成すればよい
49
Roslynのこれまでとこれから
50
Roslynのこれまで
51
CTP
• 2011年10月
• Workspace APIとScripting API、また基本的なCompiler APIを提供
CTP2
• 2012年6月
• 匿名型やクエリ、イベント、lockステートメント他多数の言語サポート
CTP3
• 2012年9月
• LINQのサポート、遅延バインディング等
Preview
• 2014年4月
• async/awaitのサポート、次期バージョン機能の搭載
Roslynのロードマップ
• Review and refine the design of the REPL
window(scripting API).
• Discuss proposed language features.
• Remove the core compiler's dependency on the
full .NET framework allowing the use of the
Compilation data type on platforms like WinRT.
( http://roslyn.codeplex.com/wikipage?title=Roadmap&referringTitle=Documentation より抜粋)
52
Roslynを使用する際の注意点
• プロジェクトファイルの構造が変わる
• IntelliSenseが遅くなる (マシンによる?)
53
Roslynが開く未来
• C#/VBへの新機能実装コストが減る
 すでにRoslyn End User Previewではいくつかの新機能が
実装済み
 どのような新機能が実装済み(予定)であるか、リストアッ
プされている
https://roslyn.codeplex.com/wikipage?title=Language%20Feat
ure%20Status&referringTitle=Documentation
54
Roslynが開く未来
• Monoで開発が止まっていたVB.NETの歴史が再び
動き出す!(かもしれない)
 現在MonoはNRefactoryとMono.Csharpを使用
 すでにMonoはこんなレポジトリを持っている
 Roslyn Compiler - Tracks Mono Patches
https://github.com/mono/roslyn
55
Roslynが開く未来
• ASP.NET vNextでのRoslyn
 Roslynによるリアルタイムコンパイル
 マルチプラットフォームで動く模様
56
リンク集
• RoslynのダウンロードURL
http://aka.ms/roslyn
• Roslyn Source Browser
http://source.roslyn.codeplex.com/
• .NET コンパイラ プラットフォーム ("Roslyn")
http://msdn.microsoft.com/ja-JP/roslyn
57
Copyright © 2014 bonprosoft All Rights Reserved.
58
1 of 58

Recommended

Flutterを体験してみませんか by
Flutterを体験してみませんかFlutterを体験してみませんか
Flutterを体験してみませんかcch-robo
255 views50 slides
.NETラボ 勉強会 2021年1月 「C#で機械学習」 by
.NETラボ 勉強会 2021年1月 「C#で機械学習」.NETラボ 勉強会 2021年1月 「C#で機械学習」
.NETラボ 勉強会 2021年1月 「C#で機械学習」Fujio Kojima
455 views105 slides
Protocol Buffers 入門 by
Protocol Buffers 入門Protocol Buffers 入門
Protocol Buffers 入門Yuichi Ito
36.4K views40 slides
CI to CD、ソフトウェアの継続的アプローチ by
CI to CD、ソフトウェアの継続的アプローチCI to CD、ソフトウェアの継続的アプローチ
CI to CD、ソフトウェアの継続的アプローチYou&I
1.8K views37 slides
Windowsの画面スケーリングを きちんと理解しよう by
Windowsの画面スケーリングをきちんと理解しようWindowsの画面スケーリングをきちんと理解しよう
Windowsの画面スケーリングを きちんと理解しようYuya Yamaki
43.5K views52 slides
Unityで『Kinect for Windows v2 / XboxOne Controller』を使う by
Unityで『Kinect for Windows v2 / XboxOne Controller』を使うUnityで『Kinect for Windows v2 / XboxOne Controller』を使う
Unityで『Kinect for Windows v2 / XboxOne Controller』を使うNobuhiko Sasaki
7.1K views44 slides

More Related Content

Viewers also liked

#darukaigi by
#darukaigi#darukaigi
#darukaigijz5 MATSUE
3.2K views19 slides
Windows8.1(64bit) にVB6をインストール by
Windows8.1(64bit) にVB6をインストールWindows8.1(64bit) にVB6をインストール
Windows8.1(64bit) にVB6をインストールjz5 MATSUE
8.5K views29 slides
プロ生ちゃんbotを作ろう! by
プロ生ちゃんbotを作ろう!プロ生ちゃんbotを作ろう!
プロ生ちゃんbotを作ろう!treby
3.6K views15 slides
Hubotで遊ぶ by
Hubotで遊ぶHubotで遊ぶ
Hubotで遊ぶtreby
3.8K views19 slides
Azure Functions 入門 by
Azure Functions 入門Azure Functions 入門
Azure Functions 入門jz5 MATSUE
3.5K views30 slides
マスコットアプリ─ キャラアプリ─ 開発 with Xamarin by
マスコットアプリ─ キャラアプリ─ 開発 with Xamarinマスコットアプリ─ キャラアプリ─ 開発 with Xamarin
マスコットアプリ─ キャラアプリ─ 開発 with Xamarinjz5 MATSUE
1.4K views79 slides

Viewers also liked(12)

#darukaigi by jz5 MATSUE
#darukaigi#darukaigi
#darukaigi
jz5 MATSUE3.2K views
Windows8.1(64bit) にVB6をインストール by jz5 MATSUE
Windows8.1(64bit) にVB6をインストールWindows8.1(64bit) にVB6をインストール
Windows8.1(64bit) にVB6をインストール
jz5 MATSUE8.5K views
プロ生ちゃんbotを作ろう! by treby
プロ生ちゃんbotを作ろう!プロ生ちゃんbotを作ろう!
プロ生ちゃんbotを作ろう!
treby3.6K views
Hubotで遊ぶ by treby
Hubotで遊ぶHubotで遊ぶ
Hubotで遊ぶ
treby3.8K views
Azure Functions 入門 by jz5 MATSUE
Azure Functions 入門Azure Functions 入門
Azure Functions 入門
jz5 MATSUE3.5K views
マスコットアプリ─ キャラアプリ─ 開発 with Xamarin by jz5 MATSUE
マスコットアプリ─ キャラアプリ─ 開発 with Xamarinマスコットアプリ─ キャラアプリ─ 開発 with Xamarin
マスコットアプリ─ キャラアプリ─ 開発 with Xamarin
jz5 MATSUE1.4K views
C++用将棋ライブラリ "OpenShogiLib"の紹介 by Hiro H.
C++用将棋ライブラリ"OpenShogiLib"の紹介C++用将棋ライブラリ"OpenShogiLib"の紹介
C++用将棋ライブラリ "OpenShogiLib"の紹介
Hiro H.5K views
はじめての ASP.NET MVC by jz5 MATSUE
はじめての ASP.NET MVCはじめての ASP.NET MVC
はじめての ASP.NET MVC
jz5 MATSUE8.6K views
イマドキC++erのモテカワリソース管理術 by Kohsuke Yuasa
イマドキC++erのモテカワリソース管理術イマドキC++erのモテカワリソース管理術
イマドキC++erのモテカワリソース管理術
Kohsuke Yuasa10.6K views
C++ ポインタ ブートキャンプ by Kohsuke Yuasa
C++ ポインタ ブートキャンプC++ ポインタ ブートキャンプ
C++ ポインタ ブートキャンプ
Kohsuke Yuasa11K views
Twitterのsnowflakeについて by moai kids
TwitterのsnowflakeについてTwitterのsnowflakeについて
Twitterのsnowflakeについて
moai kids24.8K views
Boost.GraphでJR全線乗り尽くしプランを立てる - プログラミング生放送+CLR/H+Sapporo.cpp 勉強会@札幌 (2014.7.12) by Hiro H.
Boost.GraphでJR全線乗り尽くしプランを立てる - プログラミング生放送+CLR/H+Sapporo.cpp 勉強会@札幌 (2014.7.12)Boost.GraphでJR全線乗り尽くしプランを立てる - プログラミング生放送+CLR/H+Sapporo.cpp 勉強会@札幌 (2014.7.12)
Boost.GraphでJR全線乗り尽くしプランを立てる - プログラミング生放送+CLR/H+Sapporo.cpp 勉強会@札幌 (2014.7.12)
Hiro H.6.4K views

Similar to Introduction to Roslyn

Introduction of Python by
Introduction of PythonIntroduction of Python
Introduction of PythonTomoya Nakayama
1.2K views45 slides
MakeGoodで快適なテスト駆動開発を by
MakeGoodで快適なテスト駆動開発をMakeGoodで快適なテスト駆動開発を
MakeGoodで快適なテスト駆動開発をAtsuhiro Kubo
1.2K views28 slides
C#勉強会 ~ C#9の新機能 ~ by
C#勉強会 ~ C#9の新機能 ~C#勉強会 ~ C#9の新機能 ~
C#勉強会 ~ C#9の新機能 ~Fujio Kojima
517 views54 slides
po-2. Python プログラミングの基本 by
po-2. Python プログラミングの基本po-2. Python プログラミングの基本
po-2. Python プログラミングの基本kunihikokaneko1
299 views57 slides
Test Manager + Team Foundation Server /Visual Studio Team Services 手順書(共有パラメー... by
Test Manager + Team Foundation Server /Visual Studio Team Services 手順書(共有パラメー...Test Manager + Team Foundation Server /Visual Studio Team Services 手順書(共有パラメー...
Test Manager + Team Foundation Server /Visual Studio Team Services 手順書(共有パラメー...Masaki Takeda
4.1K views168 slides
Introduction to cython by
Introduction to cythonIntroduction to cython
Introduction to cythonAtsuo Ishimoto
14.9K views39 slides

Similar to Introduction to Roslyn(20)

MakeGoodで快適なテスト駆動開発を by Atsuhiro Kubo
MakeGoodで快適なテスト駆動開発をMakeGoodで快適なテスト駆動開発を
MakeGoodで快適なテスト駆動開発を
Atsuhiro Kubo1.2K views
C#勉強会 ~ C#9の新機能 ~ by Fujio Kojima
C#勉強会 ~ C#9の新機能 ~C#勉強会 ~ C#9の新機能 ~
C#勉強会 ~ C#9の新機能 ~
Fujio Kojima517 views
po-2. Python プログラミングの基本 by kunihikokaneko1
po-2. Python プログラミングの基本po-2. Python プログラミングの基本
po-2. Python プログラミングの基本
kunihikokaneko1299 views
Test Manager + Team Foundation Server /Visual Studio Team Services 手順書(共有パラメー... by Masaki Takeda
Test Manager + Team Foundation Server /Visual Studio Team Services 手順書(共有パラメー...Test Manager + Team Foundation Server /Visual Studio Team Services 手順書(共有パラメー...
Test Manager + Team Foundation Server /Visual Studio Team Services 手順書(共有パラメー...
Masaki Takeda4.1K views
Introduction to cython by Atsuo Ishimoto
Introduction to cythonIntroduction to cython
Introduction to cython
Atsuo Ishimoto14.9K views
Intel OpenVINO™ ツールキットのご紹介 by Hiroshi Ouchiyama
Intel OpenVINO™ ツールキットのご紹介Intel OpenVINO™ ツールキットのご紹介
Intel OpenVINO™ ツールキットのご紹介
Hiroshi Ouchiyama1.9K views
CLRの基礎 - プログラミング .NET Framework 第3版 読書会 by Yoshihisa Ozaki
CLRの基礎 - プログラミング .NET Framework 第3版 読書会CLRの基礎 - プログラミング .NET Framework 第3版 読書会
CLRの基礎 - プログラミング .NET Framework 第3版 読書会
Yoshihisa Ozaki1.4K views
TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc... by Akira Inoue
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 Inoue3.6K views
pf-1. Python,Google Colaboratory by kunihikokaneko1
pf-1. Python,Google Colaboratorypf-1. Python,Google Colaboratory
pf-1. Python,Google Colaboratory
kunihikokaneko1898 views
po-1. プログラミング入門 by kunihikokaneko1
po-1. プログラミング入門po-1. プログラミング入門
po-1. プログラミング入門
kunihikokaneko1269 views
20171212 titech lecture_ishizaki_public by Kazuaki Ishizaki
20171212 titech lecture_ishizaki_public20171212 titech lecture_ishizaki_public
20171212 titech lecture_ishizaki_public
Kazuaki Ishizaki959 views
研究生のためのC++ no.2 by Tomohiro Namba
研究生のためのC++ no.2研究生のためのC++ no.2
研究生のためのC++ no.2
Tomohiro Namba430 views
Visual Studio による開発環境・プログラミングの進化 by Fujio Kojima
Visual Studio による開発環境・プログラミングの進化Visual Studio による開発環境・プログラミングの進化
Visual Studio による開発環境・プログラミングの進化
Fujio Kojima1.1K views
わんくまT78 mfcを始めようとしてみた by 伸男 伊藤
わんくまT78 mfcを始めようとしてみたわんくまT78 mfcを始めようとしてみた
わんくまT78 mfcを始めようとしてみた
伸男 伊藤3.3K views
TypeScript ファーストステップ (Rev.2) ~ Any browser. Any host. Any OS. Open Source. ~ by Akira Inoue
TypeScript ファーストステップ (Rev.2) ~ Any browser. Any host. Any OS. Open Source. ~TypeScript ファーストステップ (Rev.2) ~ Any browser. Any host. Any OS. Open Source. ~
TypeScript ファーストステップ (Rev.2) ~ Any browser. Any host. Any OS. Open Source. ~
Akira Inoue2.4K views
実行トレース間のデータの差異に基づくデータフロー解析手法の提案 by Kamiya Toshihiro
実行トレース間のデータの差異に基づくデータフロー解析手法の提案実行トレース間のデータの差異に基づくデータフロー解析手法の提案
実行トレース間のデータの差異に基づくデータフロー解析手法の提案
Kamiya Toshihiro670 views
LEGO MINDSTORMS EV3 API by Akira Hatsune
LEGO MINDSTORMS EV3 APILEGO MINDSTORMS EV3 API
LEGO MINDSTORMS EV3 API
Akira Hatsune2.3K views

More from Yuki Igarashi

.NET Coreとツール類の今 by
.NET Coreとツール類の今.NET Coreとツール類の今
.NET Coreとツール類の今Yuki Igarashi
6.8K views31 slides
論文紹介:The wavelet matrix by
論文紹介:The wavelet matrix論文紹介:The wavelet matrix
論文紹介:The wavelet matrixYuki Igarashi
2K views69 slides
Introduction to VSCode by
Introduction to VSCodeIntroduction to VSCode
Introduction to VSCodeYuki Igarashi
994 views30 slides
それっぽく感じる機械学習 by
それっぽく感じる機械学習それっぽく感じる機械学習
それっぽく感じる機械学習Yuki Igarashi
8.3K views94 slides
Visual Studio 拡張機能の作り方 by
Visual Studio 拡張機能の作り方Visual Studio 拡張機能の作り方
Visual Studio 拡張機能の作り方Yuki Igarashi
4.9K views14 slides
Azure MLで何かやる by
Azure MLで何かやるAzure MLで何かやる
Azure MLで何かやるYuki Igarashi
4.1K views73 slides

More from Yuki Igarashi(15)

.NET Coreとツール類の今 by Yuki Igarashi
.NET Coreとツール類の今.NET Coreとツール類の今
.NET Coreとツール類の今
Yuki Igarashi6.8K views
論文紹介:The wavelet matrix by Yuki Igarashi
論文紹介:The wavelet matrix論文紹介:The wavelet matrix
論文紹介:The wavelet matrix
Yuki Igarashi2K views
それっぽく感じる機械学習 by Yuki Igarashi
それっぽく感じる機械学習それっぽく感じる機械学習
それっぽく感じる機械学習
Yuki Igarashi8.3K views
Visual Studio 拡張機能の作り方 by Yuki Igarashi
Visual Studio 拡張機能の作り方Visual Studio 拡張機能の作り方
Visual Studio 拡張機能の作り方
Yuki Igarashi4.9K views
Azure MLで何かやる by Yuki Igarashi
Azure MLで何かやるAzure MLで何かやる
Azure MLで何かやる
Yuki Igarashi4.1K views
Microsoft Azure 概要 by Yuki Igarashi
Microsoft Azure 概要Microsoft Azure 概要
Microsoft Azure 概要
Yuki Igarashi1.4K views
続・Kinect v2を通してMicrosoft技術を考える by Yuki Igarashi
続・Kinect v2を通してMicrosoft技術を考える続・Kinect v2を通してMicrosoft技術を考える
続・Kinect v2を通してMicrosoft技術を考える
Yuki Igarashi3.8K views
Kinect v2を通してMicrosoft技術を考える by Yuki Igarashi
Kinect v2を通してMicrosoft技術を考えるKinect v2を通してMicrosoft技術を考える
Kinect v2を通してMicrosoft技術を考える
Yuki Igarashi2.7K views
君も今日からWebMatrixMan(仮) by Yuki Igarashi
君も今日からWebMatrixMan(仮)君も今日からWebMatrixMan(仮)
君も今日からWebMatrixMan(仮)
Yuki Igarashi1.2K views
Visual Studio付きWindowsインスタンスの利用方法 by Yuki Igarashi
Visual Studio付きWindowsインスタンスの利用方法Visual Studio付きWindowsインスタンスの利用方法
Visual Studio付きWindowsインスタンスの利用方法
Yuki Igarashi2.2K views
//publish/ MSPTutorial 応用編 by Yuki Igarashi
//publish/ MSPTutorial 応用編//publish/ MSPTutorial 応用編
//publish/ MSPTutorial 応用編
Yuki Igarashi1.2K views
Community Camp 2014 Tohoku LT by Yuki Igarashi
Community Camp 2014 Tohoku LTCommunity Camp 2014 Tohoku LT
Community Camp 2014 Tohoku LT
Yuki Igarashi1K views

Introduction to Roslyn