sierでscalaを使うために私がしたこと

21
SIerでScalaを使うために私がしたこと Naoki Takezoe @takezoen NTT-DATA INTELLILINK

Upload: takezoe

Post on 27-May-2015

3.586 views

Category:

Technology


4 download

TRANSCRIPT

Page 1: SIerでScalaを使うために私がしたこと

SIerでScalaを使うために私がしたこと

Naoki Takezoe@takezoenNTT-DATA INTELLILINK

Page 2: SIerでScalaを使うために私がしたこと

なぜScalaなのか?

Page 3: SIerでScalaを使うために私がしたこと

静的な型付けによるメリット

• 機械でチェックできることは機械に任せる

• 人間の能力は機械ではできないことに使うべき

Page 4: SIerでScalaを使うために私がしたこと

Java + アジャイルでの開発

• 極力タイプセーフに記述することで変更時の修正漏れを防ぐ

• 生産性の低さはEclipseやSeasar2のようなツール・フレームワークでカバーできる

Page 5: SIerでScalaを使うために私がしたこと

Javaの限界

• 生産性、品質の限界• これ以上ツールやフレームワークを工夫しても生産性が劇的に向上することはない

• ドメスティックなFWに対する不安• ただし、JavaEEを含め海外製のものは使い勝手が微妙

• 標準化されてても実際はメリットがあまりない

• 新しいものが出てこない• 技術的な成長という意味での将来性に対する不安

Page 6: SIerでScalaを使うために私がしたこと

関数型言語のメリット

• ステートレスで安全なプログラミングが可能

• Scalaは関数型言語のメリットを実用的なバランスでオブジェクト指向言語に取り込んでいる

Page 7: SIerでScalaを使うために私がしたこと

現在

• Scalaでお仕事ができるようになりました

Page 8: SIerでScalaを使うために私がしたこと

なにをしたのか?

Page 9: SIerでScalaを使うために私がしたこと

その1

• テスト用のアプリケーションや社内向けのツールなどにScalaを使い始める

• 半年くらいの実験期間

• LiftやScalatra、ScalaTest、Specs2、sbtなどを一通り試し、実戦でも使える感触を得た

Page 10: SIerでScalaを使うために私がしたこと

その2

• 「Scala逆引きレシピ」執筆

• 実際にプロジェクトでScalaを使用する際にメンバーに使ってもらうことを想定

• 執筆が自分たちのスキル向上にも役立った

• 書籍の執筆中に見つけたバグのフィードバック(ScalaMockやscala-ioなど)

Page 11: SIerでScalaを使うために私がしたこと

ここまでで大体1年くらい経っています

Page 12: SIerでScalaを使うために私がしたこと

その3

• 実プロジェクトへ投入

• Play2、ScalaQuery、Specs2を採用

• play2-war-pluginへのフィードバック(Servlet 2.4対応、各種バグ修正等)

• 不足している機能やツールをOSSで開発

Page 13: SIerでScalaを使うために私がしたこと

Scala採用のためには

• 業務APでは技術的な必然性はあまりない

• 生産性、品質なんでもいいので数字が必要

Page 14: SIerでScalaを使うために私がしたこと

はじめの一歩

• Javaでは工数的に厳しいプロジェクトに導入

• 実戦で使った数字が取れたことでアピールしやすくなった

Page 15: SIerでScalaを使うために私がしたこと

その4

• イベントのスポンサー、事例紹介、取材対応など外部へのアピール

• Scalatraのコミッタになりました

• Scalaを使用したOSSプロダクトの開発

Page 16: SIerでScalaを使うために私がしたこと

Scalaを使ってわかったこと

Page 17: SIerでScalaを使うために私がしたこと
Page 18: SIerでScalaを使うために私がしたこと

• val

• トレイト

• 名前付き引数、デフォルト引数

• タプル

• イミュータブルなコレクションライブラリ

• 遅延評価

• 関数、クロージャ

• ケースクラス

• パターンマッチ

• 暗黙的型変換(Implicit Class)

• 暗黙的パラメータ

• 型クラス

• 構造的部分型

• 自分型アノテーション

• String Interpolation

• マクロ

Page 19: SIerでScalaを使うために私がしたこと

リスクヘッジ

• Javaはようやく普及期に入り、これからも長い間使われていくだろう

• ScalaであればJavaに軸足を残しつつ、新しいトライができる

Page 20: SIerでScalaを使うために私がしたこと

Scalaできる人がいない?

Page 21: SIerでScalaを使うために私がしたこと

大丈夫、Scala逆引きレシピがあります

Scala逆引きレシピ

• Scalaの基本から各種フレームワークまで実践的な300のレシピを収録

• 特にこれからScalaを勉強してみようというJavaプログラマの方におすすめ