sierでscalaを使うために私がしたこと
TRANSCRIPT
SIerでScalaを使うために私がしたこと
Naoki Takezoe@takezoenNTT-DATA INTELLILINK
なぜScalaなのか?
静的な型付けによるメリット
• 機械でチェックできることは機械に任せる
• 人間の能力は機械ではできないことに使うべき
Java + アジャイルでの開発
• 極力タイプセーフに記述することで変更時の修正漏れを防ぐ
• 生産性の低さはEclipseやSeasar2のようなツール・フレームワークでカバーできる
Javaの限界
• 生産性、品質の限界• これ以上ツールやフレームワークを工夫しても生産性が劇的に向上することはない
• ドメスティックなFWに対する不安• ただし、JavaEEを含め海外製のものは使い勝手が微妙
• 標準化されてても実際はメリットがあまりない
• 新しいものが出てこない• 技術的な成長という意味での将来性に対する不安
関数型言語のメリット
• ステートレスで安全なプログラミングが可能
• Scalaは関数型言語のメリットを実用的なバランスでオブジェクト指向言語に取り込んでいる
現在
• Scalaでお仕事ができるようになりました
なにをしたのか?
その1
• テスト用のアプリケーションや社内向けのツールなどにScalaを使い始める
• 半年くらいの実験期間
• LiftやScalatra、ScalaTest、Specs2、sbtなどを一通り試し、実戦でも使える感触を得た
その2
• 「Scala逆引きレシピ」執筆
• 実際にプロジェクトでScalaを使用する際にメンバーに使ってもらうことを想定
• 執筆が自分たちのスキル向上にも役立った
• 書籍の執筆中に見つけたバグのフィードバック(ScalaMockやscala-ioなど)
ここまでで大体1年くらい経っています
その3
• 実プロジェクトへ投入
• Play2、ScalaQuery、Specs2を採用
• play2-war-pluginへのフィードバック(Servlet 2.4対応、各種バグ修正等)
• 不足している機能やツールをOSSで開発
Scala採用のためには
• 業務APでは技術的な必然性はあまりない
• 生産性、品質なんでもいいので数字が必要
はじめの一歩
• Javaでは工数的に厳しいプロジェクトに導入
• 実戦で使った数字が取れたことでアピールしやすくなった
その4
• イベントのスポンサー、事例紹介、取材対応など外部へのアピール
• Scalatraのコミッタになりました
• Scalaを使用したOSSプロダクトの開発
Scalaを使ってわかったこと
• val
• トレイト
• 名前付き引数、デフォルト引数
• タプル
• イミュータブルなコレクションライブラリ
• 遅延評価
• 関数、クロージャ
• ケースクラス
• パターンマッチ
• 暗黙的型変換(Implicit Class)
• 暗黙的パラメータ
• 型クラス
• 構造的部分型
• 自分型アノテーション
• String Interpolation
• マクロ
リスクヘッジ
• Javaはようやく普及期に入り、これからも長い間使われていくだろう
• ScalaであればJavaに軸足を残しつつ、新しいトライができる
Scalaできる人がいない?
大丈夫、Scala逆引きレシピがあります
Scala逆引きレシピ
• Scalaの基本から各種フレームワークまで実践的な300のレシピを収録
• 特にこれからScalaを勉強してみようというJavaプログラマの方におすすめ