スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
Prev.    Category    Next 

Scala のインストール(Windows)と Emacs モードの設定

Scala はオブジェクト指向と関数型プログラミングのマルチパラダイムの言語であり、 JVM(Java 仮想マシン)上で動作する JVM 言語です。
今回はこの Scala の Windows へのインストールと簡単な使用法、および Emacs の scala 用モードの設定についての記事です。

Scala
最近、 Scala を始め、 Haskell, F#, Erlang, Clojure といった関数型プログラミング言語が注目を集めています。 Java は古いはいいとしても、 関数型でオブジェクト指向が古くなるということないでしょう。 しかし、適材適所で使えばかなり有用そうですし、 新しいパラダイムを覚えることはプログラミング力の向上にもなります。
何か 1 つちゃんと身につけたいなと思うのですが、どれがいいかは悩みます。 そこで、主要なものは試してみようということで、第一弾を Scala にしました。
『7つの言語 7つの世界』 に出ていたという理由もあります。
7つの言語 7つの世界7つの言語 7つの世界
(2011/07/23)
Bruce A. Tate

商品詳細を見る

その試した際のインストール方法などをまとめて記事にしてみました。

Scala とは

関数プログラミング言語の中でも Scala の特徴はマルチパラダイムJVM 言語です。

マルチパラダイム :
C++ はオブジェクト指向言語ですが、 C と同じ手続き型で記述することができます。 このパラダイムのつなぎとなれるというのは大きなメリットでしょう。
Scala は大枠はオブジェクト指向の言語ですが、関数型プログラミングが可能な能力を持っています。

JVM 言語:
Java はソースコード(*.java)をコンパイルして、 バイトコードと呼ばれる中間言語のファイル(*.class)を作成します。それを JVM(java.exe) が実行します。
Scala も同様にコンパイルで、バイトコードを作成し、 JVM 上で動作します。(スクリプトとして動作させることもできます)
JVM 上で動作するので、 Java の豊富なライブラリーを使うことができます。 また、 逆に Scala で作成したクラスを Java から利用することもできます。
lang_scala_descipt.png
Scala の名前の由来は "SCAlable LAnguage" (移植性、拡張性のある言語) であり、 オブジェクト指向、 Java と関数型の連結の高さからきています。
また、 イタリア語で "階段、はしご" を意味しています。 Scala のマークは開発者であるマーティン・オーダスキー教授の職場にある螺旋階段が素になっているらしいです。

インストール

JDK のインストール

バイトコードを生成するのに Java 開発キット(JDK) を利用します。 このため、まず JDK をインストールする必要があります。

簡単にいうと、以下の手順になります。
  1. インストーラーをダウンロード
  2. インストーラーを実行
  3. 環境変数を設定
    環境変数
    JAVA_HOME インストール先のフォルダー(C:\Program Files\Java\jdk1.7.0_21 など)
    PATH (追加) %JAVA_HOME%\bin
JDK のインストール方法についての詳しい説明は以前の記事をご覧下さい。 なお、 JDK のインストール記事では環境変数の設定はオプション的な位置づけで説明しましたが、 scala を使用する場合には、 JAVA_HOME の設定は必須です。
(JAVACMD で java.exe のフルパスを設定でも可)

Scala のインストール

ダウンロードページからインストーラー(scala-X.X.X.msi) または圧縮ファイル(scala-X.X.X.zip) をダウンロードします。 lang_scala_dl.png

ちなみに、 [Scala tool support] の中身は gEdit と Emacs 用のモードです。 Emacs に関しては後述しますが、使用する場合でもここでダウンロードする必要はありません。


以降はインストーラーをダウンロードしたとして説明していきます。
圧縮ファイルの場合はインストール項目を選択できないのと、 手動で bin フォルダーを PATH に追加する必要がある点を除けば、中身は同じです。

まず、ダウンロードしたインストーラーを実行します。

実行し、進めていくと [Custom Setup] の画面になります。
ここで、必要であれば、 [Browse] でインストール先を変更します。
lang_scala_inst_loc.png

また、 インストール項目も選択出来ます。 といっても、 サンプルコードや Scala のソースを選択するぐらいですが。
lang_scala_inst.png

後は、そのまま進めていけば、インストールは完了します。

ただし、 PATH に設定された値は "C:\Program Files\Java\scala\\bin" のように \ 記号が余分に追加されています。(Ver. 2.10.1)
大抵はこのままで問題無いのですが、 eshell のように対応していないものもあるので、修正しておいた方がいいでしょう。

IDE のプラグイン

Java の主要な IDE 用のプラグインが用意されていて、 IDE での開発もできるようになっています。
Emacs 派の私としては IDE は使いませんが、リンクだけ紹介しておきます。
IDE リンク
Eclipse Scala IDE for Eclipse
IntelliJ IDEA JetBrains Plugin Repository :: Scala
NetBeans Scala - NetBeans Wiki

なお、 IDE の中では、今のところ IntelliJ のプラグインが評判がいいみたいです。
また、 scala サイトのダウンロードページにあるのは、 gEdit と Emacs だけですが、 Vim 、 TextMate など様々なエディターのプラグインが作成されています。

使用方法

scala は 3 つの方法で使用することができます。
  1. 対話モード (REPL)
  2. スクリプト
  3. コンパイル
それぞれの使用方法について説明していきます。
なお、詳細は scala -help, scalac -help で確認してください。 (scalac のオプションはすべて scala で使用できます)

対話モード (REPL)

REPL と呼ばれるもので、 1 行づつ結果を確認することができるモードです。 動作確認などで使用します。

scala(.bat)引数なしで実行すると対話モードとなります。
終了する場合は :quit と入力します。
lang_scala_internal.png

Perl や Ruby のように -e オプションで式の文字列を渡して、 実行することも可能です。

スクリプト

scala(.bat)ソース(*.scala) を直接渡すとスクリプトとして動作します。
次節のコンパイルではエントリーポイントを定義する必要がありますが、 スクリプトの場合はファイルを上から順に実行します。

hello.scala :
println("Hello, World!")
println("Hello, Japan!")
println("Hello, Tokyo!")
実行結果 :
~/seven/scala $ scala hello.scala
Hello, World!
Hello, Japan!
Hello, Tokyo!
ただし、 Perl や Ruby の -c のような文法チェックだけのオプションは無いみたいです。 また、文法エラーのファイルを実行するとエラーが出ずに固まることも多いです。
私としてはコンパイルの方がお勧めです。

コンパイル

コンパイルの場合は次の手順になります。
  1. scalac(.bat) でコンパイルして、 class ファイルを作成
  2. scala(.bat)class ファイル(拡張子は除く) を渡す
スクリプトでも触れましたが、 コンパイルの場合はエントリーポイントの関数を作成しておく必要があります。
Java の場合は main という名前のクラスメソッド(static)がエントリーポイントとなります。 Scala も同じですが、 クラスメソッドはシングルトンオブジェクトで作成します。

helloWorld.scala :
object HelloWorld {

  def main(args: Array[String]) {
    println("Hello, World!")
    // コマンド引数を表示
    args.foreach(arg => println(arg))
  }

}
コメントを含め、日本語を使用したい場合は BOM(シグネチャー)なしの UTF-8 で保存する必要があります。

実行結果 :
~/seven/scala/sample $ scalac helloWorld.scala
~/seven/scala/sample $ ls
HelloWorld$$anonfun$main$1.class  HelloWorld$.class  HelloWorld.class  helloWorld.scala
~/seven/scala/sample $ scala HelloWorld foo bar
Hello, World!
foo
bar

実際のアプリでは、ソースファイルがひとつということはなく、 複数ファイルからなるプロジェクトということが多いでしょう。 このプロジェクトのビルドは sbt を使うのが、 Scala では一般的のようです。
ただ、こちらは本格的に使うようになってからということにしたいと思います。

Emacs モードの設定

scala-mode の選択とインストール

[Options] -> [Manage Emacs Packages] メニュー等でパッケージのリストを開きます。 ここで、 scala 用のモードは 2 つ見つかります。
  • scala-mode
  • scala-mode2
最初の scala-mode は scala のサイトにある [Scala tool support] と中身は同じです。
scala-mode2 は作者によると scala-mode に比べて、インデントやハイライトが賢くなっているらしいです。 インデントやハイライトを重視して、 scala-mode2 を使うことにします。
scala-mode の方も括弧の electric モードやスニペットの使用など魅力的な機能はあります。 ただ、部分的な機能であれば、本格的に使うようになった時、後から自分で移植するということもできるかもしれないので、 とりあえず気にしないことにします。

どれを使うか決めたら、後はパッケージを選択して、 install を実行すればいいだけなので、簡単です。

ENSIME のインストール

編集用のメジャーモードとは別に ENSIME(the ENhanced Scala Interaction Mode for Emacs) という拡張用の Lisp もあります。 こちらのインストール方法も紹介します。

こちらはパッケージとして登録されていないようなので、ダウンロードページから取得します。 ダウンロードした圧縮ファイルを任意のフォルダーに展開します。 ここでは、 ~/elisp/ensime 以下に展開したとします。

(インストールフォルダー)/elisp を load-path に追加する設定と scala ファイルを開いた時に一緒に起動する設定を ~/.emacs.d/init.el に記述します。
(add-to-list 'load-path "~/elisp/ensime/elisp")
(autoload 'ensime-scala-mode-hook "ensime"
  "Conveniance hook function that just starts ensime-mode." t)
(add-hook 'scala-mode-hook 'ensime-scala-mode-hook)
ENSIME のサイト等での説明では require で記述されていますが、 起動時に常にロードするのは嫌だったので、 autoload に変えています。
また、 hook に hook をかけているのが、おかしく感じるかもしれません。 名前が紛らわしですが ensime-scala-mode-hook は実際にはホックではなく、 モード呼び出し用の関数です。


ENSIME は主な機能はプロジェクト開発用みたいなので、まだちゃんと使っていません。 使用方法などは他のサイトなどを参考にしてください。
関連記事
スポンサーサイト
Prev.    Category    Next 

Facebook コメント


コメント

コメントの投稿

Font & Icon
非公開コメント

このページをシェア
アクセスカウンター
アクセスランキング
[ジャンルランキング]
コンピュータ
28位
アクセスランキングを見る>>

[サブジャンルランキング]
プログラミング
4位
アクセスランキングを見る>>
カレンダー(アーカイブ)
プルダウン 降順 昇順 年別

07月 | 2017年08月 | 09月
- - 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31 - -


はてな新着記事
はてな人気記事
ブロとも申請フォーム
プロフィール

yohshiy

Author:yohshiy
職業プログラマー。
仕事は主に C++ ですが、軽い言語マニアなので、色々使っています。

はてブ:yohshiy のブックマーク
Twitter:@yohshiy

サイト紹介
プログラミング好きのブログです。プログラミング関連の話題や公開ソフトの開発記などを雑多に書いてます。ただ、たまに英語やネット系の話になることも。
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。