- 1 名前:デフォルトの名無しさん [2009/10/24(土) 06:18:12 ]
- プログラミング言語Rubyについての、初心者向けスレです。質問・要望・雑談などどうぞ。
★注意★ Ruby 1.9.1 は初心者にはまだ時期早尚です。初心者には Ruby 1.8.7 を強くお勧めします。 (理由:現時点では多くの有名ライブラリやアプリが 1.9.1 に完全対応していないためです。) 1.8.7 でも 1.9 系に導入された新機能のいくつかが利用可能なため、1.8.7 を習得すれば将来スムーズに 1.9 系に移行できるでしょう。 関連スレやURLは>>2-5あたりを見てください。Ruby on Rails の質問は Webプログラミング板の Rails スレへ。 ■質問する人へ 質問する前に次の3つをすること。ここで回答を待つよりそのほうが早い。 ・モジュール名やエラーメッセージでググる ・マニュアルで引っかかったクラスの記述を探す www.ruby-lang.org/ja/man/ ・FAQを一応読む www.ruby-lang.org/ja/man/?cmd=view;name=Ruby+FAQ 質問には以下を書くこと。へたくそな質問は再提出を要求される。 ・詳しい内容(「動きません」「うまくできません」では回答しようがない) ・エラーメッセージ(自力で訳さずなるべくそのままで) ・実行環境(OS名、Rubyのバージョン(ruby -v でわかる)) ・最終的にやりたいこと(もっとよい方法がある場合が多いので) 回答してくれた人には「ありがとう」のひとことをいってあげて。 ■回答する人へ 相手は初心者、根気よく育てるつもりで。質問がへたくそなのも大目にみてあげる。 それができないならこないこと(だって初心者スレだもん)。 ・既出な質問やFAQは「XXXを読め」でいいので、叩かない&怖がらせない。 ・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。 ・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。
- 281 名前:デフォルトの名無しさん mailto:sage [2009/11/06(金) 19:50:20 ]
- txt = open('hoge.txt').read
ってするとオープンされたファイルのストリームは開いたままですか?
- 282 名前:デフォルトの名無しさん mailto:sage [2009/11/06(金) 20:03:17 ]
- >>281
えーーーーと、 クラスメソッド File.open は File オブジェクトを返すだけ 関数的メソッド open も File オブジェクトを返すだけ インスタンスメソッド File#read はストリームを閉じない クラスメソッド File.read は File オブジェクトを開いて File#read して閉じて read 結果を返すユーティリティ的メソッド File.open(path).read は不完全 open(path).read も不完全 File.read(path) は安全 File.open(path){|f| f.read} は安全 open(path){|f| f.read} も安全 ブロックつきメソッドで書けるメソッドは、ブロック作らないと危険 ブロックつきメソッドで書く意味がなさそうなメソッド(File.read、File.readlines 等クラスメソッド)はブロック作らなくても安全 クラスメソッドは「便利メソッド」として作られてることが多い
- 283 名前:デフォルトの名無しさん mailto:sage [2009/11/06(金) 20:05:12 ]
- >>281
GCされるかスクリプトが終了するまで開いたまま ちゃんと閉じるか閉じてくれる書き方をするクセをつけたほうがいい 手っ取り早いのはこれ txt = File.read('hoge.txt') 本当はIO.read、ただし1.9系じゃないとこの方法でbフラグ付けるのは無理
- 284 名前:デフォルトの名無しさん mailto:sage [2009/11/06(金) 22:39:33 ]
- IO.binreadは1.9だっけか
- 285 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 01:20:25 ]
- String::squeezeの使い道が分からない
- 286 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 02:19:12 ]
- 1.9はvistaの様に飛ばして、2.0のsp2が出るまで1.8で耐えた方が良さそうw
- 287 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 05:32:37 ]
- 今までrubygemsで取得できるもので済んでいたのですが、
tar.gzで配布されているruby-clusterやruby-gnome(gtk?)を使うことになり、 Emacsでのanythingやauto-complete-rubyでも↑のライブラリを読み出して欲しいと思って調べたのですがわかりませんでしたので質問させてもらいます。 anythingではfri -lやrefe -lの結果から候補を、auto-complete-rubyではrcodetoolsからどうにかして候補を出しているみたいなのですが、 そのソースとなるのはtar.gzがもつドキュメントorコードから生成されたドキュメント(?)を元にしているみたいなのです。 そのようなドキュメントを生成するのはrdocなんでしょうか?そうだとしたらどのように生成すればいいでしょうか? rdoc --riとやって.rdocの中に色々とできているのですが、そこをLOAD_PATHに加えればいいのでしょうか? 長くなってすいません。
- 288 名前:デフォルトの名無しさん [2009/11/07(土) 16:37:36 ]
- Rubyで外部コマンドを単純に実行したいときで質問。
変数hogeにデータが入っていてこれを引数としてコマンドを実行したい。 system("command", hoge) なら安全? 例えば、パイプでつなげられてrm -rfされる心配はないか、とか。
- 289 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 16:50:01 ]
- はい
sysytem 等の第2引数はシェルを介しません irb> system('ls', '-la|date') ls: invalid option -- '|' 詳しくは `ls --help' を実行して下さい. irb> system('ls -la|date') 2009年 11月 7日 土曜日 16:42:32 JST ls が | についてのエラーを返していることに注目です | を含んだ引数を ls コマンドに直接渡している証拠です ただ、この場合、第1引数は完全に正しい実行可能文字列でなければなりません オプションとかなんか余計なものを含んでいた場合はエラーです irb> system('echo ', 'hello!') false irb> system('echo', 'hello!') hello! 「echo 」という末尾に空白を含んだ実行ファイルは存在しないためコマンドが実行されず、system が false を返しています
- 290 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 16:55:35 ]
- >>289
ありがとう。
- 291 名前:デフォルトの名無しさん [2009/11/08(日) 10:16:43 ]
- テンプレに
・Ruby 1.9.0 不安定にして先鋭機能が超満載の開発版バージョンだったもの 1.9.x は本来全てが開発版の呼称だったのだが、事情が変わって(ここ笑うところ) とありますが、どう事情が変わったのでしょうか? "1" + 1 とするとエラーが出てしまいます。 エラー内容的には 整数を文字列に出来ないよ。 ということだと思っています。 しかし、 1.to_s を実行すると "1"が返ってきて、1.to_s.classはStringだと言っています。 数値の 1 を文字列に変換することは出来ているのに上記のようなエラーが出る理由が分かりません。 教えてください。
- 292 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 10:23:14 ]
- Rubyは、その種の暗黙の変換はしないので、
"1".to_i + 1 #=> 2がほしいとき "1" + 1.to_s #=> "11"がほしいとき
- 293 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 10:53:20 ]
- オブジェクトが違ってるということはプログラミングの手順が間違ってるということがほとんどなわけで
こういう場面では暗黙の変換をしてもらわないほうが多くの場合は便利 動作と投入値のとり得る全てを事前に完全把握してる場合は暗黙の変換をしてもらったほうが面倒ないけどな まあそういう時はRubyにこだわらず適当にそういう動作の言語使ってだらっとプログラム書けばええ とりあえずRubyはその手の変換は行わないようにメソッドが作られてることが多い 困ったことに + 系のメソッド内でクラス比較して変換かけてるパターンもあるけどな >>291 > どう事情が変わったのでしょうか? このままだとバージョンナンバーを普通に使い切ってしまい 栄光のバージョン2.0が普通の1.9の上位バージョンになってしまうという危惧 1.9.0を元にした安定版を出す際に、通常のバージョンのつけ方なら ・ 1.9.x … 開発版 ・ 2.0.x … 安定版 となるはずだし従来はこの予定だったのだが、2.0の名には値しないと判断されて、無理矢理 ・ 1.9.0 … 開発版 ・ 1.9.1 … 安定版 とされたということ
- 294 名前:デフォルトの名無しさん [2009/11/08(日) 15:19:36 ]
- じゃあ、1.9.1は2.0ってことですか
- 295 名前:デフォルトの名無しさん [2009/11/08(日) 15:23:13 ]
- matzを罵ってやる!
- 296 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 15:28:41 ]
- Rubyでは、2.0は人参と呼ばれている。
「開発者のモチベーションを引っ張り続けるが到達できないもの」 来世紀くらいには追いつけるかもしれないがユーザーが待つのは馬鹿。
- 297 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 15:46:26 ]
- まあ10年くらいしたらなんとかなんじゃねえの、とは思う
少なくとも5年では無理
- 298 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 15:47:49 ]
- なにが人参だか。どうでもいいわ
- 299 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 16:01:55 ]
- RubyにはRubyしか知らない人が多いというのはやっぱり真実なのだと思う
ようはPerl6と同じことだろ
- 300 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 16:23:16 ]
- >>285
String#squeezeはたぶん正規化じゃないかなぁ require 'jcode'; $KCODE = "s" # 1.9なら不要 Words = %w(google キター).map {|s| s.squeeze } def exist?(s); Words.index(s.squeeze); end p exist?("goooooogle") p exist?("キターーーー")
- 301 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 16:23:36 ]
- PHP6、Perl6、Ruby2のうち一番早くリリースするのはどれですか?
- 302 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 16:48:32 ]
- やっぱり1.9sp2まで待ちだな。
- 303 名前:ダーク藤本 ◆ULFoMaooII mailto:sage [2009/11/08(日) 17:12:54 ]
- SB3.5改
ttp://ux.getuploader.com/clonegameup/download/56/SB3.5%E6%94%B9.zip Rubyは多次元配列の仕様が糞すぎる まぁ多次元配列なんてWEBプログラマーには不要なもんだがw
- 304 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 17:29:27 ]
- Rubyの多次元配列?
それなんていうライブラリ?
- 305 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 17:42:01 ]
- ruby 1.9.3あたりが安定版になっても俺は驚かない
驚かないが、「またユーザーを混乱させるのか・・・」と思う
- 306 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 17:56:09 ]
- >>305
1.9.1 以降は全部、1.9 系列の安定版だよ 1.9.2 が出たとしたら、それは1.9系列の最新安定版 1.9.3 が出たとしたら、それは1.9.2より新しい、1.9系列の安定版 開発版は常に 1.9.0 パッチレベルが上がるんだったかなんだったかで区別するとかしないとか 1.8.5やそれ以前のような「とりあえずリリース」はない tenny(バージョン x.y.z の z)が 0 でないときは必ず安定版リリース この理屈だと Ruby 2.0.0 は 2.0 系列の開発版ということになるが、まあそういうことなのだろう 情報の古いうっかりさんが「これが Ruby2.0 か」とか勘違いして 2.0.0 をインストールしてシステム壊すとかそういうの希望 まー 1.9.1 の中でもパッチレベルが違うと動作違うけどな(正しくなっただけなのだが) 1.8.6 でもあったが、なかなか酷い
- 307 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 17:57:08 ]
- 驚き最小の法則w
- 308 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 17:59:44 ]
- >>307
情報の古いうっかりさんこんばんは
- 309 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 18:01:51 ]
- ja.wikipedia.org/wiki/驚き最小の原則
結城浩は1996年、この原則を人間関係を円滑にすすめるための心得に拡張し、「驚き、最小の法則」として紹介した。 たとえば、プログラムを顧客に納品する際に、判明しているバグがあるのなら、それを伝えておいたほうが顧客に とっても利用時の戦略を立てやすくなる、といったものである。「『どうしようかな?』と思ったときには、 相手の 『驚き』を最小にするような選択をすべき」であるという[1]。 プログラミング言語 Ruby は、一時期「驚き最小の原則」とともに語られることが多かった。ただし、作者のまつもと ゆきひろはこの原則を Ruby の設計哲学として採用したことはないと述べている[2]。Ruby については、「さまざまな バックグラウンドの人々すべてを驚かせないことではなく、Ruby のやり方に十分に慣れた人が持つ常識が一貫して通用 するという意味」[3][4]であるとして、「Matzの驚き最小の原則」という言い方も提案された[3]。現在では Ruby が 「驚き最小の原則」とともに語られることは少なくなっている[5]。
- 310 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 18:04:35 ]
- 驚きの連続w
- 311 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 18:09:19 ]
- >>309
コミュニティ内では「Rubyらしい動作」という言葉で語られる概念だな Rubyらしい動作をするクラスやメソッドは推測が利いて使いやすい、という程度の意味
- 312 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 18:10:14 ]
- 一時期のruby-talkとかひどかったもんな。
いろんな言語バックグラウンドを持つ香具師が、想定外の挙動に対して 「これは驚き最小に反している!」 そして「おめーにとってはそうだろうがよ」と総ツッコミ。
- 313 名前:305 mailto:sage [2009/11/08(日) 18:19:50 ]
- >>306
説明ありがとう! 1.9.1からルールが完全に変わったんだな > ruby 2.0.0 は 2.0 系列の開発版 そうなるのか? ruby 2.0.0 からまた元のルールに戻るとかじゃなくて? そうなるんだとすると、本当に訳が分からなくなりそうだ
- 314 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 18:23:52 ]
- >>313
2.0 系列の開発版は常に 2.0.0 2.0.0 で安定版が作れたと思ったら 2.0.1 としてリリース 2.0.1 がパワーアップしたら 2.0.2 としてリリース 2.0 系列の次のバージョンの開発版を作る場合は 2.1.0 でやる こんだけ x.y.z の y だか z だかが奇数のときは開発版で偶数は安定版、みたいな 冷静に考えるとへんてこなルールと実質上は何も変わらない
- 315 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 18:32:54 ]
- >>314
ソース求む。 どこにもそんな話、なかったと思うんだが。
- 316 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 18:46:28 ]
- ruby 1.9.3あたりが安定版になっても俺は驚かない
驚かないが、「またユーザーを混乱させるのか・・・」と思う
- 317 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 00:40:14 ]
- 順調に迷走してるね、この言語。
- 318 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 01:17:13 ]
- 迷走してるのはおまえの脳みそだろw
- 319 名前:デフォルトの名無しさん [2009/11/09(月) 02:02:57 ]
- すくなくとも驚き最小の原則を標榜している言語が
脳みそを掻き回したらいかんだろ
- 320 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 02:09:56 ]
- >>319
Rubyのことなら、標榜してないよ。
- 321 名前:デフォルトの名無しさん [2009/11/09(月) 02:13:44 ]
- よそから飛んできたんでひょっとしたら320は空気が読めてなかったかもしれない
- 322 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 02:18:43 ]
- ruby厨WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
- 323 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 08:23:38 ]
- 一時期のRuby厨が荒らしてたPythonスレみたいになってるw
- 324 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 09:33:42 ]
- 2.0が出てもみんな1.8.7を使いつづけるというオチでは?
- 325 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 09:44:20 ]
- そこはJRubyでしょ
- 326 名前:デフォルトの名無しさん [2009/11/09(月) 11:24:20 ]
- C言語みたいにクラス定義を別ファイルに書きたいのですが
#include "MyClass.h" に相当するRubyの命令がわかりません。 手持ちの本にも載っていません。 誰か教えてください。
- 327 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 11:27:40 ]
- require
- 328 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 18:12:07 ]
- >>326
require "myclass" # myclass.rb を読み込む
- 329 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 19:50:19 ]
- この言語って他の言語にある程度慣れてる人が多い?
プログラミングはRubyからです!って人は少なそう。
- 330 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 20:01:19 ]
- >>329
Ruby から始めましたが。 理由は、基本的な構文はどの言語も似ていると思ったので...
- 331 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 20:27:41 ]
- VBA → ちょっとだけJavaScript → VB.NET → C# → Ruby
- 332 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 21:14:56 ]
- rubyから始めましたってのはニート出身のPGとかだけだろ
学歴ある奴はあり得ん
- 333 名前:330 mailto:sage [2009/11/09(月) 21:19:51 ]
- >>332
大学で始めてプログラミングやった子なのかな?(^^;
- 334 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 21:20:44 ]
- >>332
なにその根拠のない自信?ホントにプログラマ?
- 335 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 21:21:53 ]
- >>332
ム板池よITドカタ
- 336 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 21:21:59 ]
- おまいら釣られすぎですよ
- 337 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 21:56:53 ]
- マジレスすると大学で覚えるプログラミングなんて大したことなくね?
いいとこの大学でもC言語を基礎から教えてたりするわけだし、そんな状態から4年間での伸びしろなんてたかが知れてる。 その周りの専門知識は大学じゃないと勉強するのは難しいかもだけど、実務で生かせてる知識がどれほどあるか。、 自分の大学生活が薄っぺらかっただけなのかな? 中卒高卒でも小さい頃から趣味でプログラミングやってた奴らには勝てる気がしないんですよ。 なんというか、雑学というか知識の幅というか、そこら辺が埋めようの無い差を感じる。
- 338 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 22:01:57 ]
- 安心しろ、ラジオを分解すらしたことがなくても
電気電子系の学科に進学する、という人が増えている。 今はそういう時代。
- 339 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 22:02:52 ]
- モチベーションの差とかもあるかな
大学出てない奴は少なからず劣等感を持ってると思う うちの会社に大学中退者が何人かいるんだが彼らのハングリー精神は恐れ入るよ
- 340 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 22:28:33 ]
- >>337
小さい頃からプログラミング続けてる人はベースが完璧にできあがってるし そういう基礎的な部分で苦労しない分、応用とか開発にリソース使えるんだろうね
- 341 名前:デフォルトの名無しさん mailto:sage [2009/11/10(火) 01:15:40 ]
- 小さい頃からプログラムやってる人はうらやましいね。
田舎だとそういう情報もハードも少なくて外で走り回ってるくらいだったよ。 その年頃でマイコンとかやってる奴とかいるかと思うと・・・。 まだ、勉強し続けなきゃならないな
- 342 名前:デフォルトの名無しさん mailto:sage [2009/11/10(火) 02:17:28 ]
- あとは環境かねぇ。
親の環境次第で当時、高価なPCを買えたかどうかとか。
- 343 名前:デフォルトの名無しさん mailto:sage [2009/11/10(火) 03:48:57 ]
- 子供の頃、親が遊びに投資してくれたかどうかで
将来がだいぶ変わるよな ゲームばっかすんなとか言うけど そこからプログラムに入れば職業につながる可能性だってあるんだしね 遊びの価値を理解してない人が多い気がする 自分の場合、学校で教わったことなんかより 遊んだ分の知識の方がメシの種になってる 勉強し倒したか、遊び倒したかという極端な人ほど 「使える」人になってる気がする >>342 今は高価な PCじゃなくても、そこそこの性能で 今の子供はうらやましいよね
- 344 名前:デフォルトの名無しさん mailto:sage [2009/11/10(火) 05:24:12 ]
- そう言われてみれば、消防ん時からプログラミングやってる俺は
親がオーバークロックとか日常茶飯事な自作erだなあ 物心ついた時には周りにPCパーツ転がってたし 俺がPCに興味持ったと知るや、いきなりパーツ屋連れてかれたなw ま、結局それはあんまり肌に合わなくて PCじゃなく、ソフトウェアを組む方にハマったんだが
- 345 名前:デフォルトの名無しさん mailto:sage [2009/11/10(火) 05:52:33 ]
- 今の子供は羨ましくもあるが、
ネットも無く毎日外で秘密基地とか作って遊んでた自分の小学生時代はこれはこれで良かったと思ってる。
- 346 名前:デフォルトの名無しさん mailto:sage [2009/11/10(火) 06:23:59 ]
- 一方小学生の>>344はアメリカの某サーバにバックドアを仕掛けた
|

|