Suche senden
Hochladen
Rubyはとても「人間的」
•
10 gefällt mir
•
5,701 views
Kazuhiro Serizawa
Folgen
第97回 IWDDで発表したLTです。 http://www.iwdd.net/
Weniger lesen
Mehr lesen
Software
Melden
Teilen
Melden
Teilen
1 von 23
Jetzt herunterladen
Downloaden Sie, um offline zu lesen
Empfohlen
WEBページを表示するまで
WEBページを表示するまで
Shoichi Kakizaki
女子力IT
女子力IT
Dong Oi
Gatsby.js完全に理解した
Gatsby.js完全に理解した
ssuser953388
1年かけてgemを1つ作りました
1年かけてgemを1つ作りました
Ito Kunihiko
Cogbot 勉強会 #7: ウチのショム ~ BSC Bot powered by Bot Framework
Cogbot 勉強会 #7: ウチのショム ~ BSC Bot powered by Bot Framework
Ayako Omori
意識の低いシンギュラリティの恐怖
意識の低いシンギュラリティの恐怖
chris chambers
IWDDについて
IWDDについて
Yachiyo Suzuki
Next Generation Web Application Architecture
Next Generation Web Application Architecture
Koji SHIMADA
Empfohlen
WEBページを表示するまで
WEBページを表示するまで
Shoichi Kakizaki
女子力IT
女子力IT
Dong Oi
Gatsby.js完全に理解した
Gatsby.js完全に理解した
ssuser953388
1年かけてgemを1つ作りました
1年かけてgemを1つ作りました
Ito Kunihiko
Cogbot 勉強会 #7: ウチのショム ~ BSC Bot powered by Bot Framework
Cogbot 勉強会 #7: ウチのショム ~ BSC Bot powered by Bot Framework
Ayako Omori
意識の低いシンギュラリティの恐怖
意識の低いシンギュラリティの恐怖
chris chambers
IWDDについて
IWDDについて
Yachiyo Suzuki
Next Generation Web Application Architecture
Next Generation Web Application Architecture
Koji SHIMADA
Sinatraのススメ
Sinatraのススメ
@odailly_jp Odai
これからはじめるCoda2とSublime Text 2
これからはじめるCoda2とSublime Text 2
masaaki komori
new Objctive-C literal syntax
new Objctive-C literal syntax
Wataru Kimura
blogサービスの全文検索の話 - #groonga を囲む夕べ
blogサービスの全文検索の話 - #groonga を囲む夕べ
Masahiro Nagano
Ruby1.9のfiberのかっこいい使い方
Ruby1.9のfiberのかっこいい使い方
Kindai University
本格的に始めるzsh
本格的に始めるzsh
Hideaki Miyake
いまさら聞けないDocker - 第5回コンテナ型仮想化の情報交換会@大阪
いまさら聞けないDocker - 第5回コンテナ型仮想化の情報交換会@大阪
Kunihiro TANAKA
Google borg と コンテナベース分散システムデザインパターン
Google borg と コンテナベース分散システムデザインパターン
ktateish
プログラマとして仕事をするために勉強すること
プログラマとして仕事をするために勉強すること
なおき きしだ
Project Lambdaの基礎
Project Lambdaの基礎
Yuichi Sakuraba
Code as data as code.
Code as data as code.
Mike Fogus
受託開発時におけるAWSクラウド活用術
受託開発時におけるAWSクラウド活用術
Hiroshi Koyama
ARC環境で メモリリークを起こす 7つの方法
ARC環境で メモリリークを起こす 7つの方法
ushiostarfish _
ES6 at PayPal
ES6 at PayPal
Jamund Ferguson
Eclipse活用術
Eclipse活用術
Masahiro Wakame
Storm Anatomy
Storm Anatomy
Eiichiro Uchiumi
Closure CompilerのES6対応 あるいはES6時代のAltJS生存戦略
Closure CompilerのES6対応 あるいはES6時代のAltJS生存戦略
Teppei Sato
Mobage を支える Ruby の技術 ~ 複数DB編 ~
Mobage を支える Ruby の技術 ~ 複数DB編 ~
Naotoshi Seo
ChefConf 2013: Beginner Chef Antipatterns
ChefConf 2013: Beginner Chef Antipatterns
Julian Dunn
Scala 初めての人が Heroku で Web アプリを公開するまで
Scala 初めての人が Heroku で Web アプリを公開するまで
Hideaki Miyake
Introduction to Retrofit
Introduction to Retrofit
Kazuhiro Serizawa
第八回 #渋谷Java 最近のjava PaaS事情
第八回 #渋谷Java 最近のjava PaaS事情
Kazuhiro Serizawa
Weitere ähnliche Inhalte
Andere mochten auch
Sinatraのススメ
Sinatraのススメ
@odailly_jp Odai
これからはじめるCoda2とSublime Text 2
これからはじめるCoda2とSublime Text 2
masaaki komori
new Objctive-C literal syntax
new Objctive-C literal syntax
Wataru Kimura
blogサービスの全文検索の話 - #groonga を囲む夕べ
blogサービスの全文検索の話 - #groonga を囲む夕べ
Masahiro Nagano
Ruby1.9のfiberのかっこいい使い方
Ruby1.9のfiberのかっこいい使い方
Kindai University
本格的に始めるzsh
本格的に始めるzsh
Hideaki Miyake
いまさら聞けないDocker - 第5回コンテナ型仮想化の情報交換会@大阪
いまさら聞けないDocker - 第5回コンテナ型仮想化の情報交換会@大阪
Kunihiro TANAKA
Google borg と コンテナベース分散システムデザインパターン
Google borg と コンテナベース分散システムデザインパターン
ktateish
プログラマとして仕事をするために勉強すること
プログラマとして仕事をするために勉強すること
なおき きしだ
Project Lambdaの基礎
Project Lambdaの基礎
Yuichi Sakuraba
Code as data as code.
Code as data as code.
Mike Fogus
受託開発時におけるAWSクラウド活用術
受託開発時におけるAWSクラウド活用術
Hiroshi Koyama
ARC環境で メモリリークを起こす 7つの方法
ARC環境で メモリリークを起こす 7つの方法
ushiostarfish _
ES6 at PayPal
ES6 at PayPal
Jamund Ferguson
Eclipse活用術
Eclipse活用術
Masahiro Wakame
Storm Anatomy
Storm Anatomy
Eiichiro Uchiumi
Closure CompilerのES6対応 あるいはES6時代のAltJS生存戦略
Closure CompilerのES6対応 あるいはES6時代のAltJS生存戦略
Teppei Sato
Mobage を支える Ruby の技術 ~ 複数DB編 ~
Mobage を支える Ruby の技術 ~ 複数DB編 ~
Naotoshi Seo
ChefConf 2013: Beginner Chef Antipatterns
ChefConf 2013: Beginner Chef Antipatterns
Julian Dunn
Scala 初めての人が Heroku で Web アプリを公開するまで
Scala 初めての人が Heroku で Web アプリを公開するまで
Hideaki Miyake
Andere mochten auch
(20)
Sinatraのススメ
Sinatraのススメ
これからはじめるCoda2とSublime Text 2
これからはじめるCoda2とSublime Text 2
new Objctive-C literal syntax
new Objctive-C literal syntax
blogサービスの全文検索の話 - #groonga を囲む夕べ
blogサービスの全文検索の話 - #groonga を囲む夕べ
Ruby1.9のfiberのかっこいい使い方
Ruby1.9のfiberのかっこいい使い方
本格的に始めるzsh
本格的に始めるzsh
いまさら聞けないDocker - 第5回コンテナ型仮想化の情報交換会@大阪
いまさら聞けないDocker - 第5回コンテナ型仮想化の情報交換会@大阪
Google borg と コンテナベース分散システムデザインパターン
Google borg と コンテナベース分散システムデザインパターン
プログラマとして仕事をするために勉強すること
プログラマとして仕事をするために勉強すること
Project Lambdaの基礎
Project Lambdaの基礎
Code as data as code.
Code as data as code.
受託開発時におけるAWSクラウド活用術
受託開発時におけるAWSクラウド活用術
ARC環境で メモリリークを起こす 7つの方法
ARC環境で メモリリークを起こす 7つの方法
ES6 at PayPal
ES6 at PayPal
Eclipse活用術
Eclipse活用術
Storm Anatomy
Storm Anatomy
Closure CompilerのES6対応 あるいはES6時代のAltJS生存戦略
Closure CompilerのES6対応 あるいはES6時代のAltJS生存戦略
Mobage を支える Ruby の技術 ~ 複数DB編 ~
Mobage を支える Ruby の技術 ~ 複数DB編 ~
ChefConf 2013: Beginner Chef Antipatterns
ChefConf 2013: Beginner Chef Antipatterns
Scala 初めての人が Heroku で Web アプリを公開するまで
Scala 初めての人が Heroku で Web アプリを公開するまで
Mehr von Kazuhiro Serizawa
Introduction to Retrofit
Introduction to Retrofit
Kazuhiro Serizawa
第八回 #渋谷Java 最近のjava PaaS事情
第八回 #渋谷Java 最近のjava PaaS事情
Kazuhiro Serizawa
第六回 #渋谷java Javaを書き始めて 1年半が経って思うこと
第六回 #渋谷java Javaを書き始めて 1年半が経って思うこと
Kazuhiro Serizawa
第四回 #渋谷java オープニング
第四回 #渋谷java オープニング
Kazuhiro Serizawa
Juzu Frameworkを使ってみた @第四回 渋谷java
Juzu Frameworkを使ってみた @第四回 渋谷java
Kazuhiro Serizawa
第3回渋谷javaオープニング
第3回渋谷javaオープニング
Kazuhiro Serizawa
第二回渋谷Java Opening #渋谷Java
第二回渋谷Java Opening #渋谷Java
Kazuhiro Serizawa
じっくりコトコト煮込んだJavaスープ
じっくりコトコト煮込んだJavaスープ
Kazuhiro Serizawa
PHPerがJava屋になるために乗り越えたこと
PHPerがJava屋になるために乗り越えたこと
Kazuhiro Serizawa
第一回Shibuya.javaオープニング
第一回Shibuya.javaオープニング
Kazuhiro Serizawa
Mehr von Kazuhiro Serizawa
(10)
Introduction to Retrofit
Introduction to Retrofit
第八回 #渋谷Java 最近のjava PaaS事情
第八回 #渋谷Java 最近のjava PaaS事情
第六回 #渋谷java Javaを書き始めて 1年半が経って思うこと
第六回 #渋谷java Javaを書き始めて 1年半が経って思うこと
第四回 #渋谷java オープニング
第四回 #渋谷java オープニング
Juzu Frameworkを使ってみた @第四回 渋谷java
Juzu Frameworkを使ってみた @第四回 渋谷java
第3回渋谷javaオープニング
第3回渋谷javaオープニング
第二回渋谷Java Opening #渋谷Java
第二回渋谷Java Opening #渋谷Java
じっくりコトコト煮込んだJavaスープ
じっくりコトコト煮込んだJavaスープ
PHPerがJava屋になるために乗り越えたこと
PHPerがJava屋になるために乗り越えたこと
第一回Shibuya.javaオープニング
第一回Shibuya.javaオープニング
Rubyはとても「人間的」
1.
Rubyはとても 「人間的」 2014年11月8日
第97回 IWDD 株式会社ハートレイルズ 芹沢和洋
2.
自己紹介 @seri_k Kazuhiro
Serizawa web engineer
3.
Work at http://www.heartrails.com/
4.
Remote Worker
5.
概要 • Rubyとの出会い
• Ruby is 人間的言語
6.
Rubyとの出会い http://anond.hatelabo.jp/20100916072052
7.
当時の認識 Ruby.is_ネタ言語? #true
8.
Rubyに興味を持った エントリー 残念ながら現在はリンク切れ…
うろ覚えですがRubyは楽しく人間的に書ける! という内容だった気がする…
9.
Rubyに興味を持った エントリー 当時の私のはてブコメント
10.
times for (i
= 0; i < 10; i ++){ hoge() } while(true){ if(i => 10)break; hoge(); i++; } 10.times {hoge()}
11.
どっちが分かりやすい? for (i
= 0; i < 10; i ++){ hoge() 10回hoge()を } 実行したい 10.times { hoge() }
12.
因みに • 1から10まで順番に引数を渡して実行する
→ 1.upto(10) { |i| hoge(i) } • 10から1まで順番に引数を渡して実行する →10.downto { |i| hoge(i) } • 1..10の範囲で実行する →(1..10).each{ hoge() }
13.
これを見て自分は こう思ったッス Rubyは人間的だ!
14.
人間的とは • 人間が「こうしたい」と思う「こうしたい」の文脈をその
まま実装に落とせるので「人間的」と思った (私がそう思っただけで一般的な名称ではありませんw) • プログラミング言語の都合に合わせて変換する手間が少な い • 人間は「同じ処理を10回やりたい」と思った時に「1回 処理を実行する度に数値を0から1ずつ増やして数値が9 になるまで繰り返す」とは考えない
15.
Arrayも人間的 • 要素の順番を
ひっくり返したい! • 指定の要素が 含まれているか 知りたい! • 重複を排除したい! Array#reverse Array#include?({要素}) Array#uniq
16.
Arrayも人間的 [1,2,3,4,5].reverse #=>
[5,4,3,2,1] [1,2,3,4,5].include?(1) #=> true [1,1,1,2,3,4].uniq #=> [1,2,3,4]
17.
Rubyの便利ライブラリ ActiveSupportの例 •
Time#today? →今日だったらtrue, そうじゃなかったらfalse • Time#next_week→来週の月曜日の0:00分のTimeオ ブジェクトを返す • Time#weeks_ago(week) / Time#days_ago(day) →X週間前、X日前の日付のTimeオブジェクトを返す
18.
結果 自主規制w まつもとゆきひろ氏(Ruby作者)曰く
「Rubyをキメると気持ちいい!」
19.
他にも人間的に書ける要素 • 他の言語と比べてカッコをかなり省略できる
print(‘Hello world’) print ‘Hello world’ def say(message) def say message print(message) print message end end
20.
他にも人間的に書ける要素 • カッコを省略すると自然言語っぽい!
print ‘Hello world’ 『「Hello World」と表示しろ!』 と言っているように読めません? 『「ふなっしー!」と言え!』 と言っているように読めません? say ‘ふなっしー!’
21.
自然言語のように読める!ということで DSLを定義するに使われる事が多い •
例:chefのレシピ # /tmp/dirの権限とオーナーを変更する remote_directory "/tmp/dir" do source "tmpdir" owner "apache" group "apache" mode "0755" end
22.
Ruby on Railsの例
class Product < ActiveRecord::Base has_many :product_categories end • “has_many”は内部的にはDBの リレーションを定義する為のメソッド • has_many {テーブル名}と書くことでproductsとい うテーブルがproduct_categoriesというテーブル を複数所有している関係(has-many)だと読める
23.
まとめ • Rubyはとても人間的で書いてて気持ちいい言語
• 「Rubyをキメると気持ちいい!」はマジだった • なのでRubyやりましょう!
Jetzt herunterladen