SlideShare une entreprise Scribd logo
1  sur  16
Télécharger pour lire hors ligne
こわくない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	
  (コンサルタント)	
  

Contenu connexe

Tendances

こわくないScala
こわくないScalaこわくないScala
こわくないScalaFScoward
 
Akka と Typeの話
Akka と Typeの話Akka と Typeの話
Akka と Typeの話Huy Do
 
「再代入なんて、あるわけない」 ~ふつうのプログラマが関数型言語を知るべき理由~ (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
 
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
 
型プロファイラ:抽象解釈に基づくRuby 3の静的解析
型プロファイラ:抽象解釈に基づくRuby 3の静的解析型プロファイラ:抽象解釈に基づくRuby 3の静的解析
型プロファイラ:抽象解釈に基づくRuby 3の静的解析mametter
 
2歩目 プレゼン資料 初歩から始めるjava勉強会
2歩目 プレゼン資料 初歩から始めるjava勉強会2歩目 プレゼン資料 初歩から始めるjava勉強会
2歩目 プレゼン資料 初歩から始めるjava勉強会悠平 鎌田
 
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
 

Tendances (19)

こわくないScala
こわくないScalaこわくないScala
こわくないScala
 
Scalaノススメ
ScalaノススメScalaノススメ
Scalaノススメ
 
Phantom Type in Scala
Phantom Type in ScalaPhantom Type in Scala
Phantom Type in Scala
 
Akka と Typeの話
Akka と Typeの話Akka と Typeの話
Akka と Typeの話
 
「再代入なんて、あるわけない」 ~ふつうのプログラマが関数型言語を知るべき理由~ (Gunma.web #5 2011/05/14)
「再代入なんて、あるわけない」 ~ふつうのプログラマが関数型言語を知るべき理由~ (Gunma.web #5 2011/05/14)「再代入なんて、あるわけない」 ~ふつうのプログラマが関数型言語を知るべき理由~ (Gunma.web #5 2011/05/14)
「再代入なんて、あるわけない」 ~ふつうのプログラマが関数型言語を知るべき理由~ (Gunma.web #5 2011/05/14)
 
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]
 
型プロファイラ:抽象解釈に基づくRuby 3の静的解析
型プロファイラ:抽象解釈に基づくRuby 3の静的解析型プロファイラ:抽象解釈に基づくRuby 3の静的解析
型プロファイラ:抽象解釈に基づくRuby 3の静的解析
 
2歩目 プレゼン資料 初歩から始めるjava勉強会
2歩目 プレゼン資料 初歩から始めるjava勉強会2歩目 プレゼン資料 初歩から始めるjava勉強会
2歩目 プレゼン資料 初歩から始めるjava勉強会
 
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しよう
 
Lecture1
Lecture1Lecture1
Lecture1
 
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
 

En vedette

Skinny Framework 進捗どうですか? #fud_scala
Skinny Framework 進捗どうですか? #fud_scalaSkinny Framework 進捗どうですか? #fud_scala
Skinny Framework 進捗どうですか? #fud_scalaKazuhiro Sera
 
Introducing Scalate, the Scala Template Engine
Introducing Scalate, the Scala Template EngineIntroducing Scalate, the Scala Template Engine
Introducing Scalate, the Scala Template EngineJames Strachan
 
アドテク×Scala @Dynalyst
アドテク×Scala @Dynalystアドテク×Scala @Dynalyst
アドテク×Scala @DynalystSangwon Han
 
アドテク企業のScala導入について振り返るlt
アドテク企業のScala導入について振り返るltアドテク企業のScala導入について振り返るlt
アドテク企業のScala導入について振り返るltJiro Hiraiwa
 
Strutsから移行する人のためのjsf基礎
Strutsから移行する人のためのjsf基礎Strutsから移行する人のためのjsf基礎
Strutsから移行する人のためのjsf基礎Satoshi Kubo
 
AWSからOpenStack, Chef SoloからChef Serverに インフラを置き換えた事例の紹介
AWSからOpenStack, Chef SoloからChef Serverに インフラを置き換えた事例の紹介AWSからOpenStack, Chef SoloからChef Serverに インフラを置き換えた事例の紹介
AWSからOpenStack, Chef SoloからChef Serverに インフラを置き換えた事例の紹介Naoyuki Yamada
 
Scalaの現状と今後
Scalaの現状と今後Scalaの現状と今後
Scalaの現状と今後Kota Mizushima
 
Javaの速度比較
Javaの速度比較Javaの速度比較
Javaの速度比較Satoshi Kubo
 
IoT時代におけるストリームデータ処理と急成長の Apache Flink
IoT時代におけるストリームデータ処理と急成長の Apache FlinkIoT時代におけるストリームデータ処理と急成長の Apache Flink
IoT時代におけるストリームデータ処理と急成長の Apache FlinkTakanori Suzuki
 
「情報」がやりたくて電子情報工学科に入った人の末路
「情報」がやりたくて電子情報工学科に入った人の末路「情報」がやりたくて電子情報工学科に入った人の末路
「情報」がやりたくて電子情報工学科に入った人の末路okayan08
 

En vedette (10)

Skinny Framework 進捗どうですか? #fud_scala
Skinny Framework 進捗どうですか? #fud_scalaSkinny Framework 進捗どうですか? #fud_scala
Skinny Framework 進捗どうですか? #fud_scala
 
Introducing Scalate, the Scala Template Engine
Introducing Scalate, the Scala Template EngineIntroducing Scalate, the Scala Template Engine
Introducing Scalate, the Scala Template Engine
 
アドテク×Scala @Dynalyst
アドテク×Scala @Dynalystアドテク×Scala @Dynalyst
アドテク×Scala @Dynalyst
 
アドテク企業のScala導入について振り返るlt
アドテク企業のScala導入について振り返るltアドテク企業のScala導入について振り返るlt
アドテク企業のScala導入について振り返るlt
 
Strutsから移行する人のためのjsf基礎
Strutsから移行する人のためのjsf基礎Strutsから移行する人のためのjsf基礎
Strutsから移行する人のためのjsf基礎
 
AWSからOpenStack, Chef SoloからChef Serverに インフラを置き換えた事例の紹介
AWSからOpenStack, Chef SoloからChef Serverに インフラを置き換えた事例の紹介AWSからOpenStack, Chef SoloからChef Serverに インフラを置き換えた事例の紹介
AWSからOpenStack, Chef SoloからChef Serverに インフラを置き換えた事例の紹介
 
Scalaの現状と今後
Scalaの現状と今後Scalaの現状と今後
Scalaの現状と今後
 
Javaの速度比較
Javaの速度比較Javaの速度比較
Javaの速度比較
 
IoT時代におけるストリームデータ処理と急成長の Apache Flink
IoT時代におけるストリームデータ処理と急成長の Apache FlinkIoT時代におけるストリームデータ処理と急成長の Apache Flink
IoT時代におけるストリームデータ処理と急成長の Apache Flink
 
「情報」がやりたくて電子情報工学科に入った人の末路
「情報」がやりたくて電子情報工学科に入った人の末路「情報」がやりたくて電子情報工学科に入った人の末路
「情報」がやりたくて電子情報工学科に入った人の末路
 

Similaire à Scala is-unscared

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
 
Dark vol4 for_slideshare
Dark vol4 for_slideshareDark vol4 for_slideshare
Dark vol4 for_slideshareara_ta3
 
頑張りすぎないScala
頑張りすぎないScala頑張りすぎないScala
頑張りすぎないScalatakezoe
 
Scalaで萌える関数型プログラミング[エッセンシャル版]
Scalaで萌える関数型プログラミング[エッセンシャル版]Scalaで萌える関数型プログラミング[エッセンシャル版]
Scalaで萌える関数型プログラミング[エッセンシャル版]Ra Zon
 
Scala×silverlight
Scala×silverlightScala×silverlight
Scala×silverlightterurou
 
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
 
Pythonista による Pythonista のための Scala 紹介 in BPStudy #49
Pythonista による Pythonista のための Scala 紹介 in BPStudy #49Pythonista による Pythonista のための Scala 紹介 in BPStudy #49
Pythonista による Pythonista のための Scala 紹介 in BPStudy #49shoma h
 
PFPファシグラ(2009/07/03)
PFPファシグラ(2009/07/03)PFPファシグラ(2009/07/03)
PFPファシグラ(2009/07/03)nishikawa_makoto7
 
リテラル文字列型までの道
リテラル文字列型までの道リテラル文字列型までの道
リテラル文字列型までの道Satoshi Sato
 
SpringOne 2016 報告 Reactive APIの設計・実装・使用
SpringOne 2016 報告 Reactive APIの設計・実装・使用SpringOne 2016 報告 Reactive APIの設計・実装・使用
SpringOne 2016 報告 Reactive APIの設計・実装・使用Takuya Iwatsuka
 
Scalaでのプログラム開発
Scalaでのプログラム開発Scalaでのプログラム開発
Scalaでのプログラム開発Kota Mizushima
 

Similaire à Scala is-unscared (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入門
 
Dark vol4 for_slideshare
Dark vol4 for_slideshareDark vol4 for_slideshare
Dark vol4 for_slideshare
 
頑張りすぎないScala
頑張りすぎないScala頑張りすぎないScala
頑張りすぎないScala
 
Scalaで萌える関数型プログラミング[エッセンシャル版]
Scalaで萌える関数型プログラミング[エッセンシャル版]Scalaで萌える関数型プログラミング[エッセンシャル版]
Scalaで萌える関数型プログラミング[エッセンシャル版]
 
Scala×silverlight
Scala×silverlightScala×silverlight
Scala×silverlight
 
objc2swift 〜 Objective-C から Swift への「コード&パラダイム」シフト
objc2swift 〜 Objective-C から Swift への「コード&パラダイム」シフトobjc2swift 〜 Objective-C から Swift への「コード&パラダイム」シフト
objc2swift 〜 Objective-C から Swift への「コード&パラダイム」シフト
 
iOSエンジニアのためのScala入門
iOSエンジニアのためのScala入門iOSエンジニアのためのScala入門
iOSエンジニアのためのScala入門
 
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
 
Pythonista による Pythonista のための Scala 紹介 in BPStudy #49
Pythonista による Pythonista のための Scala 紹介 in BPStudy #49Pythonista による Pythonista のための Scala 紹介 in BPStudy #49
Pythonista による Pythonista のための Scala 紹介 in BPStudy #49
 
PFPファシグラ(2009/07/03)
PFPファシグラ(2009/07/03)PFPファシグラ(2009/07/03)
PFPファシグラ(2009/07/03)
 
リテラル文字列型までの道
リテラル文字列型までの道リテラル文字列型までの道
リテラル文字列型までの道
 
SpringOne 2016 報告 Reactive APIの設計・実装・使用
SpringOne 2016 報告 Reactive APIの設計・実装・使用SpringOne 2016 報告 Reactive APIの設計・実装・使用
SpringOne 2016 報告 Reactive APIの設計・実装・使用
 
Scalaでのプログラム開発
Scalaでのプログラム開発Scalaでのプログラム開発
Scalaでのプログラム開発
 

Plus de Kota Mizushima

ドワンゴにおける新卒エンジニア向けScala研修について
ドワンゴにおける新卒エンジニア向けScala研修についてドワンゴにおける新卒エンジニア向けScala研修について
ドワンゴにおける新卒エンジニア向けScala研修についてKota Mizushima
 
株式会社ドワンゴにおけるScala教育の現状
株式会社ドワンゴにおけるScala教育の現状株式会社ドワンゴにおけるScala教育の現状
株式会社ドワンゴにおけるScala教育の現状Kota Mizushima
 
Scala Daysに行ってみて - あるいはスイス旅行記 -
Scala Daysに行ってみて - あるいはスイス旅行記 -Scala Daysに行ってみて - あるいはスイス旅行記 -
Scala Daysに行ってみて - あるいはスイス旅行記 -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
 

Plus de Kota Mizushima (20)

ドワンゴにおける新卒エンジニア向けScala研修について
ドワンゴにおける新卒エンジニア向けScala研修についてドワンゴにおける新卒エンジニア向けScala研修について
ドワンゴにおける新卒エンジニア向けScala研修について
 
kollectionの紹介
kollectionの紹介kollectionの紹介
kollectionの紹介
 
株式会社ドワンゴにおけるScala教育の現状
株式会社ドワンゴにおけるScala教育の現状株式会社ドワンゴにおけるScala教育の現状
株式会社ドワンゴにおけるScala教育の現状
 
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
 
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
こわくないScalaこわくないScala
こわくないScala
 
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でビルドしてみた
 

Scala is-unscared

  • 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  (コンサルタント)