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

こわくない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怖い!  
  • 4.
  • 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  
  • 9.
  • 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  (コンサルタント)