SHOEISHA iD

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

連載記事

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

CodeZine BOOKS(コードジン・ブックス)は、CodeZineの連載からカットアップした、開発現場の課題解決に役立つ書籍シリーズです。

書籍に関する記事を見る

'); googletag.cmd.push(function() { googletag.pubads().addEventListener('slotRenderEnded', function(e) { var ad_id = e.slot.getSlotElementId(); if (ad_id == 'div-gpt-ad-1659428980688-0') { var ad = $('#'+ad_id).find('iframe'); if ($(ad).width() == 728) { var ww = $(window).width(); ww = ww*0.90; var style = document.createElement("style"); document.head.appendChild( style ); var sheet = style.sheet; sheet.insertRule( "#div-gpt-ad-1659428980688-0 iframe {-moz-transform: scale("+ww/728+","+ww/728+");-moz-transform-origin: 0 0;-webkit-transform: scale("+ww/728+","+ww/728+");-webkit-transform-origin: 0 0;-o-transform: scale("+ww/728+","+ww/728+");-o-transform-origin: 0 0;-ms-transform: scale("+ww/728+","+ww/728+");-ms-transform-origin: 0 0;}", 0 ); sheet.insertRule( "#div-gpt-ad-1659428980688-0 div{ height:"+(90*ww/728)+"px;width:"+728+"px;}", 0 ); } else { if ($(window).width() < 340) { var ww = $(window).width(); ww = ww*0.875; var style = document.createElement("style"); document.head.appendChild( style ); var sheet = style.sheet; sheet.insertRule( "#div-gpt-ad-1659428980688-0 iframe {-moz-transform: scale("+ww/320+","+ww/320+");-moz-transform-origin: 0 0;-webkit-transform: scale("+ww/320+","+ww/320+");-webkit-transform-origin: 0 0;-o-transform: scale("+ww/320+","+ww/320+");-o-transform-origin: 0 0;-ms-transform: scale("+ww/320+","+ww/320+");-ms-transform-origin: 0 0;}", 0 ); sheet.insertRule( "#div-gpt-ad-1659428980688-0 div{ height:"+(180*ww/320)+"px;width:"+320+"px;}", 0 ); } } } }); }); } else { document.write('
'); document.write('
'); }
新開発言語「Scala」の実体

Javaの限界を超えて実用化を目指す
新開発言語「Scala」のメリットとは~前編

キーワードは手軽さと拡張性

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

 Scala(スカラ)というプログラム開発言語をご存知でしょうか。ScalaはJavaの良さを継承し、かつスクリプト言語や関数型言語のメリットを吸収した言語で、Javaの後継を担うものとして注目されています。本稿では、Scalaのメリットや文法の基礎を押さえながら、その実体を探っていきます。

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

 本稿は『月刊DBマガジン 2009/09 月号』の記事「Javaの限界を超えて実用化を目指す、新開発言語「Scala」の メリットとは」を転載し、一部修正したものです。

Scalaとは

 Scalaは、2003年にJavac(コンパイラ)やJavaのGenericsの設計/開発貢献者であるMartin Odersky氏(スイス・ローザンヌ工科大学教授)によって、開発が開始された比較的新しいプログラミング言語です。Javaは実用言語として幅広いシステムで使用されてきましたが、下位互換性を保つという要請の中、言語としての機能強化がなかなか進まないといった限界も見えてきています。そのような現状もあることから、ScalaはJavaの後継として実用的な言語を目指して開発されています。

 Scala最大の特徴は、Javaの良さを最大限継承しつつ、スクリプト言語や関数型言語の良いところも吸収し、先進的な機能/文法を取り入れている点です。また、今後のハードウェアのマルチコア化を見据え、簡易に並列処理プログラミングを行うことができるライブラリが付属しています。

Scalaのメリット

 Scalaを利用するうえでのメリットとは、どんなところにあるのでしょうか。まずは、そこから探っていきましょう。

コンパイル時にJavaクラスに変換されJavaVM上で動作

 これは「Write once, run anywhere(一度書けばどこでも動作する)」を目指すJavaの長所をそのまま引き継いでいます。また、簡単にScalaからJavaを呼び出したり、JavaからScalaを呼び出したりできます。

簡易に記述でき、コンパイル言語としてエラーチェックが可能

 Scalaはスクリプト言語のように簡潔に記述できるよう設計されています。特に、制御構造の記述を簡潔化できるので、本質的なロジック部分に集中できます。

 また、Javaの1/2程度のコード量で記述可能なことは大きなアドバンテージです。しかも実行速度はJavaと同等を保っています。さらに静的型付けのコンパイル言語なので、JavaやC++などと同様にコンパイル時にエラーを検出できます。加えて、コンパイル時に自動で適切な型を推論する型推論(注1)の仕組みを持つため、多くの場合は型を書かなくても良いのです(省略可能)。

注1

 静的な型付けを持つ言語において、変数や関数の型を宣言しなくてもそれを導くのに使われた関数の型などから自動的に型を決定する仕組み。

安価なハードウェアとマルチコア化に合わせた言語設計

 現在はハードウェアが安価になり、CPUのマルチコア化が進みつつあります。このような時代の変化に合わせた言語設計がなされており、効率的な並列実行を行う機能が標準ライブラリ(Actor)として提供されています。そのほかにも、次のような特徴があります。

  • 簡易に扱えるコレクションクラス(List、Map、Arrayなど)が標準搭載されている
  • 多重継承と同等の仕組みがある
  • 非常に柔軟で高機能なパターンマッチが導入されている
  • 既存のクラスを部分的に拡張できる
  • XML型が標準で搭載されており、ソースコード中に直接XMLを記述できる
  • ユニットテスト用のライブラリが標準搭載されている
  • LiftwebというオールインワンのWebフレームワークが存在し、高機能なWebアプリを作成可能

 近ごろは意欲的で優秀な多くの技術者が、Scalaに注目しています。Scalaを用いた感想を記しているブロガーも多く、彼らも上記のようなメリットを認識しています。

開発に用いた経験から言えること

 筆者が所属するパテントビューロでは、実際にScalaを使った開発を行っています(【コラム】「実際の開発にScalaを使用する」参照)。実際に開発を行ったことにより、得られたScalaの良さは非常に多いです。我々が体感できたScalaの良い点を簡単にまとめておきます。

  1. コンパイル言語の安心感と、スクリプト言語的なお手軽さ/生産性の高さを併せ持つ
  2. スケーラビリティが高く、簡単なバッチ処理から、Webアプリケーション、エンタープライズアプリケーションまで高い生産性を発揮できる
  3. 開発言語として最先端の機能や手法をふんだんに取り入れており、なおかつそれらに縛られずに自由な記述が可能

 これらを踏まえて、次ページからScalaという言語の基礎を解説していきます。

【コラム】「実際の開発にScalaを使用する」

 筆者らが所属するパテントビューロでは、「astamuse」というWebアプリケーションを新規開発するにあたり、裏方のバッチ処理から、フロントエンドのWebアプリケーションまで、全面的にScalaを採用することにしました。前述したScalaの生産性の高さを期待してのことです。


 2009年11月現在、astamuseは近年の特許文章150万件強から抽出した技術情報を加工し、約400万ページの技術情報・関連情報を無料で公開しています。技術情報量では日本最大のサービスです。

 

 特許文書は、1文書あたり平均1万5000字程度の長さを持ち、文書全体としては200億字を超えています。それらに対して、自然言語解析処理や統計処理、動的コンテンツの生成などを幅広く行っています。Scalaはどの機能を作成するにしても、コーディング量の低減やコンパイル言語としてのエラーチェックと実行速度の速さを発揮し、高い生産性を提供してくれています。


 astamuse開発は、数名の小規模チームで行われています。開発者間の密なコミュニケーションをとっていることもあり、新言語Scalaに教育コストが高いという印象はありません(Web経由で得られる情報量が少ない点は事実ですが)。Java経験者だけでなく、C言語経験者も、Scalaをマスターするまでさほど時間を要しませんでした。


astamuseの画面1(技術単語解説ページ 技術単語解説や関連情報を掲載)
astamuseの画面1(技術単語解説ページ 技術単語解説や関連情報を掲載)
astamuseの画面2(発明・特許ページ 特許情報をわかりやすく整理・再構築して公開)
astamuseの画面2(発明・特許ページ 特許情報をわかりやすく整理・再構築して公開)

 ちなみに、「astamuse」は、Scalaベースのwebフレームワーク「Liftweb」で作成されました。Liftwebについては後述します。Webアプリケーション「astamuse」の概要紹介記事は、CodeZineに掲載されています。

会員登録無料すると、続きをお読みいただけます

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

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

メールバックナンバー

次のページ
Scalaの基本と環境の構築

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

  • X ポスト
  • このエントリーをはてなブックマークに追加
新開発言語「Scala」の実体連載記事一覧

もっと読む

この記事の著者

株式会社パテントビューロ 三木隆史(ミキ タカフミ)

株式会社パテントビューロ所属。マネージャー業務と平行して、Webアプリケーション開発、自然言語系の研究開発を行なう。以前はC言語による組込開発。違和感なくScalaへ移行できたことや、ロジック部分に注力できる生産性の高さに驚いている。

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

株式会社パテントビューロ 木村吉博(キムラ ヨシヒロ)

政府系研究機関での研究開発を経て、現在、株式会社パテントビューロにて、プログラミング(知財関連文書(SGML/XML)の変換バッチ処理のScalaでの記述など)を担当している。複雑でイレギュラーな記述も多々見られる大量の文書を相手にする際に、Scalaの書きやすさと高速性とに大いに助けられている。か...

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

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

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/4475 2009/11/06 14:00
" ); }

おすすめ

アクセスランキング

  1. 1
    いいエンジニアになるための2つのポイント ──元Google技術者・石原氏が説く「シリコンバレー流ソフトウェア開発術」
  2. 2
    「CUDA」 ~マンガでプログラミング用語解説
  3. 3
    デスクトップアプリを開発しよう! 「Rust」と「Tauri 2.0」の基本情報と環境整備の仕方を解説
  4. 4
    2024年の提示年収が高いプログラミング言語は? paiza調査によるランキングが発表
  5. 5
    計測と改善をひたすら繰り返したら、年間コストを1億円削減した──不確実性の高いプロジェクトに挑む
  1. 6
    「VRAM」 ~マンガでプログラミング用語解説
  2. 7
    ガートナー、日本企業が2025年に向けて押さえておくべきインフラストラクチャとオペレーションのトップトレンドを発表
  3. 8
    AWS、「Data Exports for FOCUS 1.0」の一般提供を開始 NEW
  4. 9
    Amazon Bedrockのナレッジベース、応答の遅延を短縮するRetrieveAndGenerateStream APIをサポート NEW
  5. 10
    健全なソフトウェア設計の第一歩! 既存のPHPソースコードからクラス図を自動生成しよう

アクセスランキング

  1. 1
    いいエンジニアになるための2つのポイント ──元Google技術者・石原氏が説く「シリコンバレー流ソフトウェア開発術」
  2. 2
    「CUDA」 ~マンガでプログラミング用語解説
  3. 3
    デスクトップアプリを開発しよう! 「Rust」と「Tauri 2.0」の基本情報と環境整備の仕方を解説
  4. 4
    2024年の提示年収が高いプログラミング言語は? paiza調査によるランキングが発表
  5. 5
    計測と改善をひたすら繰り返したら、年間コストを1億円削減した──不確実性の高いプロジェクトに挑む
  6. 6
    「VRAM」 ~マンガでプログラミング用語解説
  7. 7
    ガートナー、日本企業が2025年に向けて押さえておくべきインフラストラクチャとオペレーションのトップトレンドを発表
  8. 8
    AWS、「Data Exports for FOCUS 1.0」の一般提供を開始 NEW
  9. 9
    Amazon Bedrockのナレッジベース、応答の遅延を短縮するRetrieveAndGenerateStream APIをサポート NEW
  10. 10
    健全なソフトウェア設計の第一歩! 既存のPHPソースコードからクラス図を自動生成しよう
  1. 1
    ITエンジニア本大賞2025、投票締切直前! みんなで選んだ歴代の大賞本を振り返って一挙紹介
  2. 2
    Python 3.13の新機能、対話型インタプリタの機能強化や高速化などを解説
  3. 3
    いいエンジニアになるための2つのポイント ──元Google技術者・石原氏が説く「シリコンバレー流ソフトウェア開発術」
  4. 4
    デスクトップアプリを開発しよう! 「Rust」と「Tauri 2.0」の基本情報と環境整備の仕方を解説
  5. 5
    「CUDA」 ~マンガでプログラミング用語解説
  6. 6
    VSCodeをドキュメント作成に活用――テキストエディタ、Markdownエディタの設定と拡張機能を解説
  7. 7
    今後生成AIとどう向き合うべきなのか? 現場のエンジニアと研究者が最新研究事例から語り合う
  8. 8
    2024年12月に開催される注目のITエンジニア向けカンファレンス5選
  9. 9
    日本在住の英語を話すソフトウェア開発者、年収の中央値は950万円に
  10. 10
    Vue.js3.4~3.5の新機能をまとめて紹介! 新しいAPIやSSRの改善

イベント

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

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

メールバックナンバー

アクセスランキング

  1. 1
    いいエンジニアになるための2つのポイント ──元Google技術者・石原氏が説く「シリコンバレー流ソフトウェア開発術」
  2. 2
    「CUDA」 ~マンガでプログラミング用語解説
  3. 3
    デスクトップアプリを開発しよう! 「Rust」と「Tauri 2.0」の基本情報と環境整備の仕方を解説
  4. 4
    2024年の提示年収が高いプログラミング言語は? paiza調査によるランキングが発表
  5. 5
    計測と改善をひたすら繰り返したら、年間コストを1億円削減した──不確実性の高いプロジェクトに挑む
  1. 6
    「VRAM」 ~マンガでプログラミング用語解説
  2. 7
    ガートナー、日本企業が2025年に向けて押さえておくべきインフラストラクチャとオペレーションのトップトレンドを発表
  3. 8
    AWS、「Data Exports for FOCUS 1.0」の一般提供を開始 NEW
  4. 9
    Amazon Bedrockのナレッジベース、応答の遅延を短縮するRetrieveAndGenerateStream APIをサポート NEW
  5. 10
    健全なソフトウェア設計の第一歩! 既存のPHPソースコードからクラス図を自動生成しよう

アクセスランキング

  1. 1
    いいエンジニアになるための2つのポイント ──元Google技術者・石原氏が説く「シリコンバレー流ソフトウェア開発術」
  2. 2
    「CUDA」 ~マンガでプログラミング用語解説
  3. 3
    デスクトップアプリを開発しよう! 「Rust」と「Tauri 2.0」の基本情報と環境整備の仕方を解説
  4. 4
    2024年の提示年収が高いプログラミング言語は? paiza調査によるランキングが発表
  5. 5
    計測と改善をひたすら繰り返したら、年間コストを1億円削減した──不確実性の高いプロジェクトに挑む
  6. 6
    「VRAM」 ~マンガでプログラミング用語解説
  7. 7
    ガートナー、日本企業が2025年に向けて押さえておくべきインフラストラクチャとオペレーションのトップトレンドを発表
  8. 8
    AWS、「Data Exports for FOCUS 1.0」の一般提供を開始 NEW
  9. 9
    Amazon Bedrockのナレッジベース、応答の遅延を短縮するRetrieveAndGenerateStream APIをサポート NEW
  10. 10
    健全なソフトウェア設計の第一歩! 既存のPHPソースコードからクラス図を自動生成しよう
  1. 1
    ITエンジニア本大賞2025、投票締切直前! みんなで選んだ歴代の大賞本を振り返って一挙紹介
  2. 2
    Python 3.13の新機能、対話型インタプリタの機能強化や高速化などを解説
  3. 3
    いいエンジニアになるための2つのポイント ──元Google技術者・石原氏が説く「シリコンバレー流ソフトウェア開発術」
  4. 4
    デスクトップアプリを開発しよう! 「Rust」と「Tauri 2.0」の基本情報と環境整備の仕方を解説
  5. 5
    「CUDA」 ~マンガでプログラミング用語解説
  6. 6
    VSCodeをドキュメント作成に活用――テキストエディタ、Markdownエディタの設定と拡張機能を解説
  7. 7
    今後生成AIとどう向き合うべきなのか? 現場のエンジニアと研究者が最新研究事例から語り合う
  8. 8
    2024年12月に開催される注目のITエンジニア向けカンファレンス5選
  9. 9
    日本在住の英語を話すソフトウェア開発者、年収の中央値は950万円に
  10. 10
    Vue.js3.4~3.5の新機能をまとめて紹介! 新しいAPIやSSRの改善