Your SlideShare is downloading. ×
0
Scalaでのプログラム開発
Scalaでのプログラム開発
Scalaでのプログラム開発
Scalaでのプログラム開発
Scalaでのプログラム開発
Scalaでのプログラム開発
Scalaでのプログラム開発
Scalaでのプログラム開発
Scalaでのプログラム開発
Scalaでのプログラム開発
Scalaでのプログラム開発
Scalaでのプログラム開発
Scalaでのプログラム開発
Scalaでのプログラム開発
Scalaでのプログラム開発
Scalaでのプログラム開発
Scalaでのプログラム開発
Scalaでのプログラム開発
Scalaでのプログラム開発
Scalaでのプログラム開発
Scalaでのプログラム開発
Scalaでのプログラム開発
Scalaでのプログラム開発
Scalaでのプログラム開発
Scalaでのプログラム開発
Scalaでのプログラム開発
Scalaでのプログラム開発
Scalaでのプログラム開発
Scalaでのプログラム開発
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Scalaでのプログラム開発

3,277

Published on

エンジニアサポート新年会2012 CROSS 次世代言語CROSS『Scala、Haskell、PythonでのWeb開発の紹介』 …

エンジニアサポート新年会2012 CROSS 次世代言語CROSS『Scala、Haskell、PythonでのWeb開発の紹介』
でのScala発表スライドです。

Published in: Technology
0 Comments
6 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
3,277
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
9
Comments
0
Likes
6
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Scala でのプログラム開発日本 Scala ユーザーズグループ代表っぽい ( 仮 ) 水島 宏太
  • 2. 自己紹介● 水島 宏太 ( 株式会社ユビレジ所属 )● プログラミング言語好き  自作言語をたまに作って公開  http://github.com/kmizu/onion
  • 3. 注: Scala 言語自体の紹介は割愛
  • 4. 1.開発環境● 処理系● IDE● ビルドツール● ライブラリ● Web App フレームワーク
  • 5. 処理系● Scala 2.9.1: 最新安定版● バージョン  Scala 2.9.X: こちらが主流  Scala 2.8.X: 一部プロジェクトが利用 ☆ 今から始めるなら Scala 2.9.1
  • 6. IDE● 既存 IDE のプラグインとして提供  Eclipse (Scala IDE for Eclipse)  IntelliJ IDEA (Scala Plugin)  NetBeans (Scala Plugin) ☆ IntelliJ IDEA or Eclipse がオススメ
  • 7. ビルドツール - sbt● Simple Build Tool (or Scala Build Tool)● Scala DSL としてビルド設定を定義  No more XML● 既存の maven リポジトリを活用可能 ☆ 今からなら sbt ほぼ一択 ※ 0.11 系が主流 (0.7 系は一部で利用 )
  • 8. 例 (build.sbt)name := "example"version := "0.01"scalaVersion := "2.9.1"libraryDependencies += "org.scalatest"%% "scalatest" % "1.6.1" % "test"
  • 9. ライブラリ● Scala 標準ライブラリ● サードパーティの Scala ライブラリ  ScalaTest, Specs, ScalaCheck  Github にプロジェクトがある事が多い● 既存の Java ライブラリ ☆sbt で利用ライブラリへの依存性を記述
  • 10. Web App フレームワーク● Lift  フルスタック , View First● Play! (2.0 から Scala native サポート )  ホットデプロイ● Unfiltered  Scala の機能をフル活用● Scalatra  Ruby の Sinatra ライク ☆ Wicket+Scala, Lift, Unfiltered
  • 11. 2. 導入メリット● 簡潔なコード + 強い静的型付け  対 Java 比で 1/3 〜 1/4 のコード量  コンパイル時のエラーチェック● 既存の Java 資産をそのまま生かせる● 分散・並列処理のサポート  Akka (TypeSafe 社が公式に提供 ) ☆ 特に Java 開発者は検討の価値あり
  • 12. 3.導入リスク● Java Platform の知識がほぼ必須  メリットと表裏一体● ( 国内での ) 開発者がまだ少ない● 学習曲線  最初が急カーブになりがち ☆ 部分的な導入を検討しよう  単体テスト記述など
  • 13. 4.適用事例 ( 海外 )● Twitter  バックエンドを中心に Scala を活用● LinkedIn● Foursquare  Scala + Lift● VMWare● Amazon.com
  • 14. 4.適用事例 ( 国内 )● 株式会社パテントビューロ  Scala + Lift を主力言語として開発● 有限会社 IT プランニング  NGMS 等● エムスリー株式会社  Unfilterd による Web API サーバ等● 芸者東京エンターテインメント株式会社  スマートフォン向けソーシャルアプリ開発
  • 15. 5.コミュニティの動向
  • 16. 海外コミュニティ● インターネット上  公式 ML([scala-language][scala-user]) など  See http://www.scala-lang.org/node/1707● 世界各地にコミュニティが存在  Bay Area Scala Enthusiasts (BASE)  New York Scala Enthusiasts  たくさんあるので以下略
  • 17. 国内コミュニティの動向● Scala 会議 ( 第 1 回 , 第 2 回 )● 日本 Scala ユーザーズグループ (ScalaJP)  2 月 : 初心者向けハンズオン勉強会  http://groups.google.com/group/scala-jp● Scala 勉強会 in 渋谷● Akasaka.scala● 名古屋 Scala 勉強会
  • 18. 6. Hello, World! (in Scalatra)
  • 19. import org.scalatra._class HelloWorldFilter extends ScalatraFilter { get("/") { <html> <body> <h1>Hello, world!</h1> </body> </html> }}
  • 20. 7.コレクションライブラリと パターンマッチング
  • 21. コレクションライブラリcase class Person(name: String, age: Int)val persons = List(Person(name="KotaMizushima", age=28), …)val 20 歳未満の人の名前 =persons.filter(_.age < 20).map(_.name)println(20 歳未満の人の名前 .mkString(", "))
  • 22. パターンマッチング (in Unfiltered)● エコープログラム val echo = unfiltered.filter.Planify { case Path(Seg(pathElement :: Nil)) => ResponseString(pathElement) case _ => ResponseString(" 処理できません ") } unfiltered.jetty.Http.anylocal.filter(echo).run()
  • 23. 8 . Java to Scala
  • 24. 移行メリット● より簡潔なコード  Java の 1/3 程度● 強力な静的型チェック  Good-by NullPointerException● 内部 DSL を自作しやすい文法  e.g. sbt, Specs, Rogue● 並列・分散を意識したミドルウェア  e.g. Akka
  • 25. 移行リスク● 学習コスト  Java 文化とのギャップ● コンパイル時間の増大● ライブラリの後方互換性  後方互換性を壊す変更が入りやすい
  • 26. 移行すべき?● 開発チームによりけり  Ruby 等の言語経験があると良い● 部分的な ( 導入 / 移行 ) 実験推奨  sbt に慣れる  RESTful API サーバを作成してみる  単体テストを Scala で記述してみる

×