scala@smartnews adfrontend を scala で書いた話

19
Scala@SmartNews Ad Frontend Scala で書いた話 @kjim

Upload: keiji-muraishi

Post on 15-Jul-2015

4.253 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: Scala@SmartNews AdFrontend を Scala で書いた話

Scala@SmartNewsAd Frontend を Scala で書いた話

@kjim

Page 2: Scala@SmartNews AdFrontend を Scala で書いた話

自己紹介• 村石恵示

• スマートニュース (2014/09入社)

• SmartNews Ads Engineer

• 基本は Java な人

Page 3: Scala@SmartNews AdFrontend を Scala で書いた話

アドチームのミッション…

Page 4: Scala@SmartNews AdFrontend を Scala で書いた話

12月に最高の広告 プロダクトをリリースする

Page 5: Scala@SmartNews AdFrontend を Scala で書いた話

Ads as Content

Page 6: Scala@SmartNews AdFrontend を Scala で書いた話

Web Framework ?• クラスのオートリロード(ホットリローディング)は必須。

• 静的型付けによるサポート欲しい。動かす前にある程度動く担保を作りたい。DB拡張に追随する時にコンパイラにエラーでナビゲートして欲しい。

• 宣言的ルーティング定義。

• 宣言的フォームバリデーション定義。

• DBスキーマからDataAccess層を生成したい。

• パフォーマンスはそんなに追求しない。

• Scala アリでは…

Page 7: Scala@SmartNews AdFrontend を Scala で書いた話

Scala + Play2 + Slick

Page 8: Scala@SmartNews AdFrontend を Scala で書いた話
Page 9: Scala@SmartNews AdFrontend を Scala で書いた話

Play2 宣言的なルーティング設定

Page 10: Scala@SmartNews AdFrontend を Scala で書いた話

Play2 宣言的なフォームバリデーション定義

Page 11: Scala@SmartNews AdFrontend を Scala で書いた話
Page 12: Scala@SmartNews AdFrontend を Scala で書いた話

Slick DataAccess層を自動生成• スキーマのバージョン管理は flyway

Evolution は使ってない

• flyway で管理しているスキーマから Slick のテーブルクラスをリバースで自動生成。生成するクラスはSourceCodeGeneratorをカスタマイズして複数の .scala ファイルを生成するようにしている。

• ただし、自動生成したクラスは直接サービス層から使わずRepository層の内側で利用

• 更新系は普通にSlickのメソッドを利用するが、参照系は普通にSQL書いてる。

Page 13: Scala@SmartNews AdFrontend を Scala で書いた話
Page 14: Scala@SmartNews AdFrontend を Scala で書いた話

Scala On the fly なコードを瞬時に書ける• Option

Some(true), Some(false), Some(null), Noneメソッドの仕様を明示できるNullPointerException回避

• case classパターンマッチ便利メソッド、永続化など

• Collection, Future, …

• 業務系アプリを作るのにも最適な言語

Page 15: Scala@SmartNews AdFrontend を Scala で書いた話

ただし、 Scala最大のツラミは コンパイル速度

Page 16: Scala@SmartNews AdFrontend を Scala で書いた話

まとめ

Page 17: Scala@SmartNews AdFrontend を Scala で書いた話

まとめ• Scala + Play2 + Slick は開発のリズムを作りやすい

• 型の安心感

• 宣言的プログラミング

• 言語標準の豊かなAPI

• Scala業務系アプリを作るのにも最適な言語

• Scalaはマジでコンパイルが遅い

Page 18: Scala@SmartNews AdFrontend を Scala で書いた話

SmartNews 世界中の良質な情報を必要な人に送り届ける

• 一緒にスマートニュースを作ってくれる仲間を募集しています。http://about.smartnews.com/ja/careers/

• オフィススペースを提供していますのでお声掛けください。

Page 19: Scala@SmartNews AdFrontend を Scala で書いた話

ありがとうございました