scala@smartnews adfrontend を scala で書いた話
TRANSCRIPT
Scala@SmartNewsAd Frontend を Scala で書いた話
@kjim
自己紹介• 村石恵示
• スマートニュース (2014/09入社)
• SmartNews Ads Engineer
• 基本は Java な人
アドチームのミッション…
12月に最高の広告 プロダクトをリリースする
Ads as Content
Web Framework ?• クラスのオートリロード(ホットリローディング)は必須。
• 静的型付けによるサポート欲しい。動かす前にある程度動く担保を作りたい。DB拡張に追随する時にコンパイラにエラーでナビゲートして欲しい。
• 宣言的ルーティング定義。
• 宣言的フォームバリデーション定義。
• DBスキーマからDataAccess層を生成したい。
• パフォーマンスはそんなに追求しない。
• Scala アリでは…
Scala + Play2 + Slick
Play2 宣言的なルーティング設定
Play2 宣言的なフォームバリデーション定義
Slick DataAccess層を自動生成• スキーマのバージョン管理は flyway
Evolution は使ってない
• flyway で管理しているスキーマから Slick のテーブルクラスをリバースで自動生成。生成するクラスはSourceCodeGeneratorをカスタマイズして複数の .scala ファイルを生成するようにしている。
• ただし、自動生成したクラスは直接サービス層から使わずRepository層の内側で利用
• 更新系は普通にSlickのメソッドを利用するが、参照系は普通にSQL書いてる。
Scala On the fly なコードを瞬時に書ける• Option
Some(true), Some(false), Some(null), Noneメソッドの仕様を明示できるNullPointerException回避
• case classパターンマッチ便利メソッド、永続化など
• Collection, Future, …
• 業務系アプリを作るのにも最適な言語
ただし、 Scala最大のツラミは コンパイル速度
まとめ
まとめ• Scala + Play2 + Slick は開発のリズムを作りやすい
• 型の安心感
• 宣言的プログラミング
• 言語標準の豊かなAPI
• Scala業務系アプリを作るのにも最適な言語
• Scalaはマジでコンパイルが遅い
SmartNews 世界中の良質な情報を必要な人に送り届ける
• 一緒にスマートニュースを作ってくれる仲間を募集しています。http://about.smartnews.com/ja/careers/
• オフィススペースを提供していますのでお声掛けください。
ありがとうございました