25
Roslynで体験してみる “C#スクリプト2015/05/29 C#勉強会 松村 優大

Roslynで体験してみるC#スクリプト #cs_fukuoka

Embed Size (px)

Citation preview

Roslynで体験してみる“C#スクリプト”

2015/05/29 C#勉強会

松村優大

自己紹介

•松村優大 (@tsubakimoto_s)

• WinForms, ASP.NET 使いのプログラマー

•島根県出身の27歳(まだ若手枠?)

• I ♥ Yankees

2

Windowsで扱えるスクリプト

•バッチスクリプト ( .bat, .cmd, .ps1 )

• Windows Scripting Host ( .vbs, .js )

• RubyやPythonなど

• 実行環境の構築が必要

3

C#スクリプト

いやいやC#って

スクリプト言語

じゃねーし

Roslyn

Roslyn

• C#で作られた新しい .NET のコンパイラプラットフォーム

• 2009年から設計が始まり、2014年にオープンソース化

• https://github.com/dotnet/roslyn

7

Roslyn

8

画像引用 : Roslyn Overview

それぞれのAPI

• Compiler API

• これまでのコンパイラの機能を提供するAPI

• Workspaces API

• ソリューションやプロジェクトを扱う機能を提供するAPI

• Features API

• リファクタリングやコード補完などの機能を提供するAPI

9

Roslyn

10

画像引用 : Roslyn Overview

Scripting APIs

Roslynを使う

• GitHubからソースを入手しビルドする

• https://github.com/dotnet/roslyn

• NuGetからパッケージを入手する

• http://www.nuget.org/packages/Microsoft.CodeAnalysis.CSharp/

• http://www.nuget.org/packages/Microsoft.CodeAnalysis.Scripting.CSharp/

11

ハマったポイント

• CSharpScript.Createメソッド

• ScriptOptionsクラス

12

簡単なサンプル

// using Microsoft.CodeAnalysis.Scripting;

var code = "Console.WriteLine(¥"Hello world!¥");";

var script = CSharpScript.Create(code);

script.Run();

13

簡単なサンプル

14

CSharpScript.Createメソッド

• public static Script Create(string code);

• [code] に定義されたC#スクリプトを生成する。

• System名前空間のみ組込まれている。

• public static Script Create(string code, ScriptOptions options);

• [code] に定義されたC#スクリプトを生成する。

• 組込む名前空間は [options] に指定する。

15

ScriptOptionsクラス

• Options for creating and running scripts.

• → スクリプトの作成と実行のオプション。

•⇒スクリプトに名前空間(using)を指定するオプション。

16

ScriptOptionsクラス

• WithReferences(IEnumerable<Assembly> assemblies);

• 組込む名前空間のアセンブリ情報を指定する。

• “mscorlib.dll” は必須 (intやobjectのアセンブリを指定)。

• 独自のDLLファイルも指定可。

17

ScriptOptionsクラス

• WithNamespaces(IEnumerable<string> namespaces);

• 組込む名前空間を指定する。

• LINQを使いたいなら “System.Linq” を記述する。

18

サンプルhttps://github.com/tsubakimoto/CSharpScriptSample

19

使い道を考えてみた

•バッチファイルをC#で書き換える

• オブジェクトが扱えるため、柔軟なバッチ処理が可能

• WindowsならPowerShellで十分かもしれないが、Mono環境下のスクリプト処理として有効

• JScriptの代わりとして使う

• いい加減 JScript やめたい (切実)

• プログラミング言語を揃えられればメンテナンス性も上がるはず

20

オマケ

21

.NETオープンソース化の恩恵

• .NET Frameworkの内部処理(コード)が分かるようになった

• Reference Source

• .NET Frameworkのオンラインソースコードブラウザ

• Roslynで構築されている

• http://referencesource.microsoft.com/ (.NET Framework)

• http://source.roslyn.io/ (Roslyn)

•自分がコードを書くときに作法の参考にしている

22

参考リンク

• dotnet/roslyn

• Roslyn Overview

• Roslyn for Scriptingで、あなたのアプリケーションにもC#スクリプトを!! | kekyoの丼

• Dave Glick - Introduction to Scripting with the .NET Compiler

Platform (Roslyn)

• オープンソース化の旅: Roslyn の 1 年目の試行錯誤とその成果 -

Visual Studio 日本チームブログ - Site Home - MSDN Blogs

23

告知

•草ソフトボールのメンバー募集中です!マネージャーも!

•月2回、日曜日、南区を中心に活動中です。

•ソフトボールをしたい、いい汗をかきたいという方は

お待ちしています!

•深刻な人数不足のため、お知り合いにもシェアして下さい。

• http://www.ikz.jp/hp/alphas-club/

24

ありがとうございました。