はじめてのScala（for Mac）

Scalaはじめます。

#ダウンロード
https://www.scala-lang.org/download/
ここからダウンロードします。

<img width="809" alt="スクリーンショット 2016-12-03 14.41.55.png" src="https://qiita-image-store.s3.amazonaws.com/0/81753/3980a95b-e163-a465-c80d-18e416baf088.png">

tgzファイルがダウンロードされるので、解凍して任意の場所に配置します。
bin下のscalaコマンドでバージョンを確認します。
※別途あらかじめJavaをインストールしておく必要があります。

```bash
$ {配置したディレクトリ}/scala-2.12.0/bin/scala -version
Scala code runner version 2.12.0 -- Copyright 2002-2016, LAMP/EPFL and Lightbend, Inc.
```
`scala-2.12.0/bin`にパスを通しておくといいかもしれません。

```bash
$ export SCALA_HOME={配置したディレクトリ}/scala-2.12.0
$ export PATH=$PATH:$SCALA_HOME/bin
$ scala -version
Scala code runner version 2.12.0 -- Copyright 2002-2016, LAMP/EPFL and Lightbend, Inc.
```

#Scalaの実行
公式のGetting Startedを参考に実行してみます。
https://www.scala-lang.org/documentation/getting-started.html

`scala`コマンドを実行し、Scala shellに入ります。

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

scala>
```

サンプルのHello WorldをコピーしてScala shellに貼り付けてEnter

```scala
scala> object HelloWorld {
     |   def main(args: Array[String]): Unit = {
     |     println("Hello, world!")
     |   }
     | }
defined object HelloWorld
```

メソッドの実行

```scala
scala> HelloWorld.main(Array())
Hello, world!

scala>
```

※Scala shellは`:q`で抜けられます。

正常に動いたみたいです。


#Eclipseでscalaを実行

##Scala Ideのインストール

「Help」→「Eclipse Marketplace」でScala Ideをインストールします。

<img width="470" alt="スクリーンショット 2016-12-03 15.17.59.png" src="https://qiita-image-store.s3.amazonaws.com/0/81753/f76c97a2-5b8c-c302-d4a2-60557f69449a.png">

<img width="518" alt="スクリーンショット 2016-12-03 15.19.26.png" src="https://qiita-image-store.s3.amazonaws.com/0/81753/58ca1c8f-0d08-c0ea-9863-4966767ed934.png">

インストール後、再起動します。

##Scalaプロジェクト作成

Scala Ideをインストールすると、新規プロジェクトでScalaプロジェクトが作れるようになります。

<img width="521" alt="スクリーンショット 2016-12-03 15.26.31.png" src="https://qiita-image-store.s3.amazonaws.com/0/81753/e291ce80-af02-310f-47c0-e10fba4395e1.png">

　任意の名前でプロジェクトを作成します。

<img width="552" alt="スクリーンショット 2016-12-03 15.26.58.png" src="https://qiita-image-store.s3.amazonaws.com/0/81753/96ab96e8-0dd4-4fdd-8dad-6e2ab6a19891.png">

##Hello World

プロジェクトで新規Scalaオブジェクトを作成します。

<img width="540" alt="スクリーンショット 2016-12-03 15.46.53.png" src="https://qiita-image-store.s3.amazonaws.com/0/81753/216a14a1-33be-5526-8ee8-27b6762b60a8.png">

任意の名前でオブジェクト作成。

<img width="515" alt="スクリーンショット 2016-12-03 15.47.50.png" src="https://qiita-image-store.s3.amazonaws.com/0/81753/a0613988-00f5-3a1c-0c13-a5deed5872e3.png">

作成したファイルに以下のコードを実装します。

```scala
object HelloRasen {
  def main(args: Array[String]): Unit = {
    println("Hello RASEN!!!")
  }
}
```

「Run」→「Scala Application」を選択し実行。

<img width="519" alt="スクリーンショット 2016-12-03 15.49.58.png" src="https://qiita-image-store.s3.amazonaws.com/0/81753/a64b595b-ebe8-dc05-b53a-09ffaa52821e.png">

「Console」タブに結果が出力されればOK

<img width="303" alt="スクリーンショット 2016-12-03 15.51.01.png" src="https://qiita-image-store.s3.amazonaws.com/0/81753/c8fc9418-601f-607d-d526-4ccc8c40df9f.png">

#Webアプリケーション
playフレームワークを使ってwebアプリケーションを作成してみます。

##ダウンロード
ダウンロードページ中段の「Play with Activator」にあるリンクから「Activator 1.3.12 including Play 2.5.10」をダウンロードします。
https://playframework.com/download#older-versions

##アプリケーションの作成（クイックスタート）
https://playframework.com/documentation/ja/2.4.x/Installing
このページを参考に進めます。

ダウンローしたzipファイルを解凍し、任意のディレクトリに配置してパスを通します。

```bash
$ export ACTIVATOR_HOME={配置したディレクトリ}/activator-dist-1.3.12
$ export PATH=$PATH:$ACTIVATOR_HOME/bin
```

アプリケーションを作成するディレクトリに移動し、以下のコマンドを実行します。

```bash
$ activator new my-first-app play-scala
```

正常に終了したら、作成された`my-first-app`ディレクトリに移動して`activator`コマンドを実行します。

```bash
$ cd my-first-app/
$ activator
```
※`activator`コマンドを実行すると必要なjarを諸々ダウンロードしてくるそうです。

正常終了するとPlay consoleコンソールに入った状態になります。

```bash:Play_console
[my-first-app] $
```

`run`コマンドを実行してサーバが起動したら、localhost:9000にアクセスすると作成したwebアプリケーションにアクセスできます。

<img width="853" alt="スクリーンショット 2016-12-04 22.47.52.png" src="https://qiita-image-store.s3.amazonaws.com/0/81753/3a2bdb38-31bf-810d-9d7d-a65e2581ba65.png">

「Ctrl+D」でサーバ停止します。



#参考
https://playframework.com/
http://qiita.com/n0bisuke/items/73a2ba879d339b35587d
http://www.techscore.com/blog/2012/11/27/scala-%E6%89%8B%E7%BF%92%E3%81%84/