2015 07-04-ruby rails

16
Rubyらしいプログラムを 書くためのコツ~配列編 Ruby / Ruby on Rails ビギナーズ勉強会 第6回 #coedorb

Upload: hiroshi-oyamada

Post on 21-Aug-2015

588 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: 2015 07-04-ruby rails

Rubyらしいプログラムを書くためのコツ~配列編

Ruby / Ruby on Rails ビギナーズ勉強会 第6回 #coedorb

Page 2: 2015 07-04-ruby rails

photo by poluz! http://www.flickr.com/photos/poluz

自己紹介

Page 3: 2015 07-04-ruby rails

•派遣で6年程エンジニア&PM •WindowsのActiveDirecotryとか • 2005年~2014年までは人材系の仕事 •エンジニア専門のキャリアコンサルタント •昨年からなぜかフリーランス •しかもWeb系のエンジニア • Rails4+AngularJS。最近は仕事でRubyでクローラー開発とかも行う

•実はJavaScriptが好きでこっちのほうが経験が長い •Titanium Mobile、Node.js、最近だとNW.js •(最近メンテ辞めましたが)クラフトビールが飲める買えるお店が探せるスマフォアプリ、Webサイトを全部JavaScriptベースの技術で作ってました

Page 4: 2015 07-04-ruby rails

このセッションをやろうとしたキッカケ

Page 5: 2015 07-04-ruby rails

©jeffrey james pacres http://www.flickr.com/photos/jjpacres/3293117576/

Agenda 1.Rubyの言語の特徴を紹介 2.Rubyの配列処理サンプル

Page 6: 2015 07-04-ruby rails

プログラミング言語の歴史からRubyの成り立ちを知るRubyはRubyはALGOL系言語(C→Perl)とLisp系の両方の流れを組んでるらしい

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

初めてのRubyより引用

Page 7: 2015 07-04-ruby rails

手続き型と関数型の書き方比較• 関数風のコードは定義の連鎖

• 手続きではなく「これは~です」という宣言とか定義が並ぶ • http://www.slideshare.net/parrotstudio/gunmaweb-5-20110514から引用

手続き風に書いた場合

関数風に書いた場合

Page 8: 2015 07-04-ruby rails

もう1つRubyの特徴を

• Rubyは大クラス主義

• Javaでは、ArrayやQueueやStackやIteratorクラスのように、責務によってクラスが別れる傾向があるのに対し、RubyではすべてArrayクラスが引き受けます。このように、Rubyのクラスは、Javaよりもクラスが大きく、担う役割も大きなものになります。このような考え方は、大クラス主義と呼ばれています。他の言語だとそれぞれのクラスの責務が小さめ

• 1つのクラスで多数の機能が詰め込まれてる

Page 9: 2015 07-04-ruby rails

さっきスクレイピングしてArray Rubyリファレンスから情報抽出してみた

→数えたら84個ありました

Page 10: 2015 07-04-ruby rails

では実際にRubyの配列サンプルをいくつか紹介

Photo by Sebastien Wiertz via Flickrhttps://www.flickr.com/photos/wiertz/4604140980/

Page 11: 2015 07-04-ruby rails

その1:食べ物のリストを作るには?

fruits = %w(りんご バナナ なし) vegetables = %w(ネギ にんじん ジャガイモ)

foods = fruits + vegetables # => ["りんご", "バナナ", "なし", "ネギ", "にんじん", "ジャガイモ"]

Page 12: 2015 07-04-ruby rails

その2:好きな食べ物だけを得るには?

fruits = %w(りんご バナナ なし) vegetables = %w(ネギ にんじん ジャガイモ) my_favorites = %w(ビール コーヒー りんご ジャガイモ)

my_favorites_foods = (fruits + vegetables) & my_favorites # =>["りんご", "ジャガイモ"]

Page 13: 2015 07-04-ruby rails

その3:ジュースだけを得るには?beverages_for_adults = %w(ビール ワイン ウィスキー ジンジャーエール) beverages_for_kids = %w(りんごジュース オレンジジュース ミルク) beverages = beverages_for_adults + beverages_for_kids # => ["ビール", "ワイン", "ウィスキー", "ジンジャーエール", "りんごジュース", "オレンジジュース", "ミルク"]

juices = beverages.select{|drink| drink.match(/ジュース/)} # => ["りんごジュース", "オレンジジュース"]

Page 14: 2015 07-04-ruby rails

その3のサンプルをよりRubyらしく書くと?

beverages_for_adults = %w(ビール ワイン ウィスキー ジンジャーエール) beverages_for_kids = %w(りんごジュース オレンジジュース ミルク) beverages_for_kids.zip(beverages_for_adults).flatten.select{|drink| drink.match(/ジュース/)}

Page 15: 2015 07-04-ruby rails

資料作成で参考にした情報• 初めてのRuby

• 「初めて」という言葉はついてるけど他の言語経験ある人向けの内容。とてもオススメ

• 純粋なプログラミング入門書ではないのでRubyで初めてプログラミングを学ぶにはオライリーの「初めてのプログラミング」あたりが良いかも

• るびまの「ライブラリー開発者になろう」の記事

• http://magazine.rubyist.net/?0043-BeALibraryDeveloper

• ”「よいソフトウェアを開発する」には、「似ているとはどういうことかを知って、それと同じようにする」とよいのでした。”

• Rubyと大クラス主義とダックタイピング、そして名前重要

• http://d.hatena.ne.jp/pbgreen/20111016/1318782503

Page 16: 2015 07-04-ruby rails

ご清聴ありがとうございました