SlideShare a Scribd company logo
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.CShar
p/
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
ありがとうございました。

More Related Content

PPTX
2014 08-30 life with roslyn
PDF
C#でもメタプログラミングがしたい!!
PDF
CotEditor Script
PDF
新・ReVIEWパーサについて
PDF
C#でわかる こわくないMonad
PDF
TypeScript 型定義ファイルのある開発 TypeScript勉強会 VSハッカソン倶楽部
PDF
jQuery 対応ライブラリと TypeScript
PDF
Multi paradigm design
2014 08-30 life with roslyn
C#でもメタプログラミングがしたい!!
CotEditor Script
新・ReVIEWパーサについて
C#でわかる こわくないMonad
TypeScript 型定義ファイルのある開発 TypeScript勉強会 VSハッカソン倶楽部
jQuery 対応ライブラリと TypeScript
Multi paradigm design

What's hot (20)

PDF
3日時間をもらったのでTypeScriptを触ってみた
PDF
TypeScriptは明日から使うべき
PDF
Kanrk05 .Netでお仕事しているプログラマがスクリプト言語として使うRuby
PPTX
20200809 jcdug lt
PDF
Boost container feature
PDF
[RubyMotion LT] nitronに見るiosアプリ開発の未来
PPTX
ES6,7で書ける JavaScript
PDF
Google Glassでできること XE12版 最新開発情報 Mirror API & GDK
PPTX
Ruby on Rails を用いたWEBアプリケーションの開発
PDF
PhpStormを使おう --高槻からは快速急行が早くなります #jbugj
PPTX
20200714 cogbot
PDF
3分で作る Kotlin Friendly な API
PDF
Objective-Cプログラマのためのswift導入法
PDF
PerlMotion
PDF
swiftで twitterクライアントを作る
PDF
TypeScript x Bot Framework
PPTX
Typescriptの中のこと(浅め)
PDF
Real World PHP in pixiv
PDF
Swiftでの関数型プログラミングについて考えていること
PDF
Start Concurrent
3日時間をもらったのでTypeScriptを触ってみた
TypeScriptは明日から使うべき
Kanrk05 .Netでお仕事しているプログラマがスクリプト言語として使うRuby
20200809 jcdug lt
Boost container feature
[RubyMotion LT] nitronに見るiosアプリ開発の未来
ES6,7で書ける JavaScript
Google Glassでできること XE12版 最新開発情報 Mirror API & GDK
Ruby on Rails を用いたWEBアプリケーションの開発
PhpStormを使おう --高槻からは快速急行が早くなります #jbugj
20200714 cogbot
3分で作る Kotlin Friendly な API
Objective-Cプログラマのためのswift導入法
PerlMotion
swiftで twitterクライアントを作る
TypeScript x Bot Framework
Typescriptの中のこと(浅め)
Real World PHP in pixiv
Swiftでの関数型プログラミングについて考えていること
Start Concurrent
Ad

Viewers also liked (20)

PDF
RailsのRailから解放される始めの一歩
PPTX
C sharp6
PPTX
C#4.0 と Visual Studio 2010/.NET Framework 4.0~ここが Cool! いけてる機能10連発!~
PDF
「LINQ」っていう名前だけでも 覚えて帰ってください!
PPTX
C# LINQ ~深く知って、使いまくろう~
PPTX
C#の書き方
PDF
Modern C# Programming 現代的なC#の書き方、ライブラリの選び方
PDF
ZeroFormatterに見るC#で最速のシリアライザを作成する100億の方法
PDF
Photon Server Deep Dive - PhotonWireの実装から見つめるPhotonServerの基礎と応用
PDF
What, Why, How Create OSS Libraries - 過去に制作した30のライブラリから見るC#コーディングテクニックと個人OSSの...
PPTX
RuntimeUnitTestToolkit for Unity
PDF
NextGen Server/Client Architecture - gRPC + Unity + C#
PDF
ZeroFormatter/MagicOnion - Fastest C# Serializer/gRPC based C# RPC
PDF
Sprocketsを捨てたい
PPT
Ciberassetjament
PDF
Hiperplasia suprarrenal
PDF
Práctica3 propiedades mecanicas_alvarogarciacamaron
PPTX
Live proud
PPT
介绍 上海市级控平台实现
PPTX
Job description kelompok 3
RailsのRailから解放される始めの一歩
C sharp6
C#4.0 と Visual Studio 2010/.NET Framework 4.0~ここが Cool! いけてる機能10連発!~
「LINQ」っていう名前だけでも 覚えて帰ってください!
C# LINQ ~深く知って、使いまくろう~
C#の書き方
Modern C# Programming 現代的なC#の書き方、ライブラリの選び方
ZeroFormatterに見るC#で最速のシリアライザを作成する100億の方法
Photon Server Deep Dive - PhotonWireの実装から見つめるPhotonServerの基礎と応用
What, Why, How Create OSS Libraries - 過去に制作した30のライブラリから見るC#コーディングテクニックと個人OSSの...
RuntimeUnitTestToolkit for Unity
NextGen Server/Client Architecture - gRPC + Unity + C#
ZeroFormatter/MagicOnion - Fastest C# Serializer/gRPC based C# RPC
Sprocketsを捨てたい
Ciberassetjament
Hiperplasia suprarrenal
Práctica3 propiedades mecanicas_alvarogarciacamaron
Live proud
介绍 上海市级控平台实现
Job description kelompok 3
Ad

Similar to Roslynで体験してみるC#スクリプト #cs_fukuoka (20)

PPTX
C# と .NET と ・・・
PDF
Visual Studioで始めるTypeScript開発入門
PPTX
Visual Studio Code でプログラムをデバッグしよう!
PDF
サーバーだけじゃない!Linux デスクトップを使い倒そう その3 ― 今話題の Kotlin から Ruby、C++ 1x…の開発環境を整える
PPTX
C#スクリプティングをアプリケーションで使用する
PPTX
自己紹介とC# Devkitについて.pptx
PPTX
Xamarinでも有能な .NET Core
PDF
密着!わたしのコンソールアプリ開発環境
PPTX
広がる .Net
PDF
PyCharm入門
PDF
V6 Interpreter (Nagoya Geek Bar 2011-05-02)
PPTX
Win/Mac/Android/iOS向け クロスプラットフォーム開発にXamarinが うまくハマりそうだった話
PPTX
TypeScriptでCLIアプリケーション開発
PPTX
webアプリケーションフレームワークの話
PPTX
Visual Studio Code で C# でのアプリ開発
PPTX
Alt#0x008 2017/5/20
PPTX
Visual Studio CodeでRを使う
PPTX
継続的インテグレーション3分クッキング
PPTX
Uno Platform 入門 2020/04/03
PDF
20140629 firefoxos-devenv
C# と .NET と ・・・
Visual Studioで始めるTypeScript開発入門
Visual Studio Code でプログラムをデバッグしよう!
サーバーだけじゃない!Linux デスクトップを使い倒そう その3 ― 今話題の Kotlin から Ruby、C++ 1x…の開発環境を整える
C#スクリプティングをアプリケーションで使用する
自己紹介とC# Devkitについて.pptx
Xamarinでも有能な .NET Core
密着!わたしのコンソールアプリ開発環境
広がる .Net
PyCharm入門
V6 Interpreter (Nagoya Geek Bar 2011-05-02)
Win/Mac/Android/iOS向け クロスプラットフォーム開発にXamarinが うまくハマりそうだった話
TypeScriptでCLIアプリケーション開発
webアプリケーションフレームワークの話
Visual Studio Code で C# でのアプリ開発
Alt#0x008 2017/5/20
Visual Studio CodeでRを使う
継続的インテグレーション3分クッキング
Uno Platform 入門 2020/04/03
20140629 firefoxos-devenv

More from Yuta Matsumura (20)

PDF
「自分のとこでは動くけど…」を無くす devcontainer
PDF
チーム開発で徐々にコード品質をあげていく取り組み
PDF
.NETのサポートポリシーのおさらい #csharptokyo
PDF
App Modernization for .NET
PDF
分かったうえではじめるCI/CD
PDF
VSCodeで始めるAzure Static Web Apps開発
PDF
いつでもどこでも .NET
PDF
.NET アプリを改善して実践する継続的インテグレーション
PDF
マイクロサービス開発が捗る Project Tye
PDF
オンライン中心だから地方のコミュニティも見てみませんか? - Fukuoka.NETの紹介
PDF
Azure の ID 管理サービスに LINE ログインを組み込もう
PDF
Blazor Server テンプレート解説
PDF
The Twelve-Factor (A|M)pp with C#
PDF
改めて C# でできることを振り返る
PDF
スタートアップ企業が実践するクラウドネイティブアプリケーションの開発手法
PDF
忙しい人のための .NET Conf 2019 まとめ
PDF
.NET Conf の歩き方
PDF
PHPカンファレンス福岡2019 閉会式
PDF
PHPカンファレンス福岡2019 開会式
PDF
これから始める Bot Builder 開発のコツと舞台裏
「自分のとこでは動くけど…」を無くす devcontainer
チーム開発で徐々にコード品質をあげていく取り組み
.NETのサポートポリシーのおさらい #csharptokyo
App Modernization for .NET
分かったうえではじめるCI/CD
VSCodeで始めるAzure Static Web Apps開発
いつでもどこでも .NET
.NET アプリを改善して実践する継続的インテグレーション
マイクロサービス開発が捗る Project Tye
オンライン中心だから地方のコミュニティも見てみませんか? - Fukuoka.NETの紹介
Azure の ID 管理サービスに LINE ログインを組み込もう
Blazor Server テンプレート解説
The Twelve-Factor (A|M)pp with C#
改めて C# でできることを振り返る
スタートアップ企業が実践するクラウドネイティブアプリケーションの開発手法
忙しい人のための .NET Conf 2019 まとめ
.NET Conf の歩き方
PHPカンファレンス福岡2019 閉会式
PHPカンファレンス福岡2019 開会式
これから始める Bot Builder 開発のコツと舞台裏

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