Upload
kota-mizushima
View
331
Download
0
Embed Size (px)
Citation preview
こわくない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 (コンサルタント)