1年くらいscalaプロジェクトに関わった結果 #ichigayageek
TRANSCRIPT
1 年くらいScala プロジェクトに関わった結果
株式会社 CyberZ重村道人2017/03/17
shigemk2でなんかいろいろやってます株式会社 CyberZ重村道人
2017/03/17
1. 大卒ニートがプログラマーを志す2. オンライン英会話サービス3. ソシャゲ4. アフィリエイトサービス5. CyberZ
経歴
お題 : Scala プロジェクトを振り返る
• 広告配信システム• アドネットワーク一括管理システム
やったプロジェクト
やってきたプロジェクト広告配信システム アドネットワーク一括
管理システム内容 DSP 各種広告配信システム
一括管理フェーズ 新規事業 運用フェーズ
Scala のアーキテクチャ Spray Play Framework
人数 10 人 3 人
1. 新規事業 開発→リリース (4 ヶ月 )2. リファクタリング (3 ヶ月 )3. 新規事業 開発 (2 ヶ月 )4. 新規事業 運用 (6 ヶ月 )
フェーズ
1. 新規事業開発→リリース (4 ヶ月 )2. リファクタリング (3 ヶ月 )3. 新規事業開発 (2 ヶ月 )4. 運用 (6 ヶ月 )
フェーズ : 新規事業時代
新規事業時代を振り返ってみる
一番重要だったこと
スピード > > > > > 品質
品質を振り返る
自前実装 1: キャッシュ
自前実装 1: キャッシュ
ScalaCache とか使えばよかったんじゃないかなー
自前実装 2: 設定の読み込み
自前実装 2: 設定の読み込み
getConfig とか実装する必要なさそう
お疲れ様です
お疲れ様です
scalaz とか…
車輪の再発明
をしていることが分からないOR放置
• 各人の Scala 力が低い• ちゃんとレビューが出来る人の不在• ライブラリとかミドルウェアを知らない• 時間がなさすぎることに対する焦り• 違和感の放置
なんでそうなる?
• 実装力が低すぎる• 使えるライブラリを知らなさすぎる• アーキレベルからのレビューの必要性
振り返り
• 実装力が低すぎる• とにかく書く
• 使えるライブラリを知らなさすぎる• 別のプロジェクトのアーキを参考にしてみる
• アーキレベルからのレビューの必要性
振り返り ( 対策 )
1. 新規事業開発→リリース (4 ヶ月 )2. リファクタリング (3 ヶ月 )3. 新規事業開発 (2 ヶ月 )4. 運用 (6 ヶ月 )
フェーズ : リファクタリング
リファクタリング時代 (3 ヶ月 ) を振り返ってみる
• 機能追加 ( 設計、実装、テストまで )• 使わない機能をオミットする• クリーンアーキテクチャでリファクタ
• clean-adapter• clean-domain• clean-other• clean-usecase
この時期にやったこと
• コードを読んでも何をやっているのかイマイチ良くワカラナイ…
• すぐにキャッチアップしたい…
リファクタリング
build.sbt に記載されてる全てのライブラリでサンプルコードを組んでみよう!
リファクタリング
全部で 60 くらいあった
全てのライブラリでサンプルを組んだ
Java ライブラリも使える
開発の幅が増えた
1. Scala でも Java のライブラリが使えるよ
2. いきなり実装する前に 検討しようライブラリ / ミドル
3. 難易度や工数の共有は大切です
まとめ