Upload
shibuki
View
1.993
Download
4
Embed Size (px)
Citation preview
セッションの目的とゴールと注意• 目的• Roslyn の全体像についてご理解を深めていただきます(と、いいな)
• ゴール• 「紹介記事を読んだことがある」から、もう 20cm ~ 30cm くらい理
解が深まる• 懇親会で Roslyn の今後についてご歓談 w
• 注意• サンプルプロジェクト動かしてみるとかは、色んな人があちこちで
やってるのでやりません (^^;
.NET Compiler Platform (“Roslyn”)
• 公式サイトhttp://msdn.microsoft.com/ja-jp/vstudio/roslyn.aspx
「 .NET コンパイラ プラットフォーム (“Roslyn”) は、オープンソース C# および Visual Basic コンパイラと豊富なコード分析 API を備えています。 Microsoft が Visual Studio の実装に使用しているのと同じ API を使用してコード分析ツールを構築できます。」
Roslyn 登場の背景(想像)• 潜在的なニーズは、かなり以前からあったハズ( MS 内部で)• コンパイラをマネージ言語で書き直したい• コンパイラ機能を部品化して、エディタやリファクタリングツールの
実装に利用したい
Roslyn 登場の背景(これも想像)• 決定的な引き金は Visual Studio 2010 (の開発)• IDE の GUI が WPF ベースになった• Visual Studio 拡張はマネージコードで書くのが標準となった• マネージな Visual Studio 拡張(エディタやリファクタリングツールな
ど)から、 C++ で記述されたコンパイラコンポーネントを扱うのはメンドクサイ!
→ Roslyn 始動
コンパイラとは?• Wikipedia
http://ja.wikipedia.org/wiki/コンパイラ
「コンパイラ( compiler )とは、プログラミング言語で書かれた、プログラムのソースコード(原始コード)を、機械語、ないしバイトコードなどの中間言語によるオブジェクトコード(目的コード)に翻訳 ( 変換 ) するプログラムである。」
ソースプログラム(C#
, VB)
字句
解析
構文
解析
意味
解析
コード
最適化
コード
生成
目的プログラム(IL)
コンパイルとは?
トークン 構文木・記号表 中間コー
ド中間コー
ド
• 以下の課程を実行
Compiler APIs の役割 #1
• コンパイラパイプライン• ソースコード解析
• 構文木、シンボル辞書、トークン情報などを生成• ソースコード生成
• 構文木、シンボル辞書、トークン辞書などよりソースコードを生成• コード生成
Compiler APIs の役割 #2
• 診断• 構文解析課程におけるエラー検出
• 検出されたエラーを、規定の形式で蓄積・公開• ユーザ定義診断情報の付加
• 静的解析ツールなどで検出したエラーを規定の形式で表現
Compiler APIs の役割 #3
• スクリプティング• スクリプティングホスト
• スクリプトとホストアプリケーション( IDE やユーザプログラムとの結合点)• スクリプティング
• ソースコードを動的にコンパイルして、実行する機構
Workspaces APIs の役割• 以下のオブジェクトモデルを扱う• Workspace
• ホストアプリケーション( IDE やユーザアプリケーション)が扱っているソリューション( .sln )と関連付けられたモデル
• Solution, Project, Document• IDE やユーザアプリケーソンが扱っているソリューション、およびソリューショ
ンに所属するプロジェクトやドキュメントの状態のスナップショット
Roslyn が提供するモデルの特徴• immutable (不変性 ) を重視している• SyntaxTree や Workspace といった主要なモデルはすべて
immutable• スレッド境界にまつわるなんやらかんやらを考慮しなくて済む
とはいえ、かなり思い切った設計•例えば、ユーザプログラム内で動的に構文木を組み立てたいよ
うな場合、ちょっとメンドクサイ• CodeDOM Providers for .NET Compiler Platform ("Roslyn”)• http://www.nuget.org/packages/Microsoft.CodeDom.Providers.DotNetCompi
lerPlatform/0.2.0-pre
まとめ• Roslyn の使命は「コンパイラのプラットフォーム化」• .NET Compiler Platform (“Roslyn”) は3層からなる API を公開• Roslyn が公開する API を利用することで、ソースコードを扱う
ツールやアプリケーションの開発を強力に支援
リソース• MSDN
• http://msdn.microsoft.com/ja-jp/vstudio/roslyn.aspx
• CodePlex• http://roslyn.codeplex.com/
• Visual Studio 14 CTP3• http://www.visualstudio.com/en-us/downloads/visual-studio-14-ctp-vs.aspx
• NuGet Gallary• http://www.nuget.org/packages/Microsoft.CodeAnalysis
• Language feature implementation status• https://roslyn.codeplex.com/wikipage?title=Language%20Feature%20Status
&referringTitle=Documentation