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
1.7k
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Javaな会社のScalaへの取り組み
Presentation slides at
http://summit.scala-kansai.org/
株式会社ヌーラボ
PRO
August 01, 2015
More Decks by 株式会社ヌーラボ
See All by 株式会社ヌーラボ
Bits Agent Builder の⼊⾨と活⽤事例
nulabinc
PRO
0
140
Getting Started with Bits Agent Builder: Real-World Use Cases
nulabinc
PRO
0
44
The_Evolution_of_Bits_AI_SRE.pdf
nulabinc
PRO
0
350
進化するBits AI SREと私と組織
nulabinc
PRO
4
900
実践 Datadog MCP Server
nulabinc
PRO
4
890
全社横断PjM⽀援チーム “PEaS”の取り組みと プロジェクトマネジメント でのAI活⽤について
nulabinc
PRO
0
210
Datadog の RBAC のすべて
nulabinc
PRO
4
880
Datadog Live Tokyo 2025登壇資料
nulabinc
PRO
0
200
How to Migrate Your Backlog Free Plan
nulabinc
PRO
0
260
Other Decks in Technology
See All in Technology
Flutterをカメラで動かしたかった話
sony
1
140
Invisible to AI? Making TYPO3 Sites Quotable by AI Search Systems
wolfgangwagner
0
200
FORENSIA: ローカルLLMフォレンジックハーネス
sumeshi
2
380
トヨタ⽣産⽅式(TPS)⼊⾨
recruitengineers
PRO
3
740
Breaking the Seal: Static Deobfuscation of Compiled V8 JavaScript Bytecode Malware
hshrzd
0
740
システム思考で問題に対処する
yussak
0
260
2026-08-05 IBM Z開発最前線!IBM Bob Premium Package for Zって何がすごいの?
yutanonaka
0
110
同じWAFが、攻撃の“形”は弾く── 正当な“形”の不正は通す
kuroneko13
0
180
JavaScript 研修 (2026)
recruitengineers
PRO
2
530
【CEDEC2026】グラフィックスエンジニアのためのニューラルシェーディング入門
cygames
PRO
0
140
メルカリのグローバルアプリで挑んだ AlloyDB 運用と課題解決の実践記
hatappi
0
250
LanceDB入門
mocobeta
7
410
Featured
See All Featured
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
570
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.7k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
2k
The World Runs on Bad Software
bkeepers
PRO
72
12k
Embracing the Ebb and Flow
colly
88
5.1k
Building Applications with DynamoDB
mza
96
7.2k
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
330
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
1.8k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Bash Introduction
62gerente
615
220k
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
260
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
64
56k
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