Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

RubyからC#を扱う

1,335 views

Published on

第73回Ruby関西 発表資料
Ruby から C# を扱う方法の説明
ruby-csharp_script の説明

Published in: Technology
  • Be the first to comment

  • Be the first to like this

RubyからC#を扱う

  1. 1. RubyからC#を扱う 第73回 Ruby関西 勉強会 発表資料 FUNABARA Masao ( @107steps )
  2. 2. 2 概要 ● 自己紹介 ● ruby-csharp_script ● C# → Ruby ● Ruby → C# ● C# からの返り値 ● 課題
  3. 3. 3 自己紹介 • @107steps ( https://twitter.com/107steps ) • 舩原 理生 ( FUNABARA Masao ) • 個人事業主 • 仕事ください ( Ruby / C / C++ / C# / Xamarin ) • ブログ ( https://www.masoo.jp/blog ) • Ruby舞鶴やってます https://ruby-maizuru.doorkeeper.jp 北近畿に住んでいらっしゃる人がいたら 一緒にしましょう。
  4. 4. 4 ruby-csharp_script • https://github.com/masoo/ruby-csharp_script • Ruby から C# を扱いたくて作ったライブラリ • C# 製 • COM に登録して使う (Virtual Studio 2015 Communityを  管理者権限で実行してビルドすると簡単)
  5. 5. 5 RubyからC#スクリプトを動かすデモ #1 ruby-csharp_script_sample001.rb
  6. 6. 6 RubyからC#スクリプトを動かすデモ #2 ruby-csharp_script_sample002.rb
  7. 7. 7 RubyからC#スクリプトを動かすデモ #3 ruby-csharp_script_sample003.rb
  8. 8. 8 C# → Ruby • るびま 0021 号「 C# と Ruby を連携させる」を参考にしよう http://magazine.rubyist.net/?0021-RubyWithCSharp
  9. 9. 9 Ruby → C# その1 • IronRuby ( CRuby 1.9 compatibility ) http://ironruby.net
  10. 10. 10 Roslyn 登場 • Roslyn ( .Net Compiler Platform ) が Virtual Studio 2015 から搭載 • その機能の一つに注目
  11. 11. 11 Scripting API • Microsoft.CodeAnalysis.Csharp.Scripting • C# のソースコードをスクリプトとして実行 (コンパイルする C# 言語とちょっと違う) • C# での使い方は、 http://github.com/dotnet/roslyn/wiki/Scripting-API-Samples に記載
  12. 12. 12 Ruby → C# その2 • ruby-csharp_script というのを作った https://github.com/masoo/ruby-csharp_script • Microsoft.CodeAnalysis.Csharp.Scripting.CsharpScript を 薄く Wrapping • Ruby からは win32ole 経由で呼び出す
  13. 13. 13 C# で COMクラスを作る方法 • クラスとメソッドに GUID を割り振って、COM用の属性を指定してあげるとできる • 詳しくはマイクロソフトのサイトへGo https://msdn.microsoft.com/ja-jp/library/c3fd4a20.aspx​ https://msdn.microsoft.com/ja-jp/library/aa288455(v=vs.71).aspx
  14. 14. 14 Rubyからアクセスしたい時の注意点 • ターゲットプラットフォームを 「x86」にしないと win32ole から見えない
  15. 15. 15 C# Script の結果を Ruby Script に渡す int型 ruby-csharp_script_sample004.rb
  16. 16. 16 C# Script の結果を Ruby Script に渡す浮動小数点数型 ruby-csharp_script_sample005.rb
  17. 17. 17 C# Script の結果を Ruby Script に渡す 文字列型 ruby-csharp_script_sample006.rb
  18. 18. 18 C# Script の結果を Ruby Script に渡す 配列型 ruby-csharp_script_sample007.rb
  19. 19. 19 C# Script の結果を Ruby Script に渡す オブジェクト ruby-csharp_script_sample008.rb
  20. 20. 20 課題 • 32ビットファイルしか扱えていない win32ole から 登録された 64ビットファイルが見えない • 元のメソッドは非同期メソッド (async) だけど、 Rubyに来る前に同期してる。 非同期にできるかどうか不明だし、このままでもいい気もする • Gem にしたいけど、 dll ファイルとか、COM の登録どうしよう
  21. 21. 21 まとめ • IronRubyは開発止まってる • C# → Ruby は、るびまを見よう • Ruby → C# は COM を使おう • ビルドは 32 ビットで • ruby-csharp_script は、そのうち gem にしたい イラスト:いらすとや

×