Scala超入門 
Abe Asami 
14年12月14日日曜日
自己紹介 
Abe Asami “きの子” (フリーエンジニア) 
http://nocono.net/ 
Twitter: @aa7th 
主な仕事: 
Java(Androidアプリ開発,Play1) 
PHP(Yii2 Framework) 
14年12月14日日曜日
とうとう 
14年12月14日日曜日
とうとう 
• Scalaのお仕事いただきました! 
14年12月14日日曜日
とうとう 
• Scalaのお仕事いただきました! 
• Play2.3によるチーム開発 
14年12月14日日曜日
とうとう 
• Scalaのお仕事いただきました! 
• Play2.3によるチーム開発 
• がんばります 
14年12月14日日曜日
今日の内容 
14年12月14日日曜日
今日の内容 
• Scalaとは? 
14年12月14日日曜日
今日の内容 
• Scalaとは? 
• 始め方、ツール 
14年12月14日日曜日
今日の内容 
• Scalaとは? 
• 始め方、ツール 
• 勉強に役立つ本やサイト 
14年12月14日日曜日
今日の内容 
• Scalaとは? 
• 始め方、ツール 
• 勉強に役立つ本やサイト 
• コツ的な話 etc 
14年12月14日日曜日
Scalaとは 
14年12月14日日曜日
Scalaとは 
• JVM上で動く言語 
14年12月14日日曜日
Scalaとは 
• JVM上で動く言語 
• オブジェクト指向であり関数型 
14年12月14日日曜日
Scalaとは 
• JVM上で動く言語 
• オブジェクト指向であり関数型 
• 静的型付け、型推論 
14年12月14日日曜日
Scalaとは 
• JVM上で動く言語 
• オブジェクト指向であり関数型 
• 静的型付け、型推論 
• メリット・・・コードが短い 
14年12月14日日曜日
Scalaとは 
• JVM上で動く言語 
• オブジェクト指向であり関数型 
• 静的型付け、型推論 
• メリット・・・コードが短い 
• デメリット・・・コンパイルが遅い 
14年12月14日日曜日
関数型言語とは 
14年12月14日日曜日
関数型言語とは 
• 関数(function)を値として扱う言語 
14年12月14日日曜日
関数型言語とは 
• 関数(function)を値として扱う言語 
• 「副作用」を極力避ける 
(Immutable) 
→ 変数(var)ではなく定数(val)を使う 
14年12月14日日曜日
副作用がないと 
14年12月14日日曜日
副作用がないと 
• 不具合が減る 
14年12月14日日曜日
副作用がないと 
• 不具合が減る 
• 並行処理に強い 
14年12月14日日曜日
副作用がないと 
• 不具合が減る 
• 並行処理に強い 
• 保守性が高い 
14年12月14日日曜日
始め方 
14年12月14日日曜日
始め方 
• 必要なもの:JDK 
14年12月14日日曜日
始め方 
• 必要なもの:JDK 
• 方法1. Scalaをインストール 
14年12月14日日曜日
始め方 
• 必要なもの:JDK 
• 方法1. Scalaをインストール 
• とりあえずREPLでいいから動かしたい人 
14年12月14日日曜日
始め方 
• 必要なもの:JDK 
• 方法1. Scalaをインストール 
• とりあえずREPLでいいから動かしたい人 
• 方法2. Typesafe Activatorを使う 
14年12月14日日曜日
始め方 
• 必要なもの:JDK 
• 方法1. Scalaをインストール 
• とりあえずREPLでいいから動かしたい人 
• 方法2. Typesafe Activatorを使う 
• 何か動くプロジェクトを作ってみたい人 
14年12月14日日曜日
始め方 
• 必要なもの:JDK 
• 方法1. Scalaをインストール 
• とりあえずREPLでいいから動かしたい人 
• 方法2. Typesafe Activatorを使う 
• 何か動くプロジェクトを作ってみたい人 
• 共に、公式サイトからDL or Homebrewで導 
入可能 
14年12月14日日曜日
Typesafe Activator 
14年12月14日日曜日
Typesafe Activator 
• Typesafe社提供のアプリ開発ツール 
14年12月14日日曜日
Typesafe Activator 
• Typesafe社提供のアプリ開発ツール 
• プロジェクトひな形生成 
14年12月14日日曜日
Typesafe Activator 
• Typesafe社提供のアプリ開発ツール 
• プロジェクトひな形生成 
• IDE 
14年12月14日日曜日
Typesafe Activator 
• Typesafe社提供のアプリ開発ツール 
• プロジェクトひな形生成 
• IDE 
• activator uiでUI起動 
14年12月14日日曜日
sbt 
14年12月14日日曜日
sbt 
• ビルドツール 
14年12月14日日曜日
sbt 
• ビルドツール 
• コンパイル 
14年12月14日日曜日
sbt 
• ビルドツール 
• コンパイル 
• ライブラリ管理 
14年12月14日日曜日
sbt 
• ビルドツール 
• コンパイル 
• ライブラリ管理 
• シンプルじゃないとか何とか散々な 
言われよう 
14年12月14日日曜日
sbt 
• ビルドツール 
• コンパイル 
• ライブラリ管理 
• シンプルじゃないとか何とか散々な 
言われよう 
• Activatorでプロジェクト作成できる 
14年12月14日日曜日
IDE 
14年12月14日日曜日
IDE 
• IntelliJ IDEA 
14年12月14日日曜日
IDE 
• IntelliJ IDEA 
• Scala IDE for Eclipse 
14年12月14日日曜日
IDE 
• IntelliJ IDEA 
• Scala IDE for Eclipse 
• Typesafe Activator 
14年12月14日日曜日
本 
14年12月14日日曜日
本 
• Scalaスケーラブルプログラミング 
(通称:コップ本) 
14年12月14日日曜日
本 
• Scalaスケーラブルプログラミング 
(通称:コップ本) 
• Scala逆引きレシピ(翔泳社) 
14年12月14日日曜日
本 
• Scalaスケーラブルプログラミング 
(通称:コップ本) 
• Scala逆引きレシピ(翔泳社) 
• Functional Programming scala 
(英語) 
14年12月14日日曜日
動画 
14年12月14日日曜日
動画 
• Coursera.org(英語) 
14年12月14日日曜日
動画 
• Coursera.org(英語) 
• 丁寧なので英語が苦手でもぜひ 
14年12月14日日曜日
動画 
• Coursera.org(英語) 
• 丁寧なので英語が苦手でもぜひ 
• 0.75倍速再生もできる 
14年12月14日日曜日
動画 
• Coursera.org(英語) 
• 丁寧なので英語が苦手でもぜひ 
• 0.75倍速再生もできる 
• ScalaMatsuri2014 
14年12月14日日曜日
動画 
• Coursera.org(英語) 
• 丁寧なので英語が苦手でもぜひ 
• 0.75倍速再生もできる 
• ScalaMatsuri2014 
• ニコニコ動画で1日目のセッションが 
公開されている 
14年12月14日日曜日
その他色々 
14年12月14日日曜日
その他色々 
• リンクここにまとめました 
14年12月14日日曜日
その他色々 
• リンクここにまとめました 
•bit.ly/scala_kb 
14年12月14日日曜日
ここからは 
「Scalaっぽいコードを書くには」 
14年12月14日日曜日
まずはコレクション操作 
14年12月14日日曜日
まずはコレクション操作 
• 絞り込みたいときはfilter、変換した 
いときはmap、etc,etc 
14年12月14日日曜日
まずはコレクション操作 
• 絞り込みたいときはfilter、変換した 
いときはmap、etc,etc 
• 「この操作をしたい時はこれ」という 
コレクションの操作をまず覚える 
14年12月14日日曜日
例 
val list = Range(1, 10).toList 
// 奇数だけのリスト生成後、 
// 前0をつけた文字列に変換したリストを生成 
list.filter(_ % 2 != 0) 
.map(n => s"00$n") 
【結果】 
List[String] = List(001, 003, 005, 007, 009) 
14年12月14日日曜日
パターンマッチ 
14年12月14日日曜日
パターンマッチ 
• if/else if じゃなくてmatch文を使う 
14年12月14日日曜日
パターンマッチ 
• if/else if じゃなくてmatch文を使う 
• 型でマッチングできたりして便利 
14年12月14日日曜日
nullだめ絶対! 
14年12月14日日曜日
nullだめ絶対! 
• Option型を使う 
14年12月14日日曜日
nullだめ絶対! 
• Option型を使う 
• Some(x)とNone 
14年12月14日日曜日
nullだめ絶対! 
• Option型を使う 
• Some(x)とNone 
• get、getOrElse で値を取り出す 
14年12月14日日曜日
nullだめ絶対! 
• Option型を使う 
• Some(x)とNone 
• get、getOrElse で値を取り出す 
• パターンマッチで値があるときと無い 
時の処理を書ける 
14年12月14日日曜日
個人的な反省 
14年12月14日日曜日
個人的な反省 
• 言語仕様をろくに理解していないくせ 
に、コードを読むことに必死だった 
14年12月14日日曜日
個人的な反省 
• 言語仕様をろくに理解していないくせ 
に、コードを読むことに必死だった 
• Playのサンプルコードを調べ調べ読 
んで、「難しい・・・」ってなって 
た 
14年12月14日日曜日
個人的な反省 
• 言語仕様をろくに理解していないくせ 
に、コードを読むことに必死だった 
• Playのサンプルコードを調べ調べ読 
んで、「難しい・・・」ってなって 
た 
• で、時間が空いたら忘れてた 
14年12月14日日曜日
まとめ 
14年12月14日日曜日
まとめ 
• とりあえず動くものを書いてみよう 
14年12月14日日曜日
まとめ 
• とりあえず動くものを書いてみよう 
• 最初はダサいコードでもいいじゃな 
い! 
14年12月14日日曜日
まとめ 
• とりあえず動くものを書いてみよう 
• 最初はダサいコードでもいいじゃな 
い! 
• 手を動かして体で覚えることが大事 
14年12月14日日曜日
まとめ 
• とりあえず動くものを書いてみよう 
• 最初はダサいコードでもいいじゃな 
い! 
• 手を動かして体で覚えることが大事 
• というわけで、みんなどんどんScala 
のコードを書きましょう! 
14年12月14日日曜日
ご清聴ありがとうございました 
14年12月14日日曜日

Scala超入門 - 2014/12/13 Scala関西勉強会