8
Rubyの魅力と使えるテクニック Part1 Written by Keisuke Hata

Are You Enjoy Ruby 1 Day

Embed Size (px)

DESCRIPTION

ruby社内講習会資料

Citation preview

Page 1: Are You Enjoy Ruby 1 Day

Rubyの魅力と使えるテクニック Part1

Written by Keisuke Hata

Page 2: Are You Enjoy Ruby 1 Day

Rubyの魅力:IO編

• Rubyは、IO処理が非常に得意。テレーターという概念で、あっという間にIO処理ができちゃいます。

readlines()の後に”.”をつけて,テレーターで回しているのがポント。

readlines()で配列を受け取ってから、回さなくてもいいのです。

配列が入っているのだから、そのままテレーターで要素分処理してしまえ

ばいいんです。仮にテキストが空でも[]のように空の配列が返ってくるので

エラーになることはないです。

Page 3: Are You Enjoy Ruby 1 Day

IO処理で、簡単にテキスト処理

• こんなに簡単にIO処理ができるなら、ちょっとしたテキスト処理は、ワンラナーで書いちゃいましょう!!これがRubyの魅力。

数値が記入された、改行区切りのテキストを読み込んで、同じ値は、カット

し、さらにソートした状態の配列を返す処理です。受け取った配列を出力すると

これをC言語で1分で書けますか?

Rubyならかけてしまいます。

ワンライナー:1行だけのプログラム

Page 4: Are You Enjoy Ruby 1 Day

IO処理:glob(“*.*”)で幸せに

• IO処理でよく使う操作。それは、デゖレクトリ内のフゔルをマスクして処理すること。

• C言語などは、FindFirstFile()等で再帰処理を書いて、ごにょごにょ・・・さすがにこれは面倒ですよね・・・

そこで Dir.glob()の登場!!

Page 5: Are You Enjoy Ruby 1 Day

Dir.glob()って何?

• Dir.glob()とは、デゖレクトリ内のゕテムをワルドカードに従って展開し、配列化してくれます。

使い方もすごく簡単。

みての通り、すごく直感的に

書けちゃいますね。

さらにこのfileという要素をopen()に

渡して、さっきの例と組み合わせて、

テキスト処理を楽しく、簡単に!!

Page 6: Are You Enjoy Ruby 1 Day

あなたは、フゔルですか?デゖレクトリですか?

• フゔルやデゖレクトリを処理する時に、それがフゔルかデゖレクトリか知りたい時があります

あんたは、file? , directory?それが知りたい時です。

ならそのまま書いて下さい。

Rubyなら思ったことが

そのままコードにおこせます。

書けちゃいます!!

Page 7: Are You Enjoy Ruby 1 Day

もっと素直に聞きたい。あなたは、何ですか?

• さっきのコードでも、C言語になれてきた方は、衝撃的だと思いますが、もっと衝撃を。。。Rubyでは組み込みクラスをユーザーが改良できちゃいます。

Stringクラスに

file?とdirectory?

を追加しました。

これで “文字列”.file?って感じで

あなたは誰ですか?をそのまま

書くことができちゃうわけです。

Page 8: Are You Enjoy Ruby 1 Day

IOは、深い。。。

• IOは、今日紹介しただけでなく、調べていくと、もっと深い仕組みになっています。そんな時は、リフゔレンスが役に立つでしょう。

参考)Rubyリフゔレンスのページhttp://elbereth-hp.hp.infoseek.co.jp/ruby.html http://elbereth-hp.hp.infoseek.co.jp/files/ruby/ruby-man-1.4.6-en-htmlhelp.lzh

• Vimなんかは、Refe入れると、vim上でリフゔレンス引けたりしてかなり幸せですが、Emacsとかも似たようなものがあるのかもしれませんね。

• KeyHHなんかも入れておくと、調べたい単語の上でキーを押せばリフゔレンスが立ち上がったりして、スーパー便利です。

参考)id:secondlifeさんのページhttp://subtech.g.hatena.ne.jp/secondlife/20061225/1167024736