「Scala(スカラ)」というプログラミング言語をご存じですか? 「聞いたことはあるが、触ったことはない」「ちょっと使ってみたことはあるが、よくわからなかった」……本稿はそんなあなたのための記事です。騙されたと思って、ちょっとだけ読んでみてください!
Scalaってどんな言語なの?
そもそも、Scalaとはどのような言語なのでしょうか。その特徴は多岐にわたりますが、本稿では以下の2点に絞って紹介します。
- ①JVM(Java仮想マシン)上で動作する
- ②オブジェクト指向と関数型という2つのスタイルを融合している
①JVM上で動作する
JVMとは、ひとことで言えば「Javaで書いたプログラムを実行するための環境」です。Javaに馴染みのある方であれば、Javaのソースコードをコンパイルしてできるクラスファイル、あるいはそれらをまとめたJARファイルを見たことがあるかもしれません。これらに含まれるバイトコード、すなわち仮想マシンへの命令を読み込んで実行するのがJVMの役割です。
さて、「Javaで書いたプログラム」と述べましたが、バイトコードへとコンパイルできるのであれば、使う言語が必ずしもJavaである必要はありません。JVMが読むのはあくまでバイトコードなのですから。……そうです、Scalaで書いたソースコードも、バイトコードへとコンパイルされ、JVMで実行できるようになっているというわけです。
これはどんなメリットをもたらすのでしょうか? たとえば、Javaの既存のライブラリ、ひいてはそのエコシステムをほとんどそのまま利用できることが挙げられます。ご存じのとおりJavaは広く普及しているプログラミング言語ですから、これらの資産を利用できることは大きな利点と言えるでしょう。
②2つのスタイルを融合
JavaやRuby、JavaScriptといった言語に馴染みのある方であれば、オブジェクト指向プログラミングについてはご存じでしょう。何をもってオブジェクト指向なのかというのはなかなかに深淵なテーマであるため深入りしませんが、現在広く使われているプログラミング言語の多くには、多かれ少なかれオブジェクト指向的なエッセンスが含まれていると言ってよいでしょう。
では、もう一方の関数型プログラミングとはなんでしょうか? もちろんこちらも、誰もが納得する関数型プログラミングの定義を述べることは難しいのですが……関数の合成を多用すること、副作用を避けることなどがしばしば特徴として挙げられます。関数型のスタイルの採用により見通しがよく安全なコードが得られることも多く、近年になってとくに注目されています。
そして、これらのスタイルは決して排他的なものではありません。その証拠のひとつとも言えるのがScalaの存在です。どちらかのスタイルで書くことを強制されるような設計にはなっておらず、プログラマはそれぞれの長所を好きに取り入れてコードを書くことが可能となっているのです。
Scalaの世界を訪ねるためのガイドブック
ここまで本稿を読んできたあなたも、Scalaに興味が湧いてきましたよね?(そう願っています!)そして、そんなあなたに勧めしたいのが『実践Scala入門』という書籍です。
本書では、基礎的な構文はもとより、Javaで悩まされがちなnull参照の問題を解決するOptionやEitherといった型の活用、充実したコレクションAPIの利用、Futureによる並行プログラミングの実現など、Scalaの便利な部分をしっかりと解説。そして、Scalaでは事実上の標準となっているビルドツール「sbt」の使い方や、実用に即したユニットテストライブラリの使い方も紹介しています。さらに、執筆者はみな日本のScala利用の第一人者。経験に裏打ちされた、まさに「実践」的な「入門」書として、はじめてScalaに触れる方にうってつけの書籍となっているのです。
本書を片手に、Scalaの世界に飛び込みましょう!