SlideShare a Scribd company logo
こわくない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	
  (コンサルタント)	
  

More Related Content

What's hot

こわくないScala
こわくないScalaこわくないScala
こわくないScala
FScoward
 
Scalaノススメ
ScalaノススメScalaノススメ
Scalaノススメ
Yasuyuki Maeda
 
Phantom Type in Scala
Phantom Type in ScalaPhantom Type in Scala
Phantom Type in Scala
Yasuyuki Maeda
 
「再代入なんて、あるわけない」 ~ふつうのプログラマが関数型言語を知るべき理由~ (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
 
Chapter5.3
Chapter5.3Chapter5.3
Chapter5.3
Kenji Doi
 
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
 
Haskell Lecture 1
Haskell Lecture 1Haskell Lecture 1
Haskell Lecture 1
Yusuke Matsushita
 
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
 
すいすいSwift
すいすいSwiftすいすいSwift
すいすいSwift
karupanerura
 

What's hot (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
 

Viewers also liked

Akka-Streams in Production
Akka-Streams in ProductionAkka-Streams in Production
Akka-Streams in Production
Kazunobu 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
 

Viewers also liked (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 to こわくない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 コーディングスタイル #ichigayageek
Kazuhiro Sera
 
TypeScript超入門
TypeScript超入門TypeScript超入門
TypeScript超入門
Narami Kiyokura
 
Scala勉強会_2014_11_18
Scala勉強会_2014_11_18Scala勉強会_2014_11_18
Scala勉強会_2014_11_18
Shuya Tsukamoto
 
Scala Daysに行ってみて
Scala Daysに行ってみてScala Daysに行ってみて
Scala Daysに行ってみて
Kota Mizushima
 
Scalaのimplicit、カリー化
Scalaのimplicit、カリー化Scalaのimplicit、カリー化
Scalaのimplicit、カリー化
yuya-nakamura
 
Scala入門
Scala入門Scala入門
Scala入門
Yoshifumi Takeshima
 
頑張りすぎないScala
頑張りすぎないScala頑張りすぎないScala
頑張りすぎないScala
takezoe
 
Dark vol4 for_slideshare
Dark vol4 for_slideshareDark vol4 for_slideshare
Dark vol4 for_slideshare
ara_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 to こわくない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でのプログラム開発
 
リテラル文字列型までの道
リテラル文字列型までの道リテラル文字列型までの道
リテラル文字列型までの道
 

More from Kota Mizushima

ドワンゴにおける新卒エンジニア向けScala研修について
ドワンゴにおける新卒エンジニア向けScala研修についてドワンゴにおける新卒エンジニア向けScala研修について
ドワンゴにおける新卒エンジニア向けScala研修について
Kota Mizushima
 
kollectionの紹介
kollectionの紹介kollectionの紹介
kollectionの紹介
Kota Mizushima
 
Macros in nemerle
Macros in nemerleMacros in nemerle
Macros in nemerle
Kota Mizushima
 
Scala Daysに行ってみて - あるいはスイス旅行記 -
Scala Daysに行ってみて - あるいはスイス旅行記 -Scala Daysに行ってみて - あるいはスイス旅行記 -
Scala Daysに行ってみて - あるいはスイス旅行記 -
Kota Mizushima
 
Introduction to PEG
Introduction to PEGIntroduction to PEG
Introduction to PEG
Kota Mizushima
 
Scalaの現状と今後
Scalaの現状と今後Scalaの現状と今後
Scalaの現状と今後
Kota Mizushima
 
Power of Scala
Power of ScalaPower of Scala
Power of Scala
Kota Mizushima
 
Scala Performance Tuning Tips
Scala Performance Tuning TipsScala Performance Tuning Tips
Scala Performance Tuning Tips
Kota 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 Borrowing
Kota 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 libraries
Kota 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 Scala
Kota Mizushima
 
言語アップデート -Scala編-
言語アップデート -Scala編-言語アップデート -Scala編-
言語アップデート -Scala編-
Kota Mizushima
 
Scalaz
ScalazScalaz
ScalaのソースをEclipseでビルドしてみた
ScalaのソースをEclipseでビルドしてみたScalaのソースをEclipseでビルドしてみた
ScalaのソースをEclipseでビルドしてみたKota Mizushima
 

More from 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でビルドしてみた
 

Recently uploaded

Generating Automatic Feedback on UI Mockups with Large Language Models
Generating Automatic Feedback on UI Mockups with Large Language ModelsGenerating Automatic Feedback on UI Mockups with Large Language Models
Generating Automatic Feedback on UI Mockups with Large Language Models
harmonylab
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
CRI Japan, Inc.
 
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
Toru Tamaki
 
This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.
chiefujita1
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
Matsushita Laboratory
 
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさJSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
0207sukipio
 
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
Matsushita Laboratory
 
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
t m
 

Recently uploaded (8)

Generating Automatic Feedback on UI Mockups with Large Language Models
Generating Automatic Feedback on UI Mockups with Large Language ModelsGenerating Automatic Feedback on UI Mockups with Large Language Models
Generating Automatic Feedback on UI Mockups with Large Language Models
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
 
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
 
This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
 
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさJSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
 
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
 
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
 

こわくない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  (コンサルタント)