Shoeisha Technology Media

CodeZine(コードジン)

特集ページ一覧

IBMのとがった人たち ~ 「IBM Japan Geeks」
勉強会レポート(前編)

「Scala」と「Android」

  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加
2008/08/28 18:45

目次

Scalaの特徴

 ScalaはJVM上で動作するため、Javaのライブラリを利用でき、またJavaからScalaを呼び出すことも可能。Javaバイトコードでコンパイルするので、Javaと同程度の速度が出るといったメリットがあるが、Erasureで型情報が消える場合もあるなどの短所もあるという。

 関数型言語であり、オブジェクト型の言語であるため、静的型、推論型、無名関数、代数データ型、パターンマッチ、遅延評価などが利用でき、すべてがオブジェクトである特徴も持つ。また、DSL(Domain Specific Language)向けの構文規則を持ち、暗黙の型変換を定義すると、既存クラスの拡張のような振る舞いが可能である。

関数型+オブジェクト指向
関数型+オブジェクト指向

 新しい言語であるため、文法なども未整理で、便利な記法があるにもかかわらず、ドキュメント化が追いついていないという状況もあるという。宮本氏は、“実務レベルの安定性”と“ワクワク感”は相反するので、「逆に発展途上なのがいい」と受け止めているとした。

 Scalaの用途としては、もともとの型理論などの研究目的のほか、“Better Java”とも言われているとおり、Javaの代わりに使われることも多くなってきたという。またDSLやフレームワーク作成についても表現力ではScalaの方があるが、逆にLL(Lightweight Language)的な1行スクリプトはコンパイルが必要なため向いていないともした。現状では、何のための言語かは定まっていないが、宮本氏は、JVM上の関数型言語としてとらえているという。

Scalaの開発環境と開発サンプル

 Scalaのインストールは、サイトからダウンロードして行う。JDK 1.4以上が必要で、JDK 1.5推奨とされている。

 Windows環境では、『IzPack Java Installer』やEclipseのPlug-in使用もおすすめだという。

 開発環境の説明の後は、宮本氏はいくつかのコードを解説した。まずはHelloWorld。クラスではなくオブジェクトで始まっているなどの違いはあるが「Javaを知っている人なら、すぐに理解できるのでは?」とした。続いてJavaからScalaを呼び出す方法、関数型のようなプログラム方法、パターンマッチングで場合分けを簡潔に記述できるCase Classの使用、実装も書けるインターフェイスのTrait(RubyのMix-inのようなもの)を解説した。

HelloWorldのコード
HelloWorldのコード

 さらにScalaの一番の特徴である暗黙の型変換を行うImplicit Conversionを紹介した。JavaではBooleanにifTrueメソッドを追加できないが、Scalaの場合は、RichiBooleanというクラスを使ってそこにifTrueメソッドを作って既存クラスにメソッドを追加したような振る舞いをするコードができるという。

暗黙の型変換
暗黙の型変換

 このほか、nullに対するdefaultを与える『Elvis Operator』(Implicit Conversionの応用例)やFizzBuzz(1から順に数を数え、3で割り切れるなら数字の代わりにFizz、5で割り切れるならBuzz、3でも5でも割り切れる場合は、FizzBuzzという世界のナベアツのギャグのようなゲーム)をExtractorで記述する方法、パッケージ管理システムの『Scala Bazaars』、テストフレームワークの『Scalacheck』などを解説した。

もっとScalaを知るには

 トップバッターからいきなりスケーラブルな発表であったが、宮本氏は、今回紹介しなかった遅延評価、for記法、XML処理構文、Web frameworkなどについて機会があれば解説したいとして発表を締めくくった。なお、宮本氏おすすめの中級者向け資料は次のとおり。


  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

  • 森 英信(モリ ヒデノブ)

    出版物やWeb・モバイルコンテンツの企画制作事業を手がける、株式会社エフエックスビイ代表。最近企画した書籍に『FFmpegで作る動画共有サイト』(毎日コミュニケーションズ)、『Flashでデザイン差がつくBlogサイトの作り方 2nd Edition』(アスキーメディアワークス)などがある。

バックナンバー

連載:「IBM Japan Geeks」勉強会レポート
All contents copyright © 2005-2019 Shoeisha Co., Ltd. All rights reserved. ver.1.5