Skinny Meetup Tokyo 2 を開催しました #skinnyjp
Skinny Framework 2.0 をリリースして一ヶ月弱、@yusuke さんのご厚意により、東池袋のサムライズムのオフィスをお借りして Skinny Meetup Tokyo の第 2 回を開催させていただきました。
当日使ったスライドはこちら。
www.slideshare.net
英語版はこちら。
www.slideshare.net
関連する tweet を Togetter にまとめました。
当日の内容
Meetup の流れは、まず、私の方から Skinny が 2.0 で変わったこと(とちょっとだけさだまさしコンパイラのデモ)をお話しました。次に、社内の情報共有ツールの実装に Skinny Framework を使ってくださっているという @roundrop さんから、その社内情報共有ツールについての紹介、初めての Scala 開発で Skinny Framework を使ってどうだったかという所感についてお話いただきました。具体的には以下のインタビューで触れられている Siita というツールです。
数年 Scala をやっている身からするとすっかり忘れかけていたような、初めて Scala をやったときに困った点などもバランスよくまとめていただいていたので、おそらくこれから Scala、Skinny をやってみようという方々に大変参考になったのではないかと思います。この発表のスライドは後日公開いただけるとのことでしたので、楽しみにしております。 (追記)公開していただいたので、以下に埋め込みました。
www.slideshare.net
サムライズム最高
当初は一人千円いただいてピザとドリンクを準備予定でしたが、サムライズム @yusuke さんのご厚意に甘えさせていただきまして、なんと無料で懇親会を行うことができました。再度、お礼申し上げる次第です。
tweet とこのブログで紹介させていただく程度のことしかできませんが、以下のようにサムライズムでは OSS コミュニティも応援されているそうです。また IntelliJ IDEA や JRebel の業務導入を検討されている企業様におかれましては、ぜひ日本の商慣行にも柔軟に対応しているサムライズム社でご購入いただければと思います!
今日は何から何までサムライズム .@yusuke さんのお世話になりっぱなしでした。ありがとうございました!IntelliJ IDEA と JRebel の購入はサムライズムさんで! #skinnyjp #さだまさしjp
— seratch_ja (@seratch_ja) 2015, 12月 22
サムライズムさんでは JVM を中心とした OSS コミュニティのイベント開催など応援されているそうですよ! #skinnyjp #さだまさしjp
— seratch_ja (@seratch_ja) 2015, 12月 22
そんな大きな箱ではありませんが、私が関われるようなコミュニティであれば弊社の場所お貸しできます!有償イベントはできません
— 山本裕介 Yusuke Yamamoto (@yusuke) 2015, 12月 22
Skinny Micro
今回、初めて Skinny Micro についてちゃんと説明させていただきましたが、Scalatra を fork してリファクタリング、機能追加したものでかなり手軽で使いやすいライブラリになったのではないかと思っています。
どれくらい手軽かというと、以下に示すこれだけのコードで Web アプリをつくれるくらい手軽です。この Web アプリは Jetty サーバで起動して curl -v 'localhost:4567/say-hello?name=Martin'
というリクエストに対して Hello, Martin!
というレスポンスボディを返します。
https://github.com/skinny-framework/skinny-micro/tree/master/scalas-samples
#!/usr/bin/env scalas // or ./scalas Hello.scala /*** scalaVersion := "2.11.7" libraryDependencies += "org.skinny-framework" %% "skinny-micro-server" % "1.0.0" */ import skinny.micro._ object HelloApp extends WebApp { get("/say-hello") { s"Hello, ${params.getOrElse("name", "Anonymous")}!\n" } } WebServer.mount(HelloApp).port(4567).start()
Heroku にすぐにデプロイできるサンプルや基本的な使い方を列挙したサンプルもありますので、ご参照いただければと思います。
https://github.com/skinny-framework/skinny-micro-usage-example
https://github.com/skinny-framework/skinny-micro-heroku-example
まだ公開して日が浅く GitHub スター数がちょっと少なめなので、気に入った方はぜひ stargazer になっていただけると嬉しいです。
Skinny の今後
Skinny 2 は大きな非互換を入れたわけでなく Scalatra からの移行という大きなイベントがあったのでメジャーバージョンを上げたという事情がありました。既に 1.3 でフレームワーク本体で備えるべき機能はそれなりに揃ってきているという認識で、大きくコードベースを変えていくことは考えていません。しかし、当然ながらソフトウェアに完成ということはありませんし、また利用者からするとメンテナンスされ続けていることは非常に重要なことですので、これからも手を入れ続け、マイナーバージョンでのリリースは続けていきます。
Skinny Framework の売りとしては、以下のような内容に共感いただける現場・用途には非常にマッチすると考えています。改めて明文化してみましたが、これは公式サイトにも明記しておくべきですね。
- 今後も Scala 界における Servlet での Web アプリケーション開発フレームワークのデファクトを目指し続けます
- 今後も(既にコモディティ化している)Rails のイディオムや基本的なコンセプトに近い立場を保つことで、その下地がある開発者にとって敷居の低いフレームワークであり続けます
- 既に 1.3 で当初予定していた最低限の機能セットは実現できたと考えており、安定フェーズとしてプロジェクトを運営していきます
- 外的要因(Scala 本体など)の大きな変化以外での非互換な変更は基本的に入れない方針で運営していきます
- Servlet に依存していないサブモジュール(ORM や Validator、HTTP クライアントなど)は今後も独立したライブラリとして利用可能であることを保証し続けます
- 日本語圏に閉じず、世界中のさらなるユーザ拡大に努めてガラパゴス化のリスクを避ける取り組みを今後も続けます
特に、運用に入ってからのメンテコストを抑えたい、新しいメンバのキャッチアップのしやすさを重視したいという目的の場合、期待に答えられるフレームワークだと思っておりますので、選択肢の一つとしてご検討いただければと思います。
まだ時期やプランの詳細は未定なのですが、来年は Skinny Framework を業務の現場で利用いただきやすくなるようなサポートにもチャレンジできないかと検討しているところですので、引き続きよろしくお願いいたします。