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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
yoshiyoshifujii
April 15, 2023
Programming
0
3k
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
270
DMMを支える決済基盤の技術的負債にどう立ち向かうか / Addressing Technical Debt in Payment Infrastructure
yoshiyoshifujii
5
2.4k
技術的負債と戦略的に戦わざるを得ない場合のオブザーバビリティ活用術 / Leveraging Observability When Strategically Dealing with Technical Debt
yoshiyoshifujii
1
310
プロダクトオーナーの視座から見た信頼性とオブザーバビリティ / 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
650
ここ数ヶ月で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
950
サマーインターンシップ2019で学生とDDDなScala開発に取り組んだ / Working on DDD and Scala development with students at Summer Internship 2019
yoshiyoshifujii
2
4.4k
Other Decks in Programming
See All in Programming
AWS Infrastructure as Code の新機能 2025 総まとめ 〜SA 4人による怒涛のデモ祭り〜
konokenj
10
3.4k
AI時代のシステム設計:ドメインモデルで変更しやすさを守る設計戦略
masuda220
PRO
5
1k
RAGでハマりがちな"Excelの罠"を、データの構造化で突破する
harumiweb
9
2.9k
守る「だけ」の優しいEMを抜けて、 事業とチームを両方見る視点を身につけた話
maroon8021
3
990
maplibre-gl-layers - 地図に移動体たくさん表示したい
kekyo
PRO
0
280
ロボットのための工場に灯りは要らない
watany
10
2.9k
オブザーバビリティ駆動開発って実際どうなの?
yohfee
3
860
20260313 - Grafana & Friends Taipei #1 - Kubernetes v1.36 的開發雜記:那些困在 Alpha 加護病房太久的 Metrics
tico88612
0
200
CS教育のDX AIによる育成の効率化
niftycorp
PRO
0
130
Goの型安全性で実現する複数プロダクトの権限管理
ishikawa_pro
2
360
Cyrius ーLinux非依存にコンテナをネイティブ実行する専用OSー
n4mlz
0
150
20260315 AWSなんもわからん🥲
chiilog
2
160
Featured
See All Featured
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
1.9k
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
110
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
85
[RailsConf 2023] Rails as a piece of cake
palkan
59
6.4k
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
190
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.3k
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
150
How to Think Like a Performance Engineer
csswizardry
28
2.5k
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2k
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
980
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.2k
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
640
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/ 働くをもっと楽しく、創造的 に