Upload
shuya-tsukamoto
View
75
Download
2
Embed Size (px)
Citation preview
初心者向けScala勉強会第一回 2014/11/18
!Shuya Tsukamoto
1
勉強会概要• 目的人並みにScalaを使えるようになる
• 期間2014/11/18 - 2015/3/31毎週火曜
• 対象チームメンバー※既に存在する中級者向け(?)のScala勉強会へ
合流できるようになりましょう
これから使う本• Guide to ScalaーScalaプログラミング入門 [Kindle版]
• 安い(100円)
• 薄い(139ページ)
基礎知識
Scalaって何?• プログラミング言語オブジェクト指向型+関数型
• JVM(Java Virtual Machine)言語とも
• Martin Odersky作
• 少ないコードで多くのことができる!
Scalaって何?• プログラミング言語オブジェクト指向型+関数型
• JVM(Java Virtual Machine)言語とも
• Martin Odersky作
• 少ないコードで多くのことができる!
オブジェクト指向+関数型• カプセル化や抽象化class, object, private, protected, trait(interface), extend, etc
• 関数型val, first class function, 参照透過性・副作用無し, lambda
• 全部分からなくてもOK半分分かればそれなりに書ける
Scalaって何?• プログラミング言語オブジェクト指向型+関数型
• JVM(Java Virtual Machine)言語とも
• Martin Odersky作
• 少ないコードで多くのことができる!
実行
Scalaコード JVM中間コード
scalac
JVM
scala(java)
実行
Scalaコード JVM中間コード
scalac
JVM
scala(java)
実務ではビルドツールsbtを利用するので コマンドは覚える必要なし
Scalaって何?• プログラミング言語オブジェクト指向型+関数型
• JVM(Java Virtual Machine)言語とも
• Martin Odersky作
• 少ないコードで多くのことができる!
少ないコード// Person.java public class Person { private int id; private String name; ! // getter // toString // equals // hashCode }
少ないコード// Person.java public class Person { private int id; private String name; ! // getter // toString // equals // hashCode }
// Person.scala case class Person( id: Int, name: String )
少ないコード// Main.java List<String> list = new ArrayList<>(); for (Person p : persons) { list.add(p.getName()); }
少ないコード// Main.java List<String> list = new ArrayList<>(); for (Person p : persons) { list.add(p.getName()); }
// Main.scala val list = persons map (_.name)
Javaプログラマ(自分)の脳内// Main.java List<String> list = new ArrayList<>(); for (Person p : persons) { list.add(p.getName()); }
自分「リストを作って、ループして、addしている」 自分「name・・・ああ、nameのリストだ!」 自分「これ、変換処理だ・・・!」
Scalaプログラマ(自分)の脳内
自分「map・・・これ、変換処理だ・・・!」
// Main.scala val list = persons map (_.name)
開発環境
開発環境構築• よくあるパターン
• Intellij + Scala plugin + sbt plugin
• Eclipse + Scala IDE plugin
• Text editor + sbt
Intellijの場合 (おすすめ)• UltimateとCommunity
• Communityの場合、Play framework pluginなどが使えない
• 今回はCommunityで。
1. Intellij DL 2. Intellij Install 3. Preferences -> Plugins -> Browse
Repositories 4. Scala, SBT pluginをインストール 5. 以上
Hello world!
コード// Main.scala object Main { def main(args: Array[String]) { println("Hello world!") } }
# REPL (scalaコマンド) scala !scala> println("Hello world!") Hello world!
説明// Main.scala object Main { def main(args: Array[String]) { println("Hello world!") } }
Javaと同じ 重要:main(args: Array[String]) エントリポイント
説明
対話型で実行したいとき用。インタプリタ
# REPL (scalaコマンド) scala !scala> println("Hello world!") Hello world!
今週の課題1. scalac, scalaコマンドでHello worldを実行してみましょう
2. REPLでHello worldを実行してみましょう
3. IDEでHello worldを実行してみましょう
4. scalacで作った中間コードをjavaコマンドで実行するとどうなるか確認しましょう
5. scalacで作った中間コードをjavaコマンドで実行するにはどうすれば良いか考えてみましょう
今週の課題6. Hello worldの例は以下のように書いても動きま
す。理由を調べてみましょう。// Main.scala object Main extends App { println("Hello world!") }