Submit Search
Upload
Rubyistを誘うScalaの世界 2.0
•
0 likes
•
2,607 views
Yuto Matsukubo
Follow
in Kawasaki Ruby Kaigi
Read less
Read more
Technology
Report
Share
Report
Share
1 of 50
Download now
Download to read offline
Recommended
Introduction to Scala : Clueda
Introduction to Scala : Clueda
Andreas Neumann
Realm database
Realm database
mean reaksmey
Live coding scala 'the java of the future'
Live coding scala 'the java of the future'
Xebia Nederland BV
From Ruby to Scala
From Ruby to Scala
tod esking
Text processing
Text processing
Icancode
Introduction to JRuby
Introduction to JRuby
Vagmi Mudumbai
Speaking Scala: Refactoring for Fun and Profit (Workshop)
Speaking Scala: Refactoring for Fun and Profit (Workshop)
Tomer Gabel
Children of Ruby
Children of Ruby
Simon St.Laurent
Recommended
Introduction to Scala : Clueda
Introduction to Scala : Clueda
Andreas Neumann
Realm database
Realm database
mean reaksmey
Live coding scala 'the java of the future'
Live coding scala 'the java of the future'
Xebia Nederland BV
From Ruby to Scala
From Ruby to Scala
tod esking
Text processing
Text processing
Icancode
Introduction to JRuby
Introduction to JRuby
Vagmi Mudumbai
Speaking Scala: Refactoring for Fun and Profit (Workshop)
Speaking Scala: Refactoring for Fun and Profit (Workshop)
Tomer Gabel
Children of Ruby
Children of Ruby
Simon St.Laurent
SWIFT1 Optional
SWIFT1 Optional
Futada Takashi
WDB005.1 - JavaScript for Java Developers (Lecture 1)
WDB005.1 - JavaScript for Java Developers (Lecture 1)
Igor Khotin
A Scala Corrections Library
A Scala Corrections Library
Paul Phillips
Scala Refactoring for Fun and Profit
Scala Refactoring for Fun and Profit
Tomer Gabel
SPIN and Shapes
SPIN and Shapes
Holger Knublauch
SWRL2SPIN: Converting SWRL to SPIN
SWRL2SPIN: Converting SWRL to SPIN
Nick Bassiliades
Refrection of kawasaki.rb
Refrection of kawasaki.rb
Aki Ariga
Why did I become a ruby committer
Why did I become a ruby committer
Masaya TARUI
Deploying JRuby Web Applications
Deploying JRuby Web Applications
Joe Kutner
クラウドネイティブが行なういまどきWebサービス開発
クラウドネイティブが行なういまどきWebサービス開発
Yuuji Arakaki
CloudWatch Eventsを使ったECSのAutoScaling
CloudWatch Eventsを使ったECSのAutoScaling
淳 千葉
ECS-CLI in Action
ECS-CLI in Action
Ryo Nakamaru
DB2をAWS上に構築する際のヒント&TIPS
DB2をAWS上に構築する際のヒント&TIPS
Akira Shimosako
Docker で Deep Learning
Docker で Deep Learning
Takenori Nakagawa
Wiki (Printed as manuscript)
Wiki (Printed as manuscript)
Koichi ITO
"fireap" - fast task runner on consul
"fireap" - fast task runner on consul
IKEDA Kiyoshi
grifork - fast propagative task runner -
grifork - fast propagative task runner -
IKEDA Kiyoshi
Introduction to poloxy - proxy for alerting
Introduction to poloxy - proxy for alerting
IKEDA Kiyoshi
JAWS-UGコンテナ支部20160205_LT_ハンズラボ青木由佳
JAWS-UGコンテナ支部20160205_LT_ハンズラボ青木由佳
Yuka Aoki
神奈川Ruby会議の会場係だけが知る密かな危機の話
神奈川Ruby会議の会場係だけが知る密かな危機の話
Naoki Nagazumi
Accounting and information systems
Accounting and information systems
MyAssignmenthelp.com
партизанский маркетинг
партизанский маркетинг
Kuskovna
More Related Content
What's hot
SWIFT1 Optional
SWIFT1 Optional
Futada Takashi
WDB005.1 - JavaScript for Java Developers (Lecture 1)
WDB005.1 - JavaScript for Java Developers (Lecture 1)
Igor Khotin
A Scala Corrections Library
A Scala Corrections Library
Paul Phillips
Scala Refactoring for Fun and Profit
Scala Refactoring for Fun and Profit
Tomer Gabel
SPIN and Shapes
SPIN and Shapes
Holger Knublauch
SWRL2SPIN: Converting SWRL to SPIN
SWRL2SPIN: Converting SWRL to SPIN
Nick Bassiliades
What's hot
(6)
SWIFT1 Optional
SWIFT1 Optional
WDB005.1 - JavaScript for Java Developers (Lecture 1)
WDB005.1 - JavaScript for Java Developers (Lecture 1)
A Scala Corrections Library
A Scala Corrections Library
Scala Refactoring for Fun and Profit
Scala Refactoring for Fun and Profit
SPIN and Shapes
SPIN and Shapes
SWRL2SPIN: Converting SWRL to SPIN
SWRL2SPIN: Converting SWRL to SPIN
Viewers also liked
Refrection of kawasaki.rb
Refrection of kawasaki.rb
Aki Ariga
Why did I become a ruby committer
Why did I become a ruby committer
Masaya TARUI
Deploying JRuby Web Applications
Deploying JRuby Web Applications
Joe Kutner
クラウドネイティブが行なういまどきWebサービス開発
クラウドネイティブが行なういまどきWebサービス開発
Yuuji Arakaki
CloudWatch Eventsを使ったECSのAutoScaling
CloudWatch Eventsを使ったECSのAutoScaling
淳 千葉
ECS-CLI in Action
ECS-CLI in Action
Ryo Nakamaru
DB2をAWS上に構築する際のヒント&TIPS
DB2をAWS上に構築する際のヒント&TIPS
Akira Shimosako
Docker で Deep Learning
Docker で Deep Learning
Takenori Nakagawa
Wiki (Printed as manuscript)
Wiki (Printed as manuscript)
Koichi ITO
"fireap" - fast task runner on consul
"fireap" - fast task runner on consul
IKEDA Kiyoshi
grifork - fast propagative task runner -
grifork - fast propagative task runner -
IKEDA Kiyoshi
Introduction to poloxy - proxy for alerting
Introduction to poloxy - proxy for alerting
IKEDA Kiyoshi
JAWS-UGコンテナ支部20160205_LT_ハンズラボ青木由佳
JAWS-UGコンテナ支部20160205_LT_ハンズラボ青木由佳
Yuka Aoki
神奈川Ruby会議の会場係だけが知る密かな危機の話
神奈川Ruby会議の会場係だけが知る密かな危機の話
Naoki Nagazumi
Accounting and information systems
Accounting and information systems
MyAssignmenthelp.com
партизанский маркетинг
партизанский маркетинг
Kuskovna
Gufo2007 02
Gufo2007 02
Gev
Monografia Giudiziale Credit Evolution
Monografia Giudiziale Credit Evolution
bobone
Agreements on Chimney Hill Property
Agreements on Chimney Hill Property
City of College Station
Consititution Day
Consititution Day
dabryan74
Viewers also liked
(20)
Refrection of kawasaki.rb
Refrection of kawasaki.rb
Why did I become a ruby committer
Why did I become a ruby committer
Deploying JRuby Web Applications
Deploying JRuby Web Applications
クラウドネイティブが行なういまどきWebサービス開発
クラウドネイティブが行なういまどきWebサービス開発
CloudWatch Eventsを使ったECSのAutoScaling
CloudWatch Eventsを使ったECSのAutoScaling
ECS-CLI in Action
ECS-CLI in Action
DB2をAWS上に構築する際のヒント&TIPS
DB2をAWS上に構築する際のヒント&TIPS
Docker で Deep Learning
Docker で Deep Learning
Wiki (Printed as manuscript)
Wiki (Printed as manuscript)
"fireap" - fast task runner on consul
"fireap" - fast task runner on consul
grifork - fast propagative task runner -
grifork - fast propagative task runner -
Introduction to poloxy - proxy for alerting
Introduction to poloxy - proxy for alerting
JAWS-UGコンテナ支部20160205_LT_ハンズラボ青木由佳
JAWS-UGコンテナ支部20160205_LT_ハンズラボ青木由佳
神奈川Ruby会議の会場係だけが知る密かな危機の話
神奈川Ruby会議の会場係だけが知る密かな危機の話
Accounting and information systems
Accounting and information systems
партизанский маркетинг
партизанский маркетинг
Gufo2007 02
Gufo2007 02
Monografia Giudiziale Credit Evolution
Monografia Giudiziale Credit Evolution
Agreements on Chimney Hill Property
Agreements on Chimney Hill Property
Consititution Day
Consititution Day
Similar to Rubyistを誘うScalaの世界 2.0
Scala elegant and exotic part 1
Scala elegant and exotic part 1
VulcanMinds
Crystal - Statically Typed Ruby
Crystal - Statically Typed Ruby
Vagmi Mudumbai
TDC 2012 - Patterns e Anti-Patterns em Ruby
TDC 2012 - Patterns e Anti-Patterns em Ruby
Fabio Akita
Scala
Scala
Sven Efftinge
Static or Dynamic Typing? Why not both?
Static or Dynamic Typing? Why not both?
Mario Camou Riveroll
Scala introduction
Scala introduction
vito jeng
Scala active record
Scala active record
鉄平 土佐
Scala uma poderosa linguagem para a jvm
Scala uma poderosa linguagem para a jvm
Isaias Barroso
Scala in Places API
Scala in Places API
Łukasz Bałamut
Scala In The Wild
Scala In The Wild
djspiewak
楽々Scalaプログラミング
楽々Scalaプログラミング
Tomoharu ASAMI
Rails 3.1 Asset Pipeline
Rails 3.1 Asset Pipeline
James Daniels
Модерни езици за програмиране за JVM (2011)
Модерни езици за програмиране за JVM (2011)
Bozhidar Batsov
Scala Days San Francisco
Scala Days San Francisco
Martin Odersky
Intro to scala
Intro to scala
Joe Zulli
Scala Workshop
Scala Workshop
Clueda AG
Taxonomy of Scala
Taxonomy of Scala
shinolajla
[Start] Scala
[Start] Scala
佑介 九岡
Scala
Scala
Andreas Enbohm
Don't panic in Fortaleza - ScalaFX
Don't panic in Fortaleza - ScalaFX
Alain Béarez
Similar to Rubyistを誘うScalaの世界 2.0
(20)
Scala elegant and exotic part 1
Scala elegant and exotic part 1
Crystal - Statically Typed Ruby
Crystal - Statically Typed Ruby
TDC 2012 - Patterns e Anti-Patterns em Ruby
TDC 2012 - Patterns e Anti-Patterns em Ruby
Scala
Scala
Static or Dynamic Typing? Why not both?
Static or Dynamic Typing? Why not both?
Scala introduction
Scala introduction
Scala active record
Scala active record
Scala uma poderosa linguagem para a jvm
Scala uma poderosa linguagem para a jvm
Scala in Places API
Scala in Places API
Scala In The Wild
Scala In The Wild
楽々Scalaプログラミング
楽々Scalaプログラミング
Rails 3.1 Asset Pipeline
Rails 3.1 Asset Pipeline
Модерни езици за програмиране за JVM (2011)
Модерни езици за програмиране за JVM (2011)
Scala Days San Francisco
Scala Days San Francisco
Intro to scala
Intro to scala
Scala Workshop
Scala Workshop
Taxonomy of Scala
Taxonomy of Scala
[Start] Scala
[Start] Scala
Scala
Scala
Don't panic in Fortaleza - ScalaFX
Don't panic in Fortaleza - ScalaFX
More from Yuto Matsukubo
がんばれテックリード!JIRA芸人篇!!
がんばれテックリード!JIRA芸人篇!!
Yuto Matsukubo
明日から使える気になるGo言語による並行処理
明日から使える気になるGo言語による並行処理
Yuto Matsukubo
Go/gRPCはじめました
Go/gRPCはじめました
Yuto Matsukubo
非エンジニア向け技術セミナーをした話
非エンジニア向け技術セミナーをした話
Yuto Matsukubo
GCPでSplatoonの戦績を分析する
GCPでSplatoonの戦績を分析する
Yuto Matsukubo
「オブジェクト指向設計実践ガイド」を読んだので誰かに意見聞きたい
「オブジェクト指向設計実践ガイド」を読んだので誰かに意見聞きたい
Yuto Matsukubo
Rubyistを誘うScalaの世界
Rubyistを誘うScalaの世界
Yuto Matsukubo
はじめてのTDD
はじめてのTDD
Yuto Matsukubo
Intoroduction to React.js
Intoroduction to React.js
Yuto Matsukubo
受託開発でAnsibleを導入した話
受託開発でAnsibleを導入した話
Yuto Matsukubo
More from Yuto Matsukubo
(10)
がんばれテックリード!JIRA芸人篇!!
がんばれテックリード!JIRA芸人篇!!
明日から使える気になるGo言語による並行処理
明日から使える気になるGo言語による並行処理
Go/gRPCはじめました
Go/gRPCはじめました
非エンジニア向け技術セミナーをした話
非エンジニア向け技術セミナーをした話
GCPでSplatoonの戦績を分析する
GCPでSplatoonの戦績を分析する
「オブジェクト指向設計実践ガイド」を読んだので誰かに意見聞きたい
「オブジェクト指向設計実践ガイド」を読んだので誰かに意見聞きたい
Rubyistを誘うScalaの世界
Rubyistを誘うScalaの世界
はじめてのTDD
はじめてのTDD
Intoroduction to React.js
Intoroduction to React.js
受託開発でAnsibleを導入した話
受託開発でAnsibleを導入した話
Recently uploaded
Architecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
presentation ICT roal in 21st century education
presentation ICT roal in 21st century education
jfdjdjcjdnsjd
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
wesley chun
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
Anna Loughnan Colquhoun
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
apidays
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
apidays
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
MadyBayot
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
Khushali Kathiriya
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Zilliz
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
Igalia
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024
The Digital Insurer
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
sammart93
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
Khem
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Deepika Singh
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Juan lago vázquez
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
ThousandEyes
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
Rustici Software
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Jeffrey Haguewood
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
Andrey Devyatkin
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
Recently uploaded
(20)
Architecting Cloud Native Applications
Architecting Cloud Native Applications
presentation ICT roal in 21st century education
presentation ICT roal in 21st century education
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
Rubyistを誘うScalaの世界 2.0
1.
Rubyist Scala 2.0 in Kawasaki
Ruby Kaigi @Peranikov
2.
• (Matsukubo Yuto) •
@Peranikov • Kawasaki.rb http://kawasakirb.github.io/ • Ruby • )Socket Ruby Scala • We’re hiring!
3.
T
4.
5.
6.
Rubyist Scala Kawasaki.rb Ruby
7.
Scala ?✋
8.
Rubyist Scala
9.
• Ruby Scala •
(Rubyist ) •
10.
Scala
11.
Scala • • JVM (
.NET ) • Java BetterJava
12.
Ruby ?
13.
Ruby ( ) • • •
Mix-In • Open Class • method_missing •
14.
Ruby ( ) • • •
Mix-In • Open Class • method_missing • Scala !
15.
16.
Ruby 1 + 2
# => 3 1.+(2) # => 3
17.
Scala 1 + 2
// => 3 1.+(2) // => 3
18.
Scala class MyClass { //
() def smile: String = { " :-)" } // def smile(str: String): String = { str + " :-)" } // {} def smile2(str: String) = str + " :-)" }
19.
Scala val obj =
new MyClass // () // obj.smile // obj.smile("Hi,") // 1 () obj smile "Hi,"
20.
21.
Ruby • Enumerable#map(collect) • Enumerable#flat_map •
Enumerable#reduce(inject) • Enumerable#select • Enumerable#find • etc…
22.
Scala • Traversable#map • Traversable#flatMap •
Traversable#reduceLeft • Traversable#filter • Traversable#find • etc…
23.
: Ruby map [1,
2, 3, 4].map { |i| i * 2 } # => [2, 4, 6, 8]
24.
Scala List(1, 2, 3,
4).map { i => i * 2 } // => List(2, 4, 6, 8) Ruby !
25.
Scala ( ) List(1,
2, 3, 4).map { _ * 2 } // => List(2, 4, 6, 8)
26.
Q. ? A. Ruby •
Scala map List(1,2,3).map { i => i * 2 } List(1,2,3).map( i => i * 2 ) Scala {}
27.
Ruby lambda # Ruby f
= lambda { |i| i + 10 } f.call(20) # => 30 // Scala val f = (i: Int) => i + 10 f(20) // => 30
28.
:size or length? •
List • size length (size length ) • Ruby List(1,2,3).length // => 3 List(1,2,3).size // => 3
29.
Mix-In
30.
Ruby module Mix-in module
Monster def roar ' ' end end class Godzilla include Monster end Godzilla.new.roar # => " "
31.
Scala Trait trait Monster
{ def roar = " " } class Godzilla extends Monster (new Godzilla).roar // => " "
32.
trait Monster { def
roar = " " } trait HasTail { def swing = " " } class Godzilla extends Monster with HasTail
33.
trait Monster { def
roar: String } class Godzilla extends Monster { def roar = " " } (new Godzilla).roar // => " "
34.
Open Class
35.
Ruby Open Class class
String def replace_to_scala self.gsub('ruby', 'scala') end end "ruby is nice!".replace_to_scala # => "scala is nice!"
36.
Scala Open Class(
) implicit class MyString(val s: String) def replaceToScala = { s.replaceAll("ruby", "scala") } } "ruby is nice!".replaceToScala // String = scala is nice!
37.
implicit class MyString(val
s: String) def replaceToScala = { s.replaceAll("ruby", "scala") } } "ruby is nice!".replaceToScala // String = scala is nice!
38.
implicit conversion • • def concat(i:
String, j: String): String = { i + j } implicit def intToString(src: Int): String = { src.toString } concat(100, 200) // => 100200
39.
method_missing
40.
Ruby method_missing class MyClass def
method_missing(name) "#{name} is missing!!" end end MyClass.new.foo # => "foo is missing!!"
41.
Scala method_missing (Dynamic ) import
scala.language.dynamics class MyClass extends Dynamic { def selectDynamic(name: String): String = { s"${name} is missing!" } } (new MyClass).foo // => foo is missing!
42.
Duck Typing
43.
Ruby Duck Typing •
44.
Scala Duck Typing (Structural
Subtyping) • • • : roar
45.
1. type Roarabel =
{ def roar: String }
46.
2. class KingGhidorah { def
roar: String = " " } class Mothra { def roar: String = " " }
47.
3. def doRoar(target: Roarabel)
= { target.roar } doRoar(new KingGhidorah) // => “ ” doRoar(new Mothra) // => “ ”
48.
Scala • • Future • Scala.js
… JS Scala • Scala Native … Scala LLVM • Dotty … Scala
49.
• Scala • Ruby
Scala • Rubyist Scala !
Download now