Enviar pesquisa
Carregar
Rubyistを誘うScalaの世界 2.0
•
0 gostou
•
2,607 visualizações
Yuto Matsukubo
Seguir
in Kawasaki Ruby Kaigi
Leia menos
Leia mais
Tecnologia
Denunciar
Compartilhar
Denunciar
Compartilhar
1 de 50
Baixar agora
Baixar para ler offline
Recomendados
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
Recomendados
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
Mais conteúdo relacionado
Mais procurados
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
Mais procurados
(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
Destaque
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
Destaque
(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
Semelhante a 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
Semelhante a 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
Mais de 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
Mais de 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を導入した話
Último
Slack Application Development 101 Slides
Slack Application Development 101 Slides
praypatel2
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Drew Madelung
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
Enterprise Knowledge
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
Pooja Nehwal
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
hans926745
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
The Digital Insurer
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
vu2urc
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
Delhi Call girls
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
Radu Cotescu
🐬 The future of MySQL is Postgres 🐘
🐬 The future of MySQL is Postgres 🐘
RTylerCroy
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
giselly40
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
Paola De la Torre
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Roshan Dwivedi
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
The Digital Insurer
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
The Digital Insurer
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
Anna Loughnan Colquhoun
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
Allon Mureinik
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Igalia
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
wesley chun
Último
(20)
Slack Application Development 101 Slides
Slack Application Development 101 Slides
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
🐬 The future of MySQL is Postgres 🐘
🐬 The future of MySQL is Postgres 🐘
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
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 !
Baixar agora