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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Naoki Aoyama - @aoiroaoino
October 13, 2023
Technology
2.6k
0
Share
Scalaで新規サービス作ってる話
Scalaで新規サービス作ってる話
2023/10/13
Scalaわいわい勉強会【東京】LT1
Naoki Aoyama - @aoiroaoino
October 13, 2023
More Decks by Naoki Aoyama - @aoiroaoino
See All by Naoki Aoyama - @aoiroaoino
EitherT_with_Future
aoiroaoino
3
2.8k
Refactoring Domain Objects with Scalafix
aoiroaoino
0
400
Re-architecting in GANMA!
aoiroaoino
2
5.1k
大変だよ、Tagless-final パターン
aoiroaoino
5
7.7k
Scala におけるモナドって何だろう?
aoiroaoino
6
6.6k
Scala における継続モナドの実装と活用
aoiroaoino
12
6.8k
Other Decks in Technology
See All in Technology
【5分でわかる】セーフィー エンジニア向け会社紹介
safie_recruit
0
50k
ポスター発表&デモと総括 / Poster Presentations & Demonstrations and Summary
ks91
PRO
0
190
Mastering Ruby Box
tagomoris
3
140
「速く作る」から「正しく作る」へ ─ 生成AI時代の開発フロー改革の ロードマップと実行 ─
starfish719
0
5.5k
Spring AI × MCP 入門〜AIエージェントへのツール公開、境界設計から始める最小構成 〜
yuyamiyamoto
0
210
AI Adaptable なテストを整える工夫 / Ways to Make Your Tests AI-Adaptable
bitkey
PRO
2
200
マーケットプレイス版Oracle WebCenter Content For OCI
oracle4engineer
PRO
5
1.8k
脅威をエンジニアリングの糧にして:恐怖を乗り越えた先にあったもの / Turn threats into fuel for engineering: what lay beyond overcoming fear
nrslib
1
380
OpenID Connectによるサービス間連携
takesection
0
150
【Gen-AX】20260530開催_JJUG CCC 2026 Spring
genax
0
390
トークン数だけでは測れない — Claude Code 組織展開の効果検証から学んだこと
makikub
0
120
最低限これだけ押さえれ大丈夫_Claude Enterprise/Team企業展開ガバナンス入門
tkikuchi
1
710
Featured
See All Featured
The Limits of Empathy - UXLibs8
cassininazir
1
340
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
KATA
mclloyd
PRO
35
15k
Context Engineering - Making Every Token Count
addyosmani
9
930
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
150
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
4 Signs Your Business is Dying
shpigford
187
22k
My Coaching Mixtape
mlcsv
0
140
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
130
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3.4k
Art, The Web, and Tiny UX
lynnandtonic
304
22k
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 の話題でワイワイしようぜ!!