トップページ⇒tech
1001コメント357KB

Ruby 初心者スレッド Part 23

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2008/11/20(木) 04:30:21
プログラミング言語Rubyについての、初心者向けスレです。質問・要望・雑談などどうぞ。

   【Ruby1.9 は不安定な開発版であり初心者には全く向きません】
   【最新安定版の Ruby1.8.7 の使用をお勧めします】
    ※1.8.7 は1.8 と 1.9 の橋渡しをするためのリリースです。
      1.9 の新機能の一部が利用可能なので初学者にお勧めです。
    ※ただし十分安定しているとは言えないので
      プロダクション環境での利用にはお勧めしません。

関連スレやURLは>>2-8あたりを見てください。Ruby on Railsの質問はRailsスレへ。

■質問する人へ
質問する前に次の3つをすること。ここで回答を待つよりそのほうが早い。
 ・モジュール名やエラーメッセージでググる
 ・マニュアルで引っかかったクラスの記述を探す http://www.ruby-lang.org/ja/man/
 ・FAQを一応読む http://www.ruby-lang.org/ja/man/?cmd=view;name=Ruby+FAQ
質問には以下を書くこと。へたくそな質問は再提出を要求される。
 ・詳しい内容(「動きません」「うまくできません」では回答しようがない)
 ・エラーメッセージ(自力で訳さずなるべくそのままで)
 ・実行環境(OS名、Rubyのバージョン(ruby -v でわかる))
 ・最終的にやりたいこと(もっとよい方法がある場合が多いので)
回答してくれた人には「ありがとう」のひとことをいってあげて。
■回答する人へ
相手は初心者、根気よく育てるつもりで。質問がへたくそなのも大目にみてあげる。
それができないならこないこと(だって初心者スレだもん)。
 ・既出な質問やFAQは「XXXを読め」でいいので、叩かない&怖がらせない。
 ・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。
 ・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。
0002デフォルトの名無しさん2008/11/20(木) 06:26:43
【よくあるしつもん】
Q:
いちからRubyを始める初心者向けのRuby入門書は何がおすすめでしょうか?

A:
プログラム作成の初心者だったら
「たのしいRuby 第2版 Rubyではじめる気軽なプログラミング」
http://www.amazon.co.jp/dp/4797336617/

他の言語経験があるんだったら
「プログラミングRuby 第2版 言語編」
http://www.amazon.co.jp/dp/4274066428/
「初めてのRuby」
http://www.amazon.co.jp/dp/4873113679/
「Ruby Way 第2版」
http://www.amazon.co.jp/dp/4798115339/
0003デフォルトの名無しさん2008/11/20(木) 06:32:31
■前スレ
Ruby 初心者スレッド Part 22
http://pc11.2ch.net/test/read.cgi/tech/1221467121/

■関連スレ
Rubyについて Part 33
http://pc11.2ch.net/test/read.cgi/tech/1223709050/

Rubyの宿題教えてください。2限目
http://pc11.2ch.net/test/read.cgi/tech/1200175247/

RubyCocoa 初心者質問【Leopardバンドル記念】
http://pc11.2ch.net/test/read.cgi/mac/1193373811/

【ActiveScript】RubyをWindowsで使うスレ【GUI】
http://pc11.2ch.net/test/read.cgi/tech/1155031689/

デザパタ + Python/Ruby/Smalltalk part2
http://pc11.2ch.net/test/read.cgi/tech/1175959706/

魁け! Ruby 1.9.X
http://pc11.2ch.net/test/read.cgi/tech/1201603546/

Rubyについて(アンチ専用) Part003
http://pc11.2ch.net/test/read.cgi/tech/1207233348/

【Ruby/SDL他】Rubyでゲーム制作・総合スレッド
http://pc11.2ch.net/test/read.cgi/gamedev/1207069887/

【Ruby】RubyonRailsPart6
http://pc11.2ch.net/test/read.cgi/php/1224838013/
0004デフォルトの名無しさん2008/11/20(木) 06:33:07
【Rails】便利なRubyGemsを共有するスレ【Hpricot】
http://pc11.2ch.net/test/read.cgi/tech/1216829388/
0005デフォルトの名無しさん2008/11/20(木) 06:33:54
■公式/非公式関連リンク
Ruby Home Page
http://www.ruby-lang.org/ja/

Rubyリファレンス(よくサーバーエラーになります)
http://www.ruby-lang.org/ja/man/
http://www.ruby-doc.org/ (英語)

リファレンスのHTMLヘルプ版配布
http://elbereth-hp.hp.infoseek.co.jp/ruby.html
# Windowsで便利

Ruby FAQ
http://ruby-lang.org/ja/man/?cmd=view;name=Ruby+FAQ

Programming Ruby - The Pragmatic Programmer's Guide
http://www.ruby-doc.org/docs/ProgrammingRuby/
# 好評書籍をWebで公開中、ただし英語

逆引きRuby
http://www.namaraii.com/rubytips/
0006デフォルトの名無しさん2008/11/20(木) 06:34:30
RAA - Ruby Application Archive
http://raa.ruby-lang.org/

RubyForge
http://www.rubyforge.org/
# Rubyのアプリやライブラリが検索できる

GitHub RubyGems
http://gems.github.com/
http://github.com/
# 最近は RubyForge より GitHub が人気

日本Rubyの会 公式Wiki
http://jp.rubyist.net/
# メニューに表示されていない埋もれた情報ページ多数

Rubyist Magazine - るびま
http://jp.rubyist.net/magazine/
# コードレビューが好評

Ruby hotlinks 五月雨版(日記やblogのアンテナ)
http://www.rubyist.net/~kazu/samidare/

Rubyの本一覧
http://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=Ruby%A4%CB%B4%D8%A4%B9%A4%EB%BD%F1%C0%D2

<rubyXML/>
http://www.rubyxml.com/

Matzにっき(Ruby作者の日記)
http://www.rubyist.net/~matz/
0007デフォルトの名無しさん2008/11/20(木) 06:38:34
■最近できたWiki
Ruby 初心者スレッド Hiki
http://starlet.s145.xrea.com/ruby/hiki/

Ruby Portal
http://ruby.morphball.net/portal/

■プレゼンテーション
Ruby会議2008
http://jp.rubyist.net/RubyKaigi2008/
http://www.nicovideo.jp/tag/rubykaigi2008

Ruby会議2007
http://jp.rubyist.net/RubyKaigi2007/
http://www.nicovideo.jp/tag/RubyKaigi2007
00082-72008/11/20(木) 06:40:23
テンプレ変更あり。Ruby入門書にRuby Wayを追加しています
0009デフォルトの名無しさん2008/11/20(木) 08:38:13
luaみたいにCとrubyを連携するにはどうすればいいの?
0010デフォルトの名無しさん2008/11/20(木) 08:52:17
>>9
RubyのソースやCで書かれた拡張ライブラリをさっくり読むとよいかも。
それ自身が、CとRubyの連携のサンプルになってます。
0011デフォルトの名無しさん2008/11/20(木) 09:53:52
逆だろ、Cで書かれたアプリの組み込み言語としてRubyを使う方法なら
ttp://eto.com/d/EmbededRuby.html
ここからリンクされてる先を見れ
0012デフォルトの名無しさん2008/11/20(木) 11:00:07
RubyでXMLをYAMLのように簡単に扱う方法はないのでしょうか?
YAMLは読み込んだらツリーな連想配列になっていて簡単に使えますよね?
そのように、XMLを読み込んだら連想配列になっていて欲しいのですが・・・

もちろん、XMLは単純な構造を想定しています。
0013デフォルトの名無しさん2008/11/20(木) 11:05:44
XmlSimpleってライブラリがあるよ
ttp://xml-simple.rubyforge.org/
0014デフォルトの名無しさん2008/11/20(木) 11:48:47
>>13
おお!ありがとう。検索でもそのライブラリがひっかかりました。
使ってみたいと思います。

---以下チラシのウラ---
Ruby MagazineでYAMLの説明で、
「データを配列とハッシュとスカラーだけで表現する簡易性こそが YAML 」
なんていう名言?がありまして、YAMLはデータ記述(マークアップではなく)に
向いていて感激したのですが、プログラマさん以外には
(HTMLに似ている)XMLの方が馴染み深かったりするのですよ。
それでYAML感覚でXMLを使えたら置き換えできそうと思ったしだい
0015デフォルトの名無しさん2008/11/20(木) 22:10:43
WIN32OLEを使ってエクセルを操作させようと思っているんですが、問題にぶつかったので質問させてください。
excel = WIN32OLE.new('Excel.Application')
excel.visible = false
excel.displayAlerts = false
などの定義の部分をクラス化し、使いまわそうと思っているんですが、
変数の"excel"や"sheet"辺りの変数について困っています。
というのも定義はクラスに任せ、実際の操作はメインソースでやろうと思っているのですが、
複数のインスタンスを作る際に変数をどうするかで悩んでいます。

何かうまい方法がありましたらご教授お願いします。
0016デフォルトの名無しさん2008/11/20(木) 22:24:17
>>15
定型的な初期化処理をまとめるってことだよね?

def new_excel
 excel = WIN32OLE.new('Excel.Application')
 excel.visible = false
 excel.displayAlerts = false
 return excel
end
ex1 = new_excel
ex2 = new_excel
0017デフォルトの名無しさん2008/11/20(木) 23:30:32
>>15
クラスじゃなくてモジュールだけど
module ExcelApplication
 def self.new
  app = WIN32OLE.new('Excel.Application')
  app.visible = false
  app.displayAlerts = false
  app.extend(self)
  return app
 end
 def hello ; p :hello ; end
end
excel = ExcelApplication.new
excel.hello
workbook = excel.workbooks.open(file)
sheet = workbook.sheets(1)

W32のapiは知らないんで前スレのを参考にした
0018152008/11/21(金) 00:43:35
>>16
ありがとうございます。とても参考になりました。
excel以外にもworkbookとsheetも定義する必要があり、教えていただいた方法のように個別にメソッドを定義しました。
一応WIN32OLEの定義部分のクラス化は出来たのですが、できればメインソースでインスタンスを生成するたびに
何度も(excel,workbook,sheet)を定義するのは避けたいのです。
現在↓
insname = NewExcel.new  #インスタンス生成
excel1 = insname.new_excel
workbook1 = insname.new_workbook
sheet1 = insname.new_sheet

まとめて定義する方法はありません・・・よね?
試しに・・・と思って以下のような物を書いてみましたがダメでした。
def new_excel(excel,workbook,sheet)
excel = WIN32OLE.new('Excel.Application')
excel.visible = false
excel.displayAlerts = false

excel.workbooks.open(file)
workbook = excel.workbooks(1)
sheet = workbook.sheets(1)

return excel,workbook,sheet
 end


>>17
ありがとうございます。モジュールですか。
メモリ節約などに役立ちそうですね。参考にさせていただきます。
0019デフォルトの名無しさん2008/11/21(金) 04:46:10
そりゃダメだ。fileって変数がないぞう。
あと引数に代入しても、それはローカル変数だから意味がないよ。

def new_excel(file)
 excel = WIN32OLE.new('Excel.Application')
 excel.visible = false
 excel.displayAlerts = false
 excel.workbooks.open(file)
 workbook = excel.workbooks(1)
 sheet = workbook.sheets(1)
 return excel, workbook, sheet
end

excel, workbook, sheet = new_excel()
0020152008/11/21(金) 05:19:17
>>19
すみません、fileは上には書かなかったんですがちゃんと渡してます^^;
なるほど、メインソースの方で定義するときにnew_excelの引数として3つ定義するんじゃなく、
左辺に並べて定義するんですね!引数と変数ってのがちゃんと分かってなかったみたいです。
ありがとうございます。
0021デフォルトの名無しさん2008/11/21(金) 14:18:55
Rubyにて、デスクトップで使うツールのインターフェスを作りたいと思っています。
webフレームワークを使おうとするとやっぱり、Railsとかになってしまうんでしょうか?
Railsはちょっと重そうだなーと思っていたのですが・・・

イメージとしてはベイジアンフィルタのPopFileのようなものです。
窓の杜 - POPFile
http://www.forest.impress.co.jp/lib/inet/mail/antispam/popfile.html

参考になるページはありませんでしょうか?
こういうのをやっている人っていないのかな・・・?
0022デフォルトの名無しさん2008/11/21(金) 18:40:27
「重そう」というのが何のことなのかにもよるが、とりあえずRackを薦める
0023デフォルトの名無しさん2008/11/21(金) 19:14:41
なんでRackなんだよ。
>>21
その程度なら、Railsとか使わず、素のCGIでいいと思う。
サーバはWEBrickを使えば、Apacheとかいらないし。
つうか、現状ではクライアントサイドアプリなら、Rails以外を考えたほうがいいんじゃないかな。
0024デフォルトの名無しさん2008/11/21(金) 19:16:18
ごめん、「Rails以外」じゃなくて「Ruby以外」でした。
0025デフォルトの名無しさん2008/11/21(金) 19:41:32
>>23
WEBrick使うのなら、それこそ素のCGIじゃなくてwebrick/cgiとか使えば良いと思うんだが・・・

Rackを薦めたのはミドルウェアが便利なのと、後からWEBrickやFastCGI等への対応が楽だから
逆に、なぜ今あえて素のCGI(cgi.rbだよね?)を薦めるのかが疑問
0026デフォルトの名無しさん2008/11/21(金) 21:47:13
>>20
これ超オススメ。

Ruby による Win32OLE プログラミング
http://www.morijp.com/masarl/homepage3.nifty.com/masarl/article/ruby-win32ole.html


石井さんありがとう・・・
0027デフォルトの名無しさん2008/11/21(金) 22:05:56
>>25
もとの>>21を読もうよ。
>Rubyにて、デスクトップで使うツールのインターフェスを作りたいと思っています。
...
>イメージとしてはベイジアンフィルタのPopFileのようなものです。

RackとかFastCGIとかまったく関係ないよね?
0028152008/11/21(金) 23:24:16
>>26
お勧め紹介thxです。
ネットサーフィン中に偶然訪問してましたが、読みませんでした。
気合い入れて読んでみようと思います。
ありがとうございます。
0029デフォルトの名無しさん2008/11/22(土) 00:44:54
>26
俺もそこを紹介しようとしてた。

>28
読め。
0030デフォルトの名無しさん2008/11/22(土) 02:24:39
HTMLをopenuri等で取得してhead部分だけを抜き出そうとしました。

#!/usr/bin/ruby
#html => openuriで取れた値。値が入っていることは p html で確認済み
html = "<html><head>AA 2バイト文字とか改行とかいろいろ</head><body></body></html>"
/<head>(.+)<\/head>/ =~ html
p $1

::Console::
nil

まったくわかりません。
よろしくお願いします。
0031デフォルトの名無しさん2008/11/22(土) 02:26:29
すいません、訂正です。
× /<head>(.+)<\/head>/ =~ html

以下どちらのパターンも同じ結果です。
○ /<head>(.+)<\/head>/imo =~ html
○ html  =~ /<head>(.+)<\/head>/imo
■ このスレッドは過去ログ倉庫に格納されています