よく知るあの有名SNSも採用!プログラミング言語「Scala(スカラ)」の特徴

12285758
プログラミング言語別のプログラマー平均年収によると、最も年収が高かったのは「scala(スカラ)」の言語を使う求人でした。
なんとこの言語は、ツイッターやリンクトインといった大手SNS(交流サイト)が利用しており、日本でも普及が進んでいます。

年収アップをするためにも、今後ますます注目される言語になると予測されていますので、ライバルが少ないうちに開発スキルを身につけておくことをオススメします。
ここでは、「scala(スカラ)」についてご紹介します。

scalaとは

Scalaは2003年にスイス・ローザンヌにあるスイス連邦工科大学 (EPFL)の教授、マーティン・オーダスキー氏によって開発されたオブジェクト指向言語と関数型言語から成る新たなプログラミング言語です。
名前の由来は、英語の「scalable language」から取っています。

一方、国内では「ニコニコ動画」などゲームや音楽をはじめとするエンタテインメント分野で知られるドワンゴも、Scalaで開発していることを明かしています。
Scalaは、オブジェクト指向言語と関数型言語の両方をあわせもつのが特徴です。

これはオープンソースのプログラミング言語で、コンパイル後はJavaVM上で動作するようになっており、Javaの資産を引き継ぎ、かつJavaには無い新たな仕組みであるため、今後の発展が予想されています。
Scalaはコーディングのステップ数が少ないので、エンジニアにとっても使い勝手が良いという点も多くの支持を得ている理由です。

Scalaの特徴は、JavaやC++のようなオブジェクト指向言語であり、かつCleanやF#のような関数型言語であることです。
実績としては、ツイッターやリンクトイン以外でも、アメリカの大手IT企業でも採用されています。

Scalaに関する書籍やWebでの情報も多くあるため、独学で学ぶのであれば、これらを有効活用して勉強するのが良いです。
Scalaはまだ一般的に普及しているレベルではないので、Scalaについての特別な資格や検定のようなものはありません。
しかし、今後は多くの利用者が見込まれるので、民間の資格ができるものと思われます。

Scalaはアメリカでは広く普及しているのに対し、日本国内では徐々に利用されるようになってきたものの、まだまだメジャーではありません。
そのため、Scalaエンジニアの転職情報やScalaによる開発案件の募集はまだまだ少ないです。

しかし、今後はScalaによる開発が増えることは間違いないありません。
今のうちにScalaを使えるようになっておくと、エンジニアとしての需要も高まるでしょう。

scalaの特徴は何?

「静的」でありながら「柔軟」であるのが特徴です。

RubyやPython等のスクリプト言語や、JavaやC#等現在のエンタープライズ領域を支える言語など、動的なコンテンツを作成するための言語は数多くあります。
その中で、Scalaが注目を集めているのには、まず「静的型付けの言語で保守性が高い」という面があります。

静的型付けのため、型関連などのエラーがあった場合でも、コンパイル時点での検出が可能で、Rubyなどよりも大規模なシステム開発に向いていると言われます。

その一方で、柔軟性がある面も魅力です。
たとえば、同じオブジェクト指向言語であり、充実したライブラリをもつことで知られるJavaのライブラリを利用できます。
また、NET Framework上で実行する場合、.NETのライブラリも使用可能です。
それでいて、Javaよりも型(クラス)を作りやすいとされています。
開発生産性を高めるために、簡潔な表記が採用されているのも、嬉しい点です。

Scalaは、他の言語の良いところを取り入れた、ハイブリッドな言語仕様が特徴といえます。
特筆すべき特徴を挙げておきます。

・Scalaは、JVM上で動作します。
 Scalaのソースコードをコンパイルすると、JVM上で実行可能なclassファイルになります。
 JVM上で動作する言語ですので、Javaのライブラリを利用したり、JavaからScalaのライブラリを呼び出したりと、相互利用が可能です。

・Scalaには対話型の実行環境(REPL)があります。
 Scalaは、動的言語ではなくコンパイルして実行するタイプの言語ですが、対話型の実行環境(REPL)によりコードを打ち込んで動作を確認しながらのプログラミングが可能です。

・オブジェクト指向と関数型言語の特徴を組み合わせています。
 Scalaでは、関数をオブジェクトとして扱うことができますし、高階関数も利用できるなど、関数型言語からさまざまな特徴を取り入れています。

・豊富なコレクションクラス(Array,List,Set,Map)が用意されており、高階関数を組み合わせてコレクションの操作が簡単に行えます。

・Scalaは静的型付け言語ですが、型推論によって型の記述を省略することができます。
 変数や関数の宣言時に、コンパイラが型を推論してくれるため、型の指定をいちいち行わなくてもよいのです。

・パターンマッチングという機能を利用することで、複雑な条件分岐を簡潔に記述することができます。

・Trait(トレイト)という、実装を持つことができるインターフェイスを利用して、Mix-Inができます。

・暗黙の型変換(implict conversion)などを利用して、DSL(ドメイン固有言語,Domain-Specific Language)を作成しやすくなっています。

・マルチコア時代を意識した、分散処理ライブラリ(Actorライブラリ)が用意されています。
 上記は一例ですが、Scalaは少ないプログラミングで柔軟な対応ができるような言語となっています。

scalaを選ぶメリットとは?

Scalaは他の言語と同様の一般的な機能は全て保有しています。
特にScalaの特徴的な機能として挙げられるものは以下の通りです。

1.Javaの環境が利用できる
Javaの利点であったどのマシンでも動作が出来るという点は、Scalaでも同様です。ですので、Windows、Mac、Linuxに関わらず全て動作します。
そのため、別のマシンで開発したものを、別のマシンでアップし、管理することも可能となります。

2.Javaとの互換性が良い
今までの開発言語として良く使われてきたのはやはりJavaですので、Javaとまったく互換性のない言語を使うのは苦労すると思いますが、Scalaであれば、JavaからScalaを呼び出したりできますので、Java開発を行っているエンジニアにはそれほど抵抗なく受け入れられる言語となっています。

3.コードがシンプル
Scalaは関数型言語になるので、数式のシンプルな言語となります。さらにスクリプト言語のようにライトに書くことが出来るのでJavaよりもJabaコードの記述量が少なくて済みます。

4.最新の技術に合わせた言語設計
Javaでは既存システムとの互換性の保持の為に先進的な機能の取り込みができなかったことから、Scalaでは最新の技術に合わせた言語設計がなされています。
Javaでは不足な部分をScalaで補完することができることから、Javaベースで今まで開発してきた企業からも求人等が多く寄せられます。

scalaは関数型プログラミング言語?

もちろん、関数型プログラミング以外のプログラミングだって楽しいし、個人差はあります。
ただ、より数学に近い自然な感覚でロジックを組み立てられるから、関数型プログラミングで頭を絞って考えるのは非常に楽しいです。
また、JavaやC++などのオブジェクト指向だけど手続き型な言語に慣れ親しんできた大多数のプログラマーにとっては、「副作用を使わない」プログラミングは、非常に新鮮で、ここで頭を徹底的に切り替えてみるのも、チャレンジングで面白いことだと思います。

現在もっとも理想的とされる言語

「現役プログラマーにとっての理想言語」にもっとも近いとも言われるScala。
開発者のオーダスキー教授も登壇した「Scala Matsuri」というイベントが開催されるなど、昨今、日本国内でも盛り上がりを見せています。

しかし、比較的新しい言語であり、国内での開発実績も少ないためか、身構えてしまう人も多いようです。
先にも書いた通り、Scalaは世の中に膨大な数があるJavaのライブラリを利用可能です。
そのため、Javaのスキルセットがあるプログラマであれば、比較的とっつきやすい言語であるともいえるようです。
開発に興味を持つ人のためのフォーラムや勉強会、サークルなども続々と立ち上がっているので、関心がある人は覗いてみるとよいでしょう。

scalaはjavaよりも将来性がある?

Twitter社がScalaを利用しているのは有名ですが、他にも位置情報を利用したfoursquareはScalaで構築されたLiftというWebフレームワークを利用していますし、GTDツールとして有名なRemember The MilkもScalaの利用を検討しています。

アメリカのIT企業がScalaを導入している理由としては、Java Virtual Machine(以下JVM)上で動くオブジェクト指向+関数型言語というのが大きいです。
簡潔で柔軟な記述が可能であり、マルチコアを意識したライブラリがあり、JVMでのスケールメリットを享受できることが、最大のメリットとして挙げられるでしょう。

Javaは数多くのシステム開発構築に使われてきた言語であり、長い間多くのエンジニアに愛用されていました。
Javaは、サーバー側、クライアント側の両面から多くのシステムに用いることができ、汎用性のある言語です。
そのため、Javaをメインスキルとして活躍しているプログラマは多く、人気となっています。
ScalaのシステムはJavaに書き換えることが可能なので、実際に一部の大手企業では本格的にその動きが進められています。
今後Scalaを使えることが、Javaプログラマーにも求められるスキルとして挙げられるでしょう。

ScalaがJavaの代替言語と注目を集める理由は、Javaで開発したプログラムをScalaによって半分のソースコードに改良ができることです。
そして安全性が高いコードが可能となり、バグや改修時のコストも減らせることも大きな要因です。
またオブジェクト指向と関数型の二つを足したような言語で、双方の美味しいところが生まれた言語であり、さらにスクリプト言語のようなシンプルさも兼ね備えています。
Javaとの相互運用性が高く、Javaのライブラリを利用したり、既存のJavaプログラムと両立させて使うこともできます。

Javaをより良いものとして存在するScalaはJavaプログラマのみならず、多くのプログラマが習得すべき言語です。
Javaの代替言語として生み出されたものがScalaであるため、Perl、Ruby、PHPといったBtoCのWebサービス分野によく使われる言語を代替できることは大きなメリットです。

このようにScalaには今後大きな可能性があるのですが、当然デメリットもあります。
ScalaはIDEの機能がJavaに比べて貧弱であり、コンパイル速度が遅いことが最大のデメリットです。

また根本から異なる発想で開発されため、今までの言語より習得が難しいということもあります。
しかしJavaに関しては、今までの知識を生かすことができるというメリットがあります。
そのためJavaプログラマにとっては、Scalaは他のプログラマより比較的に習得しやすいものといえます。

またScalaは関数型プログラミング言語の一面もあるため、今まで関数型を使用した事がないプログラマでも、Scalaを学ぶことにより関数型プログラミングの考え方を身につけておくことは、他の言語でプログラミングを行う際にもとても役に立ちます。

まとめ

Scalaは現在、開発現場でもっともホットな言語のひとつとなっています。
アメリカのTwitter社、LinkedIn社といったそうそうたるIT企業のほか、イギリスのガーディアンのような老舗メディアでも自社サービス開発に採用しており、日本でも今後実績が増えていくことは間違いない言語でしょう。
エンジニアにとってもScalaを習得することは大きなメリットになるはずです。

実際に言語のエンジニアとして求人が今一番多いのがScalaで、需要が増えている市場ですが、日本で使いこなせる人材が少なく、その分Scalaが使えるとなると、待遇面でも好条件での就職が可能となりえます。
Scalaは冗長な記述を省いて簡潔に書ける言語で、標準ライブラリも非常に充実しています。

次世代言語Scalaはこの先のスタンダードとなる言語に最も有力であるといえます。
自分以外のSE、プログラマからいち早く優れたプログラム言語を習得しアドバンテージを稼ぐためにも、Scalaを学習することは意味があると言えます。
現在はWebアプリケーションや分散処理システムの開発現場でも使用されるようになってきており、今後より多くの場面で利用されることになるでしょう。

サブコンテンツ

このページの先頭へ