Scalaって? Java仮想マシン(Java virtual machine、Java VM、JVM)上で動作する言語らしい

f:id:ts0818:20190804121723j:plain

The chronology of the universe describes the history and future of the universe according to Big Bang cosmology. The earliest stages of the universe's existence are estimated as taking place 13.8 billion years ago, with an uncertainty of around 21 million years at the 68% confidence level.

Chronology of the universe - Wikipedia

宇宙は、138億年前には存在したんじゃないかという...はい、どうもボクです。

まったく意味のない画像を載せましたけど、今回は、400記事目ということで、Scala の話で。

 

 

Scalaって?

ドラクエに出てくる魔法『スカラ』とは何の関係もない、あっ!でも読み方は一緒か。

 

ということで、Wikipediaさんに聞いてみた。

Scala(スカラ、SKAH-lah)はオブジェクト指向言語関数型言語の特徴を統合したマルチパラダイムプログラミング言語である。名前の「Scala」は英語の「scalable language」に由来するものである。

Scala - Wikipedia

とあり、

ScalaJavaプラットフォームJava仮想マシン)上で動作し、既存のJavaのプログラムと容易に連携させることができる。また、過去には下記のプラットフォームもサポートしていたが、現在は開発が中断している。

Scala - Wikipedia

⇧  JVM上で動くし、Java との親和性が高いと!

ということで、Java の開発環境(JDKJava Development Kit)があれば、Scala はすぐに始めれるらしいと。

その他の情報については、

qiita.com

⇧  上記サイト様が詳しいです。

 

Scala を使うための環境構築には、何が必要か

基本的には、 

が最低限必要らしい。

『sbt』は、Scala におけるビルドツールらしい。 

sbtは、ScalaおよびJavaのためのオープンソースビルドツールである。JavaMavenAntに相当するツールである。

sbt - Wikipedia

んで、

sbtは2008年12月18日に初めて、オリジナルの作者Mark Harrahによって公式に発表された。当初は"Simple Build Tool"の略であるとされていたが、現在は単に"sbt"であって略称とは考えられていない

sbt - Wikipedia

んで、IDE統合開発環境)で「sbt」を使う場合は、

プロジェクトファイルを自動的に生成するプラグインEclipseIntelliJ IDEA IDE向けに提供されている。一方、IntelliJ IDEA pluginはsbtコンソールをIDEAに統合してくれ、sbtをビルドに使用するかどうかを選択することができる。

sbt - Wikipedia

⇧  プラグインを導入 する必要があると。

 

なので、実際のScalaを使った開発では、

が、最低限必要な気がする、たぶん。

Visual Studio Code のようなテキストエディターでも環境を作ろうと思えば作れるらしいんだけど、難易度が高そうなので、始めはIDEを使っていったほうが良いようです。 

 

Scalaを使った開発のための環境構築

というわけで、開発環境を構築してみる。

まずは、JDKだけども、既にインストールしてるので割愛(Java SE 8 だから、そろそろバージョンを、Java 9 以上にしていかないといかんのだけれども...Open JDK への移行を考えねばですね) 

f:id:ts0818:20190804154036p:plain

⇧  とりあえず、Java のバージョンが表示されてれば、JDK は導入されたことになるらしい。

 

ちなみに、Java系のパッケージ管理ツールは、

pepese.github.io

⇧  SDKMAN ってものが良いらしい。これの存在を失念していたので、「JDK」も「sbt」も chocolatey でインストールしてしまったではないか...

 

続きまして、「sbt」のインストールで。

https://www.scala-sbt.org/download.html にアクセスして、インストーラーをダウンロードするのも良いんだけど、

www.scala-sbt.org

 

Windowsのパッケージ管理ツールの chocolatey でインストールできるらしい。(SDKMANってのでインストールしたほうが良いようです。)

dwango.github.io

⇧  dwango 様の研修テキストを参考にさせていただきました。っていうか、研修の至れり尽くせり感が半端ない!羨まし過ぎる!

 

今回は、Chocolatey でインストールしていきます。(SDKMAN ってのでインストールしたほうが良いようです。)

chocolatey.org

⇧  2019年8月4日(日)時点では、sbt 1.2.8 が最新らしい。コマンドプロンプトを管理者権限で起動し、インストール。

f:id:ts0818:20190804200657p:plain

で、インストールが完了したらしいので、シェルを開き直すか、「refleshenv」というコマンドを実行すれば、環境変数が設定されるらしい。 

f:id:ts0818:20190804200837p:plain

f:id:ts0818:20190804201633p:plain

 

インストール場所は、「C:¥Program Files (x86)¥sbt」になるらしい。

f:id:ts0818:20190804201406p:plain

で、なんと!?
sbt は、バージョン確認するには、プロジェクトを作成しないといけないらしい...いや、他にやり方があるのかもしれないけど、分からんです...。

f:id:ts0818:20190804220147p:plain

とりあえず、プロジェクト用のディレクトリを作成しないと、バージョン確認ができないけど、sbt コマンドは動くみたいなんで、インストールできたんでしょう。

 

で、Scala のインストールは不要らしいです。

Scalaのインストール

これまででsbtをインストールしたはずですので、特に必要ありません。sbtが適当なバージョンのScalaをダウンロードしてくれます。

Scalaの基本 · Scala研修テキスト

このへんが、ネットで情報が錯綜してるんですよね...Scala をインストールしますって言う人もいるし...どっちよ?って感じで。

Python もそうだけど、環境構築の部分は正確な情報が欲しい... 

 

qiita.com

⇧  上記サイト様でも、sbt で、Scala がインストールされるような感じで進めていますかね。

 

ということで、最後に、IDE統合開発環境)をインストールで。今回は、IntelliJ IDEAのCommunity Edition 版を利用したいと思います。

なぜなら無料で使えるから。しかし、制限が多い(涙)。でも、EclipseScala 環境が安定しないらしいし...消去法的に、IntelliJ IDEA を使わざるを得ないかな...。

ja.wikipedia.org

⇧  詳細は、Wikipediaさんで。無料版は、JVM言語のみのサポートのみと言っても過言ではないぐらい縛りが強いです(涙)。

 

Windows環境であれば、chocolatey でインストールできるらしい。

chocolatey.org

 んでは、インストールで。

choco install intellijidea-community    

f:id:ts0818:20190810130430p:plain

f:id:ts0818:20190810131633p:plain

インストールできたようです。

qiita.com

⇧  上記サイト様によりますと、シェルを開き直せば、「refleshenv」コマンドを実行しなくても、環境変数へは反映されるらしい。

 

qiita.com

chocolatey でインストールした場合は、「C:¥Program Files (x86)¥JetBrains¥IntelliJ IDEA Community Edition 2019.2¥bin¥idea64.exe」が、64bit版でIntelij IDEA を実行するための実行ファイルらしい。

f:id:ts0818:20190810133955p:plain

とりあえず、起動してみる。初回起動時は、規約の同意とかを求められるみたい。「I confirm that I have read and accept the trems of this User Agreement」にチェックし、「Continue」をクリックで。

f:id:ts0818:20190810143510p:plain

まぁ、個人利用だったら、「Send Usage Statistic」とかでも問題ないかと。

f:id:ts0818:20190810150834p:plain

起動しました~!

f:id:ts0818:20190810151021p:plain

というわけで、

qiita.com

qiita.com

⇧  上記サイト様を参考に、設定などなど。

その名もズバリ、「Configure」>「Settings」で。

f:id:ts0818:20190810152918p:plain

んで、「Preferences」>「Editor」>「General」>「Appearance」で、「Show method seprators」にチェックで、「Apply」で。

f:id:ts0818:20190810153932p:plain

「Preferences」>「Editor」>「General」>「Code Completion」で、「All letters」にチェックし、「Apply」で。

f:id:ts0818:20190810154245p:plain

続いて、IntelliJ IDEA でScalaを使うためのプラグインを導入します。
「Preferences」>「Plugins」で、『Scala』をインストールで。

f:id:ts0818:20190810155211p:plain

f:id:ts0818:20190810155531p:plain

インストールが完了すると、「Restart IDE」と表示されているので、「Restart IDE」をクリックで。

f:id:ts0818:20190810155604p:plain

f:id:ts0818:20190810155731p:plain

再起動時にファイヤーウォールが表示された場合は、「アクセスを許可する(A)」で。

f:id:ts0818:20190810155832p:plain

再起動できたら、Scalaプロジェクトを新規作成で。「Create New Project」で。

f:id:ts0818:20190810160503p:plain

Scala」>「sbt」で。「Next」をクリック。

f:id:ts0818:20190810160639p:plain

「Name:」に適当なプロジェクト名を入力し、「JDK:」で、「New...」をクリック。

f:id:ts0818:20190810160821p:plain

ここは、ご自分のインストールしているJDKに合わせてください。「OK」で。

f:id:ts0818:20190810161022p:plain

「sbt:」の「Sources」ってとこのチェックが付いてなかったので、一応チェックを入れてみました。「Finish」で。

f:id:ts0818:20190810161159p:plain

Scalaプロジェクトが作成されました。

f:id:ts0818:20190810161443p:plain

んで、Scala Class を追加しようとしたらそもそも、選択肢に表示されない...

f:id:ts0818:20190810162807p:plain


どうやら、

www.alternatestack.com

⇧  上記サイト様によりますと、手順が必要らしい。

プロジェクトのディレクトリを選択した状態で右クリックし、「Add Framework Support...」を選択。

f:id:ts0818:20190810162513p:plain

Scalaにチェックし、「Create...」をクリック。

f:id:ts0818:20190810163233p:plain

「OK」で。

f:id:ts0818:20190810163415p:plain

「OK」で。

f:id:ts0818:20190810163445p:plain

んで、「src」フォルダ上で右クリックして、「Mark Directory as」>「Sources Root」しろってあるんだけど、それをしていない状態でも、「Scala Class」 が追加できる状態になったんだけど...とりあえず、「Sources Root」の変更はせずに、「Scala Class」を追加してみる。

f:id:ts0818:20190810164956p:plain

「Object」にしとかないとマズいらしい。適当に名前を入力し、Enterで。

f:id:ts0818:20190810165809p:plain

そしたらば、ソースを編集で。

object HelloWorld {
  def main(args:Array[String]): Unit ={
    println("Hello World");
  }
}    

実行してみます。作成したscalaファイルを選択した状態で右クリックし、「Run 'Hello World'」で。

f:id:ts0818:20190810170037p:plain

f:id:ts0818:20190810170432p:plain

⇧  Hello World が表示されました。

ちなみに、SDKMAN でJDKをインストールした場合は、

blog.s64.jp

⇧  ちょっとひと手間必要のようです。

 

というわけで、何とかScala が動く環境の準備ができたということで。Scalaの学習を進めていけますかね。今日も1日が終わってしまった(涙)。

今回はこのへんで。