scala再入門 @2014/02/08 scala関西ビギナーズ第3回

17

Click here to load reader

Upload: asami-abe

Post on 01-Jul-2015

807 views

Category:

Technology


3 download

DESCRIPTION

2014/02/08(土) Scala関西ビギナーズ 第3回にて発表。 Scala関西ビギナーズWiki https://github.com/SAMMY7th/scala_kb/wiki

TRANSCRIPT

Page 1: Scala再入門 @2014/02/08 Scala関西ビギナーズ第3回

Scala再入門by Abe Asami

Page 2: Scala再入門 @2014/02/08 Scala関西ビギナーズ第3回

自己紹介Abe Asami “きの子” (フリーエンジニア)http://nocono.net/Twitter: @aa7th

使用言語:Java、C#

Page 3: Scala再入門 @2014/02/08 Scala関西ビギナーズ第3回

本セッションのテーマ

• Scalaに関する、最初に知っておいた方がよさそうな情報をまとめてみました

•これまでの内容と被る部分もあります

•今回準備時間が少なかったので過去スライドを再利用(ry

Page 4: Scala再入門 @2014/02/08 Scala関西ビギナーズ第3回

Scalaとは

• JVM上で動く言語

•オブジェクト指向であり関数型

•静的型付け、型推論

Page 5: Scala再入門 @2014/02/08 Scala関西ビギナーズ第3回

関数型言語(functional language)とは

•関数(function)を値(literal)として扱う言語

•「副作用」を極力避ける(Immutable)→ 変数ではなく定数を使う

Page 6: Scala再入門 @2014/02/08 Scala関西ビギナーズ第3回

関数型についてはこちらもどうぞ

http://slidesha.re/1dwkDY0

Page 7: Scala再入門 @2014/02/08 Scala関西ビギナーズ第3回

メリットその1

コードが短い

Page 8: Scala再入門 @2014/02/08 Scala関西ビギナーズ第3回

public class Sum { public static void main(String[] args) { int start = Integer.parseInt(args[0]); int end = Integer.parseInt(args[1]);

int sum = 0; for (int num = start; num <= end; num++) sum += num;

System.out.println(sum); }}

object Sum { def main(args: Array[String]) { println((start to end).foldLeft(0)((x, y) => x + y)) }}

例(Sum関数)Java Scala

Javaの1/2〜1/3のコード量

Page 9: Scala再入門 @2014/02/08 Scala関西ビギナーズ第3回

メリットその2

Javaのライブラリ利用可能

Page 10: Scala再入門 @2014/02/08 Scala関西ビギナーズ第3回

メリットその3

並行処理に強い

Page 11: Scala再入門 @2014/02/08 Scala関西ビギナーズ第3回

アクターシステム

•メッセージをやりとりする

•メールのようなイメージ

• Scala2.10でAkkaが統合された

Page 12: Scala再入門 @2014/02/08 Scala関西ビギナーズ第3回

デメリット

•コンパイルが遅い

•エンジニアが少ない

•関数型についての学習コストが高い

Page 13: Scala再入門 @2014/02/08 Scala関西ビギナーズ第3回

インストール

•公式サイトからダウンロード

• Homebrew (brew install scala)

• svm (Scalaバージョン管理ツール)https://github.com/yuroyoro/svm

Page 14: Scala再入門 @2014/02/08 Scala関西ビギナーズ第3回

開発環境(IDEなど)

• IntelliJ IDEA

• Scala IDE for Eclipse

• Sublime Text2

• REPLで1行ずつ実行することも可能

Page 15: Scala再入門 @2014/02/08 Scala関西ビギナーズ第3回

フレームワーク

• Play Framework2.x

• Scalatra

• Skinny Framework

...etc

Page 16: Scala再入門 @2014/02/08 Scala関西ビギナーズ第3回

DBライブラリ

• ScalikeJDBC

• Slick

• ScalaActiveRecord

• Squeryl

• Salat...etc

Page 17: Scala再入門 @2014/02/08 Scala関西ビギナーズ第3回

勉強に役立つ本

• Scalaスケーラブルプログラミング(通称:コップ本)

• Scala逆引きレシピ(翔泳社)