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
Javaな会社のScalaへの取り組み
Search
株式会社ヌーラボ
PRO
August 01, 2015
Technology
2
1.6k
Javaな会社のScalaへの取り組み
Presentation slides at
http://summit.scala-kansai.org/
株式会社ヌーラボ
PRO
August 01, 2015
Tweet
Share
More Decks by 株式会社ヌーラボ
See All by 株式会社ヌーラボ
ヌーラボが取り組む RevOpsのこれまでとこれから
nulabinc
PRO
1
94
【資料】30分でわかる!“とりあえず課題を作った”から抜け出すBacklog活用術
nulabinc
PRO
0
62
【展示会ご参加者様向け】Backlog概要編-配布資料
nulabinc
PRO
0
41
Why Platform Engineering? - マルチプロダクト・少人数 SRE の壁を越える挑戦 -
nulabinc
PRO
5
740
Datadog のトライアルを成功に導く技術 / Techniques for a successful Datadog trial
nulabinc
PRO
0
410
僕たちは何を守っているのか?ビジネスを守る、ヌーラボのセキュリティ実践
nulabinc
PRO
1
81
Snowflake九州ユーザー会
nulabinc
PRO
0
73
ヌーラボ‧ウェブサイト課の ⼀年間の取り組みをふり返る
nulabinc
PRO
1
1.1k
今からでも入れる re:Inventがあるんですか!?
nulabinc
PRO
0
460
Other Decks in Technology
See All in Technology
AI コードレビューが面倒すぎるのでテスト駆動開発で解決しようとして読んだら、根本的に俺の勘違いだった
mutsumix
0
120
Mambaで物体検出 完全に理解した
shirarei24
2
140
生成AI時代におけるAI・機械学習技術を用いたプロダクト開発の深化と進化 #BetAIDay
layerx
PRO
0
110
LLMでAI-OCR、実際どうなの? / llm_ai_ocr_layerx_bet_ai_day_lt
sbrf248
0
370
増え続ける脆弱性に立ち向かう: 事前対策と優先度づけによる 持続可能な脆弱性管理 / Confronting the Rise of Vulnerabilities: Sustainable Management Through Proactive Measures and Prioritization
nttcom
1
230
Gemini in Android Studio - Google I/O Bangkok '25
akexorcist
0
100
【Λ(らむだ)】最近のアプデ情報 / RPALT20250729
lambda
0
170
Bet "Bet AI" - Accelerating Our AI Journey #BetAIDay
layerx
PRO
1
190
AWS表彰プログラムとキャリアについて
naoki_0531
1
150
クマ×共生 HACKATHON - 熊対策を『特別な行動」から「生活の一部」に -
pharaohkj
0
260
みんなのSRE 〜チーム全員でのSRE活動にするための4つの取り組み〜
kakehashi
PRO
2
110
Perlアプリケーションで トレースを実装するまでの 工夫と苦労話
masayoshi
0
230
Featured
See All Featured
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
331
22k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Agile that works and the tools we love
rasmusluckow
329
21k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
Imperfection Machines: The Place of Print at Facebook
scottboms
267
13k
Building Better People: How to give real-time feedback that sticks.
wjessup
367
19k
Being A Developer After 40
akosma
90
590k
Optimizing for Happiness
mojombo
379
70k
jQuery: Nuts, Bolts and Bling
dougneiner
63
7.8k
Gamification - CAS2011
davidbonilla
81
5.4k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
29
9.6k
Intergalactic Javascript Robots from Outer Space
tanoku
272
27k
Transcript
+BWBͳձࣾͷ 4DBMBͷऔΓΈ גࣜձࣾψʔϥϘɹ០ढ़و
C • – ( • )
Java $ Scala $ $
• Scala $ • $ • Scala
None
• 2004$Backlog$(Java/Seasar/WebWork)$ • 2008$Cacoo$(Java/Seasar/Cubby)$
We— Java
8IZ+BWB • ੩తܕ͚ – ։ൃޮ – อकੑ • ߴͳ࣮ߦ࣮ߦޮ – εϨουϞσϧ – αʔόʔͷ͕গͳͯ͘ࡁΉ
• ࣌ ޮͷྑ͍ϑϨʔϜϫʔΫ – 4FBTBS8FC8PSL – 4%BP4+%#$
+BWBUP4DBMB • 4FBTBSͷ։ൃ͕ࢭ·Δ • ྡͷࣳੜͰ3P3͕Γ্͕Γ • +BWBͳ͔ͳ͔ग़ͳ͍ • )PUSFMPBEJOHΛ͖ͪΜͱಈ͔͢ͷେม – ίʔυमਖ਼ͷͨͼʹ5PNDBU࠶ىಈ
• +BWBͷସΛ୳ͨ͠ʹ
8IZ4DBMB • ݎ࿚ੑ – 0QUJPO – Πϛϡʔλϒϧ WBM ෆมίϨΫγϣϯ
– ϥΠϒϥϦ'80QUJPOΠϛϡʔλϒϧલఏ • ։ൃޮ – ίϨΫγϣϯૢ࡞ – $BTFΫϥε – ύλʔϯϚον • +7.ݴޠ – +BWBࢿ࢈ͷ༗ޮ׆༻ – +7.Ͱͷαʔόʔӡ༻ܦݧ
case$class $case$class$User(id:$Long,$name:$String,$isAdmin:$Boolean)$ $$val$newUser$=$User(1L,$“agata”,$false)$ $$val$updatedUser$=$newUser.copy(name$=$“agaMno”)$ • ߦͰ+BWBͷߦ͙Β͍ • σϑΥϧτͰಡΈऔΓઐ༻ϓϩύςΟ༩ • FRVBMTIBTI$PEFUP4USJOHDPQZϝιουੜ
• DPQZͰݩͷΦϒδΣΫτΛഁյͤͣʹίϐʔ • ύλʔϯϚονʹద༻Մೳ
case$class$AddAccountCommand(name:$String,$password:$String,$email:$String…)$ case$class$UpdateAccountCommand(id:$Long,$name:$String,$email:$String$…)$ $ object$AccountService${$ $def$add(command:$AddAccountCommand):$Account$=$…$ $def$update(command:$UpdateAccountCommand):$Account$=$…$ }$ $ ublic$class$Account${$ $$private$Long$id;$
$$private$String$name;$ $$private$String$password;$ $$private$String$email;$ $$…$ }$ public$class$AccountService${$ $public$void$add(Account$account)${$…$}$ $public$void$update(Account$account)${$…$}$ }$ $ Scala Java
Play2 • $ – DB MigraVon $ – Hot$Reloading$ • $
– Routes$ – View/Template$ – build.scala$
Play$2 develop feature,X 5.sql 5.sql 6.sql 4.sql feature,Y ! #$```$!Ups$
alter$table$post$add$show_link_meta$boolean$not$null$default$true;$ $ #$```$!Downs$ alter$table$post$drop$show_link_meta;$
• 2004$Backlog$(Java/Seasar/WebWork)$ • 2008$Cacoo$(Java/Seasar/Cubby)$ • 2011$Typetalk$(Scala/Play$2)$ • 2013$Backlog$API$v2$(Scala/Play$2)$ • 013$Nulab$Account$(Java/Spring)$
• 2014$ (Scala/Play$2)$ • 014$Nulab$Services$Status(Go)$ • 2015$Backlog$Redmine$Importer(Scala/Akka)
Typetalk ( ) Web/API$ (Scala/Play$2) Streaming$ (Node.js) DB iOS Android
Redis Redis Pub/Sub Socket.IO
API Web (JS) API$ $ OAuth$2$ object$TopicController$exnteds$Controller${$ $$self:$Auth$ $$//$API$Methods$ }$
object$TopicWebController$extends$TopicController$with$WebAuth$ object$TopicAPIController$extends$TopicController$with$APIAuth$
Backlog ( ) Web $ API$ (XML`RPC)$ $(Java/Seasar) API$v2(REST/JSON)$ (Scala/Play$2)
API DB iOS Android DB $
Backlog$APIv2 DB Client Controller$ (Play$2)$ ApplicaVo nService Repository$ PresentaVon$ ApplicaVon$
Domain$ Infrastructure$ Service Value$ Object EnVty SpecificaVon Dao$ Record$
4DBMBΛࣾͰ ීٴͤ͞ΔͨΊͷ औΓΈ
ࣾΞϓϦΛ4DBMBͰ࡞ • $ • $ • $ • Backlog $
• YouTube/SoundCloud/Vimeo Mix $ • Scala
ࣾษڧձ
͓ۚͰղܾ
͓͢͢Ίಋೖϓϥϯ • جຊߏจ֤ࣗݸਓֶशͰԡ͓͑ͯ͘͞ • ·ͣࣾΞϓϦͳͲɺখ͞ΊͷΞϓϦΛ ࠾༻ͯ͠ΈΔɻ • ࣾษڧձॏཁ • ࢥ͍࣮ͬͯҊ݅ʹಋೖ
– ࠷ॳϕλʔ+BWB͔ΒͰ0, – ׳Ε͖ͯͨΒͩΜͩΜ4DBMBؔܕΒ͘͠
• Java Scala $ – cala Scala $ • Scala
$ – $
None