SlideShare una empresa de Scribd logo
1 de 42
Descargar para leer sin conexión
Rubyの
 実装が
増えている
   arton
RubyKaigi 2007
アジェンダ
•処理系
•ブリッジ
•考察
•まとめ
前提と結論

選択肢が増えることは
     善
疑問
• なぜMatzRubyではないのか?
  –ここではCで書かれた、1.9
   以降はYARV上で実行される
   Rubyのこと。
 –本当のMatzRuby(MatzSandbox)
  は、別問題
JRuby
http://jruby.codehaus.org/
Java Virtual Machine
developers
Charles Nutter
Thomas E Enebo
Ola Bini
Nick Sieger
et al
インストールと使い方
• もう普通に使えるよ
• っていうか、午前のセッ
 ション
• http://dist.codehaus.o
  rg/jruby/
Gardens Point
Ruby.NET Compiler
http://plas.fit.qut.edu.au/ruby.net/

Common Language Runtime
developers
Professor John Gough
Dr Wayne Kelly
et al
インストールと使い方
• Visual Studio 2005と
• Visual Studio 2005 SDKを入れ
  たほうがベター (Interopが容
  易)
http://plas.fit.qut.edu.au/ruby.net/Download.aspx
からWindows Installerのリンク経由
 でmsiをダウンロードして、実行
GACマジック
C:¥WINDOWS¥assembly¥gac_msil¥qut.rubyru
  ntime¥0.8.0.0__834595ca8023c318¥QUT.R
  ubyRuntime.dll

他の言語から利用する場合には、
 QUT.RubyRuntime.dllを参照設定する
IronRuby
http://www.codeplex.com/?
Common Language Runtime
IronRuby
Ruby.NETの字句解析器と構文
 解析器を利用
 (ただし、生成される構文木
 はDLRを利用するので、まっ
 たく異なる実装となる)
7月のOSCONでリリース予定
 ライセンスはMs-PL
developers
John Lam
 et Microsoft DLR Team

http://www.iunknown.com/
http://www.codeplex.com/
関係ないので
  省略
このあたり?
•速度
•スレッド
•言語仕様がない
•ぎゃっ!(バグFixとは
関係なく動作が変わる)
速度
Ruby 1.9.1
(YARV)
  ko1
ぎゃっ!
(バグFixとは
 関係なく
動作が変わる)
mput knu
言語仕様がない
• 処理系作る人には大問題
    でも

ビジネスプログラマーは、
言語仕様を読まない。
(やさしい入門書を読む)
スレッド
• マルチプロセスを統合し
  て扱うフレームワーク
  (ライブラリ)の欠如に
  ついて語っているのであ
  れば、同意
スレッド
• 同時にランダムに実行される
  スレッドを正しく扱える?
• もし正しく扱えるのであれば、
  逆に必要ない(一部の特定分
  野を除く)んじゃない?
• (言ってみてるだけ?)
参考 (IIS)


ユーザーモード
カーネルモード
  HttpProtocolHandler
         キャッシュ
シェアドナッシング




シングルスレッドアパートメント
多重IO



Multiplexer

Ruby 1.8
マルチVM+緑スレッド


 Multiplexer
         Multiplexer

     Process
補足(6/10)
• セッション終了後、ko1さんから以下の指摘がある
 – Ruby1.8のThreadはスレッドの切り替えにスタックのコピーが
   必要となるため、ネイティブスレッドの切り替えより時間がか
   かる
   • 後出し(arton):消費されるCPU時間が平均的なIO待ち時間より短けれ
     ば意味はある(アプリケーションモデルに依存する世界に入ってくる
     ので、選択の問題ではないか?)
 – Ruby1.9のFiberは、VMスタックへのポインタの切り替えで済
   むため、Threadより軽量
 – ただし、現在のFiberの実装ではIO待ちによる他のFiberへの切
   り替えは行えないため、Threadの代替とはならないことは認識
   している
   • Ruby1.9のThreadが、良いとこどりを目指しているという点について
     は納得(arton)。
• したがって前頁の図は必ずしも理想的とは言えない→実行時
  モデルからパターンを抽出して、言語でサポートしたほうが
  良いものと、アプリケーションで考えるべきものとの切り分
  け、及び実装の現実性から総合的に判断しなければならない。
なぜ MatzRubyじゃないの?

• Silverlight (IronRuby)
 –Pseud Flash on CLR
 –理由は簡単(MatzRubyは
  動かない)
 –まだどこにもないけど
 –(……DLR)
なぜ MatzRubyじゃないの?
Stranger Than …




Rubyのビジネス価値
ブルーカヤック曰く
• 多言語統合
• JVMが動けばどこでも実行
• J2EEなどを利用可能
多言語統合?
• C API
• DL
• Win32OLE(ASR)
• ブリッジ(Rjb、
  RubyClr…)
• Ruby+固い言語+?
どこでも実行?
• MatzRubyはポータブル
• POSIX
 –Linux、Windows、
  Solaris、BSD、HPUX、
  DJGPP(DOS Extender)
 などにポートされている
明らかな利点
• C拡張ライブラリ
     VS
• Java/C#(VB)のクラス

 –開発の手引き、API、規約
 –やさしい入門書
VM既定クラスライブラリ
• GUI
 –Swing、Windows Forms
• RDBMS Interface
 –JDBC(JPA?)、ADO.NET
• Native Interface
 –NIO、P/Invoke
言語重要
ビジネスで利用される言
語は、ビジネス言語(ふ
いんき)を用いて説明で
きなければならない
例)速度、再利用、ス
レッド、callcc
まとめ
•MatzRuby
•プログラマに優しい
 Ruby
•プログラマを信用する
 Ruby
おまけの預言
これから、
インデント4桁、
ハードタブ(¥x09)
空白(¥x20)混在の
ソースが増える!
(Juggernautがそうだったなぁ)

Más contenido relacionado

La actualidad más candente

黑客江湖 阿里十周年分享
黑客江湖 阿里十周年分享黑客江湖 阿里十周年分享
黑客江湖 阿里十周年分享
ph4nt0m
 
JSplash swf to javascript converter(2008/9/30)
JSplash swf to javascript converter(2008/9/30)JSplash swf to javascript converter(2008/9/30)
JSplash swf to javascript converter(2008/9/30)
gyuque
 
Ppt Pdf
Ppt PdfPpt Pdf
Ppt Pdf
kumee
 
ソフトウェアの構造とオープン化
ソフトウェアの構造とオープン化ソフトウェアの構造とオープン化
ソフトウェアの構造とオープン化
Kiro Harada
 
Howtousenetboss
HowtousenetbossHowtousenetboss
Howtousenetboss
kumee
 
Windows Server 2008 伺服器虛擬化解決方案
Windows Server 2008 伺服器虛擬化解決方案Windows Server 2008 伺服器虛擬化解決方案
Windows Server 2008 伺服器虛擬化解決方案
Timothy Chen
 
第2回PHP懇親会発表資料
第2回PHP懇親会発表資料第2回PHP懇親会発表資料
第2回PHP懇親会発表資料
Masahiko Sakamoto
 

La actualidad más candente (20)

黑客江湖 阿里十周年分享
黑客江湖 阿里十周年分享黑客江湖 阿里十周年分享
黑客江湖 阿里十周年分享
 
cblue_grails@njug5
cblue_grails@njug5cblue_grails@njug5
cblue_grails@njug5
 
JSplash swf to javascript converter(2008/9/30)
JSplash swf to javascript converter(2008/9/30)JSplash swf to javascript converter(2008/9/30)
JSplash swf to javascript converter(2008/9/30)
 
Ppt Pdf
Ppt PdfPpt Pdf
Ppt Pdf
 
ソフトウェアの構造とオープン化
ソフトウェアの構造とオープン化ソフトウェアの構造とオープン化
ソフトウェアの構造とオープン化
 
Howtousenetboss
HowtousenetbossHowtousenetboss
Howtousenetboss
 
Ppt Pdf
Ppt PdfPpt Pdf
Ppt Pdf
 
Windows Server 2008 伺服器虛擬化解決方案
Windows Server 2008 伺服器虛擬化解決方案Windows Server 2008 伺服器虛擬化解決方案
Windows Server 2008 伺服器虛擬化解決方案
 
Androidの中身-第26回NaCl社内勉強会
Androidの中身-第26回NaCl社内勉強会Androidの中身-第26回NaCl社内勉強会
Androidの中身-第26回NaCl社内勉強会
 
Groovy Now And Future
Groovy Now And FutureGroovy Now And Future
Groovy Now And Future
 
Streaming of Huxley
Streaming of HuxleyStreaming of Huxley
Streaming of Huxley
 
Pilot
PilotPilot
Pilot
 
cblue@njug5
cblue@njug5cblue@njug5
cblue@njug5
 
Wiki Wiki Decade - WikiBaseとYukiWiki 1.x
Wiki Wiki Decade - WikiBaseとYukiWiki 1.xWiki Wiki Decade - WikiBaseとYukiWiki 1.x
Wiki Wiki Decade - WikiBaseとYukiWiki 1.x
 
WebDAV as Web API
WebDAV as Web APIWebDAV as Web API
WebDAV as Web API
 
第2回PHP懇親会発表資料
第2回PHP懇親会発表資料第2回PHP懇親会発表資料
第2回PHP懇親会発表資料
 
What is PHP Frameworks?
What is PHP Frameworks?What is PHP Frameworks?
What is PHP Frameworks?
 
ruby_from_office
ruby_from_officeruby_from_office
ruby_from_office
 
Enterprise 2.0 : 社内Wikiの目的
Enterprise 2.0 : 社内Wikiの目的Enterprise 2.0 : 社内Wikiの目的
Enterprise 2.0 : 社内Wikiの目的
 
RDF and FOAF
RDF and FOAFRDF and FOAF
RDF and FOAF
 

Destacado

マイスピッリット
マイスピッリットマイスピッリット
マイスピッリット
Katuhiro Kadena
 

Destacado (17)

DevLOVE甲子園「成功と失敗の狭間に横たわる2つのマネジメント」_yohhatu
DevLOVE甲子園「成功と失敗の狭間に横たわる2つのマネジメント」_yohhatuDevLOVE甲子園「成功と失敗の狭間に横たわる2つのマネジメント」_yohhatu
DevLOVE甲子園「成功と失敗の狭間に横たわる2つのマネジメント」_yohhatu
 
マイスピッリット
マイスピッリットマイスピッリット
マイスピッリット
 
Ruby – The Scripting Language
Ruby – The Scripting LanguageRuby – The Scripting Language
Ruby – The Scripting Language
 
家計簿
家計簿家計簿
家計簿
 
3分で読める「7つの習慣」超要約(スティーブン・R・コヴィー)
3分で読める「7つの習慣」超要約(スティーブン・R・コヴィー)3分で読める「7つの習慣」超要約(スティーブン・R・コヴィー)
3分で読める「7つの習慣」超要約(スティーブン・R・コヴィー)
 
3分で読める「道は開ける」超要約(デール・カーネギー)
3分で読める「道は開ける」超要約(デール・カーネギー)3分で読める「道は開ける」超要約(デール・カーネギー)
3分で読める「道は開ける」超要約(デール・カーネギー)
 
組織のナレッジ共有の促進方法 - 人を動かす
組織のナレッジ共有の促進方法 - 人を動かす組織のナレッジ共有の促進方法 - 人を動かす
組織のナレッジ共有の促進方法 - 人を動かす
 
Unixカーネルの設計 7 プロセスの制御
Unixカーネルの設計 7 プロセスの制御Unixカーネルの設計 7 プロセスの制御
Unixカーネルの設計 7 プロセスの制御
 
DSLの過去と未来
DSLの過去と未来DSLの過去と未来
DSLの過去と未来
 
全角チルダ問題
全角チルダ問題全角チルダ問題
全角チルダ問題
 
良いコードとは
良いコードとは良いコードとは
良いコードとは
 
プレゼンの技術
プレゼンの技術プレゼンの技術
プレゼンの技術
 
情報サイトの金持ちさんと貧乏さん
情報サイトの金持ちさんと貧乏さん情報サイトの金持ちさんと貧乏さん
情報サイトの金持ちさんと貧乏さん
 
超初心者向け・オンライン勉強会のススメ(WordCamp Tokyo 2016 LT スライド)
超初心者向け・オンライン勉強会のススメ(WordCamp Tokyo 2016 LT スライド)超初心者向け・オンライン勉強会のススメ(WordCamp Tokyo 2016 LT スライド)
超初心者向け・オンライン勉強会のススメ(WordCamp Tokyo 2016 LT スライド)
 
イマドキのExcelスクショの撮り方
イマドキのExcelスクショの撮り方イマドキのExcelスクショの撮り方
イマドキのExcelスクショの撮り方
 
CDI2.0アップデート&クックブック #JavaDayTokyo #jdt2016_4c
CDI2.0アップデート&クックブック #JavaDayTokyo #jdt2016_4cCDI2.0アップデート&クックブック #JavaDayTokyo #jdt2016_4c
CDI2.0アップデート&クックブック #JavaDayTokyo #jdt2016_4c
 
3分で読める デール・カーネギー「人を動かす」超要約
3分で読める デール・カーネギー「人を動かす」超要約3分で読める デール・カーネギー「人を動かす」超要約
3分で読める デール・カーネギー「人を動かす」超要約
 

Más de Akio Tajima (12)

変身動物園.pptx
変身動物園.pptx変身動物園.pptx
変身動物園.pptx
 
Rails,RSpec & Capybara で困った話
Rails,RSpec & Capybara で困った話Rails,RSpec & Capybara で困った話
Rails,RSpec & Capybara で困った話
 
子供は本を読み、本は子供に読まれる
子供は本を読み、本は子供に読まれる子供は本を読み、本は子供に読まれる
子供は本を読み、本は子供に読まれる
 
C# on lambda
C# on lambdaC# on lambda
C# on lambda
 
Nougakudo
NougakudoNougakudo
Nougakudo
 
Decades around here
Decades around hereDecades around here
Decades around here
 
RJB - another choice for Ruby and Java interoperability
RJB - another choice for Ruby and Java interoperabilityRJB - another choice for Ruby and Java interoperability
RJB - another choice for Ruby and Java interoperability
 
Ruby on windows 2010
Ruby on windows 2010Ruby on windows 2010
Ruby on windows 2010
 
Asr
AsrAsr
Asr
 
N Lize
N LizeN Lize
N Lize
 
Ruby Extended Library
Ruby Extended LibraryRuby Extended Library
Ruby Extended Library
 
Rubyize
RubyizeRubyize
Rubyize
 

Yarvmi