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 株式会社ヌーラボ
【資料】30分でわかる!“とりあえず課題を作った”から抜け出すBacklog活用術
nulabinc
PRO
0
21
【展示会ご参加者様向け】Backlog概要編-配布資料
nulabinc
PRO
0
30
Why Platform Engineering? - マルチプロダクト・少人数 SRE の壁を越える挑戦 -
nulabinc
PRO
5
680
Datadog のトライアルを成功に導く技術 / Techniques for a successful Datadog trial
nulabinc
PRO
0
320
僕たちは何を守っているのか?ビジネスを守る、ヌーラボのセキュリティ実践
nulabinc
PRO
1
69
Snowflake九州ユーザー会
nulabinc
PRO
0
65
ヌーラボ‧ウェブサイト課の ⼀年間の取り組みをふり返る
nulabinc
PRO
1
1.1k
今からでも入れる re:Inventがあるんですか!?
nulabinc
PRO
0
440
ライティングチームだからこそできた、「どことでも繋がれるチーム」づくりの結果 / Technical Writing Meetup vol.38
nulabinc
PRO
0
110
Other Decks in Technology
See All in Technology
ハッカソン by 生成AIハッカソンvol.05
1ftseabass
PRO
0
100
タイミーのデータモデリング事例と今後のチャレンジ
ttccddtoki
4
1.2k
Geminiとv0による高速プロトタイピング
shinya337
0
190
KubeCon + CloudNativeCon Japan 2025 に行ってきた! & containerd の新機能紹介
honahuku
0
120
解析の定理証明実践@Lean 4
dec9ue
1
200
使いたいMCPサーバーはWeb APIをラップして自分で作る #QiitaBash
bengo4com
0
1.1k
LangSmith×Webhook連携で実現するプロンプトドリブンCI/CD
sergicalsix
1
150
Tokyo_reInforce_2025_recap_iam_access_analyzer
hiashisan
0
140
なぜ私はいま、ここにいるのか? #もがく中堅デザイナー #プロダクトデザイナー
bengo4com
0
1.2k
Model Mondays S2E03: SLMs & Reasoning
nitya
0
240
5min GuardDuty Extended Threat Detection EKS
takakuni
0
180
2025-06-26 GitHub CopilotとAI駆動開発:実践と導入のリアル
fl_kawachi
1
230
Featured
See All Featured
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
46
9.6k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
44
2.4k
Building an army of robots
kneath
306
45k
Faster Mobile Websites
deanohume
307
31k
Fireside Chat
paigeccino
37
3.5k
Facilitating Awesome Meetings
lara
54
6.4k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
32
2.4k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
2.9k
The Cost Of JavaScript in 2023
addyosmani
51
8.5k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
10
940
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
34
5.9k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
50k
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