Download - Kanrk05 .Netでお仕事しているプログラマがスクリプト言語として使うRuby
![Page 1: Kanrk05 .Netでお仕事しているプログラマがスクリプト言語として使うRuby](https://reader034.vdocuments.mx/reader034/viewer/2022052323/5592209e1a28abe4598b4684/html5/thumbnails/1.jpg)
.Netでお仕事しているプログラマが
スクリプト言語として使うRuby
![Page 2: Kanrk05 .Netでお仕事しているプログラマがスクリプト言語として使うRuby](https://reader034.vdocuments.mx/reader034/viewer/2022052323/5592209e1a28abe4598b4684/html5/thumbnails/2.jpg)
自己紹介
● 名前:岡田 真一 (OKADA SHINICHI)● Twitter:@shin_asou● お仕事 SIerのSE ● ERPソリューションパッケージの
開発等してます
![Page 3: Kanrk05 .Netでお仕事しているプログラマがスクリプト言語として使うRuby](https://reader034.vdocuments.mx/reader034/viewer/2022052323/5592209e1a28abe4598b4684/html5/thumbnails/3.jpg)
こんにちは!皆さんお仕事で
Ruby書いてますか?
![Page 4: Kanrk05 .Netでお仕事しているプログラマがスクリプト言語として使うRuby](https://reader034.vdocuments.mx/reader034/viewer/2022052323/5592209e1a28abe4598b4684/html5/thumbnails/4.jpg)
僕は.Net(C#、VB.NET)Verは1.1です。
![Page 5: Kanrk05 .Netでお仕事しているプログラマがスクリプト言語として使うRuby](https://reader034.vdocuments.mx/reader034/viewer/2022052323/5592209e1a28abe4598b4684/html5/thumbnails/5.jpg)
とても辛いです(.Net1.1のひどさが)
![Page 6: Kanrk05 .Netでお仕事しているプログラマがスクリプト言語として使うRuby](https://reader034.vdocuments.mx/reader034/viewer/2022052323/5592209e1a28abe4598b4684/html5/thumbnails/6.jpg)
.Net1.1とかいやなのでRuby使いたいです
![Page 7: Kanrk05 .Netでお仕事しているプログラマがスクリプト言語として使うRuby](https://reader034.vdocuments.mx/reader034/viewer/2022052323/5592209e1a28abe4598b4684/html5/thumbnails/7.jpg)
でも現実は・・・
![Page 8: Kanrk05 .Netでお仕事しているプログラマがスクリプト言語として使うRuby](https://reader034.vdocuments.mx/reader034/viewer/2022052323/5592209e1a28abe4598b4684/html5/thumbnails/8.jpg)
あらためてRubyとはなにか?
・ Railsを動かすためのプログラミング言語?
・ tDiaryを動かすためのプログラミング言語?
・ まとめるとWebアプリケーションを(以下略
![Page 9: Kanrk05 .Netでお仕事しているプログラマがスクリプト言語として使うRuby](https://reader034.vdocuments.mx/reader034/viewer/2022052323/5592209e1a28abe4598b4684/html5/thumbnails/9.jpg)
間違ってはいませんが・・・
![Page 10: Kanrk05 .Netでお仕事しているプログラマがスクリプト言語として使うRuby](https://reader034.vdocuments.mx/reader034/viewer/2022052323/5592209e1a28abe4598b4684/html5/thumbnails/10.jpg)
ruby-lang.orgによると
![Page 11: Kanrk05 .Netでお仕事しているプログラマがスクリプト言語として使うRuby](https://reader034.vdocuments.mx/reader034/viewer/2022052323/5592209e1a28abe4598b4684/html5/thumbnails/11.jpg)
ソースコード生成にRubyを使えばいいんじゃね?
![Page 12: Kanrk05 .Netでお仕事しているプログラマがスクリプト言語として使うRuby](https://reader034.vdocuments.mx/reader034/viewer/2022052323/5592209e1a28abe4598b4684/html5/thumbnails/12.jpg)
例:get;set;
![Page 13: Kanrk05 .Netでお仕事しているプログラマがスクリプト言語として使うRuby](https://reader034.vdocuments.mx/reader034/viewer/2022052323/5592209e1a28abe4598b4684/html5/thumbnails/13.jpg)
C#1.1の場合
![Page 14: Kanrk05 .Netでお仕事しているプログラマがスクリプト言語として使うRuby](https://reader034.vdocuments.mx/reader034/viewer/2022052323/5592209e1a28abe4598b4684/html5/thumbnails/14.jpg)
インスタンス変数の一覧からプロパティが自動で作成できれば
問題は解決する
![Page 15: Kanrk05 .Netでお仕事しているプログラマがスクリプト言語として使うRuby](https://reader034.vdocuments.mx/reader034/viewer/2022052323/5592209e1a28abe4598b4684/html5/thumbnails/15.jpg)
![Page 16: Kanrk05 .Netでお仕事しているプログラマがスクリプト言語として使うRuby](https://reader034.vdocuments.mx/reader034/viewer/2022052323/5592209e1a28abe4598b4684/html5/thumbnails/16.jpg)
![Page 17: Kanrk05 .Netでお仕事しているプログラマがスクリプト言語として使うRuby](https://reader034.vdocuments.mx/reader034/viewer/2022052323/5592209e1a28abe4598b4684/html5/thumbnails/17.jpg)
ファイルを行単位で読み込んで
前後の空白等を削除
![Page 18: Kanrk05 .Netでお仕事しているプログラマがスクリプト言語として使うRuby](https://reader034.vdocuments.mx/reader034/viewer/2022052323/5592209e1a28abe4598b4684/html5/thumbnails/18.jpg)
行を単語単位に分割してプロパティ用の文字列作成
![Page 19: Kanrk05 .Netでお仕事しているプログラマがスクリプト言語として使うRuby](https://reader034.vdocuments.mx/reader034/viewer/2022052323/5592209e1a28abe4598b4684/html5/thumbnails/19.jpg)
結果をArrayに入れておいて結果出力用のファイルに書き込む
![Page 20: Kanrk05 .Netでお仕事しているプログラマがスクリプト言語として使うRuby](https://reader034.vdocuments.mx/reader034/viewer/2022052323/5592209e1a28abe4598b4684/html5/thumbnails/20.jpg)
![Page 21: Kanrk05 .Netでお仕事しているプログラマがスクリプト言語として使うRuby](https://reader034.vdocuments.mx/reader034/viewer/2022052323/5592209e1a28abe4598b4684/html5/thumbnails/21.jpg)
今回はプロパティを例にしましたが
定型的な処理なら応用が効くと思います
![Page 22: Kanrk05 .Netでお仕事しているプログラマがスクリプト言語として使うRuby](https://reader034.vdocuments.mx/reader034/viewer/2022052323/5592209e1a28abe4598b4684/html5/thumbnails/22.jpg)
例:XML操作
![Page 23: Kanrk05 .Netでお仕事しているプログラマがスクリプト言語として使うRuby](https://reader034.vdocuments.mx/reader034/viewer/2022052323/5592209e1a28abe4598b4684/html5/thumbnails/23.jpg)
業務アプリケーションにありがちなもの
といえば?
![Page 24: Kanrk05 .Netでお仕事しているプログラマがスクリプト言語として使うRuby](https://reader034.vdocuments.mx/reader034/viewer/2022052323/5592209e1a28abe4598b4684/html5/thumbnails/24.jpg)
帳票
レイアウトファイルがXMLなのでこれを加工しようという話
![Page 25: Kanrk05 .Netでお仕事しているプログラマがスクリプト言語として使うRuby](https://reader034.vdocuments.mx/reader034/viewer/2022052323/5592209e1a28abe4598b4684/html5/thumbnails/25.jpg)
当然GUIデザイナは用意されていますが
![Page 26: Kanrk05 .Netでお仕事しているプログラマがスクリプト言語として使うRuby](https://reader034.vdocuments.mx/reader034/viewer/2022052323/5592209e1a28abe4598b4684/html5/thumbnails/26.jpg)
たまに辛い要件があるんですね例えば1ページ目と2ページ目でヘッダのレイアウトが違うとか
![Page 27: Kanrk05 .Netでお仕事しているプログラマがスクリプト言語として使うRuby](https://reader034.vdocuments.mx/reader034/viewer/2022052323/5592209e1a28abe4598b4684/html5/thumbnails/27.jpg)
そういう時はVBScriptもどきがあるのでそれを使って
処理を切り分けるんですが・・・
![Page 28: Kanrk05 .Netでお仕事しているプログラマがスクリプト言語として使うRuby](https://reader034.vdocuments.mx/reader034/viewer/2022052323/5592209e1a28abe4598b4684/html5/thumbnails/28.jpg)
Line1.Top = 1500Line1.Visible = False
みたいなコードがひたすら続いたりするんですね
![Page 29: Kanrk05 .Netでお仕事しているプログラマがスクリプト言語として使うRuby](https://reader034.vdocuments.mx/reader034/viewer/2022052323/5592209e1a28abe4598b4684/html5/thumbnails/29.jpg)
そこでXMLから項目情報抜き出して操作コードを出力
![Page 30: Kanrk05 .Netでお仕事しているプログラマがスクリプト言語として使うRuby](https://reader034.vdocuments.mx/reader034/viewer/2022052323/5592209e1a28abe4598b4684/html5/thumbnails/30.jpg)
11~13行目で条件を満たす項目を取得し、15~19行目でそれをすべて非表示にするコードを出力します。
![Page 31: Kanrk05 .Netでお仕事しているプログラマがスクリプト言語として使うRuby](https://reader034.vdocuments.mx/reader034/viewer/2022052323/5592209e1a28abe4598b4684/html5/thumbnails/31.jpg)
まとめ
たとえ別の言語を使っていても部分的にRubyを使える
ケースはあるのでそういった部分でRubyを使ってみてはいかがでしょうか?
![Page 32: Kanrk05 .Netでお仕事しているプログラマがスクリプト言語として使うRuby](https://reader034.vdocuments.mx/reader034/viewer/2022052323/5592209e1a28abe4598b4684/html5/thumbnails/32.jpg)
補足1
.Net1.1は辛いですが.Net3.0以降であればいろいろ改善され
ていいと思います。例えば今回のプロパティの
例も1行で書けるようになっています。
![Page 33: Kanrk05 .Netでお仕事しているプログラマがスクリプト言語として使うRuby](https://reader034.vdocuments.mx/reader034/viewer/2022052323/5592209e1a28abe4598b4684/html5/thumbnails/33.jpg)
補足2
Twitterでも指摘された件ですが例では出力コード組み立てを文字列で
やりましたが実際にはERBとかを使ったほうがいいと思います。
自分が使わなかった理由は例のスクリプトを書いた時にERBを知らなかったので文字列で
組み立てる方法を採用しました。
![Page 34: Kanrk05 .Netでお仕事しているプログラマがスクリプト言語として使うRuby](https://reader034.vdocuments.mx/reader034/viewer/2022052323/5592209e1a28abe4598b4684/html5/thumbnails/34.jpg)
補足2続き
基本使い捨てのスクリプトなので特に直す必要もなく今に至っています。
コード生成はしっかりメンテナンスする必要が無いので新しい知識を得る機会に乏しくなるという
のは課題の一つかなと思います。