Rubyらしいプログラムを
書くためのコツ∼配列編
Ruby / Ruby on Rails ビギナーズ勉強会 第6回 #coedorb
photo by poluz!
http://www.flickr.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.flickr.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.flickr.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

PDF
2016 02-25-crawler-study-01
PDF
2016 02-09-co-edo lt
PDF
WordBench京都9月号
PDF
RubyとRailsのおいしい使い方
PDF
RubyとRailsのおいしい使い方 ver. okayama1
PDF
WooCommerce & AWS
PDF
gulp芸
PPTX
10年以上Java屋してたおっさんが 今年からフロントエンジニアやっている話
2016 02-25-crawler-study-01
2016 02-09-co-edo lt
WordBench京都9月号
RubyとRailsのおいしい使い方
RubyとRailsのおいしい使い方 ver. okayama1
WooCommerce & AWS
gulp芸
10年以上Java屋してたおっさんが 今年からフロントエンジニアやっている話

What's hot (19)

PDF
React+fluxを導入した話
PDF
Rails templateで開発の初速を上げよう
PDF
MF GeeksNight pplogの話
PPTX
ぼくたちのじゅたくかいはつ
PDF
Word pressはじめの一歩 テーマ作成ハンズオン
PDF
師弟登壇・新米サムライの集い 2013
PDF
喋って、DEMOで 伝える 僕がHerokuを使う理由
PDF
20150704cmsdou
PDF
究極にして至高のWAF
PPTX
WordCamp Kansai 2015 ハンズオン - 踏み出してみよう!翻訳の第一歩 #wck2015
PDF
20120702勉強会 webアプリ作ってみた
PPTX
ぼくたちのじゅたくかいはつ(と品質の話)
PDF
テーマに機能を含めちゃダメなんて誰が決めた! テーマをモリモリにカスタマイズする
PDF
Ruby on vim yokohama.vim発表資料
PDF
実録 WordPress Twenty Sixteen のカスタマイズ | WordBench東京 2月勉強会 「みんなのテーマ開発」〜自分の好きな作り方...
PDF
サーバを運用する時代は終わった
PDF
スタイルガイドを活用した運用に強いCMSサイト制作
PPTX
PWAをWebサービスに導入した話
PDF
増井雄一郎の「wri.pe」を事例に学ぶ、自作サービスの広め方〜PR・継続できる目標の立て方・改善編 先生:増井 雄一郎
React+fluxを導入した話
Rails templateで開発の初速を上げよう
MF GeeksNight pplogの話
ぼくたちのじゅたくかいはつ
Word pressはじめの一歩 テーマ作成ハンズオン
師弟登壇・新米サムライの集い 2013
喋って、DEMOで 伝える 僕がHerokuを使う理由
20150704cmsdou
究極にして至高のWAF
WordCamp Kansai 2015 ハンズオン - 踏み出してみよう!翻訳の第一歩 #wck2015
20120702勉強会 webアプリ作ってみた
ぼくたちのじゅたくかいはつ(と品質の話)
テーマに機能を含めちゃダメなんて誰が決めた! テーマをモリモリにカスタマイズする
Ruby on vim yokohama.vim発表資料
実録 WordPress Twenty Sixteen のカスタマイズ | WordBench東京 2月勉強会 「みんなのテーマ開発」〜自分の好きな作り方...
サーバを運用する時代は終わった
スタイルガイドを活用した運用に強いCMSサイト制作
PWAをWebサービスに導入した話
増井雄一郎の「wri.pe」を事例に学ぶ、自作サービスの広め方〜PR・継続できる目標の立て方・改善編 先生:増井 雄一郎
Ad

Viewers also liked (9)

PDF
勉強会主催者のための勉強会
PDF
2013 06-11-craft beerfanlt
PDF
20130910 titanium meetupvol11
PDF
2014 05-17-titanium hamamatsuvol3
PDF
20130613 titanium meetupvol9
PDF
20140319 titanium meetupvol17
PDF
2014 02-19-titanium meetupvol16
PDF
日々の面倒をプログラミングで解決!【入門編】
PDF
育児を支える技術〜クローラーとかスクレイピング
勉強会主催者のための勉強会
2013 06-11-craft beerfanlt
20130910 titanium meetupvol11
2014 05-17-titanium hamamatsuvol3
20130613 titanium meetupvol9
20140319 titanium meetupvol17
2014 02-19-titanium meetupvol16
日々の面倒をプログラミングで解決!【入門編】
育児を支える技術〜クローラーとかスクレイピング
Ad

Similar to 2015 07-04-ruby rails (20)

PPT
Start!! Ruby
PDF
わたしのRubyの楽しみかた
PDF
PHPer のための Ruby 教室
PPT
第1部「一時間で覚えるruby」
PPTX
第3回輪講
PDF
Ruby初級者向けレッスン KOF2015 出張版
PPTX
Ruby講座第二回
PDF
C,Javaと比較しながらRubyに入門する話 - e-ZUKA Rails拡大号vol1
PDF
Ruby紹介3(pdf)
PDF
Fukushima.rb#00
PDF
Ruby の制御構造とリテラルについて
PPTX
そんな装備で大丈夫か?
PDF
Ruby on Rails 入門
PDF
Ruby programmer silverの取得に向けて
PDF
Ruby の String のメソッドについて
PPTX
そんな装備で大丈夫か?
PDF
20110820 metaprogramming
PDF
Rubyとプログラミング言語の潮流
PPT
Ruby on Rails Tutorial Chapter5-7
PDF
Ruby 同好会宣言
Start!! Ruby
わたしのRubyの楽しみかた
PHPer のための Ruby 教室
第1部「一時間で覚えるruby」
第3回輪講
Ruby初級者向けレッスン KOF2015 出張版
Ruby講座第二回
C,Javaと比較しながらRubyに入門する話 - e-ZUKA Rails拡大号vol1
Ruby紹介3(pdf)
Fukushima.rb#00
Ruby の制御構造とリテラルについて
そんな装備で大丈夫か?
Ruby on Rails 入門
Ruby programmer silverの取得に向けて
Ruby の String のメソッドについて
そんな装備で大丈夫か?
20110820 metaprogramming
Rubyとプログラミング言語の潮流
Ruby on Rails Tutorial Chapter5-7
Ruby 同好会宣言

More from Hiroshi Oyamada (19)

PDF
2015 12-19-ruby rails
PDF
TitaniumMeetUpVol13
PDF
2013 06-05-web-career-talk-at-coedo
PDF
20130412 titanium meetupvol7
PDF
2013 02-28-bussiness-plan-about-titanium
PDF
20130126 titanium新年会
PDF
20130125 titanium meetupvol5
PDF
2012 12-17-titanium meetupvol4
PDF
Sinatraアプリをherokuにアップ
PDF
Sinatraでwebアプリケーション開発を学ぶ
PDF
Twitter連携chrome extension作り方
PDF
2012 03-24-titanium plusquicktigame2d
PDF
2012 03-03-titanium plusquicktigame2d
PDF
20120125 titanium study
PDF
20120118 titanium
PDF
20111130 titanium mobile
PDF
将来必要となるエンジニアのスキルについて考える Ver3
PDF
カベを感じているあなたへ
PDF
プログラミングについて深く知る
2015 12-19-ruby rails
TitaniumMeetUpVol13
2013 06-05-web-career-talk-at-coedo
20130412 titanium meetupvol7
2013 02-28-bussiness-plan-about-titanium
20130126 titanium新年会
20130125 titanium meetupvol5
2012 12-17-titanium meetupvol4
Sinatraアプリをherokuにアップ
Sinatraでwebアプリケーション開発を学ぶ
Twitter連携chrome extension作り方
2012 03-24-titanium plusquicktigame2d
2012 03-03-titanium plusquicktigame2d
20120125 titanium study
20120118 titanium
20111130 titanium mobile
将来必要となるエンジニアのスキルについて考える Ver3
カベを感じているあなたへ
プログラミングについて深く知る

Recently uploaded (8)

PDF
20250826_Devinで切り拓く沖縄ITの未来_AI駆動開発勉強会 沖縄支部 第2回
PDF
Yamaha DT200WR Real Enduro ENGINE CYLINDER TRANSMISSION
PPTX
Vibe Codingを触って感じた現実について.pptx .
PDF
20250823_IoTLT_vol126_kitazaki_v1___.pdf
PDF
Geminiの出力崩壊 本レポートは、Googleの大規模言語モデル「Gemini 2.5」が、特定の画像と短文入力に対して、誤った地名を推定し、最終的に...
PDF
R-SCoRe: Revisiting Scene Coordinate Regression for Robust Large-Scale Visual...
PPTX
生成AIとモデルベース開発:実はとても相性が良いことを説明します。まあそうだろうなと思われる方はご覧ください。
PPTX
Cosense - 整えずして完全勝利!Cosenseが他のwikiツールと違う理由
20250826_Devinで切り拓く沖縄ITの未来_AI駆動開発勉強会 沖縄支部 第2回
Yamaha DT200WR Real Enduro ENGINE CYLINDER TRANSMISSION
Vibe Codingを触って感じた現実について.pptx .
20250823_IoTLT_vol126_kitazaki_v1___.pdf
Geminiの出力崩壊 本レポートは、Googleの大規模言語モデル「Gemini 2.5」が、特定の画像と短文入力に対して、誤った地名を推定し、最終的に...
R-SCoRe: Revisiting Scene Coordinate Regression for Robust Large-Scale Visual...
生成AIとモデルベース開発:実はとても相性が良いことを説明します。まあそうだろうなと思われる方はご覧ください。
Cosense - 整えずして完全勝利!Cosenseが他のwikiツールと違う理由

2015 07-04-ruby rails