scala in model-driven development for apparel cloud platform
DESCRIPTION
Scala Conference Japan 2013.TRANSCRIPT
![Page 1: Scala in Model-Driven development for Apparel Cloud Platform](https://reader037.vdocuments.net/reader037/viewer/2022110306/554f5caab4c905b9508b54b1/html5/thumbnails/1.jpg)
![Page 2: Scala in Model-Driven development for Apparel Cloud Platform](https://reader037.vdocuments.net/reader037/viewer/2022110306/554f5caab4c905b9508b54b1/html5/thumbnails/2.jpg)
Agenda
• Apparel Cloud – Cloud pla.orm for apparel industry
• Scala – Scala in model-‐driven development – Scala in cloud pla.orm architecture – Scala features in real system development
2
![Page 3: Scala in Model-Driven development for Apparel Cloud Platform](https://reader037.vdocuments.net/reader037/viewer/2022110306/554f5caab4c905b9508b54b1/html5/thumbnails/3.jpg)
Vision for EverforthPla.orm
Web • UX, IA(InformaEon Architecture)
• Document DB
Computer Science • FP, Logic • Concurrent, Parallel, Distributed
• Columnar DB
Enterprise • OOAD, Data Modeling, Business Modeling, SOA
• OLTP, OLAP • RDBMS
Everforth Framework
3
![Page 4: Scala in Model-Driven development for Apparel Cloud Platform](https://reader037.vdocuments.net/reader037/viewer/2022110306/554f5caab4c905b9508b54b1/html5/thumbnails/4.jpg)
ApplicaEon Building
4
![Page 5: Scala in Model-Driven development for Apparel Cloud Platform](https://reader037.vdocuments.net/reader037/viewer/2022110306/554f5caab4c905b9508b54b1/html5/thumbnails/5.jpg)
Scala
5
![Page 6: Scala in Model-Driven development for Apparel Cloud Platform](https://reader037.vdocuments.net/reader037/viewer/2022110306/554f5caab4c905b9508b54b1/html5/thumbnails/6.jpg)
My Scala Products • Goldenport
– ApplicaEon Framework – hRps://github.com/asami/goldenport
• SmartDox – Document processing system – hRps://github.com/asami/smartdoxprocessor
• SimpleModeler – Model compiler – hRps://github.com/asami/simplemodeler
• g3 (experimental) – Server-‐side applicaEon framework – hRp://code.google.com/p/goldenport3/
6
![Page 7: Scala in Model-Driven development for Apparel Cloud Platform](https://reader037.vdocuments.net/reader037/viewer/2022110306/554f5caab4c905b9508b54b1/html5/thumbnails/7.jpg)
Everforth Scala Products
• EverforthModeler – Model Compiler for EverforthFramework and Web UI Framework
– Based on SimpleModeler • EverforthFramework – Cloud Service Framework – Derived from g3 experience
• Web UI framework – JavaScript & Scala (Server side)
7
![Page 8: Scala in Model-Driven development for Apparel Cloud Platform](https://reader037.vdocuments.net/reader037/viewer/2022110306/554f5caab4c905b9508b54b1/html5/thumbnails/8.jpg)
Develop Environment • IDE: Emacs + ensime • Scala 2.9.1 • sbt 0.11.3 • Scalatest 1.6.1 • Play 2.0.4 (JSON, Anorm)
– play20.auth 0.5 • Scalaz 6.0.4 • Scala IO 0.4.0 • Squeryl 0.9.5-‐2 • Scalaj-‐Eme 0.6 • Google guava 14.0-‐rc3 (Java)
– Concurrent weak/sof reference cache • Typesafe Config 1.0.0 (Java)
8
![Page 9: Scala in Model-Driven development for Apparel Cloud Platform](https://reader037.vdocuments.net/reader037/viewer/2022110306/554f5caab4c905b9508b54b1/html5/thumbnails/9.jpg)
Scala is not 'beRer Java'
• Trait • Case class • Monad • Type class • DSL – embedded DSL and external DSL
• Actor (concurrent) • Future Monad (concurrent/parallel)
9
![Page 10: Scala in Model-Driven development for Apparel Cloud Platform](https://reader037.vdocuments.net/reader037/viewer/2022110306/554f5caab4c905b9508b54b1/html5/thumbnails/10.jpg)
OOP vs. FP • Our approach:
– OOP is dominant paradigm in our development • Large scale sofware development, • CollaboraEon with business modeling in OOAD
– OOP over FP • Even though FP is very comfortable in coding for model compiler and server side frameworks.
– Tree/graph structure transformaEon – Parser combinator for external DSL – FP over ImperaEve programming – Using FP in OO Paradigm
• OOP & FP (and syntax sugers) strongly supports Embedded DSL
10
![Page 11: Scala in Model-Driven development for Apparel Cloud Platform](https://reader037.vdocuments.net/reader037/viewer/2022110306/554f5caab4c905b9508b54b1/html5/thumbnails/11.jpg)
Trait
• Trait! Trait! Trait! • trait vs. abstract class – Now, abstract class is not used so much to me.
• Cake paRern – (Type-‐safe) Dependency InjecEon
11
![Page 12: Scala in Model-Driven development for Apparel Cloud Platform](https://reader037.vdocuments.net/reader037/viewer/2022110306/554f5caab4c905b9508b54b1/html5/thumbnails/12.jpg)
Case class • (almost) algebraic data structure • Nevertheless, case class can be used with OOP's polymorphism (very very comfortable)
• Coding strategy: case class should be immutable object
• Useful features with DSL – Default parameter – copy constructor – Implicit parameter
• PaRern Matching!
12
![Page 13: Scala in Model-Driven development for Apparel Cloud Platform](https://reader037.vdocuments.net/reader037/viewer/2022110306/554f5caab4c905b9508b54b1/html5/thumbnails/13.jpg)
Try
• Big enhancement in 2.10 • Monad! (i.e. flatMap method) • "Try" everywhere (instead of Either or scalaz.ValidaEon)
• required feature in actor programming to convey error state
13
![Page 14: Scala in Model-Driven development for Apparel Cloud Platform](https://reader037.vdocuments.net/reader037/viewer/2022110306/554f5caab4c905b9508b54b1/html5/thumbnails/14.jpg)
Monadic programming • Scala Standard
– Functor – Monad
• Scalaz – Monoid – ApplicaEve Functor – Traverse
• Handling excepEon state as Try monad instead of throwing ExcepEon.
• Monadic programming features like ApplicaEve Functor, Traverse are very useful.
14
![Page 15: Scala in Model-Driven development for Apparel Cloud Platform](https://reader037.vdocuments.net/reader037/viewer/2022110306/554f5caab4c905b9508b54b1/html5/thumbnails/15.jpg)
Concurrent/Parallel • Features
– Actor/Akka – Scalaz Promise – Scala 2.10 Future and Promise – Scala 2.10 Try – Parallel CollecEon
• Techniques – Algebraic datatype
• case class – Persistent data structure
• List, Vector • Scalaz Tree
– ConEnuous passing style
15
![Page 16: Scala in Model-Driven development for Apparel Cloud Platform](https://reader037.vdocuments.net/reader037/viewer/2022110306/554f5caab4c905b9508b54b1/html5/thumbnails/16.jpg)
Conclusion
• Scala is a suitable language for – Model-‐Driven development – Building cloud pla.orm frameworks
16
![Page 17: Scala in Model-Driven development for Apparel Cloud Platform](https://reader037.vdocuments.net/reader037/viewer/2022110306/554f5caab4c905b9508b54b1/html5/thumbnails/17.jpg)
17
End