SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

「IBM Japan Geeks」勉強会レポート(AD)

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

「Scala」と「Android」

  • X ポスト
  • このエントリーをはてなブックマークに追加

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などについて機会があれば解説したいとして発表を締めくくった。なお、宮本氏おすすめの中級者向け資料は次のとおり。

次のページ
Android

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
「IBM Japan Geeks」勉強会レポート連載記事一覧
この記事の著者

森 英信(モリ ヒデノブ)

就職情報誌やMac雑誌の編集業務、モバイルコンテンツ制作会社勤務を経て、2005年に編集プロダクション業務やWebシステム開発事業を展開する会社・アンジーを創業。編集プロダクション業務においては、IT・HR関連の事例取材に加え、英語での海外スタートアップ取材などを手がける。独自開発のAI文字起こし・...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/2950 2008/09/05 11:46

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング