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
Recapping Chatwork Scala Journey - ScalaMatsuri...
Search
yoshiyoshifujii
April 15, 2023
Programming
0
2.9k
Recapping Chatwork Scala Journey - ScalaMatsuri2023
ScalaMatsuri 2023
https://scalamatsuri.org/ja/
yoshiyoshifujii
April 15, 2023
Tweet
Share
More Decks by yoshiyoshifujii
See All by yoshiyoshifujii
技術的負債に立ち向かう、 ひとりから始めるチームづくり / From One to Team: Building Momentum Against Technical Debt
yoshiyoshifujii
1
250
DMMを支える決済基盤の技術的負債にどう立ち向かうか / Addressing Technical Debt in Payment Infrastructure
yoshiyoshifujii
5
1.1k
技術的負債と戦略的に戦わざるを得ない場合のオブザーバビリティ活用術 / Leveraging Observability When Strategically Dealing with Technical Debt
yoshiyoshifujii
1
290
プロダクトオーナーの視座から見た信頼性とオブザーバビリティ / Reliability and Observability from the Perspective of a Product Owner
yoshiyoshifujii
2
1.8k
プロダクトオーナーがFour Keys + 信頼性に思うところ / Product Owners Think of Four Keys + Reliability
yoshiyoshifujii
0
630
ここ数ヶ月でAkkaを勉強した方法について紹介 / I have studied Akka in the past few months
yoshiyoshifujii
1
320
コードをどまんなかに据えたモデリング-Scala版 / Modeling with code in the middle-Scala version
yoshiyoshifujii
0
150
Chatworkのドメインをモデリングした / Modeling Chatwork domain
yoshiyoshifujii
0
940
サマーインターンシップ2019で学生とDDDなScala開発に取り組んだ / Working on DDD and Scala development with students at Summer Internship 2019
yoshiyoshifujii
2
4.3k
Other Decks in Programming
See All in Programming
著者と進める!『AIと個人開発したくなったらまずCursorで要件定義だ!』
yasunacoffee
0
160
AI Agent Tool のためのバックエンドアーキテクチャを考える #encraft
izumin5210
5
1.3k
脳の「省エネモード」をデバッグする ~System 1(直感)と System 2(論理)の切り替え~
panda728
PRO
0
120
認証・認可の基本を学ぼう後編
kouyuume
0
250
Pythonではじめるオープンデータ分析〜書籍の紹介と書籍で紹介しきれなかった事例の紹介〜
welliving
3
630
gunshi
kazupon
1
120
AtCoder Conference 2025
shindannin
0
720
Kotlin Multiplatform Meetup - Compose Multiplatform 외부 의존성 아키텍처 설계부터 운영까지
wisemuji
0
130
実は歴史的なアップデートだと思う AWS Interconnect - multicloud
maroon1st
0
270
AtCoder Conference 2025「LLM時代のAHC」
imjk
2
600
HTTPプロトコル正しく理解していますか? 〜かわいい猫と共に学ぼう。ฅ^•ω•^ฅ ニャ〜
hekuchan
2
500
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
420
Featured
See All Featured
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
38
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
280
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
286
14k
Building Applications with DynamoDB
mza
96
6.9k
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
0
170
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
90
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.7k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
122
21k
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
61
50k
HDC tutorial
michielstock
1
280
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
73
Believing is Seeing
oripsolob
0
16
Transcript
Chatwork の Scala 近況 ScalaMatsuri 2023 2023年04月15日 Chatwork株式会社
会社概要 2 会社名 Chatwork株式会社 代表取締役CEO 山本 正喜 従業員数 312名(2022年12月末日時点) 所在地
東京、大阪 設立 2004年11月11日
3 一部の先進的な人だけではなく、 世界中で働くあらゆる人が、自分自身の働き方を 常に「一歩先」へと進めていける プラットフォームを提供する すべての人に、 一歩先の働き方を 働くをもっと楽しく、 創造的に 人生の大半を過ごすことになる「働く」という
時間において、ただ生活の糧を得るためだけではなく、 1人でも多くの人がより楽しく、自由な創造性を 存分に発揮できる社会を実現する Vision Mission ミッション・ビジョン
4 コミュニケーションが活性化すると会話がはずむように、 ビジネスの現場を活性化させていくことで、 仕事をもっとワクワク、 心がはずむものに変えていきたい。 ユーザーの働き方を誰よりも深く理解し、 いつでも、どんな場所でも、 やりたいことに集中できる働き方の提供を通して、 ビジネスを活性化させる存在へ。 https://youtu.be/3NHp8caltK0
1人ひとりの成功をテクノロジーの力で導き、ビジネスを活性化させる存在になり たいという想いをブランドムービーで表現しています。ぜひ、ご覧ください。 ブランドムービー「かわる、はじまる Chatwork」 「Chatwork」が実現したい世界
INDEX 目次 Scala(Matsuri) と Chatwork (Chatworkでの) Scala 近況 1 2
5
Scala(Matsuri) と Chatwork 1 CHAPTER 6
2014年 開発合宿 7 - 当時、Chatwork は2011年3月の公開以来、順調にユーザー 数を伸ばし2014年4月時点で世界170カ国42,000社の企業 に導入されるまでに成長していた。 - そんな中、バックエンドで動いているプログラムが今後の運
用において最適ではないのではという懸念 - 合宿の結果、 Scala を採用することに決定 - 静的言語としての保守性とパフォーマンスの高さ (IDEも 充実) - 動的言語からスイッチして成功した実績があること (Twitter、dwangoなど) - AWSはJava SDKが最も充実していた(他言語のSDKが当 時それほどリッチではなかった) - Javaのスキルセットを持つメンバーが何人かいた - PHPエンジニアでも短時間(開発合宿中)でそれなりに 書けるようになった https://c-note.chatwork.com/post/82673710090/dev-camp
2014 ScalaMatsuri 8 - Silver Sponsor - 結構、ノリノリで即決だったみたい - Scala初学者のみなさんが、どんどん吸収していってる様子が当時のチャットに残っていました
2016 ScalaMatsuri 9 - 将軍スポンサー - 現在、Chatwork社に在籍中の登壇者 - @j5ik2o sbt-awsプラグインを使って簡単デプロイ
- @tototoshi Playソースコード完全マスターへの道 - @yoshiyoshifujii Scalaでドメイン駆動設計に真正面から取り組んだ話 - 忍者スポンサー - @daiksy - @hayasshi_
2017 ScalaMatsuri 10 - スポンサーは…おやすみ - 現在、Chatwork社に在籍中の登壇者 - @j5ik2o ChatWorkのScala採用プロダクト
“Falcon” リリースまでの失敗と成功の歴史 - @yoshiyoshifujii Serverless ArchitectureをScalaで構築するぞ - 忍者スポンサー - @daiksy
2018 ScalaMatsuri 11 - 大名スポンサー - 現在、Chatwork社に在籍中の登壇者 - @j5ik2o リアクティブDDD実践入門
- @daiksy Scala製システムを3年間運用することで起きた様々なことへの対処 - @crossroad0201 実践ScalaでDDD(改訂版)
2019 ScalaMatsuri 12 - 大名スポンサー - 現在、Chatwork社に在籍中の登壇者 - @j5ik2o AWS
EKSとAkkaを使ってEvent Sourcingを作るにはどうしたらよいか - @yoshiyoshifujii 実践 Clean Architecture - @s10myk4 悩める開発者に贈る ~サービスの継続的な成長を支える分析設計手法
2020 ScalaMatsuri 13 - 大名スポンサー - 現在、Chatwork社に在籍中の登壇者 - @j5ik2o Scalaで解説する、ビジネスパターンによるモデル駆動設計
2022 ScalaMatsuri 14 - 将軍スポンサー - 現在、Chatwork社に在籍中の登壇者 - @tototoshi Cats
Effect 3とScala 3による純粋関数型プログラミング - @crossroad0201 Akka Persistence Typedにおけるドメインオブジェクトの実装パターン
ScalaMatsuri とのながーーーーいお付き合い 15 - 2014年 から 10年目のお付き合い - 直接的に ScalaMatsuri
で転職しました! という訳ではなくとも - 間接的に Chatwork を知っていただく機会になれているなぁと - 改めて感謝を申し上げます
(Chatworkでの) Scala 近況 2 CHAPTER 16
Scala どうしてる? 17 - Chatwork は、現在も PHP をメインシステムで運用しつつも、クリティカルな部分や新しいサブシステムについては、 Scalaを採用して運用しています -
今後の想定(あくまで想定。必ずしもそうとは言えない。ケースバイケースあり) - PHP - 既存のシステムで引き続き - 既存の資産を使いたいとき - Scala - 書き込み中心のシステムで採用 - 高い稼働率で運用する場合の良い選択肢となり得るだろう - Akka を使いたいとき - Go / Rust - 読み込み中心のシステムで採用 - 一部が落ちても問題ないシステム(充分Webサーバーがスケールできるような状況) - FaaS を使いたいとき
Scala 3 どうしてる? 18 - 使用したいライブラリが全てScala3に対応しているサブシステムで、Scala3にして運用しています。 - 使用用途が限定的で、バッチ実行するアプリケーション - 各チームで判断して
Scala3 を採用しています。 - 使用したいライブラリが対応していないため、見送っている場合もあります。 - ただ、Scala3 は構文とかも大きく様々な記述ができるため、チーム内での擦り合わせが必要だと話しています。 - インデントベース or ブロックベース - インデント 2 or 3 - など
Akka どうしてる? 19 - @j5ik2o が Chatwork Creator’s Note で
Akka のライセンス変更について を書きました。 - Akka 2.7 から Apache License Version 2.0 から Business Source License (BSL) v1.1 に変わりました。 - 非プロダクション環境の開発では無償で使用できますが、本番環境での稼働にはLightbend社の有償ラインセンスが必要に なります。(ただし、年間売上US $25 million以下は無償) - Chatworkさんどうするの? - 既存システム - 弊社のScalaを使ったマイクロサービスのほとんどでAkkaが利用されています。 - 改めて確認すると、それらのシステムでAkka独自機能を使わないと実現できない機能というのはありません。 - Akka を切り離す工数見合いで2つの方針 - 他のスタックへ移行する or 商用ライセンスを契約 - 次期システム - 絶賛開発中の次期システムは、 CQRS/Event Sourcing のために Akka 独自機能を前提に設計しています。 - 商用ライセンスの契約を前提としています。 - Command 側のみで Akka を使っていくことになるため、ライセンス数はそこまでにならない想定をしています。
20 Join Our Team! Chatwork採用 https://recruit.chatwork.com/ 働くをもっと楽しく、創造的 に