引き続きデブサミ2014。 ドワンゴ吉村総一郎氏によるセッション「Play2/Scalaでドメイン駆動設計を利用した大規模Webアプリケーションのスクラム開発の勘所」を聞きました。 いろんなところで良く聞くPHPレガシーコードにどう立ち向かったのか聞いてみたかったです。 案の定というか、想像以上のPHPレガシーコードっぷりにちょっと感動すらしましたがw
profile
ニコニコ生放送を書き直す理由
- コードの技術的負債がやばい
- PHPで書かれている: 300万行!
- facebookで1000万行と言われているそう
- 1万行のクラスや4000行のメソッド
- 循環的複雑度600超のメソッドががが
- あまりに複雑過ぎて龍の巣と言われている(笑)
- まさに壊れかけのジェンガのよう
- 企画やスケジュールを優先するあまり品質を疎かにする開発体制
どうやって?
- スモールスタート/スモールリリース
- 2週間に1度、ショーケースを実施
- 年末特番もクリアして今のところ大丈夫
裏話
- PHPは素晴らしい: 全てのコレクションをarrayで扱える
- Scalaはたくさんの型があるのでPHPerには辛く初学コストが高い
- 並行プログラミングの知識も必要
- Actorとか
- インフラ/アプリの組織的な垣根がボトルネックになったので席を近くするなどして改善
- インフラはクラウドではなくオンプレミスで
- DBはMySQL/Redis
- gatlingが素晴らしいストレスツール
DDD (Domain Driven Design: ドメイン駆動設計)
- Play2/Scalaでの開発と相性が良い(スライドP.42)
- DDD解説のYouTube動画(42分)が素晴らしい
- DevLove Building Blocks 都元ダイスケ
- 社内勉強会で何度も視聴した
- ドメイン層の保守性向上に貢献する
環境
- デプロイにはCapistrano使用: Minaにしようとしたが断念
- IDEはIntelliJ IDEA Ultimateに統一
- CIはJenkins
- 現在scalaのコードは5万行
- 重複コード0
- 行ベースのカバレッジ52%
- Play2/Scalaによる開発には難点もある(スライドP.61)
アジャイル/スクラム開発
- GreenHopperなどのツール充実
- これは旧称で現在はJIRA Agileという名称になっているようですね。
- ドラッガーの書籍はアジャイルと相性が良いのでスクラムマスターの教育に入れている
- ユーザーの要求理解に時間をかける
- スクラムマスターが常にプレイングマネージャーであれるようにする
- スクラムマスターが技術的な観点で理解していないと課題やtodoをブレイクダウンできない
関連書籍
話を聞いていてちょっと感じたのは、内容が盛り沢山過ぎたかなと思いました。 それなりに早口で発表されていたのでちゃんとメモが取れなかったのが悔やまれます。。 Play2/Scalaについては実際に触ったことがないので聞いていて非常に勉強になりました。 またDDDやスクラムに関連付けて発表をされており、説得力が増していたような気がします。 この辺りは発表者の方のプレゼン技術と技術的な習熟度の高さを感じさせる上手さがあったかと。
あと最後に笑い取ってましたがドワンゴではC++に関わらずエンジニア募集してるそうですw