数年前からTwitter や LinkedIn といったサービスで使用されている言語「Scala」についてまとめてみました。
■Scala とは?
読み方:スカラ
Scala は 標準Javaプラットフォーム上で動作します。
それ故にすべてのJavaライブラリと相互運用することができ、小規模な開発から大規模な開発までを広くカバーすることのできる柔軟な言語です。
また、「オブジェクト指向」と「関数型プログラミング」の両方の概念を併せ持つともされる言語です。
Scalaという名前は「スケーラブル(拡張可能)な言語」を意味しています。
「スケーラブル」という名前にはScalaの開発者であるMartin Odersky(マーティン・オーダスキー)教授が「ユーザーの求めに応じて成長していける」というコンセプトをもとに設計しているためです。
■Scala の特徴
・互換性の高さ(Javaとの共存)
⇒上でも記載しましたが、Javaのプラットフォーム上で動作するため既存のコードを容易に実現することができます。
もちろんJavaのライブラリや既存のフレームワークとの連携も簡単です。
(Scalaのコード自体もJavaライブラリーを多用しています)
・簡潔なコードで表現できる
⇒Scalaは関数型プログラミングの特性を生かすことにより簡潔なコーディングの実現が可能です。
コード量としてはJavaの約半分程度で済むとか…
例えば、Scalaには「型推論」という仕組みがあり、Javaと異なり変数やメソッドの定義において明示的に型を指定しなくても型の記述を省略できるといったものです。
また、メソッドの戻り値の型も省略できたり、「タプル」という仕組みを用いればメソッドの戻り値として複数の値を1つのデータとして扱うことも可能です。
(JavaだとPOJOのようなクラスを作る必要がありますが、その作業が不要になります)
■Scalaらしい書き方
Java開発者がScalaでプログラミングをしようとすると、関数型プログラミングの作法というものが中々慣れません。。
(かくいう私もまだScalaらしいプログラミングというものが完全に身に付いていません)
Scalaで実装されているサービスとして有名なTwitterが独自のScalaガイドを公開しています。
http://twitter.github.com/effectivescala/index-ja.html
今後は、サンプルを元に上記の特徴の具体例を挙げてみたいと思います。