狠狠撸

狠狠撸Share a Scribd company logo
Rubyらしいプログラムを
書くためのコツ~配列編
Ruby / Ruby on Rails ビギナーズ勉強会 第6回 #coedorb
photo by poluz!
http://www.?ickr.com/photos/poluz
自己紹介
? 派遣で6年程エンジニア&PM
? WindowsのActiveDirecotryとか
? 2005年~2014年までは人材系の仕事
? エンジニア専門のキャリアコンサルタント
? 昨年からなぜかフリーランス
? しかもWeb系のエンジニア
? Rails4+AngularJS。最近は仕事でRubyでク
ローラー開発とかも行う
? 実はJavaScriptが好きでこっちのほうが経験が長
い
?Titanium Mobile、Node.js、最近だとNW.js
?(最近メンテ辞めましたが)クラフトビールが飲め
る買えるお店が探せるスマフォアプリ、Webサイト
を全部JavaScriptベースの技術で作ってました
このセッションをやろうとしたキッカケ
?jeffrey james pacres
http://www.?ickr.com/photos/jjpacres/3293117576/
Agenda
1.Rubyの言語の特徴を紹介
2.Rubyの配列処理サンプル
プログラミング言語
の歴史からRubyの成
り立ちを知る
Rubyは

RubyはALGOL系言語(C→Perl)とLisp系の
両方の流れを組んでるらしい

ALGOL系言語:手続き型プログラミング言語

Lisp系言語:関数型プログラミング言語

初めてのRubyより引用
手続き型と関数型の書き方比較
? 関数風のコードは定義の連鎖
? 手続きではなく「これは~です」という宣言とか定義が並ぶ
? http://www.slideshare.net/parrotstudio/gunmaweb-5-20110514から引用
手続き風に
書いた場合
関数風に書
いた場合
もう1つRubyの特徴を
? Rubyは大クラス主義
? Javaでは、ArrayやQueueやStackやIteratorクラスのように、責務に
よってクラスが別れる傾向があるのに対し、RubyではすべてArrayク
ラスが引き受けます。このように、Rubyのクラスは、Javaよりもク
ラスが大きく、担う役割も大きなものになります。このような考え
方は、大クラス主義と呼ばれています。他の言語だとそれぞれのク
ラスの責務が小さめ
? 1つのクラスで多数の机能が詰め込まれてる
さっきスクレイピングしてArray Rubyリファレンスか
ら情報抽出してみた
→数えたら84個ありました
では実際にRubyの配列
サンプルをいくつか紹介
Photo by Sebastien Wiertz via Flickr
https://www.?ickr.com/photos/wiertz/4604140980/
その1:食べ物のリストを作るには?
fruits = %w(りんご バナナ なし)
vegetables = %w(ネギ にんじん ジャガイモ)
foods = fruits + vegetables
# => ["りんご", "バナナ", "なし", "ネギ", "に
んじん", "ジャガイモ"]
その2:好きな食べ物だけを得るには?
fruits = %w(りんご バナナ なし)
vegetables = %w(ネギ にんじん ジャガイモ)
my_favorites = %w(ビール コーヒー りんご ジャガイモ)
my_favorites_foods = ?
(fruits + vegetables) & my_favorites
# =>["りんご", "ジャガイモ"]
その3:ジュースだけを得るには?
beverages_for_adults = %w(ビール ワイン ウィスキー ジンジャー
エール)
beverages_for_kids = %w(りんごジュース オレンジジュース ミル
ク)
beverages = beverages_for_adults + beverages_for_kids
# => ["ビール", "ワイン", "ウィスキー", "ジンジャーエール", "
りんごジュース", "オレンジジュース", "ミルク"]
juices = beverages.select{|drink| drink.match(/ジュース
/)}
# => ["りんごジュース", "オレンジジュース"]
その3のサンプルをよりRubyらしく書くと?
beverages_for_adults = %w(ビール ワイン ウィスキー ジンジャー
エール)
beverages_for_kids = %w(りんごジュース オレンジジュース ミル
ク)
beverages_for_kids.zip(beverages_for_adults).flatten.s
elect{|drink| drink.match(/ジュース/)}
資料作成で参考にした情報
? 初めてのRuby
? 「初めて」という言葉はついてるけど他の言語経験ある人向けの内容。とてもオススメ
? 純粋なプログラミング入門書ではないのでRubyで初めてプログラミングを学ぶにはオラ
イリーの「初めてのプログラミング」あたりが良いかも
? るびまの「ライブラリー開発者になろう」の記事
? http://magazine.rubyist.net/?0043-BeALibraryDeveloper
? ”「よいソフトウェアを開発する」には、「似ているとはどういうことかを知って、それ
と同じようにする」とよいのでした。”
? Rubyと大クラス主義とダックタイピング、そして名前重要
? http://d.hatena.ne.jp/pbgreen/20111016/1318782503
ご清聴ありがとうございました

More Related Content

2015 07-04-ruby rails