オブジェクト指向言語の中に「Scala」という言語が存在します。
あまり聞きなれない言語で何のこっちゃ分からない方も多いと思いますが、Scalaの特徴などについて今回はお話していきたいと思います。
Scalaとは?
プログラミングは基本的に「手続き型言語」と「関数型言語」に分かれます。
手続き型言語は、実行する処理を順番に書いていく方法です。
一方関数型言語は、文字通り関数として定義していく方法になります。
最近注目されているScalaは、以前紹介したGroovyと同様にJava仮想マシンで動く言語です。基本的にオブジェクト指向の言語なのですが、関数型っぽく書くための仕組みが用意されています。
これにより、オブジェクト指向でありながら関数型言語っぽいプログラムが書けるようになったのがScalaです。
最近では、関数型が見直させるようになり、プログラムを書く時は分かりにくいですが、書かれたプログラムは処理がスッキリ整理されて、全体が良く把握できるようになるので、関数型の良さが再認識されるようになっています。
Scalaの特徴について
オブジェクト指向なので、Javaについて詳しければ取り掛かりやすいと思います。
動作速度が速い
Scalaは、スクリプトを書いてすぐに実行できるようになっています。
内部でコンパイルして動いているのでとても速いです。見た目はインタープリタっぽいけどね。
関数が値になっている
関数は、何かしらの処理をまとめて呼び出せるようにしたものです。
Scalaでは、関数自体が値として扱えるようになっています。つまり、他の関数の引数に渡したりすることが出来ちゃいます。
ちょっと違和感があると思いますが、関数自体が値という概念を理解する必要がありますね。
SBT・Play Frameworkとの関係性
SBTとは、Simple Build Toolの略で、Scalaはこのビルドツールで使われています。
これは、GroovyにおけるGradleと同じようなもので、ScalaとSBTは密接な関係があります。
ScalaのインストールもSBTで行ったり、プロジェクトの作成やビルドなども全てこのSBTで出来るようになっています。
更に、Webで開発を行うPlay Frameworkというフレームワークがあり、こちらもSBTでプロジェクトを作り、ビルドするようになってます。
Scalaを使ってPlay FrameworkでWebアプリを開発する場合は、この2つをセットで使うという事ですね。
Javaのプログラムが使える
Java仮想マシン用の言語なので、Javaのプログラムを内部で利用することが可能です。
どんなメリットがあるのかというと、例えばScalaを勉強し始めたばかりで、慣れないことが多い時に難しい部分はJavaで書いておき、Scalaから呼び出して使うなんて書き方が出来ます。
まぁ、ある程度Javaを扱えることが前提になっちゃいますけどね。
まとめ
正直、プログラミング初心者の方に対して、関数型言語は難しいんじゃないのかなって思うこともあります。
やや複雑な言語で、オブジェクト指向の部分も色々な考え方が組み込まれており、理解するまで結構時間を要するかもしれません。
ただ、どういったものか知りたいというような興味を持っている人はオススメだと思います。
もっと言うと、ある程度プログラミングが分かってきたところで取り掛かるべきだと考えます。