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

4,498 views
4,269 views

Published on

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

No Downloads
Views
Total views
4,498
On SlideShare
0
From Embeds
0
Number of Embeds
2,000
Actions
Shares
0
Downloads
5
Comments
0
Likes
9
Embeds 0
No embeds

No notes for slide

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

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

×