来世から頑張る!!

技術ブログを目指して

今日から始めるScalaプログラミング!!


この記事はScala Advent Calendar 11日目です。

www.adventar.org

昨日はdakatsukaさんによるScalaでLuaスクリプトを動かして遊ぶでした。
Luaでしたね!!
ゲーム業界すごいですね!

さて、Scala Advent Calendarですが、まだまだ空きがあります。
難しいことを書かなきゃならないという空気を吹き飛ばすため、 Scalaをやったことのない人向けの記事を書くことによってハードルを下げます。

窓口が広いほど学びも増えるはずです!!

ということで本日はScalaを始めるための環境づくりです。

インストールせずに試す!!

オンラインならIDEONE

ideone.com

左下のChoose LanguageでothersのところにScalaがあります。
ライブラリーを使わないような入門書のコードなどは、ここで入力して試せますね。
もちろんLuaもあるのでLet's challenge!!

ローカルにScalaコーディング環境を構築する!!

ここからの説明は一番初心者向けということで、 Windows 10ユーザーを想定して進めます。

その他のOSの方はbrewなりportageなり環境にあったものをご使用ください。

Javaのインストール

ScalaJava VM上で動く言語です。
そのためまずはJavaのインストールが必要です。

JavaにはJavaで作られたプログラムを動かすためのJRE(Java Runtime Edition)と、 Javaでプログラムを作るためのJDK(Java Development Kit)があります。

今回はプログラミングを行うのでJDKですね。
JDKにはJREが含まれていますので、作ることも動かすことも可能です。

では、「JDK ダウンロード」などで検索してJavaダウンロードページにたどり着いてください。
プログラミングではGoogle力が試されることがよくありますので、 できる限り自力でたどり着くことが大切です。

f:id:kazzna:20151210221302p:plain

今回ダウンロードするのはJava SE(Standard Edition)のJDKです。 いろいろなJavaが出てきてもう挫折しそうですよね。
細かい名前は覚えなくてもあまりScalaには関係ありません。

さて、ダウンロードページにたどり着くと、さらに多数の選択肢が出て来ます。

f:id:kazzna:20151210222043p:plain

今回は最新版(数字が最も大きいもの)を導入します。 Java SE Development Kit 8u66ですね。
直接Java言語でプログラミングする予定はないので、DemosやSamplesはいらないでしょう。

ライセンスに同意しろと書かれているので、きちんとライセンスを読んだ上で、 同意できるならAccept License Agreementを選択します。

その下に並んでいるOSの一覧から、自分のOSを選択します。
WindowsにはWindows X86Windows x64がありますが、 自分のOSにあった方を選択してください。


x86x64かの確認方法

  1. Windowsのタスクバーの左端「Windowsマーク」を右クリックし、「システム(Y)」を選択します。
  2. 「システム」が開くので、真ん中ぐらいにある「システムの種類」を確認します。
  3. ここが「32ビット...」ならx86、「64ビット...」ならx64です。
  4. その他だった場合は自分でググってください。初心者用ではありません。

Edgeだと、ダウンロードが完了したらそのまま実行が選べます。

f:id:kazzna:20151211002247p:plain

インストールは何も考えずすべて「次へ」で大丈夫です。
インストールが終わったら、環境変数Pathにコマンドを追加します。

環境変数の編集はRapid Environment Editorというソフトが使いやすいらしいです。
使ったことはありませんが。

ここでは通常のWindowsの機能でPathを追加する方法を記述しておきます。
既にユーザー環境変数Pathが存在する場合は、この記事の下の方にある「パスに追加」を見てください。


パスを設定

  1. Windowsのタスクバーの左端「Windowsマーク」を右クリックし、「システム(Y)」を選択します。
  2. 「システム」が開くので、左端にある「システムの詳細設定」を選択します。
  3. 「システムのプロパティ」が開くので、詳細設定タブを選択します。
  4. 一番下の「環境変数」をクリックします。
  5. 上段の「ユーザー環境変数」の「新規」をクリックします。
  6. 変数名に「Path」、変数値に先ほどインストールしたJDKのパスを設定します。
    (インストール時にすべて「次へ」を選んでいれば「C:\Program Files\Java\jdk1.8.0_66\bin」です。)
  7. 順番にOKを押してウィンドウを閉じます。

インストールが完了したら、コマンドプロンプトを起動してインストールが成功したことを確認しましょう。
後からやると、どこで失敗したのかわからなくてリカバリーが大変です。

スタートメニューからコマンドプロンプトを起動します。
(同じくマークを右クリック -> コマンドプロンプト(C))
すると、下記のような表示の黒い画面が表示されるはずです。

C:\Users\kazzna>

kazznaの部分はログインしているユーザーのユーザー名になっているはずです。
この部分は勝手に出てくるので、>より後ろを入力してエンターを押すと入力した内容が実行されます。

さて、インストール成功かどうかの確認です。
こういう場合、普通はversionオプションを使用します。
javaではなくjavacなことに注意してください。

C:\Users\kazzna> javac -version
javac 1.8.0_66

version番号が表示されれば成功です。

versionオプションは「バージョン番号を表示して終了する」という動作をするプログラムがほとんどなので、 インストールされているかどうかを悪影響なく確認できます。

自分がプログラムを作るときもそういう風にするといいと思います。

javac -versionを実行してもバージョンが表示されずエラーメッセージが出たら?
Javaのインストールの初めからやり直すしかありません。

Activatorのインストール

Scalaでよく使われるツールsbtがあります。
sbtを使うと、ライブラリーのインストールやコンパイル・テストなどが簡単にできます。

今回はsbtにいろいろな機能を追加したActivatorというツールを使用します。
Activatorは内部にsbtを使用している(らしい)ので、 sbtでできることはすべてActivatorでできるはずです。

まずは先程と同様に「sbt activator ダウンロード」等で検索して、 Activatorのダウンロードページにたどり着きましょう。

f:id:kazzna:20151210230052p:plain

ここでDOWNLOADを選べばWindowsではzipファイルがダウンロードされるはずです。
この記事を書いていて初めて知りましたが、sbtの500倍ぐらいのサイズですね。
何が入ってるんだろう???

これをどこか好きな場所に展開してください。
「どこか」と言われても初心者は困るでしょうから、 決められない人はコマンドプロンプト>より左に書かれているフォルダに展開してください。

展開したら、activator-dist-1.3.7というフォルダができるはずです。
後ろの番号はバージョン番号なので、もしかしたら新しいバージョンになっているかもしれませんが。
フォルダの中にactivator.batが入っていることを確認してください。

このフォルダのパスを環境変数に追加します。


パスに追加

  1. Windowsのタスクバーの左端「Windowsマーク」を右クリックし、「システム(Y)」を選択します。
  2. 「システム」が開くので、左端にある「システムの詳細設定」を選択します。
  3. 「システムのプロパティ」が開くので、詳細設定タブを選択します。
  4. 一番下の「環境変数」をクリックします。
  5. 上段の「ユーザー環境変数」にある「Path」をクリックして選択します。
  6. 「編集」を押すと新規作成と同じようなウィンドウが開きます。
  7. 既に入っている変数値の末尾にセミコロン「;」を追加した後、activator.batがあるフォルダのフルパスを追加します。
    (ユーザー名に注意して「C:\Users\kazzna\activator-dist-1.3.7」みたいなのを入れてください。)
  8. 順番にOKを押してウィンドウを閉じます。

コマンドプロンプトを一度閉じて、もう一度開きなおしてください。
そして、以下のコマンドを実行し、Activatorがインストールできたことを確認します。

C:\Users\kazzna> activator --version
~~ もしかしたら何行かのメッセージ ~~
sbt launcher version 0.13.8

バージョンが表示されれば成功です。

Activatorを使ってみよう!!

早速Activatorを使用してみましょう。

まずは作業用フォルダを作成します。

C:\Users\kazzna> mkdir activatorwork

C:\Users\kazzna> cd activatorwork

C:\Users\kazzna\activatorwork>

最初のコマンドmkdir(make directory)でactivatorworkというフォルダをC:\Users\kazznaに作成しました。
次のコマンドcd(change directory)で、直下に作成したactivatorworkフォルダに移動しています。
3行目で左側のフォルダ名が変わっていますね。ここが現在いるフォルダです。

では、まずactivator new フォルダ名で新しいプロジェクト用フォルダを作ってみましょう。 ここではフォルダ名はactivatortestとします。

C:\Users\kazzna\activatorwork> activator new activatortest
~~ 何行かのメッセージ ~~
Browse the list of templates: http://typesafe.com/activator/templates
Choose from these featured templates or enter a template name:
  1) minimal-akka-java-seed
  2) minimal-akka-scala-seed
  3) minimal-java
  4) minimal-scala
  5) play-java
  6) play-scala
(hit tab to see a list of all templates)
>

activator newを実行すると、どのテンプレートを使用するか確認されます。
テンプレート一覧をダウンロードするため、少し時間がかかるかもしれません。

tabを押すと全てのテンプレートの一覧が表示され、名前か番号を入力すると次に進みます。
今回は4と入力してminimal-scalaを使用しましょう。

> 4
OK, application "activatortest" is being created using the "minimal-scala" template.

To run "activatortest" from the command line, "cd activatortest" then:
/home/kazzna/tmp/activatortest/activator run

To run the test for "activatortest" from the command line, "cd activatortest" then:
/home/kazzna/tmp/activatortest/activator test

To run the Activator UI for "activatortest" from the command line, "cd activatortest" then:
/home/kazzna/tmp/activatortest/activator ui

C:\Users\kazzna\activatorwork>

これでactivatorworkフォルダにactivatortestフォルダーが作成されました。
cdコマンドで移動してください。

C:\Users\kazzna\activatorwork> cd activatortest

C:\Users\kazzna\activatorwork\activatortest>

ここからはコマンドプロンプトはこのまま開いたままで、エクスプローラーで作業しましょう。
コマンドプロンプトが得意な方はこのまま作業していただいても構いません。

エクスプローラーを開いたら、アドレスバーにコマンドプロンプト>より左の部分を貼り付けてください。

f:id:kazzna:20151210233823p:plain

ちなみに、コマンドプロンプトからのコピーは

  1. 右クリック -> 範囲指定
  2. 左ドラッグで文字を反転
  3. キーボードでエンターキーをたーんっ!

です。ご注意ください。

f:id:kazzna:20151211003948p:plain

フォルダを開くと、ここにもactivator.batなどがあるのがわかりますね。
Activatorをインストールしていない人でもプロジェクト途中から参加できるように、なのでしょうか?

ファイルがおっきいので、ここのactivatorから始まるやつは全部消してOKだと思います。

さて、この中身の説明です。

  • build.sbt
    sbtの設定ファイルです。ここにいろいろ書くことでライブラリーやコンパイルオプションなどを変更できます。
  • project
    このフォルダの中にsbt自身の設定やsbt用のプラグインの設定を書きます。
    今回の記事では触りません。
  • src
    この中に自分で作るプログラムのソースコードを置きます。
    Activatorコンパイルしてくれます。 srcの中には以下のようなフォルダがあります。
    • main
      プログラム本体のコードを格納します。
      この中にはデフォルトで次の3種類のフォルダを配置できます。(プラグインで拡張可能)
    • test
      プログラムをテストするためのコードを格納します。
      こちらもmainと同じフォルダが作成可能です。

srcmainにあるHelloworld.scalaをメモ帳などで開けばもうコーディングが可能ですね。

さて、Activatorを使ってコンパイルしてみましょう。
コマンドプロンプトに戻ります。

C:\Users\kazzna\activatorwork\activatortest> activator compile
~~ 何行か表示 ~~
[success] Total time: 124 s, completed 2015/12/11 1:01:27

初回の起動のみ、いろいろなファイルをダウンロードしてくるので時間がかかると思われます。

次は実行です。

C:\Users\kazzna\activatorwork\activatortest> activator run
~~ 何行か表示 ~~
[info] Running com.example.Hello
Hello, world!
[success] Total time: 0 s, completed 2015/12/11 1:02:18

同様にテストを実行。

C:\Users\kazzna\activatorwork\activatortest> activator test
~~ 何行か表示 ~~
[info] HelloSpec:
[info] Hello
[info] - should have tests
[info] Run completed in 375 milliseconds.
[info] Total number of tests run: 1
[info] Suites: completed 1, aborted 0
[info] Tests: succeeded 1, failed 0, canceled 0, ignored 0, pending 0
[info] All tests passed.
[success] Total time: 6 s, completed 2015/12/11 1:02:54

ライブラリーを使う

ライブラリーを使いたいときはbuild.sbtを編集します。 たとえば、MySQLへ接続するためのmysql-connector-javaを入れたいときは、`以下の記述を追加します。

libraryDependencies += "mysql" % "mysql-connector-java" % "5.1.37"

Scalajsonを扱うためのjson4sならこんな感じです。

libraryDependencies += "org.json4s" %% "json4s-native" % "3.3.0"

Scalaのライブラリーは%%Javaのライブラリーは%です。
なぜそうなってるのかは気になったらググってください。

このlibraryDependenciesに追加したライブラリーは、 ローカルに無ければ次回のコンパイル時などに自動的にダウンロードされます。

他にもいろいろ機能がありますので、「sbt 使い方」で検索してください。
出てきたコマンドのsbtをそのままactivatorに変えると動くはずです。

IDEを使ってみよう!

さて、ここまでの内容で既に書いて・コンパイルして・テストして・実行はできるわけですが、 最後にIDEをひとつご紹介しておきます。

www.jetbrains.com

有料のUltimateと無料のCommunityエディションがありますが、趣味で使う分にはCommunityで十分です。
仕事で使う場合はライセンスを確認してください。

このIDEA(アイディア)さん、 なんと先ほどActivatorで作ったプロジェクトをそのまま読み込んで作業できるのです。
設定したライブラリーなども自動で取得してくれます。

sbt-ideaなんていうsbtプラグインもありますが、使わなくても動くので使っていません。

詳しいインストールなどについてはサムライズムさんのブログなどをご参照ください。


Scala Advent Calendar 11日目は以上です。
お付き合いいただき、ありがとうございました。

これを見て「この記事よりかはいいものを書けるぜ!」と思ったあなた!
今すぐカレンダーの空きを埋めるのです!!Qiita版も空きがありますです!!

明日も2日連続で私による「いちばんゆるふあななにかを」です。

まだ何を書くのかを決めていませんが、とにかく「ゆるふあ」に行きます!
まだ決まってないので遅い時間になるかもです。。。すみません。