Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Scalaで新規サービス作ってる話
Search
Naoki Aoyama - @aoiroaoino
October 13, 2023
Technology
0
2.5k
Scalaで新規サービス作ってる話
Scalaで新規サービス作ってる話
2023/10/13
Scalaわいわい勉強会【東京】LT1
Naoki Aoyama - @aoiroaoino
October 13, 2023
Tweet
Share
More Decks by Naoki Aoyama - @aoiroaoino
See All by Naoki Aoyama - @aoiroaoino
EitherT_with_Future
aoiroaoino
3
2.7k
Refactoring Domain Objects with Scalafix
aoiroaoino
0
380
Re-architecting in GANMA!
aoiroaoino
2
5k
大変だよ、Tagless-final パターン
aoiroaoino
5
7.6k
Scala におけるモナドって何だろう?
aoiroaoino
6
6.5k
Scala における継続モナドの実装と活用
aoiroaoino
12
6.6k
Other Decks in Technology
See All in Technology
ランサムウェア対策としてのpnpm導入のススメ
ishikawa_satoru
0
340
Oracle Database@Google Cloud:サービス概要のご紹介
oracle4engineer
PRO
2
1k
ECSネイティブのBlue/Green デプロイを攻略しよう ~CodeDeployとの違いから、デプロイフロー実装まで~
ideaws
3
280
「データの価値を、みんなの武器に。」Data Enablementの価値とツラみ
ryoskdara_
1
120
通話データから価値を生む 生成AIデータ基盤の実践 / CO-LAB_Tech_Night
sansan_randd
0
110
私たち準委任PdEは2つのプロダクトに挑戦する ~ソフトウェア、開発支援という”二重”のプロダクトエンジニアリングの実践~ / 20260212 Naoki Takahashi
shift_evolve
PRO
3
350
AI駆動開発を事業のコアに置く
tasukuonizawa
1
1.6k
30分でわかる「ネットワーク図の描き方入門」/infraengbooks56
corestate55
1
340
ZOZO.swift #2
zozotech
PRO
0
280
プレビュー版のDevOpsエージェントを現段階で触ってみた
ad_motsu
1
170
バイブコーディングで作ったものを紹介
tatsuya1970
0
150
生成AIで始める業務改革 - 製造業編 in 福島 -
daikikanemitsu
2
590
Featured
See All Featured
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
460
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
0
210
How to Think Like a Performance Engineer
csswizardry
28
2.5k
So, you think you're a good person
axbom
PRO
2
1.9k
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
5
750
How Software Deployment tools have changed in the past 20 years
geshan
0
32k
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
63
53k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.1k
4 Signs Your Business is Dying
shpigford
187
22k
Evolving SEO for Evolving Search Engines
ryanjones
0
140
My Coaching Mixtape
mlcsv
0
57
Transcript
Scalaで新規サービス作ってる話 2023/10/13 Scalaわいわい勉強会 Naoki Aoyama - @aoiroaoino
❖ Naoki Aoyama ❖ Twitter/GitHub: @aoiroaoino ❖ 実践Scala入門 共著者 ❖
Working: $ whoami
None
None
関数型プログラミング 大好きな人類猫が 新規サービスをゼロから 開発している話
None
None
None
バックエンドアプリケーションに Scala を採用 ❖ 言語(ランタイム)/ビルドツール ➢ Scala 2.13.12 ➢ Java
(JDK) 17 ➢ sbt ❖ 主なライブラリ/フレームワーク ➢ Play Framework 2.9.0-RC3 ➢ Scalikejdbc 4.0.0 ➢ AWS SDK (Java) ➢ その他、連携サービスの SDK など ❖ ざっくり規模感 ➢ 数十の集約 ➢ 数十のユースケースクラス ➢ 数十のエンドポイント ➢ 数個のサービス(アプリケーションプロセス)
Tips: 関数型プログラミングや IO はどうしてる? ❖ FP: Cats 使ってます ➢ 目的の9割は
cats.data.Validated, NonEmptyList を使いたかったから ➢ ごく一部、cats.data.EitherT を採用 ▪ Future[Either[E, A]] を for 式でうまく扱うため ▪ 基本的には public メソッドのシグネチャに登場させないルール ➢ ごく一部、cats.data.ContT を採用 ▪ ただし、Controller での処理を合成/ハンドリングするくらい ❖ IO: scala.concurrent.Future 使ってます ➢ Scala 標準ライブラリにあること、 Play Framework との親和性を優先 ➢ 3rd party 製よりも学習コストの低さや中長期的なメンテナンス性も考慮
Tips: 他にも色々こだわってます ❖ フロントエンドアプリケーション ➢ React w/ TypeScript ➢ Next.js
❖ 設計、アーキテクチャ、プロジェクト構成 ➢ Domain Driven Design (DDD) ➢ Event-driven architecture ➢ Modular Monolith ❖ 継続的デリバリー、開発サイクル ➢ ほぼ毎日定期リリース ➢ トランクベース開発、 GitOps ➢ ほぼスクラム、ステークホルダー大集合のスプリントレビュー会
全然モナモナしていない?🤔
モナモナ => ワイワイ ※ワイワイするためにモナモナが必要の意味ではない
Scala の優位性を再考した ❖ 表現力の高さ ➢ プログラミング言語そのものが多機能 ➢ 強力な静的型システム ❖ Better
Java + α ➢ 強力な標準ライブラリ/コレクション操作 ➢ 様々な Java 資産との親和性 ❖ ほぼ公式で提供される Lint ツール群 ➢ Scalafix, Scalafmt
目指すはビジネスインパクト、速度、品質の全部取り ❖ 速く作りたい、気軽に変更したい、そして品質は妥協しない ➢ 認知負荷や学習コストを極力下げる為の技術選定 ➢ Scalafix, Scalafmt を用いてレビューコストの低減 ❖
学習コスト、オンボーディング工数の削減 ➢ DDD やアーキテクチャと関連づけられた命名規則 ➢ 一貫した一覧性の高いパッケージ構成など ➢ ただし、まだ体験した人はいない ...体験したい方います?
技術的チャレンジ ≠ 簡単な課題を難しく解く ※関数型プログラミングや過去の取り組みが簡単な課題を難しく解いていたという主張ではない
複雑な業務課題をできるだけ 簡潔に、素早く、継続的に 解決していきたい
その武器に Scala を選んだ \\\💪('ω'💪) ///
まとめ ❖ 新サービス「Scalebase ペイメント」を Scala で開発しています ❖ Better Java +
α で Scala の良さを再考し最高の開発したい ❖ 今後も技術トピック公開していくよ、お楽しみに(?) ❖ 興味ある方、お話ししませんか? 👉 お仕事でも Scala の話題でワイワイしようぜ!!