Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Seasar ユーザだったプログラマが目指す OSS の世界展開 #seasarcon

13,889 views

Published on

https://event.seasarfoundation.org/sc2015/

Published in: Software

Seasar ユーザだったプログラマが目指す OSS の世界展開 #seasarcon

  1. 1. Seasar ユーザだった プログラマが目指す OSS の世界展開 瀬良 和弘(@seratch) #seasarcon 2015/09/26 https://event.seasarfoundation.org/sc2015/
  2. 2. 自己紹介 •@seratch / @seratch_ja •ScalikeJDBC(2011 ∼) •Skinny Framework(2013 ∼) •Skinny Micro (2015 ∼) •Scalatra、json4s、Scalate メンテナ •エムスリー株式会社 ソフトウェアエンジニア
  3. 3. アジェンダ •Seasar プロジェクトと私 •Scala OSS のこれまでと現状 •ScalikeJDBC の紹介 •Skinny Framework の紹介 •OSS を世界で認知してもらうために •まとめ
  4. 4. Seasar プロジェクトと私
  5. 5. Seasar2 と私 •数年前 SAStruts、S2JDBC で Web 開発 •SAStruts の @PreExecute/@PostExecute インタセプタ(社内ライブラリ) •SAStruts 向けに S2Unit を拡張 •Mobylet でガラケー公式サイト対応 •Slim3 をちょっとだけ使っていた •前職の SI 業界で関わっていた基幹システムの 開発現場でも S2 は多く使われていた
  6. 6. かつて S2 が中心にいた
  7. 7. 当時を振り返る •2011 年からは新規採用されなくなった、S2 で実装された一部サービスは今も現役 •SAStruts + S2JDBC だけでも後継が育った らよかったのかもしれない •「たられば」だが、最盛期が GitHub 時代だっ たらまた違った展開だったかもしれない
  8. 8. 今後について •Seasar プロジェクトが全面的に GitHub 移 行、前よりも貢献はしやすくなった •とはいえ、今後の方針発表は移行する理由とし てよいきっかけかもしれない
  9. 9. Scala OSS の これまでと現状
  10. 10. Scala OSS の登場人物 •Typesafe 社の Reactive Platform 関連 •Finagle をはじめとする Twitter 社 OSS •Lift や Scalatra など古参の OSS •Meetup 社を中心とした New York のコミュ ニティ(unfiltered/dispatch/cs/g8) •世界中の Scala Enthusiast 達(私を含む)
  11. 11. Scala 製 OSS の流れ •Scala 最初のムーブメントは Twitter 社の Finagle の流行(Tumblr、Pinterest) •2011 年 Typesafe 社設立、Reactive をキー ワードに Twitter 社 OSS とは別の流れ •Reactive Streams 標準化に向けた流れ •新たな Apache プロジェクトの登場: Apache Spark、Apache Kafka..
  12. 12. 2006 20102009 20122011... 2013 2014 2015 Scala 2.0 2.102.92.8 2.11 Apache Spark 1.0 Akka 1.0 Play 2.0 sbt 0.7 sbt 0.13sbt 0.12sbt 0.11 Finagle Zipkin Apache Kafka Summing Bird gitbucket ActiveMQ Apollo Kestrel scalaz 5.0 scalaz 7.1 Lift Scalatra Unfiltered Spray http4s Reactive Manifesto RxScala conscript gitter8 activator Scalate
  13. 13. Scala と私 •近年 Scala はデータ分析・ストリーミング処 理に注目が集まることが多いが、私が(今のと ころ)関わっているのは主に Web 開発の部品 となるライブラリ •DB ライブラリである ScalikeJDBC •Web 開発スタック Skinny Framework •Scalatra を fork した Skinny Micro
  14. 14. RDB ライブラリ •ScalaQuery、Squeryl 二択時代 •ScalaQuery が Typesafe の Slick へ •Squeryl の開発がアクティブでなくなった •ScalikeJDBC も知名度・ユーザを獲得 •non-blocking の流れも出てきてはいる •Slick 3 は Reactive Streams の潮流
  15. 15. 2006 2010 Lift Mapper 2009 20122011... 2013 2014 2015 ScalaQuery 0.9 Squeryl ScalikeJDBC Slick 1.0 Activate Circumflex ORM O/R Broker Anorm Querulous Slick 2.0 Slick 3.0 ScalikeJDBC Async postgresql-async mysql-async doobie Scala 2.0 2.102.92.8 2.11 Skinny ORM Reactive Manifesto Scala ActiveRecord SORM sqlτyped
  16. 16. Web 開発 •Scala といえば Lift だったが Typesafe 社設 立後 Play 2 が広く知名度・ユーザを獲得 •Netty、Akka ベースの実装がトレンド •Servlet ベースの系譜も続いている(Lift、 Scalatra、Skinny Micro) •近年、この領域に新たな課題は少なく、ニーズ を満たすものが出 ってきた感はある
  17. 17. Scala 2.0 2006 2010 Lift 2009 Play 1 (Java) Play 2 20122011... 2013 2014 2015 Scalatra Circumflex Spray Unfiltered Xitrum Finatra akka-http 2.102.92.8 2.11 http4s Skinny Reactive Manifesto
  18. 18. ScalikeJDBC の紹介
  19. 19. ScalikeJDBC •GitHub スター数で世界第 2 位 • Scala らしく JDBC を扱う •RDB、JDBC に関する基礎知識があれば誰で も使える敷居の低さ •2011 年から開発開始、私の身近や自社で多く の実績を積み重ねながら安定させてきた •今では国内外で豊富な本番稼動実績
  20. 20. S2JDBC からの影響 •S2JDBC からの影響はいくつもある •Scala 2.9 時代に 2Way-SQL 簡易版を提供 •scalikejdbc-gen:ソースコードの自動生成 •流れるようなインタフェース、QueryDsl に影 響を受けた QueryDSL API •Scala なので JPA とは決別、JDBC だけ •Scala なので APT なし、代わりに少しマクロ
  21. 21. 設定 sbt があれば、本当にこれだけで試せます
  22. 22. コネクションプール JDBC の設定を指定するだけ
  23. 23.  DDL JDBC の Statement#execute です
  24. 24. insert JDBC の Statement#executeUpdate 実行した SQL と、それがどこで発行されたかを 追うために stacktrace を出力します
  25. 25. select とりあえず Map[String,Any] で出力してみる
  26. 26. case class へのマッピング #map[A](ResultSet => A) で何にでもマッピングできる
  27. 27. QueryDSL ある程度型安全でほぼ SQL そのままの DSL です
  28. 28. 使いたくなりましたか?
  29. 29. Skinny Framework の紹介
  30. 30. Skinny Framework •GitHub スター数 463 •2014 年 3 月に 1.0.0 リリース • Scala on Rails •フルスタック(自動生成、OAuth、ORM、DB マイグレーション、入力バリデーション、メー ル送信、非同期ジョブ、JSON 処理 etc) •war として Servlet コンテナにデプロイ
  31. 31. 新しいプロジェクト 1 2 3rails new のイメージ Jetty が起動します
  32. 32. scaffold 生成 rails g scaffold と基本は同様
  33. 33. DB マイグレーション Flyway を使った DB マイグレーション rake db:migrate と同様のイメージ skinny-task で rake と同様のことができます
  34. 34. scaffold 生成結果
  35. 35. バリデーション生成済
  36. 36. ページネーション生成済
  37. 37. ActiveRecord 的 API + 静的型 sbt console で REPL を起動して 挙動を簡単に確認できます
  38. 38. 既存 DB からの自動生成 レガシー DB の CRUD 管理画面が 一瞬で生成できます
  39. 39. 使いたくなりましたか?
  40. 40. OSS を世界で 認知してもらうために
  41. 41. 最低限のこと •コメントを絶対に日本語で書かない、英語で書 くことがまずスタートライン •公式ドキュメントは英語、日本語より英語での 情報発信を優先する(少なくとも日本語で情報 を出したら英語でも出す) •開発者に直接会える国内で誰にも使ってもらえ ないのは話にならないが、かといって「日本で しか流行っていない」と思われたら負け
  42. 42. 日本でしか(ry
  43. 43. やっている・できてきたこと •着実なコードの改善の継続、定期リリース •国内に閉じない情報発信とその継続 •とにかくオンラインの迅速なレスポンス(最近 は stackoverflow/gitter で自分以外が勝手に 回答してくれることも増えた) •創始者でない他の OSS にも関わって、自分の 経験値と界隈での認知度を高める
  44. 44. できていないこと •プロダクト自体の知名度をさらに高めて、より 多くの人に使ってもらう •国際的な場において、私自身が個人として認知 される必要性を感じている •無理にという必要はないが、日本語話者以外の メンテナも迎えたい(チームの成熟度の証左)
  45. 45. まとめ
  46. 46. まとめ •S2 を使っていた&一部でメンテしている •Seasar2 が「OSS は誰が始めてもよい」とい う機運を見せてくれたことに感謝している •良いコードを書くこと・知ってもらう努力をす ること、どちらも必要でどちらも足りてない •Scala に興味がある方、一緒にやりましょう

×