Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
乙女ゲーを支える技術Play2.0 + Scalaの開発事例紹介         daiksy               2012-11-10   DevLOVE関西 2012 Drive A-1
このセッションの目的
このセッションの目的最新のトレンドを見るとポストJavaの流れが見受けられる
このセッションの目的関数型言語 など
このセッションの目的事例紹介を通じて現場に新しい技術を採用する手助けに
このセッションの目的事例紹介を通じて現場に新しい技術を採用する手助けに※技術的に深い話はしません
このセッションの目的 技術的な補完はこちらで!
自己紹介       5
自己紹介@daiksy 粕谷 大輔   フリュー株式会社       プログラマ
自己紹介 乙女ゲー作ってます!
構成Amazon EC2       Amazon RDS  Play2.0                   MySQL   nginx                 Amazon S3Amazon EC2         backup ...
開発概要
開発概要期間:
開発概要期間: 2012年2月∼5月末             (4ヶ月)
開発概要期間: 2012年2月∼5月末             (4ヶ月)チーム構成:6名
開発概要期間: 2012年2月∼5月末             (4ヶ月)チーム構成:6名  Play2.0 + Scalaの 開発は会社として初めて
開発概要FW:Play2.0
開発概要FW:Play2.0開発言語:Scala
開発概要FW:Play2.0開発言語:ScalaORM:Squeryl
開発概要FW:Play2.0開発言語:ScalaORM:SquerylDB:MySQLバージョン管理は Git
Playframework 2.0                    15
Playframework 2.0 フルスタックな Web フレームワーク
Playframework 2.0 フルスタックな Web フレームワーク Railsライク
Playframework 2.0 フルスタックな Web フレームワーク Railsライク XML地獄にならない
Playframework 2.0 ちょっとコンパイルが遅い
Playframework 2.0 開発言語にScalaを使うなら これがオススメ
Playframework 2.0 サーバ処理を共通化し、 Viewのみの差し替えなど容易
Playframework 2.0 ユーザエージェントで View出力のみ切り替え
Playframework 2.0 ガラケー & スマフォ同時 リリースを短期間で実現
Playframework 2.0開発当初はPlay2.0 RC1
Playframework 2.0開発当初はPlay2.0 RC1途中で正式リリース
Playframework 2.0開発当初はPlay2.0 RC1開発途中で何度かVer Up
Playframework 2.0開発当初はPlay2.0 RC1開発途中で何度かVer Up _人人人人人人人人人人人人人人人_ > コンパイルエラーとの戦い! <  ̄^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y ̄
Playframework 2.0ガラケー対応のために文字コードなどで独自の拡張が必要だった
Playframework 2.0    docomo     Windows-31J      au       Windows-31J    SoftBank     UTF-8
Playframework 2.0    docomo     Windows-31J      au       Windows-31J    SoftBank     UTF-8絵文字対応とか...
Playframework 2.0PCのブラウザやスマートフォンのみをターゲットするなら問題ないはず
今回開発の注意点           20
今回開発の注意点メンバー全員 Scala 初めて
今回開発の注意点メンバー全員 Scala 初めてメンバー全員 Play 初めて
今回開発の注意点メンバー全員 Scala 初めてメンバー全員 Play 初めてメンバー全員 Git 初めて
今回開発の注意点メンバー全員 Scala 初めてメンバー全員 Play 初めてメンバー全員 Git 初めてメンバー全員 AWS 初めて
今回開発の注意点メンバー全員 Scala 初めてメンバー全員 Play 初めてメンバー全員 Git 初めてメンバー全員 AWS 初めてメンバー全員 nginx 初めて
今回開発の注意点メンバー全員 Scala 初めてメンバー全員 Play 初めてメンバー全員 Git 初めてメンバー全員 AWS 初めてメンバー全員 nginx 初めてぼくは入社2日目から参画
今回開発の注意点エクストリームすぎるだろ
Scalaはじめて始業前勉強会
Scalaはじめて始業前勉強会毎週:月、水、金 各30分
Scalaはじめて始業前勉強会毎週:月、水、金 各30分コップ本輪読会
Scalaはじめて始業前勉強会毎週:月、水、金 各30分コップ本輪読会リリース後も続いていたw
Scalaはじめて始業前勉強会当初は朝勉強したことをさっそく昼に実践する的なエクストリームっぷり
Scalaはじめて始業前勉強会学習したことをみんなで議論したり、直後に実践するので、吸収しやすい
ScalaJVMで動作         25
ScalaJVMで動作関数型プログラミング
ScalaJVMで動作関数型プログラミングコード量が少なくなる
ScalaJVMで動作関数型プログラミングコード量が少なくなるでも難しいんでしょ・・・?
Scalavar hoge : String = “”if (fuga >= 10) {   hoge = “Hello”} else {   hoge = “Good Bye”}
Scalavar hoge : String = “”if (fuga >= 10) {   hoge = “Hello”} else {   hoge = “Good Bye”}val hoge : String = if (fuga >= ...
Scalavar hoge : String = “”if (fuga >= 10) {   hoge = “Hello”} else {   hoge = “Good Bye”} こっちの方がScalaっぽいval hoge : String...
Scalavar hoge : String = “”if (fuga >= 10) {   hoge = “Hello” 最初はこっちのスタイルでも良い} else {   hoge = “Good Bye”}val hoge : Strin...
Scala 最初はJavaのように、 手続き型と オブジェクト指向の 書き方で良い
Scala 少しずつ慣れていこう
Scala 僕らはどうやったか?
Scala開発当初        30
Scala開発当初 ・担当者が実装
Scala開発当初 ・担当者が実装 ・全員でレビュー
Scala開発当初 ・担当者が実装 ・全員でレビュー ・レビューを反映
Scala開発当初 ・担当者が実装1機能の実装に時間がかかる ・全員でレビュー ・レビューを反映
Scala改善 ・実装は原則ペア
Scala改善 ・実装は原則ペア ・レビューと同じ効果
Scala改善 ・実装は原則ペア ・レビューと同じ効果 ・課金など重要機能は  全員レビュー
Scala改善 ・朝の勉強会も有効に作用
Scala 2ヶ月もすれば、 メンバー全員違和感なく Scalaは扱えるように
Scala結局、Scalaってどうよ
ScalaJavaプログラマが関数型プログラミングを身に付けるには最適
Scalaコード量も減る
Scalaval xs = List(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)for(x <- xs) {  if(x >= 5) {    println(x)  }}
Scalaval xs = List(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)for(x <- xs) {  if(x >= 5) {    println(x)  }}val xs = List(1, 2, 3, 4, 5...
Scala既存資産の活用
Scalaアバター機能
Scala        +
ScalaJavaで作られた画像処理ライブラリを使用
Scalaこれまで自社で蓄積されたライブラリがそのまま使える
チャレンジの所感
チャレンジの所感学習コストはかかった
チャレンジの所感学習コストはかかった 最初の1ヶ月は ひとつの機能をひたすら リファクタリング
チャレンジの所感保守はしやすい
チャレンジの所感保守はしやすい コード量が減り、 見通しが良い
チャレンジの所感保守はしやすい 追加機能の実装は 比較的容易
チャレンジの所感メンバーの士気は重要
チャレンジの所感メンバーの士気は重要 限られた期日で 技術を習得する必要がある
チャレンジの所感チャレンジは楽しい!
Thank You! ご清聴 ありがとうございました!
Upcoming SlideShare
Loading in …5
×

Dev love関西 forslideshare

5,827 views

Published on

DevLOVE関西2012 でのセッションで使ったスライドです。

Published in: Technology
  • Be the first to comment

Dev love関西 forslideshare

  1. 1. 乙女ゲーを支える技術Play2.0 + Scalaの開発事例紹介 daiksy 2012-11-10 DevLOVE関西 2012 Drive A-1
  2. 2. このセッションの目的
  3. 3. このセッションの目的最新のトレンドを見るとポストJavaの流れが見受けられる
  4. 4. このセッションの目的関数型言語 など
  5. 5. このセッションの目的事例紹介を通じて現場に新しい技術を採用する手助けに
  6. 6. このセッションの目的事例紹介を通じて現場に新しい技術を採用する手助けに※技術的に深い話はしません
  7. 7. このセッションの目的 技術的な補完はこちらで!
  8. 8. 自己紹介 5
  9. 9. 自己紹介@daiksy 粕谷 大輔 フリュー株式会社 プログラマ
  10. 10. 自己紹介 乙女ゲー作ってます!
  11. 11. 構成Amazon EC2 Amazon RDS Play2.0 MySQL nginx Amazon S3Amazon EC2 backup Play2.0 Fluentd nginx 10
  12. 12. 開発概要
  13. 13. 開発概要期間:
  14. 14. 開発概要期間: 2012年2月∼5月末 (4ヶ月)
  15. 15. 開発概要期間: 2012年2月∼5月末 (4ヶ月)チーム構成:6名
  16. 16. 開発概要期間: 2012年2月∼5月末 (4ヶ月)チーム構成:6名 Play2.0 + Scalaの 開発は会社として初めて
  17. 17. 開発概要FW:Play2.0
  18. 18. 開発概要FW:Play2.0開発言語:Scala
  19. 19. 開発概要FW:Play2.0開発言語:ScalaORM:Squeryl
  20. 20. 開発概要FW:Play2.0開発言語:ScalaORM:SquerylDB:MySQLバージョン管理は Git
  21. 21. Playframework 2.0 15
  22. 22. Playframework 2.0 フルスタックな Web フレームワーク
  23. 23. Playframework 2.0 フルスタックな Web フレームワーク Railsライク
  24. 24. Playframework 2.0 フルスタックな Web フレームワーク Railsライク XML地獄にならない
  25. 25. Playframework 2.0 ちょっとコンパイルが遅い
  26. 26. Playframework 2.0 開発言語にScalaを使うなら これがオススメ
  27. 27. Playframework 2.0 サーバ処理を共通化し、 Viewのみの差し替えなど容易
  28. 28. Playframework 2.0 ユーザエージェントで View出力のみ切り替え
  29. 29. Playframework 2.0 ガラケー & スマフォ同時 リリースを短期間で実現
  30. 30. Playframework 2.0開発当初はPlay2.0 RC1
  31. 31. Playframework 2.0開発当初はPlay2.0 RC1途中で正式リリース
  32. 32. Playframework 2.0開発当初はPlay2.0 RC1開発途中で何度かVer Up
  33. 33. Playframework 2.0開発当初はPlay2.0 RC1開発途中で何度かVer Up _人人人人人人人人人人人人人人人_ > コンパイルエラーとの戦い! <  ̄^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y ̄
  34. 34. Playframework 2.0ガラケー対応のために文字コードなどで独自の拡張が必要だった
  35. 35. Playframework 2.0 docomo Windows-31J au Windows-31J SoftBank UTF-8
  36. 36. Playframework 2.0 docomo Windows-31J au Windows-31J SoftBank UTF-8絵文字対応とか...
  37. 37. Playframework 2.0PCのブラウザやスマートフォンのみをターゲットするなら問題ないはず
  38. 38. 今回開発の注意点 20
  39. 39. 今回開発の注意点メンバー全員 Scala 初めて
  40. 40. 今回開発の注意点メンバー全員 Scala 初めてメンバー全員 Play 初めて
  41. 41. 今回開発の注意点メンバー全員 Scala 初めてメンバー全員 Play 初めてメンバー全員 Git 初めて
  42. 42. 今回開発の注意点メンバー全員 Scala 初めてメンバー全員 Play 初めてメンバー全員 Git 初めてメンバー全員 AWS 初めて
  43. 43. 今回開発の注意点メンバー全員 Scala 初めてメンバー全員 Play 初めてメンバー全員 Git 初めてメンバー全員 AWS 初めてメンバー全員 nginx 初めて
  44. 44. 今回開発の注意点メンバー全員 Scala 初めてメンバー全員 Play 初めてメンバー全員 Git 初めてメンバー全員 AWS 初めてメンバー全員 nginx 初めてぼくは入社2日目から参画
  45. 45. 今回開発の注意点エクストリームすぎるだろ
  46. 46. Scalaはじめて始業前勉強会
  47. 47. Scalaはじめて始業前勉強会毎週:月、水、金 各30分
  48. 48. Scalaはじめて始業前勉強会毎週:月、水、金 各30分コップ本輪読会
  49. 49. Scalaはじめて始業前勉強会毎週:月、水、金 各30分コップ本輪読会リリース後も続いていたw
  50. 50. Scalaはじめて始業前勉強会当初は朝勉強したことをさっそく昼に実践する的なエクストリームっぷり
  51. 51. Scalaはじめて始業前勉強会学習したことをみんなで議論したり、直後に実践するので、吸収しやすい
  52. 52. ScalaJVMで動作 25
  53. 53. ScalaJVMで動作関数型プログラミング
  54. 54. ScalaJVMで動作関数型プログラミングコード量が少なくなる
  55. 55. ScalaJVMで動作関数型プログラミングコード量が少なくなるでも難しいんでしょ・・・?
  56. 56. Scalavar hoge : String = “”if (fuga >= 10) { hoge = “Hello”} else { hoge = “Good Bye”}
  57. 57. Scalavar hoge : String = “”if (fuga >= 10) { hoge = “Hello”} else { hoge = “Good Bye”}val hoge : String = if (fuga >= 10) { “Hello”} else { “Good Bye”}
  58. 58. Scalavar hoge : String = “”if (fuga >= 10) { hoge = “Hello”} else { hoge = “Good Bye”} こっちの方がScalaっぽいval hoge : String = if (fuga >= 10) { “Hello”} else { “Good Bye”}
  59. 59. Scalavar hoge : String = “”if (fuga >= 10) { hoge = “Hello” 最初はこっちのスタイルでも良い} else { hoge = “Good Bye”}val hoge : String = if (fuga >= 10) { “Hello”} else { “Good Bye”}
  60. 60. Scala 最初はJavaのように、 手続き型と オブジェクト指向の 書き方で良い
  61. 61. Scala 少しずつ慣れていこう
  62. 62. Scala 僕らはどうやったか?
  63. 63. Scala開発当初 30
  64. 64. Scala開発当初 ・担当者が実装
  65. 65. Scala開発当初 ・担当者が実装 ・全員でレビュー
  66. 66. Scala開発当初 ・担当者が実装 ・全員でレビュー ・レビューを反映
  67. 67. Scala開発当初 ・担当者が実装1機能の実装に時間がかかる ・全員でレビュー ・レビューを反映
  68. 68. Scala改善 ・実装は原則ペア
  69. 69. Scala改善 ・実装は原則ペア ・レビューと同じ効果
  70. 70. Scala改善 ・実装は原則ペア ・レビューと同じ効果 ・課金など重要機能は 全員レビュー
  71. 71. Scala改善 ・朝の勉強会も有効に作用
  72. 72. Scala 2ヶ月もすれば、 メンバー全員違和感なく Scalaは扱えるように
  73. 73. Scala結局、Scalaってどうよ
  74. 74. ScalaJavaプログラマが関数型プログラミングを身に付けるには最適
  75. 75. Scalaコード量も減る
  76. 76. Scalaval xs = List(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)for(x <- xs) { if(x >= 5) { println(x) }}
  77. 77. Scalaval xs = List(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)for(x <- xs) { if(x >= 5) { println(x) }}val xs = List(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)xs.filter(_ >= 5) foreach println
  78. 78. Scala既存資産の活用
  79. 79. Scalaアバター機能
  80. 80. Scala +
  81. 81. ScalaJavaで作られた画像処理ライブラリを使用
  82. 82. Scalaこれまで自社で蓄積されたライブラリがそのまま使える
  83. 83. チャレンジの所感
  84. 84. チャレンジの所感学習コストはかかった
  85. 85. チャレンジの所感学習コストはかかった 最初の1ヶ月は ひとつの機能をひたすら リファクタリング
  86. 86. チャレンジの所感保守はしやすい
  87. 87. チャレンジの所感保守はしやすい コード量が減り、 見通しが良い
  88. 88. チャレンジの所感保守はしやすい 追加機能の実装は 比較的容易
  89. 89. チャレンジの所感メンバーの士気は重要
  90. 90. チャレンジの所感メンバーの士気は重要 限られた期日で 技術を習得する必要がある
  91. 91. チャレンジの所感チャレンジは楽しい!
  92. 92. Thank You! ご清聴 ありがとうございました!

×