42
Skinny Framework で始めた Scala Skinny Framework Meetup Tokyo 2 2015/12/22 @roundrop

Skinny Framework で始めた Scala

Embed Size (px)

Citation preview

Skinny Framework で始めた Scala

Skinny Framework Meetup Tokyo 2 2015/12/22 @roundrop

自己紹介• 山下 竜司 • (株) アットウェア • @roundrop • Facebook4J • 普段は主に Java で Web アプリ開発 • Scala は全然やっていない

アジェンダ• 事例紹介 • なぜ Skinny を選んだか • 実際 Skinny を使ってみてどうだったか

Scala先駆者インタビュー

http://www.atware.co.jp/blog/2015/11/1/scala-vol2-sera

にちょっと出てくる

社内ナレッジ共有ツール•某人気サービスと同じようなインターフェイス •社内事情とScalaの練習も兼ねて自作 (2014年8月~約2週間) •採用したフレームワーク Skinny Framework • 1.2 -> 1.3 -> 2.0

主な機能• Google アカウントでのログイン • skinny-oauth2-controller を使用

• 記事の表示・投稿・編集・プレビュー • 複数のタグ付け • 新規投稿時は Typetalk に通知 • 画像ファイルアップロード

• コメントの投稿 • 記事のストック • 検索 • ストックやコメントされたりのイベントで通知 • Contribution の計算・ランキング • i18n 対応

demo

はじめての実装のおすすめ• scaffold または • DB を固めてから reverse-scaffold

• 生成されたソースを弄る • すると、そのうち慣れてくる

はじめての実装のおすすめ• ビューテンプレートは ssp で • 最初はまず ssp 使っとけばハマらない

• Controller は SkinnyResource を継承しない方式で • のほうが最初はわかりやすい(と思う) • example の CompaniesController • https://github.com/skinny-framework/skinny-framework-example/blob/master/src/main/scala/controller/CompaniesController.scala

はじめての実装のおすすめ• 最初から Skinny ORM で狙ったとおりのSQL を発行するのは難しい • トライ&エラーを繰り返すよりも Model のテストを書いての試行錯誤が効率的

• 複雑なクエリは無理をせず生SQLで • ScalikeJDBC のドキュメントを読もう

社内ナレッジ共有ツール•某人気サービスと同じようなインターフェイス •社内事情とScalaの練習も兼ねて自作 (2014年8月~約2週間) •採用したフレームワーク Skinny Framework • 1.2 -> 1.3 -> 2.0

今では社内の情報共有インフラに定着

なぜ Skinny を選んだか

Scala• Scala、はじめてみたいけど • 環境構築めんどくさそう • Scala のバージョンや sbt • activator って何者・・・

• FW/ライブラリ事情がわからない • FW いっぱいある・・・ • Play framework が無難?

• DB アクセスライブラリいっぱいある・・・

Scala• とりあえず普通の Web アプリがつくりたいだけなんだけど・・・ • アクターモデルとか • 非同期前提とか • Reactive とか そういうのはあとでいいので・・・

Scala• とりあえず普通の Web アプリがつくりたいだけなんだけど・・・ • アクターモデルとか • 非同期前提とか • Reactive とか そういうのはあとでいいので・・・

Rails みたいなフルスタックでわかりやすいのがほしい

Skinny Framework で始める Scala

http://www.java-users.jp/?page_id=1048#R2-4

Skinny Framework で始める Scala  ( ゚д゚) ガタッ   /   ヾ __L| /‾‾‾/_   \/   /

http://www.java-users.jp/?page_id=1048#R2-4

実際 Skinny を使ってみて どうだったか

Skinny で始めた Scala• はじめやすさ • わかりやすさ • 生産性

Skinny で始めた Scala• はじめやすさ • わかりやすさ • 生産性

環境構築•Java プログラマならお馴染みのSAStruts よろしく解凍すればすぐに使えるブランクプロジェクト •依存ライブラリ込み版もあり

http://skinny-framework.org

環境構築• 解凍して IntelliJ IDEA に放り込めば OK

環境構築• sbt 、Scala のバージョン等もろもろ設定完了

• めんどくさくなかった! • Skinny が始めやすいのは本当

Skinny で始めた Scala• ○ はじめやすさ • わかりやすさ • 生産性

Skinny で始めた Scala• ○ はじめやすさ • わかりやすさ • 生産性

Skinny のドキュメント• ドキュメント • 公式 http://skinny-framework.org • Example • https://github.com/skinny-framework/skinny-framework-example

• ScalikeJDBC 公式 • http://scalikejdbc.org

• ScalikeJDBC の GitBook • https://www.gitbook.com/book/seratch/scalikejdbc-cookbook/details

Skinny のドキュメント• Play framework のドキュメントよりも直感的だし読みやすい構成・内容

• サイトトップに Overview -> 詳細へリンク • 局所的でなく一定の流れのあるサンプルコード + コメント

• 適切な順序・粒度で書かれている

Scala on Rails• Play と違って仕組みやメソッド等の命名が Rails ライクなので独自の世界観が少なくスッと入ってくる感じ • params とか render とか strong parameter とか

• それ故、他のメンバーもすんなり開発に入って来れています

Servlet ベース• Servlet コンテナ上で動く • Filter とか HttpServletRequest とかあると妙に安心する

• 困ってもなんとかできそう感 • コンフィギュレーションやデプロイも想像がつく

Skinny で始めた Scala• ○ はじめやすさ • ○ わかりやすさ • 生産性

Skinny で始めた Scala• ○ はじめやすさ • ○ わかりやすさ • 生産性

コンパイル時間問題への対策• 開発時は最小限のコンパイルのみ行うようになっている • 基本、変更したものだけ差分コンパイル • ビューの変更であればアプリサーバーの再起動不要

• 今回程度のアプリでは特に大きなストレスは感じなかった

近道 - scaffolding• Rails と同じく scaffold がある • 最初は、とりあえず scaffold でソース生成して、それを弄るスタイルが捗る

• 既存 DB スキーマから CRUD 生成する reverse-scaffold もある

近道 - scaffolding• 私の場合、 1. DB 設計する 2. db:migrate してスキーマつくる $ ./skinny db:migrate 3. reverse-scaffold $ ./skinny g reverse-scaffold articles articles article 4. 生成されたソースをいじる 5. 3, 4 を繰り返す

よくやるアレコレ入ってる• Web アプリでよくやるあれやこれやが予め用意されてる • i18n 対応 • CSRF プロテクション • 監査カラム自動更新、楽観的排他制御 • OAuth モジュール :

• 何より、何も知らない Scala 素人が仕事しながらの2週間程度でそこそこ使えるアプリができたので、生産性はよいほうだと思います

Skinny で始めた Scala• ○ はじめやすさ • ○ わかりやすさ • ○ 生産性

Skinny で始めた Scala• ○ はじめやすさ • ○ わかりやすさ • ○ 生産性

今回のケースでは Skinny を選んで正解だった

まとめ• Scala 未経験者が Skinny を使って社内ナレッジ共有ツールをつくりました

• Skinny の始めやすさのおかげで Scala をはじめるキッカケになった

• フツーの Web アプリであれば Skinny はわかりやすいし生産性もよいのでオススメ

まとめ• Scala 未経験者が Skinny を使って社内ナレッジ共有ツールをつくりました

• Skinny の始めやすさのおかげで Scala をはじめるキッカケになった

• フツーの Web アプリであれば Skinny はわかりやすいし生産性もよいのでオススメ Skinny Framework 使いましょう!