Scala@SmartNews AdFrontend を Scala で書いた話

Keiji Muraishi
Keiji MuraishiSmartNews, Inc. - Software Engineer at SmartNews, Inc.
Scala@SmartNews
Ad Frontend を Scala で書いた話
@kjim
自己紹介
• 村石恵示
• スマートニュース (2014/09入社)
• SmartNews Ads Engineer
• 基本は Java な人
アドチームのミッション…
12月に最高の広告
プロダクトをリリースする
Ads as Content
Web Framework ?
• クラスのオートリロード(ホットリローディング)は必須。
• 静的型付けによるサポート欲しい。

動かす前にある程度動く担保を作りたい。DB拡張に追随する時にコンパイラにエラーでナビゲートして欲しい。
• 宣言的ルーティング定義。
• 宣言的フォームバリデーション定義。
• DBスキーマからDataAccess層を生成したい。
• パフォーマンスはそんなに追求しない。
• Scala アリでは…
Scala + Play2 + Slick
Scala@SmartNews AdFrontend を Scala で書いた話
Play2
宣言的なルーティング設定
Play2
宣言的なフォームバリデーション定義
Scala@SmartNews AdFrontend を Scala で書いた話
Slick
DataAccess層を自動生成
• スキーマのバージョン管理は flyway

Evolution は使ってない
• flyway で管理しているスキーマから Slick のテーブルクラスをリバースで
自動生成。生成するクラスはSourceCodeGeneratorをカスタマイズして
複数の .scala ファイルを生成するようにしている。
• ただし、自動生成したクラスは直接サービス層から使わずRepository層の
内側で利用
• 更新系は普通にSlickのメソッドを利用するが、参照系は普通にSQL書い
てる。
Scala@SmartNews AdFrontend を Scala で書いた話
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/
• オフィススペースを提供していますのでお声掛
けください。
ありがとうございました
1 of 19

Recommended

Scala@SmartNews_20150221 by
Scala@SmartNews_20150221Scala@SmartNews_20150221
Scala@SmartNews_20150221Shigekazu Takei
14.9K views29 slides
ビズリーチの新サービスをScalaで作ってみた 〜マイクロサービスの裏側 #jissenscala by
ビズリーチの新サービスをScalaで作ってみた 〜マイクロサービスの裏側 #jissenscalaビズリーチの新サービスをScalaで作ってみた 〜マイクロサービスの裏側 #jissenscala
ビズリーチの新サービスをScalaで作ってみた 〜マイクロサービスの裏側 #jissenscalatakezoe
26.6K views39 slides
Api gatewayの話 by
Api gatewayの話Api gatewayの話
Api gatewayの話Hiroshi Hayakawa
7.1K views22 slides
JAWS-UG CLI #37 AWS CodeCommit入門 by
JAWS-UG CLI #37 AWS CodeCommit入門 JAWS-UG CLI #37 AWS CodeCommit入門
JAWS-UG CLI #37 AWS CodeCommit入門 Nobuhiro Nakayama
825 views13 slides
20170311 jawsdays 新訳 とあるアーキテクトのクラウドデザインパターン目録 by
20170311 jawsdays 新訳 とあるアーキテクトのクラウドデザインパターン目録20170311 jawsdays 新訳 とあるアーキテクトのクラウドデザインパターン目録
20170311 jawsdays 新訳 とあるアーキテクトのクラウドデザインパターン目録Naomi Yamasaki
1.9K views67 slides
サーバーレスで ガチ本番運用までやってるお話し by
サーバーレスで ガチ本番運用までやってるお話しサーバーレスで ガチ本番運用までやってるお話し
サーバーレスで ガチ本番運用までやってるお話しAkira Nagata
5.1K views31 slides

More Related Content

What's hot

20170210 jawsug横浜(AWSタグ) by
20170210 jawsug横浜(AWSタグ)20170210 jawsug横浜(AWSタグ)
20170210 jawsug横浜(AWSタグ)Toshihiro Setojima
22.7K views21 slides
6リージョン同時75万接続のメッセージ配信基盤をCloudFormationとCapistranoで3日で構築した話 by
6リージョン同時75万接続のメッセージ配信基盤をCloudFormationとCapistranoで3日で構築した話6リージョン同時75万接続のメッセージ配信基盤をCloudFormationとCapistranoで3日で構築した話
6リージョン同時75万接続のメッセージ配信基盤をCloudFormationとCapistranoで3日で構築した話Ryuta Otaki
9.6K views25 slides
JAWS DAYS 2017 LT 古きを捨て新しきに近づける by
JAWS DAYS 2017 LT 古きを捨て新しきに近づけるJAWS DAYS 2017 LT 古きを捨て新しきに近づける
JAWS DAYS 2017 LT 古きを捨て新しきに近づけるTetsuya Mase
1.4K views15 slides
20181108 kashiwa chamberofcommerce by
20181108 kashiwa chamberofcommerce20181108 kashiwa chamberofcommerce
20181108 kashiwa chamberofcommerce桂一 中山
253 views44 slides
JavaからScalaへ by
JavaからScalaへJavaからScalaへ
JavaからScalaへtakezoe
8.7K views23 slides
jawsdays 2017 新訳-とある設計士の雲設計定石目録_3 by
jawsdays 2017 新訳-とある設計士の雲設計定石目録_3jawsdays 2017 新訳-とある設計士の雲設計定石目録_3
jawsdays 2017 新訳-とある設計士の雲設計定石目録_3a kyane
2.4K views23 slides

What's hot(19)

6リージョン同時75万接続のメッセージ配信基盤をCloudFormationとCapistranoで3日で構築した話 by Ryuta Otaki
6リージョン同時75万接続のメッセージ配信基盤をCloudFormationとCapistranoで3日で構築した話6リージョン同時75万接続のメッセージ配信基盤をCloudFormationとCapistranoで3日で構築した話
6リージョン同時75万接続のメッセージ配信基盤をCloudFormationとCapistranoで3日で構築した話
Ryuta Otaki9.6K views
JAWS DAYS 2017 LT 古きを捨て新しきに近づける by Tetsuya Mase
JAWS DAYS 2017 LT 古きを捨て新しきに近づけるJAWS DAYS 2017 LT 古きを捨て新しきに近づける
JAWS DAYS 2017 LT 古きを捨て新しきに近づける
Tetsuya Mase1.4K views
20181108 kashiwa chamberofcommerce by 桂一 中山
20181108 kashiwa chamberofcommerce20181108 kashiwa chamberofcommerce
20181108 kashiwa chamberofcommerce
桂一 中山253 views
JavaからScalaへ by takezoe
JavaからScalaへJavaからScalaへ
JavaからScalaへ
takezoe8.7K views
jawsdays 2017 新訳-とある設計士の雲設計定石目録_3 by a kyane
jawsdays 2017 新訳-とある設計士の雲設計定石目録_3jawsdays 2017 新訳-とある設計士の雲設計定石目録_3
jawsdays 2017 新訳-とある設計士の雲設計定石目録_3
a kyane2.4K views
クラウドネイティブ化する未来 by Keisuke Nishitani
クラウドネイティブ化する未来クラウドネイティブ化する未来
クラウドネイティブ化する未来
Keisuke Nishitani14.8K views
JAWS-UG アーキテクチャ専門支部(ハイブリッド分科会) #9 EC2 Run Commnadのいいところ by Nobuhiro Nakayama
JAWS-UG アーキテクチャ専門支部(ハイブリッド分科会) #9 EC2 Run CommnadのいいところJAWS-UG アーキテクチャ専門支部(ハイブリッド分科会) #9 EC2 Run Commnadのいいところ
JAWS-UG アーキテクチャ専門支部(ハイブリッド分科会) #9 EC2 Run Commnadのいいところ
Nobuhiro Nakayama654 views
はじめてのBluemixでシングルサインオン ~ 希望編! by Kazumi IWANAGA
はじめてのBluemixでシングルサインオン ~ 希望編!はじめてのBluemixでシングルサインオン ~ 希望編!
はじめてのBluemixでシングルサインオン ~ 希望編!
Kazumi IWANAGA2.1K views
Azure Functionsでサーバーレスアプリケーション構築 by ryosuke matsumura
Azure Functionsでサーバーレスアプリケーション構築Azure Functionsでサーバーレスアプリケーション構築
Azure Functionsでサーバーレスアプリケーション構築
ryosuke matsumura632 views
Serverless Architecture Overview #cdevc by Masahiro NAKAYAMA
Serverless Architecture Overview #cdevcServerless Architecture Overview #cdevc
Serverless Architecture Overview #cdevc
Masahiro NAKAYAMA9.1K views
Swaggerで始めるモデルファーストなAPI開発 by Takuro Sasaki
Swaggerで始めるモデルファーストなAPI開発Swaggerで始めるモデルファーストなAPI開発
Swaggerで始めるモデルファーストなAPI開発
Takuro Sasaki100.9K views
20170111above the cloud_vol2 by Naomi Yamasaki
20170111above the cloud_vol220170111above the cloud_vol2
20170111above the cloud_vol2
Naomi Yamasaki237 views
IoT(Bluetooth mesh) × サーバーレス by Masahiro NAKAYAMA
IoT(Bluetooth mesh) × サーバーレスIoT(Bluetooth mesh) × サーバーレス
IoT(Bluetooth mesh) × サーバーレス
Masahiro NAKAYAMA1.4K views
マイクロサービス運用の所感 #m3dev by Kazuhiro Sera
マイクロサービス運用の所感 #m3devマイクロサービス運用の所感 #m3dev
マイクロサービス運用の所感 #m3dev
Kazuhiro Sera33.3K views
AWSで始めるサーバレスな RESTful API システム by Masayuki Kato
AWSで始めるサーバレスな RESTful API システムAWSで始めるサーバレスな RESTful API システム
AWSで始めるサーバレスな RESTful API システム
Masayuki Kato16.1K views

Similar to Scala@SmartNews AdFrontend を Scala で書いた話

実践!AWSクラウドデザインパターン by
実践!AWSクラウドデザインパターン実践!AWSクラウドデザインパターン
実践!AWSクラウドデザインパターンHiroyasu Suzuki
15.8K views115 slides
Movable typeseminar 20120925 by
Movable typeseminar 20120925Movable typeseminar 20120925
Movable typeseminar 20120925Six Apart
1.4K views52 slides
JAWS-UGアーキテクチャ専門支部 ServerlessConfレポート by
JAWS-UGアーキテクチャ専門支部 ServerlessConfレポートJAWS-UGアーキテクチャ専門支部 ServerlessConfレポート
JAWS-UGアーキテクチャ専門支部 ServerlessConfレポート真吾 吉田
3.4K views42 slides
May the FaaS be with us!! by
May the FaaS be with us!!May the FaaS be with us!!
May the FaaS be with us!!真吾 吉田
2K views29 slides
Service Cloud Trailblazers #5 by
Service Cloud Trailblazers #5Service Cloud Trailblazers #5
Service Cloud Trailblazers #5sfdc_sctb
625 views59 slides
[VMware Partner Exchange Tokyo 14Apr2014] ネットアップセッション資料 by
[VMware Partner Exchange Tokyo 14Apr2014] ネットアップセッション資料[VMware Partner Exchange Tokyo 14Apr2014] ネットアップセッション資料
[VMware Partner Exchange Tokyo 14Apr2014] ネットアップセッション資料NetApp Japan
2.2K views33 slides

Similar to Scala@SmartNews AdFrontend を Scala で書いた話(20)

実践!AWSクラウドデザインパターン by Hiroyasu Suzuki
実践!AWSクラウドデザインパターン実践!AWSクラウドデザインパターン
実践!AWSクラウドデザインパターン
Hiroyasu Suzuki15.8K views
Movable typeseminar 20120925 by Six Apart
Movable typeseminar 20120925Movable typeseminar 20120925
Movable typeseminar 20120925
Six Apart1.4K views
JAWS-UGアーキテクチャ専門支部 ServerlessConfレポート by 真吾 吉田
JAWS-UGアーキテクチャ専門支部 ServerlessConfレポートJAWS-UGアーキテクチャ専門支部 ServerlessConfレポート
JAWS-UGアーキテクチャ専門支部 ServerlessConfレポート
真吾 吉田3.4K views
Service Cloud Trailblazers #5 by sfdc_sctb
Service Cloud Trailblazers #5Service Cloud Trailblazers #5
Service Cloud Trailblazers #5
sfdc_sctb625 views
[VMware Partner Exchange Tokyo 14Apr2014] ネットアップセッション資料 by NetApp Japan
[VMware Partner Exchange Tokyo 14Apr2014] ネットアップセッション資料[VMware Partner Exchange Tokyo 14Apr2014] ネットアップセッション資料
[VMware Partner Exchange Tokyo 14Apr2014] ネットアップセッション資料
NetApp Japan2.2K views
サーバーレスの今とこれから by 真吾 吉田
サーバーレスの今とこれからサーバーレスの今とこれから
サーバーレスの今とこれから
真吾 吉田35.2K views
サーバーレスの話 by 真吾 吉田
サーバーレスの話サーバーレスの話
サーバーレスの話
真吾 吉田3.5K views
Microsoft Ignite 2019 最新アップデート - Azure Big Data Services を俯瞰的に眺める by Daiyu Hatakeyama
Microsoft Ignite 2019 最新アップデート - Azure Big Data Services を俯瞰的に眺めるMicrosoft Ignite 2019 最新アップデート - Azure Big Data Services を俯瞰的に眺める
Microsoft Ignite 2019 最新アップデート - Azure Big Data Services を俯瞰的に眺める
Daiyu Hatakeyama565 views
【日本語版】Styler: Our Journey to GCP by MichaelFindlater
【日本語版】Styler: Our Journey to GCP【日本語版】Styler: Our Journey to GCP
【日本語版】Styler: Our Journey to GCP
MichaelFindlater77 views
Azure Antenna AI 概要 by Miho Yamamoto
Azure Antenna AI 概要Azure Antenna AI 概要
Azure Antenna AI 概要
Miho Yamamoto1.1K views
2019年9月18日開催AWS Japan × Atlassianセミナー_セッション2「AmazonカルチャーとDevOps」 by アトラシアン株式会社
2019年9月18日開催AWS Japan × Atlassianセミナー_セッション2「AmazonカルチャーとDevOps」2019年9月18日開催AWS Japan × Atlassianセミナー_セッション2「AmazonカルチャーとDevOps」
2019年9月18日開催AWS Japan × Atlassianセミナー_セッション2「AmazonカルチャーとDevOps」
20130226 Amazon Web Services 勉強会(新宿) by 真吾 吉田
20130226 Amazon Web Services 勉強会(新宿)20130226 Amazon Web Services 勉強会(新宿)
20130226 Amazon Web Services 勉強会(新宿)
真吾 吉田1.1K views
Realm platform2019 by 昌桓 李
Realm platform2019Realm platform2019
Realm platform2019
昌桓 李1.2K views
いるけどないからつくってみたよ高速モバイルプッシュ配信くん #cmdevio by fd0
いるけどないからつくってみたよ高速モバイルプッシュ配信くん #cmdevioいるけどないからつくってみたよ高速モバイルプッシュ配信くん #cmdevio
いるけどないからつくってみたよ高速モバイルプッシュ配信くん #cmdevio
fd0 4.2K views
Scala: Mobile Backend on AWS by cmaraiyusuke
Scala: Mobile Backend on AWSScala: Mobile Backend on AWS
Scala: Mobile Backend on AWS
cmaraiyusuke273 views
パララックスでレスポンシブでJ query mobileなサイトのつくりかた by Shumpei Shiraishi
パララックスでレスポンシブでJ query mobileなサイトのつくりかたパララックスでレスポンシブでJ query mobileなサイトのつくりかた
パララックスでレスポンシブでJ query mobileなサイトのつくりかた
Shumpei Shiraishi20K views
SHOWROOMとDeNAで取り組んだライブ配信基盤刷新・超低遅延ライブ配信の裏側【DeNA TechCon 2020 ライブ配信】 by DeNA
SHOWROOMとDeNAで取り組んだライブ配信基盤刷新・超低遅延ライブ配信の裏側【DeNA TechCon 2020 ライブ配信】SHOWROOMとDeNAで取り組んだライブ配信基盤刷新・超低遅延ライブ配信の裏側【DeNA TechCon 2020 ライブ配信】
SHOWROOMとDeNAで取り組んだライブ配信基盤刷新・超低遅延ライブ配信の裏側【DeNA TechCon 2020 ライブ配信】
DeNA30.3K views
今なぜサーバーレスなのか by 真吾 吉田
今なぜサーバーレスなのか今なぜサーバーレスなのか
今なぜサーバーレスなのか
真吾 吉田4.1K views

Recently uploaded

「概念モデリング自動化に向けた第一歩」 ~ ChatGPT・Open AI 活用による開発対象のモデル化 by
「概念モデリング自動化に向けた第一歩」 ~ ChatGPT・Open AI 活用による開発対象のモデル化「概念モデリング自動化に向けた第一歩」 ~ ChatGPT・Open AI 活用による開発対象のモデル化
「概念モデリング自動化に向けた第一歩」 ~ ChatGPT・Open AI 活用による開発対象のモデル化Knowledge & Experience
8 views34 slides
概念モデリングワークショップ 設計編 by
概念モデリングワークショップ 設計編概念モデリングワークショップ 設計編
概念モデリングワークショップ 設計編Knowledge & Experience
10 views37 slides
01Booster Studio ご紹介資料 by
01Booster Studio ご紹介資料01Booster Studio ご紹介資料
01Booster Studio ご紹介資料ssusere7a2172
220 views19 slides
JJUG CCC.pptx by
JJUG CCC.pptxJJUG CCC.pptx
JJUG CCC.pptxKanta Sasaki
6 views14 slides
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料) by
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)NTT DATA Technology & Innovation
185 views63 slides
概念モデリングワークショップ 基礎編 by
概念モデリングワークショップ 基礎編概念モデリングワークショップ 基礎編
概念モデリングワークショップ 基礎編Knowledge & Experience
19 views71 slides

Recently uploaded(8)

「概念モデリング自動化に向けた第一歩」 ~ ChatGPT・Open AI 活用による開発対象のモデル化 by Knowledge & Experience
「概念モデリング自動化に向けた第一歩」 ~ ChatGPT・Open AI 活用による開発対象のモデル化「概念モデリング自動化に向けた第一歩」 ~ ChatGPT・Open AI 活用による開発対象のモデル化
「概念モデリング自動化に向けた第一歩」 ~ ChatGPT・Open AI 活用による開発対象のモデル化
01Booster Studio ご紹介資料 by ssusere7a2172
01Booster Studio ご紹介資料01Booster Studio ご紹介資料
01Booster Studio ご紹介資料
ssusere7a2172220 views
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料) by NTT DATA Technology & Innovation
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料) by NTT DATA Technology & Innovation
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)
さくらのひやおろし2023 by 法林浩之
さくらのひやおろし2023さくらのひやおろし2023
さくらのひやおろし2023
法林浩之83 views

Scala@SmartNews AdFrontend を Scala で書いた話