SlideShare a Scribd company logo
Submit Search
Upload
Login
Signup
2014 08-30 life with roslyn
Report
shibuki
Follow
Sep. 16, 2014
•
0 likes
•
8,342 views
1
of
26
2014 08-30 life with roslyn
Sep. 16, 2014
•
0 likes
•
8,342 views
Download Now
Download to read offline
Report
Engineering
次期 Visual Studio への搭載がアナウンスされた .NET Compiler Patform ("Roslyn") の要点を、コンパクトにまとめてお話ししたいと思います。
shibuki
Follow
Recommended
Roslynで体験してみるC#スクリプト #cs_fukuoka
Yuta Matsumura
2.1K views
•
25 slides
C#でもメタプログラミングがしたい!!
TATSUYA HAYAMIZU
16.4K views
•
43 slides
IDEALIZE YOU
佑介 九岡
6.2K views
•
42 slides
WebStormでできること
kamiyam .
8K views
•
16 slides
C#でわかる こわくないMonad
Kouji Matsui
22.9K views
•
78 slides
新・ReVIEWパーサについて
masayoshi takahashi
8.1K views
•
23 slides
More Related Content
What's hot
jQuery 対応ライブラリと TypeScript
インフラジスティックス・ジャパン株式会社
5K views
•
23 slides
TypeScript 型定義ファイルのある開発 TypeScript勉強会 VSハッカソン倶楽部
Masahiro Wakame
12.8K views
•
56 slides
CotEditor Script
Kosuke Usami
1K views
•
20 slides
TypeScriptは明日から使うべき
Masahiro Wakame
6.1K views
•
36 slides
TypeScript超入門
Narami Kiyokura
22.9K views
•
63 slides
はじめよう TypeScript - 入門から実践まで - 素の JavaScript とはさようなら!
Jun-ichi Sakamoto
15.8K views
•
68 slides
What's hot
(20)
jQuery 対応ライブラリと TypeScript
インフラジスティックス・ジャパン株式会社
•
5K views
TypeScript 型定義ファイルのある開発 TypeScript勉強会 VSハッカソン倶楽部
Masahiro Wakame
•
12.8K views
CotEditor Script
Kosuke Usami
•
1K views
TypeScriptは明日から使うべき
Masahiro Wakame
•
6.1K views
TypeScript超入門
Narami Kiyokura
•
22.9K views
はじめよう TypeScript - 入門から実践まで - 素の JavaScript とはさようなら!
Jun-ichi Sakamoto
•
15.8K views
TypeScriptをオススメする理由
Yusuke Naka
•
13.3K views
Win32 APIをてなずけよう
Kouji Matsui
•
9.3K views
ES6,7で書ける JavaScript
Shin Sekaryo
•
1.1K views
Visual Studioで始めるTypeScript開発入門
Narami Kiyokura
•
14.6K views
JavaScript ライブラリーを使い倒そう #buildinsider
Tsuyoshi Yasunishi
•
8.9K views
それPhpStormで出来るよ #phpstudy
晃 遠山
•
33.9K views
Ruby on Rails を用いたWEBアプリケーションの開発
Koichi Shimozono
•
7.9K views
Google Glassでできること XE12版 最新開発情報 Mirror API & GDK
Masahiro Wakame
•
3.2K views
パターンでわかる! .NET Coreの非同期処理
Kouji Matsui
•
21.8K views
Typescriptの中のこと(浅め)
Kazuhide Maruyama
•
4.9K views
Boost container feature
Akira Takahashi
•
3.4K views
Real World PHP in pixiv
Kenta USAMI
•
8.6K views
つぶLT20121215
遼一 杉浦
•
242 views
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
Koichiro Matsuoka
•
86K views
Viewers also liked
2014-08-30_aspnet-identity
kumake
21.1K views
•
31 slides
Xamarin で今日から始めるクロスプラットフォーム開発
友太 渡辺
16.8K views
•
28 slides
Xamarin 概要 @ 「Xamarin」って何? Wエバンジェリストによる特濃「Xamarin」勉強会 Rev2
Yoshito Tabuchi
223.8K views
•
43 slides
Web アプリケーション パターンと .NET - CLR/H 88 回 ~雪まつりデイ!~ バージョン
Akira Inoue
4.9K views
•
48 slides
Windows10時代のクロスプラットフォーム開発
Kazushi Kamegawa
2.8K views
•
22 slides
文字列結合のベンチマークをいろんな処理系でやってみた
kwatch
6.9K views
•
16 slides
Viewers also liked
(20)
2014-08-30_aspnet-identity
kumake
•
21.1K views
Xamarin で今日から始めるクロスプラットフォーム開発
友太 渡辺
•
16.8K views
Xamarin 概要 @ 「Xamarin」って何? Wエバンジェリストによる特濃「Xamarin」勉強会 Rev2
Yoshito Tabuchi
•
223.8K views
Web アプリケーション パターンと .NET - CLR/H 88 回 ~雪まつりデイ!~ バージョン
Akira Inoue
•
4.9K views
Windows10時代のクロスプラットフォーム開発
Kazushi Kamegawa
•
2.8K views
文字列結合のベンチマークをいろんな処理系でやってみた
kwatch
•
6.9K views
cordova/electronの構造を知る
Yasuharu Seki
•
5.6K views
T4使ってみた
Ryota Murohoshi
•
4.7K views
T4 Template 入門
Hiroshi Maekawa
•
17.4K views
Bodlogiin code
orgil
•
2K views
Visual Studio 2017 RC C# まわり
miso- soup3
•
3.4K views
C# 式木 (Expression Tree) ~ LINQをより深く理解するために ~
Fujio Kojima
•
18.9K views
Visual Studio 拡張機能の作り方
Yuki Igarashi
•
4.9K views
【14-D-4】デベロッパー戦国時代!ストーリーをつなぐ開発環境と3つの秘訣
智治 長沢
•
55.5K views
One ASP.NET の今とこれから
Akira Inoue
•
5.3K views
メタプログラミングって何だろう
Kota Mizushima
•
28.6K views
Beachhead implements new opcode on CLR JIT
Kouji Matsui
•
18.2K views
Metaprogramming Universe in C# - 実例に見るILからRoslynまでの活用例
Yoshifumi Kawai
•
125K views
ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発
慎一 古賀
•
85.9K views
ZeroFormatterに見るC#で最速のシリアライザを作成する100億の方法
Yoshifumi Kawai
•
54.1K views
Similar to 2014 08-30 life with roslyn
Tech fun rails_workshop
OMEGA (@equal_001)
1.7K views
•
30 slides
.NET Compiler Platform
信之 岩永
36K views
•
62 slides
Infrastructure as Code
裕貴 荒井
550 views
•
28 slides
XamarinStudio勉強会 2014/09/08
孝文 田村
1.3K views
•
55 slides
広がる .Net
信之 岩永
25.9K views
•
57 slides
Rubyの会社でPythonistaが3ヶ月生き延びた話
Tokoroten Nakayama
9.2K views
•
25 slides
Similar to 2014 08-30 life with roslyn
(20)
Tech fun rails_workshop
OMEGA (@equal_001)
•
1.7K views
.NET Compiler Platform
信之 岩永
•
36K views
Infrastructure as Code
裕貴 荒井
•
550 views
XamarinStudio勉強会 2014/09/08
孝文 田村
•
1.3K views
広がる .Net
信之 岩永
•
25.9K views
Rubyの会社でPythonistaが3ヶ月生き延びた話
Tokoroten Nakayama
•
9.2K views
Rubyの会社でPythonistaが三ヶ月生き延びた話
Drecom Co., Ltd.
•
3.7K views
C#とILとネイティブと
信之 岩永
•
26.1K views
「速」を落とさないコードレビュー
Takafumi ONAKA
•
55.4K views
XP祭り関西2011 森崎 修司「プラクティスが有効にはたらく前提は明らかになっていますか?」
Shuji Morisaki
•
1.6K views
Azure Functions で Google Home, Amazon Echo, LINE Clova スキル開発 #decode19
Madoka Chiyoda
•
5.1K views
LightSwitch 結局何ができるの
Yoshitaka Seo
•
1.1K views
APIドキュメントの話 #sphinxjp
Takeshi Komiya
•
10.5K views
TypeScript x Bot Framework
Kazumi IWANAGA
•
468 views
ゼロからのプログラミングRails講座 Codeanywhere版
DIVE INTO CODE Corp.
•
10.7K views
Introduction to Roslyn
Yuki Igarashi
•
3.5K views
Net fringejp2016
Yusuke Fujiwara
•
2.1K views
Custom Vision
Tomokazu Kizawa
•
123 views
Ember コミュニティとわたし
Ryunosuke SATO
•
7.5K views
最近のフロントエンドツールの紹介
Ryo Iinuma
•
11.8K views
2014 08-30 life with roslyn
1.
Life with Roslyn
~30分間で分かったツモリになるCompiler as a Service~ 渋木宏明(しぶきひろあき)
2.
セッションの目的とゴールと注意 • 目的
• Roslyn の全体像についてご理解を深めていただきます(と、いいな) • ゴール • 「紹介記事を読んだことがある」から、もう20cm~30cm くらい理解が深まる • 懇親会でRoslyn の今後についてご歓談w • 注意 • サンプルプロジェクト動かしてみるとかは、色んな人があちこちでやってるの でやりません(^^;
3.
アジェンダ • 起
「Roslyn の使命」 • 承 「コンパイラの基礎知識」 • 転 「Roslyn のカタチ」 • 結 「まとめ他」
4.
起 Roslyn の使命
5.
.NET Compiler Platform
(“Roslyn”) • 公式サイト http://msdn.microsoft.com/ja-jp/vstudio/roslyn.aspx 「.NET コンパイラプラットフォーム(“Roslyn”) は、オープンソースC# および Visual Basic コンパイラと豊富なコード分析API を備えています。Microsoft が Visual Studio の実装に使用しているのと同じAPI を使用してコード分析ツー ルを構築できます。」
6.
Roslyn 登場の背景(想像) •
潜在的なニーズは、かなり以前からあったハズ(MS 内部で) • コンパイラをマネージ言語で書き直したい • コンパイラ機能を部品化して、エディタやリファクタリングツールの実装に利 用したい
7.
Roslyn 登場の背景(これも想像) •
決定的な引き金はVisual Studio 2010(の開発) • IDE のGUI がWPF ベースになった • Visual Studio 拡張はマネージコードで書くのが標準となった • マネージなVisual Studio 拡張(エディタやリファクタリングツールなど)から、 C++ で記述されたコンパイラコンポーネントを扱うのはメンドクサイ! → Roslyn 始動
8.
Roslyn の使命 •
「コンパイラのプラットフォーム化」 • C#, VB コンパイラをマネージ言語で再構築 • コンパイラの機能をMicrosoft 内外の開発者に向けて公開
9.
承 コンパイラの基礎知識
10.
コンパイラとは? • Wikipedia
http://ja.wikipedia.org/wiki/コンパイラ 「コンパイラ(compiler)とは、プログラミング言語で書かれた、プログ ラムのソースコード(原始コード)を、機械語、ないしバイトコードなど の中間言語によるオブジェクトコード(目的コード)に翻訳(変換)する プログラムである。」
11.
コンパイラの役割 ソース プログラム
(C#, VB) コンパイル 目的 プログラム (IL) • 入力: ソースプログラム • 出力: 目的プログラム
12.
• 以下の課程を実行 ソース
プログラム (C#, VB) 字句 解析 構文 解析 意味 解析 コード 最適化 コード 生成 目的 プログラム (IL) コンパイルとは? トークン構文木・記号表中間コード中間コード
13.
転 Roslyn のカタチ
14.
Roslyn のAPI 階層
15.
Compiler APIs •
伝統的なコンパイラ機能をAPI として公開
16.
Compiler APIs の役割#1
• コンパイラパイプライン • ソースコード解析 • 構文木、シンボル辞書、トークン情報などを生成 • ソースコード生成 • 構文木、シンボル辞書、トークン辞書などよりソースコードを生成 • コード生成
17.
Compiler APIs の役割#2
• 診断 • 構文解析課程におけるエラー検出 • 検出されたエラーを、規定の形式で蓄積・公開 • ユーザ定義診断情報の付加 • 静的解析ツールなどで検出したエラーを規定の形式で表現
18.
Compiler APIs の役割#3
• スクリプティング • スクリプティングホスト • スクリプトとホストアプリケーション(IDE やユーザプログラムとの結合点) • スクリプティング • ソースコードを動的にコンパイルして、実行する機構
19.
Workspaces APIs •
ソリューションやプロジェクトを扱う機能をAPI として公開 • Visual Studio IDE との依存関係を持たない
20.
Workspaces APIs の役割
• 以下のオブジェクトモデルを扱う • Workspace • ホストアプリケーション(IDE やユーザアプリケーション)が扱っているソリューション (.sln)と関連付けられたモデル • Solution, Project, Document • IDE やユーザアプリケーソンが扱っているソリューション、およびソリューションに所属す るプロジェクトやドキュメントの状態のスナップショット
21.
Features APIs •
リファクタリング、補完、ナビゲーションなどの高度な機能をAPI とし て公開
22.
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
23.
結 まとめ他
24.
まとめ • Roslyn
の使命は「コンパイラのプラットフォーム化」 • .NET Compiler Platform (“Roslyn”) は3層からなるAPI を公開 • Roslyn が公開するAPI を利用することで、ソースコードを扱うツール やアプリケーションの開発を強力に支援
25.
リソース • 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&referri ngTitle=Documentation
26.
ご清聴ありがとうございました
Editor's Notes
イントロです。
まぁ、必要十分といえばそーなんですが、ちょっと味気ないですね。 Compiler as a Service ってキャッチフレーズって呼ばれてましたよね。 いつから .NET Compiler Platform って呼称がついたんだろう? Build (CodePlex 公開) の時?
とはいえ、コンパイラをイチから作り直すとなるとコンパイラ開発が一時的に停滞するカモという危惧もあり。。 ところが、もやもやっとした否定材料をうちけす大事件が!
前述のとおり潜在的なニーズはあったでしょう、
他にも副次効果的な狙いはさまざま帯びているでしょうが、 根幹たる使命は↑です。
本題に入る前に、少しだけコンパイラに関するおさらい。
最初の CTP は 2011 年後半リリースだったはずですが、 当時のキャッチフレーズは “Compiler as a Service” でした。 これがごく最近まで、Roslyn の紹介に用いられていたキャッチフレーズです。 2番目の
図にするとこんな感じ。
大抵の処理系でこんな感じ
ここからが本題。
写真撮っちゃダメ Project Home で公開されているドキュメントでは、 Roslyn が公開する API は図のような3層階層。 これは、上層の API は、下層の API を利用して構築されていることを示しています。
これも写真撮っちゃダメ Roslyn 全体の基盤となる階層。
ここがホントにホントの中核。
FxCop など静的解析ツールで検出された診断情報を、既定の形式で表現することで、IDE
コンパイラパイプラインの公開が主眼ですが、 診断とスクリプティングもこの階層に分類されています。 CodePlex のドキュメント的にはスクリプティングは「設計のレビュー中」となっていますが、CTP3 の段階ではどうなんでしょう??
Visual Studio IDE とアセンブリの依存関係は無い。 逆に言えば、Visual Studio との依存関係を持たない状態で sln や csproj を扱うために存在する。
Visual Studio IDE とアセンブリの依存関係は無い。 逆に言えば、Visual Studio との依存関係を持たない状態で sln や csproj を扱うために存在する。
階層図には出てきますが、ドキュメントで触れられてませんなw でも、NuGet package には含まれてます。 IDE のコードを操作する機能のうち「よくある系」が集約されている気配。
製品ページはランディング用で、ほとんど情報はありません。 ドキュメント、ソースコード、ディスカッションは CodePlex に集約されています。 Roslyn の最新機能を試すには、Visual Studio 14 CTP3 が必要です。 VS2012 用の EndUser Preview は、VS14CTP1 相当で更新が止まっています。 IDE やコンパイラの新機能は必要なくて、何か作って遊んでみるだけなら NuGet で Roslyn の「全部入り」パッケージが公開されています。 Language feature implementation status には、C#6 向け新機能の実装状況がまとめられているのでイロイロ捗ります。