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
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Naoki Aoyama - @aoiroaoino
October 13, 2023
Technology
2.6k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
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
410
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
なぜ Platform Engineering の土台に Kubernetes を選ぶのか
r4ynode
2
630
中期計画、2回作ってみた ~業務委託と正社員、両方の視点から~
demaecan
1
730
Socrates × Looker 〜セマンティックレイヤーで進化するデータ分析エージェント〜
hanon52_
3
2.3k
失敗を資産に変えるClaude Code
shinyasaita
0
630
AAIFに入ってみた ~内から見えるコミュニティ動向~
sato4
0
190
Bucharest Tech Week 2026 - Reinventing testing practices in the AI era
edeandrea
PRO
1
150
AIソロプレナー時代に2ヶ月で20人増員した事業創造会社の開発組織の話
miyatakoji
0
640
SONiCで構築・運用する生成AI向けパブリッククラウドネットワーク ~実装編~
sonic
0
170
2026TECHFRESH畢業分享會 - Lightning Talk - 打造精準高效的 MCP 設計模式與測試實務
line_developers_tw
PRO
0
960
AWSシリコン最前線 〜AI時代のチップ選択を読み解く〜
htokoyo
2
580
AIのReact習熟度を測る
uhyo
2
400
非エンジニアがClaudeと挑んだ「1ヶ月間プロダクト30本ノック」
askokc
0
460
Featured
See All Featured
From π to Pie charts
rasagy
0
210
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
480
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
2
1.5k
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
160
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
160
Building Adaptive Systems
keathley
44
3k
Optimizing for Happiness
mojombo
378
71k
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.2k
The Language of Interfaces
destraynor
162
27k
YesSQL, Process and Tooling at Scale
rocio
174
15k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
330
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 の話題でワイワイしようぜ!!