Movatterモバイル変換


[0]ホーム

URL:


Javaの限界を超えて実用化を目指す 新開発言語「Scala」のメリットとは~前編 (1/6)|CodeZine(コードジン)
SHOEISHA iD

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

Javaの限界を超えて実用化を目指す 新開発言語「Scala」のメリットとは~前編 (1/6)|CodeZine(コードジン)

翔泳社

プライバシーマーク

連載記事

イベント
イベント

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

CodeZine BOOKS

翔泳社では、「独習」「徹底入門」「スラスラわかる」「絵で見てわかる」「一年生」などの人気シリーズをはじめ、言語や開発手法、最新技術を解説した書籍を多数手がけています。プロジェクトマネジメントやチームビルティングといった管理職向けの書籍も豊富です。

ITエンジニアとしてのスキルアップ・リスキリングに、ぜひお役立てください。

書籍に関する記事を見る

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

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

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

 本稿は『月刊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」の実体連載記事一覧

もっと読む

この記事の著者

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

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

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

この著者の最近の執筆記事

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

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

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

この著者の最近の執筆記事

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

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/44752009/11/06 14:00

Special Contents

AD

    キャリアインタビュー

    AD

      おすすめ

      アクセスランキング

      アクセスランキング

      1. 1
        世界6000万ユーザーの「TimeTree」、サービスの未来を見据えて挑んだデータベース移行の舞台裏
      2. 2
        Oracle、プログラミング言語/開発プラットフォーム「Java 24」をリリース
      3. 3
        データサイエンス基礎を高校数学から復習しよう! D3.jsでデータを表現する
      4. 4
        マイクロソフト、コンパイラとツールの移植でTypeScriptを10倍の処理速度へ
      5. 5
        開発者向け生成AIエージェントを比較!「Cursor」と「Amazon Q Developer」の特徴とは?NEW
      6. 6
        Flutter案件の平均年収は831万円、フルリモート案件が79%超で週3日以下の案件が47%超に達するNEW
      7. 7
        ITエンジニア注目トレンドを総まとめ!週間ニュースランキングTOP10【3/14~3/20】NEW
      8. 8
        Rust製の高速コードエディタ「Zed」、Gitを統合NEW
      9. 9
        paiza、2027年卒ITエンジニア志望学生のインターンシップ人気企業ランキングを発表
      10. 10
        MIXI、動画制作などのクリエイティブ技術を無料で学べる「ミクデザキャンプ」を公開
      1. 1
        世界6000万ユーザーの「TimeTree」、サービスの未来を見据えて挑んだデータベース移行の舞台裏
      2. 2
        「オブザーバー・パターン」 ~マンガでプログラミング用語解説
      3. 3
        マイクロソフト、VSCodeの新機能「Copilot Next Edit Suggestions」のプレビュー版公開
      4. 4
        3/5まで書籍全文が無料公開 『Pythonで動かして学ぶ!Kaggleデータ分析入門』
      5. 5
        データサイエンス基礎を高校数学から復習しよう! D3.jsでデータを表現する
      6. 6
        macOS上のアプリケーションからChatGPTが呼び出せるように。各種IDEやターミナル、メモなどが対応
      7. 7
        GitHub、あらゆるエディタやIDEとGitHub Copilotとの統合を可能にする「Copilot Language Server SDK」を一般公開
      8. 8
        フロントエンドの定番ライブラリ「React 19」の新機能を紹介──React Server Componentsとその他の改善点
      9. 9
        「Tailwind CSS」の公式UIライブラリ「Tailwind UI」、サービス拡大を視野に「Tailwind Plus」へ名称変更
      10. 10
        Reactアプリ開発の環境構築ツール「Create React App」が非推奨に

      イベント

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

      Developers Summit(デベロッパーズサミット)

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

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

      メールバックナンバー

      アクセスランキング

      アクセスランキング

      1. 1
        世界6000万ユーザーの「TimeTree」、サービスの未来を見据えて挑んだデータベース移行の舞台裏
      2. 2
        Oracle、プログラミング言語/開発プラットフォーム「Java 24」をリリース
      3. 3
        データサイエンス基礎を高校数学から復習しよう! D3.jsでデータを表現する
      4. 4
        マイクロソフト、コンパイラとツールの移植でTypeScriptを10倍の処理速度へ
      5. 5
        開発者向け生成AIエージェントを比較!「Cursor」と「Amazon Q Developer」の特徴とは?NEW
      6. 6
        Flutter案件の平均年収は831万円、フルリモート案件が79%超で週3日以下の案件が47%超に達するNEW
      7. 7
        ITエンジニア注目トレンドを総まとめ!週間ニュースランキングTOP10【3/14~3/20】NEW
      8. 8
        Rust製の高速コードエディタ「Zed」、Gitを統合NEW
      9. 9
        paiza、2027年卒ITエンジニア志望学生のインターンシップ人気企業ランキングを発表
      10. 10
        MIXI、動画制作などのクリエイティブ技術を無料で学べる「ミクデザキャンプ」を公開
      1. 1
        世界6000万ユーザーの「TimeTree」、サービスの未来を見据えて挑んだデータベース移行の舞台裏
      2. 2
        「オブザーバー・パターン」 ~マンガでプログラミング用語解説
      3. 3
        マイクロソフト、VSCodeの新機能「Copilot Next Edit Suggestions」のプレビュー版公開
      4. 4
        3/5まで書籍全文が無料公開 『Pythonで動かして学ぶ!Kaggleデータ分析入門』
      5. 5
        データサイエンス基礎を高校数学から復習しよう! D3.jsでデータを表現する
      6. 6
        macOS上のアプリケーションからChatGPTが呼び出せるように。各種IDEやターミナル、メモなどが対応
      7. 7
        GitHub、あらゆるエディタやIDEとGitHub Copilotとの統合を可能にする「Copilot Language Server SDK」を一般公開
      8. 8
        フロントエンドの定番ライブラリ「React 19」の新機能を紹介──React Server Componentsとその他の改善点
      9. 9
        「Tailwind CSS」の公式UIライブラリ「Tailwind UI」、サービス拡大を視野に「Tailwind Plus」へ名称変更
      10. 10
        Reactアプリ開発の環境構築ツール「Create React App」が非推奨に

      Special Contents

      AD

        キャリアインタビュー

        AD

          アクセスランキング

          1. 1
            世界6000万ユーザーの「TimeTree」、サービスの未来を見据えて挑んだデータベース移行の舞台裏
          2. 2
            Oracle、プログラミング言語/開発プラットフォーム「Java 24」をリリース
          3. 3
            データサイエンス基礎を高校数学から復習しよう! D3.jsでデータを表現する
          4. 4
            マイクロソフト、コンパイラとツールの移植でTypeScriptを10倍の処理速度へ
          5. 5
            開発者向け生成AIエージェントを比較!「Cursor」と「Amazon Q Developer」の特徴とは?NEW
          6. 6
            Flutter案件の平均年収は831万円、フルリモート案件が79%超で週3日以下の案件が47%超に達するNEW
          7. 7
            ITエンジニア注目トレンドを総まとめ!週間ニュースランキングTOP10【3/14~3/20】NEW
          8. 8
            Rust製の高速コードエディタ「Zed」、Gitを統合NEW
          9. 9
            paiza、2027年卒ITエンジニア志望学生のインターンシップ人気企業ランキングを発表
          10. 10
            MIXI、動画制作などのクリエイティブ技術を無料で学べる「ミクデザキャンプ」を公開
          1. 1
            世界6000万ユーザーの「TimeTree」、サービスの未来を見据えて挑んだデータベース移行の舞台裏
          2. 2
            「オブザーバー・パターン」 ~マンガでプログラミング用語解説
          3. 3
            マイクロソフト、VSCodeの新機能「Copilot Next Edit Suggestions」のプレビュー版公開
          4. 4
            3/5まで書籍全文が無料公開 『Pythonで動かして学ぶ!Kaggleデータ分析入門』
          5. 5
            データサイエンス基礎を高校数学から復習しよう! D3.jsでデータを表現する
          6. 6
            macOS上のアプリケーションからChatGPTが呼び出せるように。各種IDEやターミナル、メモなどが対応
          7. 7
            GitHub、あらゆるエディタやIDEとGitHub Copilotとの統合を可能にする「Copilot Language Server SDK」を一般公開
          8. 8
            フロントエンドの定番ライブラリ「React 19」の新機能を紹介──React Server Componentsとその他の改善点
          9. 9
            「Tailwind CSS」の公式UIライブラリ「Tailwind UI」、サービス拡大を視野に「Tailwind Plus」へ名称変更
          10. 10
            Reactアプリ開発の環境構築ツール「Create React App」が非推奨に

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

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

          メールバックナンバー

          新着記事

          新着記事一覧を見る

          イベント


          [8]ページ先頭

          ©2009-2025 Movatter.jp