SlideShare una empresa de Scribd logo
1 de 16
Descargar para leer sin conexión
こわくないScala	
  
for	
  Java	
  programmers	
  
          	
  
        水島 宏太	
  
 日本Scalaユーザーズグループ	
  
    株式会社ユビレジ	
  
自己紹介	
  
•  水島 宏太	
  	
  
   –  Twi3er:	
  @kmizu	
  
   –  Github:	
  h3ps://github.com/kmizu/	
  
	
  
•  Scala	
  Days皆勤賞(2010,	
  2011,	
  2012)	
  -­‐>	
  どうでもいい	
  
•  好きなもの	
  
   •    (プログラミング|形式)言語	
  
   •    静的な型システム	
  
   •    メタプログラミング	
  
   •    Scala	
  
Scalaは怖い?	
  
•  よくわからないけど怖そうな機能	
  
 –  Implicit	
  conversion(暗黙の型変換)	
  
 –  Implicit	
  parameter	
  (型クラス)	
  
•  関数型言語とのハイブリッド	
  
•  Scalaz	
  
•  Scalaの人たちが怖い	
  

              	
  Scala怖い!	
  
ちょっと待って	
  




Scalaは怖くない	
  
Scalaへの誤解	
  
•    関数型の概念を理解する必要がある	
  
•    implicitなんとかを使いこなす必要がある	
  
•    関数型なコードを書かないと叩かれる	
  
•    Scalazという謎のライブラリを普通に使う	
  
誤解(1)	
  関数型の概念を理解す
          る必要がある	
  
•  もちろん理解した方がいい	
  
•  最初から全て理解する必要はない	
  
 –  「タイプ数が少ないJava」になる事を恐れない	
  
•  少しずつ考え方を変えよう	
  
 –  	
  第一級の関数の活用	
  
 –  	
  ループから再帰、再帰から高階関数へ	
  
 –  	
  Scalaの関数型プログラミングのサポートは	
  
 	
  	
  	
  	
  Javaプログラマには理解しやすい	
  
誤解1についての補足	
  
         (第一級の関数を例として)    	
  
•  第一級の関数 =	
  無名クラスのインスタンス	
  
 val	
  f	
  =	
  (n:	
  Int)	
  =>	
  n	
  +	
  1	
  
 f(3)	
  //	
  4	
  
                                                         	
  
 	
  
 val	
  f:	
  FuncQon1[Int,	
  Int]	
  =	
  new	
  FuncQon1[Int,	
  Int]	
  {	
  
 	
  	
  def	
  apply(n:	
  Int):	
  Int	
  =	
  n	
  +	
  1	
  
 }	
  
 f.apply(3)	
  //	
  4	
  
 	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  
誤解1についての補足2	
  
•  	
  val	
  f:	
  FuncQon1[Int,	
  Int]	
  =	
  new	
  FuncQon1[Int,	
  Int]	
  {	
  
       	
  	
  	
  def	
  apply(n:	
  Int):	
  Int	
  =	
  n	
  +	
  1	
  
       }	
  
       f.apply(3)	
  //	
  4	
  
       	
  
       FuncQon1<Integer,	
  Integer>	
  f	
  =	
  	
  
       	
  	
  	
  	
  new	
  FuncQon1<Integer,	
  Integer>()	
  {	
  
       	
  	
  	
  	
  Integer	
  apply(Integer	
  n)	
  {	
  return	
  n	
  +	
  1;	
  }	
  	
  	
  
       };	
  
       f.apply(3);	
  //4	
  
簡単!	
  
誤解2	
  implicitなんとかを使いこ
         なす必要がある    	
  
•  スクラッチから書くときには必要ない	
  
 –  もちろん、使いこなせると便利	
  


•  Scalaのコードを読む時は知っていると良い	
  
 –  読むときになってから勉強すればいい	
  
 –  最初から全てを知ろうとしない	
  
誤解3	
  関数型なコードを書かな
         いと叩かれる	
  
•  一部にそういう人は居ます	
  

•  多くの人は普通に教えてくれます	
  
 –  「教えたがり」な人は意外に多い	
  


•  言葉遣いが端的な人は(普通)怒っていません	
  
 –  どうか怯えないで	
  
誤解4	
  Scalazという	
  
  難しいライブラリを普通に使う          	
  
•  そんなことはありません(キリッ	
  
	
  
•  コアなライブラリ作者が使っていたりする	
  
 –  使いこなせると便利なので	
  
	
  
•  普通のScalaプログラマには必要ありません	
  
 –  ここ重要(テストに出ます)	
  
お勧め書籍	
  
•  Scalaスケーラブルプログラミング第2版	
  
                        	
  
  –  通称コップ本(Scala作者たちが著者)	
  
  –  Scalaの入門本&関数型プログラミングの入門本	
  
  –  分厚いけど、丁寧な解説	
  
•  Scala逆引きレシピ	
  
  –  Scalaでしたい事をするときに必要なライブラリ
     やツールを逆引き形式で知ることができる	
  
  –  コップ本とセットでお勧め	
  
まとめ	
  



        	
  
Scalaはたぶん怖くない	
  
宣伝:	
  Scala	
  Conference	
  in	
  Japan	
  
                   2013	
  
•  2013年3月2日(土)	
  	
  10:00〜18:30	
  	
  
•  会場:東工大 大岡山キャンパス	
  
•  目玉	
  
   –  	
  Typesafe社から4名の招待講演者	
  
•  定員:200名	
  (完売)	
  
•  懇親会はまだ参加可能	
  

•  URL:	
  h3p://scalaconf.jp/	
  
海外からの招待講演者	
  
•  Jonas	
  Boner	
  	
  
    –  Akka作者、Typesafe共同創業者)	
  
•  Joshua	
  Suereth	
  (Scalaチーム)	
  
    –  『Scala	
  in	
  Depth』著者	
  
•  James	
  Roper	
  (Play	
  2コアチーム)	
  
•  Jamie	
  Allen	
  (コンサルタント)	
  

Más contenido relacionado

La actualidad más candente

こわくないScala
こわくないScalaこわくないScala
こわくないScalaFScoward
 
「再代入なんて、あるわけない」 ~ふつうのプログラマが関数型言語を知るべき理由~ (Gunma.web #5 2011/05/14)
「再代入なんて、あるわけない」 ~ふつうのプログラマが関数型言語を知るべき理由~ (Gunma.web #5 2011/05/14)「再代入なんて、あるわけない」 ~ふつうのプログラマが関数型言語を知るべき理由~ (Gunma.web #5 2011/05/14)
「再代入なんて、あるわけない」 ~ふつうのプログラマが関数型言語を知るべき理由~ (Gunma.web #5 2011/05/14)parrotstudio
 
Akka と Typeの話
Akka と Typeの話Akka と Typeの話
Akka と Typeの話Huy Do
 
HiroshimaJUG の 「Java8 Lambda ハンズオン with すごい広島」 を5分で振り返る
HiroshimaJUG の「Java8 Lambda ハンズオン with すごい広島」を5分で振り返るHiroshimaJUG の「Java8 Lambda ハンズオン with すごい広島」を5分で振り返る
HiroshimaJUG の 「Java8 Lambda ハンズオン with すごい広島」 を5分で振り返るtsudaa
 
Scalaで萌える関数型プログラミング[1.1.RC1]
Scalaで萌える関数型プログラミング[1.1.RC1]Scalaで萌える関数型プログラミング[1.1.RC1]
Scalaで萌える関数型プログラミング[1.1.RC1]Ra Zon
 
2歩目 プレゼン資料 初歩から始めるjava勉強会
2歩目 プレゼン資料 初歩から始めるjava勉強会2歩目 プレゼン資料 初歩から始めるjava勉強会
2歩目 プレゼン資料 初歩から始めるjava勉強会悠平 鎌田
 
型プロファイラ:抽象解釈に基づくRuby 3の静的解析
型プロファイラ:抽象解釈に基づくRuby 3の静的解析型プロファイラ:抽象解釈に基づくRuby 3の静的解析
型プロファイラ:抽象解釈に基づくRuby 3の静的解析mametter
 
C,Javaと比較しながらRubyに入門する話 - e-ZUKA Rails拡大号vol1
C,Javaと比較しながらRubyに入門する話 - e-ZUKA Rails拡大号vol1C,Javaと比較しながらRubyに入門する話 - e-ZUKA Rails拡大号vol1
C,Javaと比較しながらRubyに入門する話 - e-ZUKA Rails拡大号vol1耕平 谷口
 
Rxjavaとoptionalで関数型androidしよう
Rxjavaとoptionalで関数型androidしようRxjavaとoptionalで関数型androidしよう
Rxjavaとoptionalで関数型androidしようFumihiko Shiroyama
 
Effective Modern C++ 勉強会 Item26
Effective Modern C++ 勉強会 Item26Effective Modern C++ 勉強会 Item26
Effective Modern C++ 勉強会 Item26Akihiro Nishimura
 
Ta plスライド第4章
Ta plスライド第4章Ta plスライド第4章
Ta plスライド第4章Kyoko Kadowaki
 
Swiftで、かなり微妙な型クラス
Swiftで、かなり微妙な型クラスSwiftで、かなり微妙な型クラス
Swiftで、かなり微妙な型クラスNobukazu Hanada
 

La actualidad más candente (19)

こわくないScala
こわくないScalaこわくないScala
こわくないScala
 
Scalaノススメ
ScalaノススメScalaノススメ
Scalaノススメ
 
Phantom Type in Scala
Phantom Type in ScalaPhantom Type in Scala
Phantom Type in Scala
 
「再代入なんて、あるわけない」 ~ふつうのプログラマが関数型言語を知るべき理由~ (Gunma.web #5 2011/05/14)
「再代入なんて、あるわけない」 ~ふつうのプログラマが関数型言語を知るべき理由~ (Gunma.web #5 2011/05/14)「再代入なんて、あるわけない」 ~ふつうのプログラマが関数型言語を知るべき理由~ (Gunma.web #5 2011/05/14)
「再代入なんて、あるわけない」 ~ふつうのプログラマが関数型言語を知るべき理由~ (Gunma.web #5 2011/05/14)
 
Akka と Typeの話
Akka と Typeの話Akka と Typeの話
Akka と Typeの話
 
Chapter5.3
Chapter5.3Chapter5.3
Chapter5.3
 
HiroshimaJUG の 「Java8 Lambda ハンズオン with すごい広島」 を5分で振り返る
HiroshimaJUG の「Java8 Lambda ハンズオン with すごい広島」を5分で振り返るHiroshimaJUG の「Java8 Lambda ハンズオン with すごい広島」を5分で振り返る
HiroshimaJUG の 「Java8 Lambda ハンズオン with すごい広島」 を5分で振り返る
 
Scalaで萌える関数型プログラミング[1.1.RC1]
Scalaで萌える関数型プログラミング[1.1.RC1]Scalaで萌える関数型プログラミング[1.1.RC1]
Scalaで萌える関数型プログラミング[1.1.RC1]
 
2歩目 プレゼン資料 初歩から始めるjava勉強会
2歩目 プレゼン資料 初歩から始めるjava勉強会2歩目 プレゼン資料 初歩から始めるjava勉強会
2歩目 プレゼン資料 初歩から始めるjava勉強会
 
型プロファイラ:抽象解釈に基づくRuby 3の静的解析
型プロファイラ:抽象解釈に基づくRuby 3の静的解析型プロファイラ:抽象解釈に基づくRuby 3の静的解析
型プロファイラ:抽象解釈に基づくRuby 3の静的解析
 
C,Javaと比較しながらRubyに入門する話 - e-ZUKA Rails拡大号vol1
C,Javaと比較しながらRubyに入門する話 - e-ZUKA Rails拡大号vol1C,Javaと比較しながらRubyに入門する話 - e-ZUKA Rails拡大号vol1
C,Javaと比較しながらRubyに入門する話 - e-ZUKA Rails拡大号vol1
 
Lecture1
Lecture1Lecture1
Lecture1
 
Rxjavaとoptionalで関数型androidしよう
Rxjavaとoptionalで関数型androidしようRxjavaとoptionalで関数型androidしよう
Rxjavaとoptionalで関数型androidしよう
 
Haskell Lecture 1
Haskell Lecture 1Haskell Lecture 1
Haskell Lecture 1
 
Effective Modern C++ 勉強会 Item26
Effective Modern C++ 勉強会 Item26Effective Modern C++ 勉強会 Item26
Effective Modern C++ 勉強会 Item26
 
Ta plスライド第4章
Ta plスライド第4章Ta plスライド第4章
Ta plスライド第4章
 
Swiftで、かなり微妙な型クラス
Swiftで、かなり微妙な型クラスSwiftで、かなり微妙な型クラス
Swiftで、かなり微妙な型クラス
 
すいすいSwift
すいすいSwiftすいすいSwift
すいすいSwift
 
Clojure
ClojureClojure
Clojure
 

Destacado

Akka-Streams in Production
Akka-Streams in ProductionAkka-Streams in Production
Akka-Streams in ProductionKazunobu Raita
 
ScalaにまつわるNewsな話
ScalaにまつわるNewsな話ScalaにまつわるNewsな話
ScalaにまつわるNewsな話Yosuke Mizutani
 
バッチではじめてAkkaを使ってみた (refined)
バッチではじめてAkkaを使ってみた (refined)バッチではじめてAkkaを使ってみた (refined)
バッチではじめてAkkaを使ってみた (refined)Koji Agawa
 
株式会社ドワンゴにおけるScala教育の現状
株式会社ドワンゴにおけるScala教育の現状株式会社ドワンゴにおけるScala教育の現状
株式会社ドワンゴにおけるScala教育の現状Kota Mizushima
 
Trait とは? その使い道を考えてみる
Trait とは? その使い道を考えてみるTrait とは? その使い道を考えてみる
Trait とは? その使い道を考えてみるTakuya Fujimura
 
これから始める人の為のディープラーニング基礎講座
これから始める人の為のディープラーニング基礎講座これから始める人の為のディープラーニング基礎講座
これから始める人の為のディープラーニング基礎講座NVIDIA Japan
 

Destacado (6)

Akka-Streams in Production
Akka-Streams in ProductionAkka-Streams in Production
Akka-Streams in Production
 
ScalaにまつわるNewsな話
ScalaにまつわるNewsな話ScalaにまつわるNewsな話
ScalaにまつわるNewsな話
 
バッチではじめてAkkaを使ってみた (refined)
バッチではじめてAkkaを使ってみた (refined)バッチではじめてAkkaを使ってみた (refined)
バッチではじめてAkkaを使ってみた (refined)
 
株式会社ドワンゴにおけるScala教育の現状
株式会社ドワンゴにおけるScala教育の現状株式会社ドワンゴにおけるScala教育の現状
株式会社ドワンゴにおけるScala教育の現状
 
Trait とは? その使い道を考えてみる
Trait とは? その使い道を考えてみるTrait とは? その使い道を考えてみる
Trait とは? その使い道を考えてみる
 
これから始める人の為のディープラーニング基礎講座
これから始める人の為のディープラーニング基礎講座これから始める人の為のディープラーニング基礎講座
これから始める人の為のディープラーニング基礎講座
 

Similar a こわくないScala

Scala再入門 @2014/02/08 Scala関西ビギナーズ第3回
Scala再入門 @2014/02/08 Scala関西ビギナーズ第3回Scala再入門 @2014/02/08 Scala関西ビギナーズ第3回
Scala再入門 @2014/02/08 Scala関西ビギナーズ第3回Asami Abe
 
Java エンジニアチームが始めやすい Scala コーディングスタイル #ichigayageek
Java エンジニアチームが始めやすい Scala コーディングスタイル #ichigayageekJava エンジニアチームが始めやすい Scala コーディングスタイル #ichigayageek
Java エンジニアチームが始めやすい Scala コーディングスタイル #ichigayageekKazuhiro Sera
 
Scala勉強会_2014_11_18
Scala勉強会_2014_11_18Scala勉強会_2014_11_18
Scala勉強会_2014_11_18Shuya Tsukamoto
 
Scala Daysに行ってみて
Scala Daysに行ってみてScala Daysに行ってみて
Scala Daysに行ってみてKota Mizushima
 
Scalaのimplicit、カリー化
Scalaのimplicit、カリー化Scalaのimplicit、カリー化
Scalaのimplicit、カリー化yuya-nakamura
 
頑張りすぎないScala
頑張りすぎないScala頑張りすぎないScala
頑張りすぎないScalatakezoe
 
Dark vol4 for_slideshare
Dark vol4 for_slideshareDark vol4 for_slideshare
Dark vol4 for_slideshareara_ta3
 
Scalaで萌える関数型プログラミング[エッセンシャル版]
Scalaで萌える関数型プログラミング[エッセンシャル版]Scalaで萌える関数型プログラミング[エッセンシャル版]
Scalaで萌える関数型プログラミング[エッセンシャル版]Ra Zon
 
objc2swift 〜 Objective-C から Swift への「コード&パラダイム」シフト
objc2swift 〜 Objective-C から Swift への「コード&パラダイム」シフトobjc2swift 〜 Objective-C から Swift への「コード&パラダイム」シフト
objc2swift 〜 Objective-C から Swift への「コード&パラダイム」シフトTaketo Sano
 
iOSエンジニアのためのScala入門
iOSエンジニアのためのScala入門iOSエンジニアのためのScala入門
iOSエンジニアのためのScala入門Masaya Dake
 
Scala×silverlight
Scala×silverlightScala×silverlight
Scala×silverlightterurou
 
PFPファシグラ(2009/07/03)
PFPファシグラ(2009/07/03)PFPファシグラ(2009/07/03)
PFPファシグラ(2009/07/03)nishikawa_makoto7
 
Pythonista による Pythonista のための Scala 紹介 in BPStudy #49
Pythonista による Pythonista のための Scala 紹介 in BPStudy #49Pythonista による Pythonista のための Scala 紹介 in BPStudy #49
Pythonista による Pythonista のための Scala 紹介 in BPStudy #49shoma h
 
SpringOne 2016 報告 Reactive APIの設計・実装・使用
SpringOne 2016 報告 Reactive APIの設計・実装・使用SpringOne 2016 報告 Reactive APIの設計・実装・使用
SpringOne 2016 報告 Reactive APIの設計・実装・使用Takuya Iwatsuka
 
Scalaでのプログラム開発
Scalaでのプログラム開発Scalaでのプログラム開発
Scalaでのプログラム開発Kota Mizushima
 
リテラル文字列型までの道
リテラル文字列型までの道リテラル文字列型までの道
リテラル文字列型までの道Satoshi Sato
 

Similar a こわくないScala (20)

Scala再入門 @2014/02/08 Scala関西ビギナーズ第3回
Scala再入門 @2014/02/08 Scala関西ビギナーズ第3回Scala再入門 @2014/02/08 Scala関西ビギナーズ第3回
Scala再入門 @2014/02/08 Scala関西ビギナーズ第3回
 
Java エンジニアチームが始めやすい Scala コーディングスタイル #ichigayageek
Java エンジニアチームが始めやすい Scala コーディングスタイル #ichigayageekJava エンジニアチームが始めやすい Scala コーディングスタイル #ichigayageek
Java エンジニアチームが始めやすい Scala コーディングスタイル #ichigayageek
 
TypeScript超入門
TypeScript超入門TypeScript超入門
TypeScript超入門
 
Scala勉強会_2014_11_18
Scala勉強会_2014_11_18Scala勉強会_2014_11_18
Scala勉強会_2014_11_18
 
Scala Daysに行ってみて
Scala Daysに行ってみてScala Daysに行ってみて
Scala Daysに行ってみて
 
Scalaのimplicit、カリー化
Scalaのimplicit、カリー化Scalaのimplicit、カリー化
Scalaのimplicit、カリー化
 
ATN No.2 Scala事始め
ATN No.2 Scala事始めATN No.2 Scala事始め
ATN No.2 Scala事始め
 
Scala入門
Scala入門Scala入門
Scala入門
 
頑張りすぎないScala
頑張りすぎないScala頑張りすぎないScala
頑張りすぎないScala
 
Dark vol4 for_slideshare
Dark vol4 for_slideshareDark vol4 for_slideshare
Dark vol4 for_slideshare
 
Scalaで萌える関数型プログラミング[エッセンシャル版]
Scalaで萌える関数型プログラミング[エッセンシャル版]Scalaで萌える関数型プログラミング[エッセンシャル版]
Scalaで萌える関数型プログラミング[エッセンシャル版]
 
objc2swift 〜 Objective-C から Swift への「コード&パラダイム」シフト
objc2swift 〜 Objective-C から Swift への「コード&パラダイム」シフトobjc2swift 〜 Objective-C から Swift への「コード&パラダイム」シフト
objc2swift 〜 Objective-C から Swift への「コード&パラダイム」シフト
 
iOSエンジニアのためのScala入門
iOSエンジニアのためのScala入門iOSエンジニアのためのScala入門
iOSエンジニアのためのScala入門
 
Scala×silverlight
Scala×silverlightScala×silverlight
Scala×silverlight
 
Scrum alliance regional gathering tokyo 2013 pub
Scrum alliance regional gathering tokyo 2013 pubScrum alliance regional gathering tokyo 2013 pub
Scrum alliance regional gathering tokyo 2013 pub
 
PFPファシグラ(2009/07/03)
PFPファシグラ(2009/07/03)PFPファシグラ(2009/07/03)
PFPファシグラ(2009/07/03)
 
Pythonista による Pythonista のための Scala 紹介 in BPStudy #49
Pythonista による Pythonista のための Scala 紹介 in BPStudy #49Pythonista による Pythonista のための Scala 紹介 in BPStudy #49
Pythonista による Pythonista のための Scala 紹介 in BPStudy #49
 
SpringOne 2016 報告 Reactive APIの設計・実装・使用
SpringOne 2016 報告 Reactive APIの設計・実装・使用SpringOne 2016 報告 Reactive APIの設計・実装・使用
SpringOne 2016 報告 Reactive APIの設計・実装・使用
 
Scalaでのプログラム開発
Scalaでのプログラム開発Scalaでのプログラム開発
Scalaでのプログラム開発
 
リテラル文字列型までの道
リテラル文字列型までの道リテラル文字列型までの道
リテラル文字列型までの道
 

Más de Kota Mizushima

ドワンゴにおける新卒エンジニア向けScala研修について
ドワンゴにおける新卒エンジニア向けScala研修についてドワンゴにおける新卒エンジニア向けScala研修について
ドワンゴにおける新卒エンジニア向けScala研修についてKota Mizushima
 
Scala Daysに行ってみて - あるいはスイス旅行記 -
Scala Daysに行ってみて - あるいはスイス旅行記 -Scala Daysに行ってみて - あるいはスイス旅行記 -
Scala Daysに行ってみて - あるいはスイス旅行記 -Kota Mizushima
 
Scalaの現状と今後
Scalaの現状と今後Scalaの現状と今後
Scalaの現状と今後Kota Mizushima
 
Scala Performance Tuning Tips
Scala Performance Tuning TipsScala Performance Tuning Tips
Scala Performance Tuning TipsKota Mizushima
 
こわくない型クラス
こわくない型クラスこわくない型クラス
こわくない型クラスKota Mizushima
 
About Capabilities for Uniqueness and Borrowing
About Capabilities for Uniqueness and BorrowingAbout Capabilities for Uniqueness and Borrowing
About Capabilities for Uniqueness and BorrowingKota Mizushima
 
Scala Macros makes it easy to provide useful libraries
Scala Macros makes it easy to provide useful librariesScala Macros makes it easy to provide useful libraries
Scala Macros makes it easy to provide useful librariesKota Mizushima
 
Scala + Finagleの魅力
Scala + Finagleの魅力Scala + Finagleの魅力
Scala + Finagleの魅力Kota Mizushima
 
Scalaの現状と課題
Scalaの現状と課題Scalaの現状と課題
Scalaの現状と課題Kota Mizushima
 
日本Scalaユーザーズグループ発足
日本Scalaユーザーズグループ発足日本Scalaユーザーズグループ発足
日本Scalaユーザーズグループ発足Kota Mizushima
 
Implicit Implicit Scala
Implicit Implicit ScalaImplicit Implicit Scala
Implicit Implicit ScalaKota Mizushima
 
Implicit Explicit Scala
Implicit Explicit ScalaImplicit Explicit Scala
Implicit Explicit ScalaKota Mizushima
 
言語アップデート -Scala編-
言語アップデート -Scala編-言語アップデート -Scala編-
言語アップデート -Scala編-Kota Mizushima
 
ScalaのソースをEclipseでビルドしてみた
ScalaのソースをEclipseでビルドしてみたScalaのソースをEclipseでビルドしてみた
ScalaのソースをEclipseでビルドしてみたKota Mizushima
 

Más de Kota Mizushima (20)

ドワンゴにおける新卒エンジニア向けScala研修について
ドワンゴにおける新卒エンジニア向けScala研修についてドワンゴにおける新卒エンジニア向けScala研修について
ドワンゴにおける新卒エンジニア向けScala研修について
 
kollectionの紹介
kollectionの紹介kollectionの紹介
kollectionの紹介
 
Macros in nemerle
Macros in nemerleMacros in nemerle
Macros in nemerle
 
Scala Daysに行ってみて - あるいはスイス旅行記 -
Scala Daysに行ってみて - あるいはスイス旅行記 -Scala Daysに行ってみて - あるいはスイス旅行記 -
Scala Daysに行ってみて - あるいはスイス旅行記 -
 
Introduction to PEG
Introduction to PEGIntroduction to PEG
Introduction to PEG
 
Scalaの現状と今後
Scalaの現状と今後Scalaの現状と今後
Scalaの現状と今後
 
Power of Scala
Power of ScalaPower of Scala
Power of Scala
 
Scala Performance Tuning Tips
Scala Performance Tuning TipsScala Performance Tuning Tips
Scala Performance Tuning Tips
 
こわくない型クラス
こわくない型クラスこわくない型クラス
こわくない型クラス
 
Scala is-unscared
Scala is-unscaredScala is-unscared
Scala is-unscared
 
About Capabilities for Uniqueness and Borrowing
About Capabilities for Uniqueness and BorrowingAbout Capabilities for Uniqueness and Borrowing
About Capabilities for Uniqueness and Borrowing
 
Scala Macros makes it easy to provide useful libraries
Scala Macros makes it easy to provide useful librariesScala Macros makes it easy to provide useful libraries
Scala Macros makes it easy to provide useful libraries
 
Scala + Finagleの魅力
Scala + Finagleの魅力Scala + Finagleの魅力
Scala + Finagleの魅力
 
Scalaの現状と課題
Scalaの現状と課題Scalaの現状と課題
Scalaの現状と課題
 
日本Scalaユーザーズグループ発足
日本Scalaユーザーズグループ発足日本Scalaユーザーズグループ発足
日本Scalaユーザーズグループ発足
 
Implicit Implicit Scala
Implicit Implicit ScalaImplicit Implicit Scala
Implicit Implicit Scala
 
Implicit Explicit Scala
Implicit Explicit ScalaImplicit Explicit Scala
Implicit Explicit Scala
 
言語アップデート -Scala編-
言語アップデート -Scala編-言語アップデート -Scala編-
言語アップデート -Scala編-
 
Scalaz
ScalazScalaz
Scalaz
 
ScalaのソースをEclipseでビルドしてみた
ScalaのソースをEclipseでビルドしてみたScalaのソースをEclipseでビルドしてみた
ScalaのソースをEclipseでビルドしてみた
 

Último

自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 

Último (8)

自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 

こわくないScala

  • 1. こわくないScala   for  Java  programmers     水島 宏太   日本Scalaユーザーズグループ   株式会社ユビレジ  
  • 2. 自己紹介   •  水島 宏太     –  Twi3er:  @kmizu   –  Github:  h3ps://github.com/kmizu/     •  Scala  Days皆勤賞(2010,  2011,  2012)  -­‐>  どうでもいい   •  好きなもの   •  (プログラミング|形式)言語   •  静的な型システム   •  メタプログラミング   •  Scala  
  • 3. Scalaは怖い?   •  よくわからないけど怖そうな機能   –  Implicit  conversion(暗黙の型変換)   –  Implicit  parameter  (型クラス)   •  関数型言語とのハイブリッド   •  Scalaz   •  Scalaの人たちが怖い    Scala怖い!  
  • 5. Scalaへの誤解   •  関数型の概念を理解する必要がある   •  implicitなんとかを使いこなす必要がある   •  関数型なコードを書かないと叩かれる   •  Scalazという謎のライブラリを普通に使う  
  • 6. 誤解(1)  関数型の概念を理解す る必要がある   •  もちろん理解した方がいい   •  最初から全て理解する必要はない   –  「タイプ数が少ないJava」になる事を恐れない   •  少しずつ考え方を変えよう   –   第一級の関数の活用   –   ループから再帰、再帰から高階関数へ   –   Scalaの関数型プログラミングのサポートは          Javaプログラマには理解しやすい  
  • 7. 誤解1についての補足   (第一級の関数を例として)   •  第一級の関数 =  無名クラスのインスタンス   val  f  =  (n:  Int)  =>  n  +  1   f(3)  //  4       val  f:  FuncQon1[Int,  Int]  =  new  FuncQon1[Int,  Int]  {      def  apply(n:  Int):  Int  =  n  +  1   }   f.apply(3)  //  4                      
  • 8. 誤解1についての補足2   •   val  f:  FuncQon1[Int,  Int]  =  new  FuncQon1[Int,  Int]  {        def  apply(n:  Int):  Int  =  n  +  1   }   f.apply(3)  //  4     FuncQon1<Integer,  Integer>  f  =            new  FuncQon1<Integer,  Integer>()  {          Integer  apply(Integer  n)  {  return  n  +  1;  }       };   f.apply(3);  //4  
  • 10. 誤解2  implicitなんとかを使いこ なす必要がある   •  スクラッチから書くときには必要ない   –  もちろん、使いこなせると便利   •  Scalaのコードを読む時は知っていると良い   –  読むときになってから勉強すればいい   –  最初から全てを知ろうとしない  
  • 11. 誤解3  関数型なコードを書かな いと叩かれる   •  一部にそういう人は居ます   •  多くの人は普通に教えてくれます   –  「教えたがり」な人は意外に多い   •  言葉遣いが端的な人は(普通)怒っていません   –  どうか怯えないで  
  • 12. 誤解4  Scalazという   難しいライブラリを普通に使う   •  そんなことはありません(キリッ     •  コアなライブラリ作者が使っていたりする   –  使いこなせると便利なので     •  普通のScalaプログラマには必要ありません   –  ここ重要(テストに出ます)  
  • 13. お勧め書籍   •  Scalaスケーラブルプログラミング第2版     –  通称コップ本(Scala作者たちが著者)   –  Scalaの入門本&関数型プログラミングの入門本   –  分厚いけど、丁寧な解説   •  Scala逆引きレシピ   –  Scalaでしたい事をするときに必要なライブラリ やツールを逆引き形式で知ることができる   –  コップ本とセットでお勧め  
  • 14. まとめ     Scalaはたぶん怖くない  
  • 15. 宣伝:  Scala  Conference  in  Japan   2013   •  2013年3月2日(土)    10:00〜18:30     •  会場:東工大 大岡山キャンパス   •  目玉   –   Typesafe社から4名の招待講演者   •  定員:200名  (完売)   •  懇親会はまだ参加可能   •  URL:  h3p://scalaconf.jp/  
  • 16. 海外からの招待講演者   •  Jonas  Boner     –  Akka作者、Typesafe共同創業者)   •  Joshua  Suereth  (Scalaチーム)   –  『Scala  in  Depth』著者   •  James  Roper  (Play  2コアチーム)   •  Jamie  Allen  (コンサルタント)