Scala head

なぜ、Scalaなのか

オブジェクト指向と関数型のハイブリッド言語

弊社では、古くよりRuby及び、Ruby on Railsによる開発を得意としており、技術提供やシステム構築を行ってまいりました。

合わせて、3年半前よりプログラミング言語Scalaに取り組んでいます。

Scalaは、オブジェクト指向言語と関数型言語のハイブリッド言語と言われています。

オブジェクト指向というプログラミングパラダイムが叫ばれて久しいですが、オブジェクト指向によりコンピューティングの世界は進化し、多様なアプリを生み出し、様々なシステムを作り出すことが出来るようになりました。

反面、システムの複雑さは以前とは比べ物にならないぐらいの規模で増加しており、オブジェクト指向だけでは対処できない問題が増えてきています。

それらの問題により良く対応するためのプログラミングパラダイムとして、関数型言語に注目が集まっているというのが、昨今のシステム開発業界の流れとなります。

関数型言語とは

関数を組み合わせる

関数型言語とは、HaskellやOCamlなどに代表される、副作用のない数学的な意味の「関数」によってプログラムを組み立てていく手法を中心に据えた言語です。

関数型言語の歴史は古く、初期のプログラミング言語LISPに端を発します(LISPは今も存在していて関数型言語の影響を色濃く残しますが、これを関数型言語と言うとマサカリが飛んでくるので危険)。

その後、CやSmalltalkなどを経て発展していくオブジェクト指向言語の裏で、MLや様々なLISPの派生言語とともに進化を続けます。

関数型言語の一番の特徴である「副作用のない関数」とは、戻り値以外の状態を変更しない関数の事を言い、グローバル変数やインスタンス変数、スタティックな変数などが存在せず、変数への代入も一度きりで変更ができません。

このような仕組みは、オブジェクト指向などの手続き型言語に慣れ親しんだ人間からすると「それでプログラムが書けるの!?」と不安になりますが、そのための仕組みやロジックが発達しており、そこを覚えれば自然にプログラムが書けるようになります。

グローバル変数(やその他の変更可能な変数)というのは、バグの温床となります。

関数型言語の考え方、プログラミングパラダイムを学ぶと、関数の副作用を排除するやり方を理解することができるため、バグの少ないプログラムを書くことができるようになります。

Scalaの強み

Www banner gr

しかし、現実的にはJavaなどの既存システムの資産も多く、プログラマーたちはオブジェクト指向言語に親しんでいます。

これらをいっぺんに関数型言語へ移行するというのは、簡単ではありません。

Scalaは、JavaのバイトコードにコンパイルされJavaのVM上で走るように設計されており、構文もJavaに近くなっています。

既存のJava資産もそのまま流用することが出来るなど、スムーズに関数型言語の機能を取り入れられるよう考えられています。

現在、最も人気のあるプログラミング言語は、Javaです。その Javaを脅かし、存在を置き換える最右翼と見られている言語がScalaとなります。

弊社では、Scalaのプログラミング言語としての機能性や将来性に早くから着目し、社内プロジェクトに採用するなど、研究開発を行ってきました。

また、都内で行われている勉強会にも継続的に参加しており運営をお手伝いさせてもらったり、国内最大級のScalaイベント「Scala Conference in Japan 2013(現在はScalaMatsuriの名前で開催しています)」にもスポンサーとして参加しました。

今後も、増加しつつあるScalaを採用したシステムへの技術提供など、積極的にScalaの普及に取り組んでいきます。

アプリカティブ株式会社 代表取締役社長 玉置 龍範