Scala

勉強会に行ったから、Scalaを触ってみる(1〜何で学ぶか、インストールからHello Worldまで〜)

まえがき

先日、【再増席】教養としてのScala ~ そろそろ始めてみたい2017冬 connpass という勉強会に行ってきました。
せっかくなので、少し触ってみたので、備忘録的に書いてみます。

何で学ぶか

勉強会で紹介されたリスト

ドワンゴオリジナルの新卒エンジニア向けの研修資料

ドワンゴオリジナルの新卒エンジニア向けの研修資料
ドワンゴさんの社内用に作られた資料のようですが、すごく良くできている。
勉強会では、とりあえず以下2点をみれば、Scalaを分かった気になれる?的な話がありましたw

  • コレクションライブラリ
  • ケースクラスとパターンマッチング

Scala 99

Scalaの問題が99問!これをやりきれれば、あなたも立派なスカラリスト?w
Scala 99(英語)

Scala Search

Scalaで出てくるよく分からない単語を調べるのにいいらしい。例えば、とか。
Scala Search(英語)

やってみよう Scala!

Scalaを布教させよという時に良いと紹介されていました。
実によくまとめられていていると思われます。(まだ読んでない)
やってみよう Scala!

ひしだま's 技術メモページ

ひしまださんは、Scalaの重鎮なのでしょうか?勉強会でも何度もお名前が出ていて、技術ページも紹介されていました。
Scala 99の挑戦時につまずいたら、チート的に使うといいようです。
ひしだま's 技術メモページ

先駆者に聞く

勉強会で先駆者の人たちも入門者や初学者が、どんなところでつまづくのかを知りたいらしいです。
もし、近くに聞ける人がいれば聞く。いなければ、思い切ってTwitter等で質問してみる。

Scalaスケーラブルプログラミング

勉強会では、Scalaスケーラブルプログラミング第3版が紹介されていましたが、初学者がいきなりこれを読むと心が折れるそうです。
ドワンゴの研修資料読んで、Scala 99を何問か解いて、さらに深く知りたい時に手を出すといいようです。

その他

ググって見つけたサイト

役に立ちそうなサイトがいくつかあったので、紹介します。
Scala入門時に役立つ情報まとめ
Scala勉強に役立つ書籍まとめ

Kindle本(Kindle unlimited)

無料で読めるし、参考程度に読み進めていこうと思うくらい。
ゼロから学ぶScala Kindle版
Guide to ScalaーScalaプログラミング入門 Kindle版

実際に触ってみる

インストールからHello World

インストール

参考:2014年こそScalaを始めよう

#macだからこれだけw
$ brew install scala

#バージョン確認(2017/12/21 現在)
$ scala -version
Scala code runner version 2.12.4 -- Copyright 2002-2017, LAMP/EPFL and Lightbend, Inc.

Hello World!

Scalaに入る

$ scala
Welcome to Scala 2.12.4 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_131).
Type in expressions for evaluation. Or try :help.

Hello World!

scala> println("Hello World")
Hello World

コンパイル

参考:ゼロから学ぶScala Kindle版
以下を作成します。私はmyScalaというフォルダ配下に作成しました。

Sample1.scala
object Sample1{
  def main(args:Array[String]){
    println("First Scala!")
    print("Second ")
    print("Scala!")
  }
}

terminalでScalacを使い、コンパイルします。

$ cd myScala/
$ scalac Sample1.scala

#問題があればエラーが出ます。出なければ問題なし。
#コンパイルが終わると、object名のclassができています。
$ ls 
Sample01.scala  Sample1$.class  Sample1.class

classをscalaで実行。

$ sudo scala Sample1
First Scala!
Second Scala!

printlnは改行が文末に含まれるが、printは含まれない。

あとがき

今日はここまでとして、後日続けて勉強していこうと思う。
ご覧いただき、ありがとうございました。