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