Scala界隈の近況

4,582 views

Published on

Published in: Software

Scala界隈の近況

  1. 1. 1 Scala界隈の近況 Naoki Takezoe BizReach, Inc.
  2. 2. Scalaとは? • 静的型付けのオブジェクト指向言語に関数型言語 の機能を取り入れたもの • Javaとの相互運用性が高く、既存のJavaライブラリ やフレームワークなどをそのまま利用できる • Javaの半分程度のコード量で同等の機能を実装す ることができる • 強力な型付けや関数型言語の特徴によりJavaより も安全性が高いコードを記述できる 2
  3. 3. Scalaとは? • 開発者 – Martin Odersky教授(小田好先生) • スイス連邦工科大学教授 • Javaのジェネリクスやjavacの開発に関わった人物 • 2011年にScala普及のためTypesafe社を設立 • Typesafe社 – Scalaおよび関連プロダクトの開発 • Play2、Akka、Slick、sbt、ScalaIDE for Eclipse等はOSSだが Typesafe社のメンバーが中心となって開発されている – 教育、サポート、コンサルティング • 上記のプロダクトを対象にサブスクリプションの販売を行っている 3
  4. 4. バージョン • Scala 2.10(様々な新機能の導入) – マクロ – Implicit Class – String Interpolation – 言語機能のモジュール化 – AkkaのActorが標準に • Scala 2.11(安定化) – コンパイラの性能強化 – コアライブラリのフットプリント削減(XMLとパーサコンビネ ータを分離) 4
  5. 5. 代表的なプロダクト 5 分類 名前 URL WebFW Play2 http://www.playframework.com/ Lift http://liftweb.net/ Scalatra http://www.scalatra.org/ Skinny Framework http://skinny-framework.org/ Scala.js http://www.scala-js.org/ 分散処理 Akka http://akka.io/ Apache Spark http://spark.apache.org/ O/Rマッパー Slick http://slick.typesafe.com/ ScalikeJDBC http://scalikejdbc.org/ ビルドツール sbt http://www.scala-sbt.org/ 開発環境 ScalaIDE for Eclipse http://scala-ide.org/ IntelliJ Scala Plugin http://www.jetbrains.com/idea/features/scala.html Typesafe Activator https://typesafe.com/activator
  6. 6. トレンド • Play2 – Nettyによる非同期I/O、ステートレスなアーキテクチャによるス ケーラビリティ • Akka – アクターモデルを使用した自律的な並列分散処理のための汎 用プラットフォーム • Apache Spark – オンメモリバッチ処理、ストリーミング処理など並列分散処理の ためのフレームワーク 6 並列、分散、非同期
  7. 7. Reactive • イベントに反応する: イベント駆動であることが次の3つの性質を生む • 負荷に反応する: 単一ユーザの性能より、スケーラビリティを重視する • 障害に反応する: すべてのレベルで復旧する能力を持つ、弾力のあるシ ステムを構築する • ユーザに反応する: 上の特性を合わせてインタラクティブなユーザエクス ペリエンスを提供する 7 The Reactive Manifesto http://www.reactivemanifesto.org/ Reactiveなアプリケーションとは?
  8. 8. サブスクリプション • Typsafe社が有償サポートを提供 8 サブスクリプションを購入しないと Slickで商用DBが使えない
  9. 9. Typesafe Activator • プロジェクトの雛形生成(コマンドラインでも利用可) • 簡単な開発・実行環境も備えているので学習用途に も利用可能 9
  10. 10. Scalaの問題点 • コンパイルが遅い – プロジェクト分割や実装ノウハウである程度対処可能 – インクリメンタルコンパイルの高速化 • バイナリ互換性 – マイナーバージョンアップではバイナリ互換性を保証 – メジャーバージョン間ではソースコード互換性を保証 10
  11. 11. 1年前 11 Scala is now growing up!!
  12. 12. 現在 12 Scala is already practical!!

×