SlideShare une entreprise Scribd logo
1  sur  58
Télécharger pour lire hors ligne
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

Contenu connexe

En vedette

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

En vedette (12)

#darukaigi
#darukaigi#darukaigi
#darukaigi
 
Windows8.1(64bit) にVB6をインストール
Windows8.1(64bit) にVB6をインストールWindows8.1(64bit) にVB6をインストール
Windows8.1(64bit) にVB6をインストール
 
プロ生ちゃんbotを作ろう!
プロ生ちゃんbotを作ろう!プロ生ちゃんbotを作ろう!
プロ生ちゃんbotを作ろう!
 
Hubotで遊ぶ
Hubotで遊ぶHubotで遊ぶ
Hubotで遊ぶ
 
Azure Functions 入門
Azure Functions 入門Azure Functions 入門
Azure Functions 入門
 
マスコットアプリ─ キャラアプリ─ 開発 with Xamarin
マスコットアプリ─ キャラアプリ─ 開発 with Xamarinマスコットアプリ─ キャラアプリ─ 開発 with Xamarin
マスコットアプリ─ キャラアプリ─ 開発 with Xamarin
 
C++用将棋ライブラリ "OpenShogiLib"の紹介
C++用将棋ライブラリ"OpenShogiLib"の紹介C++用将棋ライブラリ"OpenShogiLib"の紹介
C++用将棋ライブラリ "OpenShogiLib"の紹介
 
はじめての ASP.NET MVC
はじめての ASP.NET MVCはじめての ASP.NET MVC
はじめての ASP.NET MVC
 
イマドキC++erのモテカワリソース管理術
イマドキC++erのモテカワリソース管理術イマドキC++erのモテカワリソース管理術
イマドキC++erのモテカワリソース管理術
 
C++ ポインタ ブートキャンプ
C++ ポインタ ブートキャンプC++ ポインタ ブートキャンプ
C++ ポインタ ブートキャンプ
 
Twitterのsnowflakeについて
TwitterのsnowflakeについてTwitterのsnowflakeについて
Twitterのsnowflakeについて
 
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)
Boost.GraphでJR全線乗り尽くしプランを立てる - プログラミング生放送+CLR/H+Sapporo.cpp 勉強会@札幌 (2014.7.12)
 

Similaire à Introduction to Roslyn

MakeGoodで快適なテスト駆動開発を
MakeGoodで快適なテスト駆動開発をMakeGoodで快適なテスト駆動開発を
MakeGoodで快適なテスト駆動開発をAtsuhiro Kubo
 
C#勉強会 ~ C#9の新機能 ~
C#勉強会 ~ C#9の新機能 ~C#勉強会 ~ C#9の新機能 ~
C#勉強会 ~ C#9の新機能 ~Fujio Kojima
 
po-2. Python プログラミングの基本
po-2. Python プログラミングの基本po-2. Python プログラミングの基本
po-2. Python プログラミングの基本kunihikokaneko1
 
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 手順書(共有パラメー...
Test Manager + Team Foundation Server /Visual Studio Team Services 手順書(共有パラメー...Masaki Takeda
 
Introduction to cython
Introduction to cythonIntroduction to cython
Introduction to cythonAtsuo Ishimoto
 
Intel OpenVINO™ ツールキットのご紹介
Intel OpenVINO™ ツールキットのご紹介Intel OpenVINO™ ツールキットのご紹介
Intel OpenVINO™ ツールキットのご紹介Hiroshi Ouchiyama
 
CLRの基礎 - プログラミング .NET Framework 第3版 読書会
CLRの基礎 - プログラミング .NET Framework 第3版 読書会CLRの基礎 - プログラミング .NET Framework 第3版 読書会
CLRの基礎 - プログラミング .NET Framework 第3版 読書会Yoshihisa Ozaki
 
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
 
pf-1. Python,Google Colaboratory
pf-1. Python,Google Colaboratorypf-1. Python,Google Colaboratory
pf-1. Python,Google Colaboratorykunihikokaneko1
 
po-1. プログラミング入門
po-1. プログラミング入門po-1. プログラミング入門
po-1. プログラミング入門kunihikokaneko1
 
20171212 titech lecture_ishizaki_public
20171212 titech lecture_ishizaki_public20171212 titech lecture_ishizaki_public
20171212 titech lecture_ishizaki_publicKazuaki Ishizaki
 
研究生のためのC++ no.2
研究生のためのC++ no.2研究生のためのC++ no.2
研究生のためのC++ no.2Tomohiro Namba
 
つくってあそぼ ラムダ計算インタプリタ
つくってあそぼ ラムダ計算インタプリタつくってあそぼ ラムダ計算インタプリタ
つくってあそぼ ラムダ計算インタプリタ京大 マイコンクラブ
 
Visual Studio による開発環境・プログラミングの進化
Visual Studio による開発環境・プログラミングの進化Visual Studio による開発環境・プログラミングの進化
Visual Studio による開発環境・プログラミングの進化Fujio Kojima
 
わんくまT78 mfcを始めようとしてみた
わんくまT78 mfcを始めようとしてみたわんくまT78 mfcを始めようとしてみた
わんくまT78 mfcを始めようとしてみた伸男 伊藤
 
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. ~
TypeScript ファーストステップ (Rev.2) ~ Any browser. Any host. Any OS. Open Source. ~Akira Inoue
 
実行トレース間のデータの差異に基づくデータフロー解析手法の提案
実行トレース間のデータの差異に基づくデータフロー解析手法の提案実行トレース間のデータの差異に基づくデータフロー解析手法の提案
実行トレース間のデータの差異に基づくデータフロー解析手法の提案Kamiya Toshihiro
 
Javaセキュアコーディングセミナー東京第3回講義
Javaセキュアコーディングセミナー東京第3回講義Javaセキュアコーディングセミナー東京第3回講義
Javaセキュアコーディングセミナー東京第3回講義JPCERT Coordination Center
 
LEGO MINDSTORMS EV3 API
LEGO MINDSTORMS EV3 APILEGO MINDSTORMS EV3 API
LEGO MINDSTORMS EV3 APIAkira Hatsune
 

Similaire à Introduction to Roslyn (20)

Introduction of Python
Introduction of PythonIntroduction of Python
Introduction of Python
 
MakeGoodで快適なテスト駆動開発を
MakeGoodで快適なテスト駆動開発をMakeGoodで快適なテスト駆動開発を
MakeGoodで快適なテスト駆動開発を
 
C#勉強会 ~ C#9の新機能 ~
C#勉強会 ~ C#9の新機能 ~C#勉強会 ~ C#9の新機能 ~
C#勉強会 ~ C#9の新機能 ~
 
po-2. Python プログラミングの基本
po-2. Python プログラミングの基本po-2. Python プログラミングの基本
po-2. Python プログラミングの基本
 
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 手順書(共有パラメー...
Test Manager + Team Foundation Server /Visual Studio Team Services 手順書(共有パラメー...
 
Introduction to cython
Introduction to cythonIntroduction to cython
Introduction to cython
 
Intel OpenVINO™ ツールキットのご紹介
Intel OpenVINO™ ツールキットのご紹介Intel OpenVINO™ ツールキットのご紹介
Intel OpenVINO™ ツールキットのご紹介
 
CLRの基礎 - プログラミング .NET Framework 第3版 読書会
CLRの基礎 - プログラミング .NET Framework 第3版 読書会CLRの基礎 - プログラミング .NET Framework 第3版 読書会
CLRの基礎 - プログラミング .NET Framework 第3版 読書会
 
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...
 
pf-1. Python,Google Colaboratory
pf-1. Python,Google Colaboratorypf-1. Python,Google Colaboratory
pf-1. Python,Google Colaboratory
 
po-1. プログラミング入門
po-1. プログラミング入門po-1. プログラミング入門
po-1. プログラミング入門
 
20171212 titech lecture_ishizaki_public
20171212 titech lecture_ishizaki_public20171212 titech lecture_ishizaki_public
20171212 titech lecture_ishizaki_public
 
研究生のためのC++ no.2
研究生のためのC++ no.2研究生のためのC++ no.2
研究生のためのC++ no.2
 
つくってあそぼ ラムダ計算インタプリタ
つくってあそぼ ラムダ計算インタプリタつくってあそぼ ラムダ計算インタプリタ
つくってあそぼ ラムダ計算インタプリタ
 
Visual Studio による開発環境・プログラミングの進化
Visual Studio による開発環境・プログラミングの進化Visual Studio による開発環境・プログラミングの進化
Visual Studio による開発環境・プログラミングの進化
 
わんくまT78 mfcを始めようとしてみた
わんくまT78 mfcを始めようとしてみたわんくまT78 mfcを始めようとしてみた
わんくまT78 mfcを始めようとしてみた
 
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. ~
TypeScript ファーストステップ (Rev.2) ~ Any browser. Any host. Any OS. Open Source. ~
 
実行トレース間のデータの差異に基づくデータフロー解析手法の提案
実行トレース間のデータの差異に基づくデータフロー解析手法の提案実行トレース間のデータの差異に基づくデータフロー解析手法の提案
実行トレース間のデータの差異に基づくデータフロー解析手法の提案
 
Javaセキュアコーディングセミナー東京第3回講義
Javaセキュアコーディングセミナー東京第3回講義Javaセキュアコーディングセミナー東京第3回講義
Javaセキュアコーディングセミナー東京第3回講義
 
LEGO MINDSTORMS EV3 API
LEGO MINDSTORMS EV3 APILEGO MINDSTORMS EV3 API
LEGO MINDSTORMS EV3 API
 

Plus de Yuki Igarashi

.NET Coreとツール類の今
.NET Coreとツール類の今.NET Coreとツール類の今
.NET Coreとツール類の今Yuki Igarashi
 
論文紹介:The wavelet matrix
論文紹介:The wavelet matrix論文紹介:The wavelet matrix
論文紹介:The wavelet matrixYuki Igarashi
 
Introduction to VSCode
Introduction to VSCodeIntroduction to VSCode
Introduction to VSCodeYuki Igarashi
 
それっぽく感じる機械学習
それっぽく感じる機械学習それっぽく感じる機械学習
それっぽく感じる機械学習Yuki Igarashi
 
Visual Studio 拡張機能の作り方
Visual Studio 拡張機能の作り方Visual Studio 拡張機能の作り方
Visual Studio 拡張機能の作り方Yuki Igarashi
 
Azure MLで何かやる
Azure MLで何かやるAzure MLで何かやる
Azure MLで何かやるYuki Igarashi
 
Microsoft Azure 概要
Microsoft Azure 概要Microsoft Azure 概要
Microsoft Azure 概要Yuki Igarashi
 
続・Kinect v2を通してMicrosoft技術を考える
続・Kinect v2を通してMicrosoft技術を考える続・Kinect v2を通してMicrosoft技術を考える
続・Kinect v2を通してMicrosoft技術を考えるYuki Igarashi
 
Kinect v2を通してMicrosoft技術を考える
Kinect v2を通してMicrosoft技術を考えるKinect v2を通してMicrosoft技術を考える
Kinect v2を通してMicrosoft技術を考えるYuki Igarashi
 
君も今日からWebMatrixMan(仮)
君も今日からWebMatrixMan(仮)君も今日からWebMatrixMan(仮)
君も今日からWebMatrixMan(仮)Yuki Igarashi
 
Visual Studio付きWindowsインスタンスの利用方法
Visual Studio付きWindowsインスタンスの利用方法Visual Studio付きWindowsインスタンスの利用方法
Visual Studio付きWindowsインスタンスの利用方法Yuki Igarashi
 
//publish/ MSPTutorial 応用編
//publish/ MSPTutorial 応用編//publish/ MSPTutorial 応用編
//publish/ MSPTutorial 応用編Yuki Igarashi
 
Community Camp 2014 Tohoku LT
Community Camp 2014 Tohoku LTCommunity Camp 2014 Tohoku LT
Community Camp 2014 Tohoku LTYuki Igarashi
 

Plus de Yuki Igarashi (15)

.NET Coreとツール類の今
.NET Coreとツール類の今.NET Coreとツール類の今
.NET Coreとツール類の今
 
論文紹介:The wavelet matrix
論文紹介:The wavelet matrix論文紹介:The wavelet matrix
論文紹介:The wavelet matrix
 
Introduction to VSCode
Introduction to VSCodeIntroduction to VSCode
Introduction to VSCode
 
それっぽく感じる機械学習
それっぽく感じる機械学習それっぽく感じる機械学習
それっぽく感じる機械学習
 
Visual Studio 拡張機能の作り方
Visual Studio 拡張機能の作り方Visual Studio 拡張機能の作り方
Visual Studio 拡張機能の作り方
 
Azure MLで何かやる
Azure MLで何かやるAzure MLで何かやる
Azure MLで何かやる
 
Microsoft Azure 概要
Microsoft Azure 概要Microsoft Azure 概要
Microsoft Azure 概要
 
続・Kinect v2を通してMicrosoft技術を考える
続・Kinect v2を通してMicrosoft技術を考える続・Kinect v2を通してMicrosoft技術を考える
続・Kinect v2を通してMicrosoft技術を考える
 
Kinect v2を通してMicrosoft技術を考える
Kinect v2を通してMicrosoft技術を考えるKinect v2を通してMicrosoft技術を考える
Kinect v2を通してMicrosoft技術を考える
 
君も今日からWebMatrixMan(仮)
君も今日からWebMatrixMan(仮)君も今日からWebMatrixMan(仮)
君も今日からWebMatrixMan(仮)
 
Visual Studio付きWindowsインスタンスの利用方法
Visual Studio付きWindowsインスタンスの利用方法Visual Studio付きWindowsインスタンスの利用方法
Visual Studio付きWindowsインスタンスの利用方法
 
EXTREME AZURE 2
EXTREME AZURE 2EXTREME AZURE 2
EXTREME AZURE 2
 
//publish/ MSPTutorial 応用編
//publish/ MSPTutorial 応用編//publish/ MSPTutorial 応用編
//publish/ MSPTutorial 応用編
 
Community Camp 2014 Tohoku LT
Community Camp 2014 Tohoku LTCommunity Camp 2014 Tohoku LT
Community Camp 2014 Tohoku LT
 
VBCPP - ICT+R 2012
VBCPP - ICT+R 2012VBCPP - ICT+R 2012
VBCPP - ICT+R 2012
 

Introduction to Roslyn