• Like
  • Save
Scala in Model-Driven development for Apparel Cloud Platform
Upcoming SlideShare
Loading in...5
×
 

Scala in Model-Driven development for Apparel Cloud Platform

on

  • 2,507 views

Scala Conference Japan 2013.

Scala Conference Japan 2013.

Statistics

Views

Total Views
2,507
Views on SlideShare
1,539
Embed Views
968

Actions

Likes
3
Downloads
12
Comments
0

6 Embeds 968

http://yugolf.hatenablog.com 934
http://modegramming.blogspot.jp 23
http://librosweb.es 7
http://my.dudamobile.com 2
https://twitter.com 1
http://webcache.googleusercontent.com 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Scala in Model-Driven development for Apparel Cloud Platform Scala in Model-Driven development for Apparel Cloud Platform Presentation Transcript

    • 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
    • Vision  for  EverforthPla.orm Web •  UX,  IA(InformaEon   Architecture) •  Document  DB Everforth   Framework Enterprise Computer   •  OOAD,  Data   Science Modeling,  Business   •  FP,  Logic Modeling,  SOA •  Concurrent,   •  OLTP,  OLAP Parallel,  Distributed •  RDBMS •  Columnar  DB 3
    • ApplicaEon  Building 4
    • Scala 5
    • 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
    • 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
    • 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
    • Scala  is  not  beRer  Java •  Trait  •  Case  class  •  Monad  •  Type  class  •  DSL   –  embedded  DSL  and  external  DSL  •  Actor  (concurrent)  •  Future  Monad  (concurrent/parallel)   9
    • 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
    • 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
    • Case  class •  (almost)  algebraic  data  structure  •  Nevertheless,  case  class  can  be  used  with  OOPs   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
    • 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
    • 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
    • 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
    • Conclusion •  Scala  is  a  suitable  language  for   –  Model-­‐Driven  development   –  Building  cloud  pla.orm  frameworks 16
    • End 17