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.
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 に通知
• 画像ファイルアップロー...
demo
はじめての実装のおすすめ
• scaffold
または
• DB を固めてから reverse-scaffold
• 生成されたソースを弄る
• すると、そのうち慣れてくる
はじめての実装のおすすめ
• ビューテンプレートは ssp で
• 最初はまず ssp 使っとけばハマらない
• Controller は SkinnyResource を継承し
ない方式で
• のほうが最初はわかりやすい(と思う)
• exa...
はじめての実装のおすすめ
• 最初から Skinny ORM で狙ったとおりの
SQL を発行するのは難しい
• トライ&エラーを繰り返すよりも Model の
テストを書いての試行錯誤が効率的
• 複雑なクエリは無理をせず生SQLで
• Sc...
社内ナレッジ共有ツール
•某人気サービスと同じよ
うなインターフェイス
•社内事情とScalaの練習
も兼ねて自作
(2014年8月∼約2週間)
•採用したフレームワーク
Skinny Framework
•1.2 -> 1.3 -> 2.0
...
なぜ Skinny を選んだか
Scala
• Scala、はじめてみたいけど
• 環境構築めんどくさそう
• Scala のバージョンや sbt
• activator って何者・・・
• FW/ライブラリ事情がわからない
• FW いっぱいある・・・
• Play fra...
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...
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-scaff...
近道 - scaffolding
• 私の場合、
1. DB 設計する
2. db:migrate してスキーマつくる
$ ./skinny db:migrate
3. reverse-scaffold
$ ./skinny g reverse-...
よくやるアレコレ入ってる
• Web アプリでよくやるあれやこれやが予め
用意されてる
• i18n 対応
• CSRF プロテクション
• 監査カラム自動更新、楽観的排他制御
• OAuth モジュール
:
• 何より、何も知らない Scala 素人が仕事し
ながらの2週間程度でそこそこ使えるアプ
リができたので、生産性はよいほうだと思
います
Skinny で始めた Scala
• ○ はじめやすさ
• ○ わかりやすさ
• ○ 生産性
Skinny で始めた Scala
• ○ はじめやすさ
• ○ わかりやすさ
• ○ 生産性
今回のケースでは
Skinny を選んで正解だった
まとめ
• Scala 未経験者が Skinny を使って社内ナ
レッジ共有ツールをつくりました
• Skinny の始めやすさのおかげで Scala を
はじめるキッカケになった
• フツーの Web アプリであれば Skinny は
わかり...
まとめ
• Scala 未経験者が Skinny を使って社内ナ
レッジ共有ツールをつくりました
• Skinny の始めやすさのおかげで Scala を
はじめるキッカケになった
• フツーの Web アプリであれば Skinny は
わかり...
Upcoming SlideShare
Loading in …5
×

Skinny Framework で始めた Scala

6,576 views

Published on

Skinny Framework Meetup Tokyo 2
https://skinnyjp.doorkeeper.jp/events/35750

Published in: Software
  • Be the first to comment

Skinny Framework で始めた Scala

  1. 1. Skinny Framework で始めた Scala Skinny Framework Meetup Tokyo 2 2015/12/22 @roundrop
  2. 2. 自己紹介 • 山下 竜司 • (株) アットウェア • @roundrop • Facebook4J • 普段は主に Java で Web アプリ開発 • Scala は全然やっていない
  3. 3. アジェンダ • 事例紹介 • なぜ Skinny を選んだか • 実際 Skinny を使ってみてどうだったか
  4. 4. Scala先駆者インタビュー http://www.atware.co.jp/blog/2015/11/1/scala-vol2-sera
  5. 5. にちょっと出てくる
  6. 6. 社内ナレッジ共有ツール •某人気サービスと同じよ うなインターフェイス •社内事情とScalaの練習 も兼ねて自作 (2014年8月∼約2週間) •採用したフレームワーク Skinny Framework •1.2 -> 1.3 -> 2.0
  7. 7. 主な機能 • Google アカウントでのログイン • skinny-oauth2-controller を使用 • 記事の表示・投稿・編集・プレビュー • 複数のタグ付け • 新規投稿時は Typetalk に通知 • 画像ファイルアップロード • コメントの投稿 • 記事のストック • 検索 • ストックやコメントされたりのイベントで通知 • Contribution の計算・ランキング • i18n 対応
  8. 8. demo
  9. 9. はじめての実装のおすすめ • scaffold または • DB を固めてから reverse-scaffold • 生成されたソースを弄る • すると、そのうち慣れてくる
  10. 10. はじめての実装のおすすめ • ビューテンプレートは ssp で • 最初はまず ssp 使っとけばハマらない • Controller は SkinnyResource を継承し ない方式で • のほうが最初はわかりやすい(と思う) • example の CompaniesController • https://github.com/skinny-framework/skinny-framework-example/ blob/master/src/main/scala/controller/CompaniesController.scala
  11. 11. はじめての実装のおすすめ • 最初から Skinny ORM で狙ったとおりの SQL を発行するのは難しい • トライ&エラーを繰り返すよりも Model の テストを書いての試行錯誤が効率的 • 複雑なクエリは無理をせず生SQLで • ScalikeJDBC のドキュメントを読もう
  12. 12. 社内ナレッジ共有ツール •某人気サービスと同じよ うなインターフェイス •社内事情とScalaの練習 も兼ねて自作 (2014年8月∼約2週間) •採用したフレームワーク Skinny Framework •1.2 -> 1.3 -> 2.0 今では社内の情報共有インフラに定着
  13. 13. なぜ Skinny を選んだか
  14. 14. Scala • Scala、はじめてみたいけど • 環境構築めんどくさそう • Scala のバージョンや sbt • activator って何者・・・ • FW/ライブラリ事情がわからない • FW いっぱいある・・・ • Play framework が無難? • DB アクセスライブラリいっぱいある・・・
  15. 15. Scala • とりあえず普通の Web アプリがつくりた いだけなんだけど・・・ • アクターモデルとか • 非同期前提とか • Reactive とか そういうのはあとでいいので・・・
  16. 16. Scala • とりあえず普通の Web アプリがつくりた いだけなんだけど・・・ • アクターモデルとか • 非同期前提とか • Reactive とか そういうのはあとでいいので・・・ Rails みたいなフルスタックでわかりやすいのがほしい
  17. 17. Skinny Framework で始める Scala http://www.java-users.jp/?page_id=1048#R2-4
  18. 18. Skinny Framework で始める Scala   ( ゚д゚) ガタッ   /   ヾ __L¦ / ̄ ̄ ̄/_   \/   / http://www.java-users.jp/?page_id=1048#R2-4
  19. 19. 実際 Skinny を使ってみて どうだったか
  20. 20. Skinny で始めた Scala • はじめやすさ • わかりやすさ • 生産性
  21. 21. Skinny で始めた Scala • はじめやすさ • わかりやすさ • 生産性
  22. 22. 環境構築 •Java プログラマなら お馴染みのSAStruts よろしく解凍すれば すぐに使えるブラン クプロジェクト •依存ライブラリ込み 版もあり http://skinny-framework.org
  23. 23. 環境構築 • 解凍して IntelliJ IDEA に放り込めば OK
  24. 24. 環境構築 • sbt 、Scala のバージョン等もろもろ設定完了
  25. 25. • めんどくさくなかった! • Skinny が始めやすいのは本当
  26. 26. Skinny で始めた Scala • ○ はじめやすさ • わかりやすさ • 生産性
  27. 27. Skinny で始めた Scala • ○ はじめやすさ • わかりやすさ • 生産性
  28. 28. 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
  29. 29. Skinny のドキュメント • Play framework のドキュメントよりも直 感的だし読みやすい構成・内容 • サイトトップに Overview -> 詳細へリンク • 局所的でなく一定の流れのあるサンプルコー ド + コメント • 適切な順序・粒度で書かれている
  30. 30. Scala on Rails • Play と違って仕組みやメソッド等の命名が Rails ライクなので独自の世界観が少なく スッと入ってくる感じ • params とか render とか strong parameter とか • それ故、他のメンバーもすんなり開発に入っ て来れています
  31. 31. Servlet ベース • Servlet コンテナ上で動く • Filter とか HttpServletRequest とかあると 妙に安心する • 困ってもなんとかできそう感 • コンフィギュレーションやデプロイも想像が つく
  32. 32. Skinny で始めた Scala • ○ はじめやすさ • ○ わかりやすさ • 生産性
  33. 33. Skinny で始めた Scala • ○ はじめやすさ • ○ わかりやすさ • 生産性
  34. 34. コンパイル時間問題への対策 • 開発時は最小限のコンパイルのみ行うよう になっている • 基本、変更したものだけ差分コンパイル • ビューの変更であればアプリサーバーの再起 動不要 • 今回程度のアプリでは特に大きなストレスは 感じなかった
  35. 35. 近道 - scaffolding • Rails と同じく scaffold がある • 最初は、とりあえず scaffold でソース生成 して、それを弄るスタイルが捗る • 既存 DB スキーマから CRUD 生成する reverse-scaffold もある
  36. 36. 近道 - scaffolding • 私の場合、 1. DB 設計する 2. db:migrate してスキーマつくる $ ./skinny db:migrate 3. reverse-scaffold $ ./skinny g reverse-scaffold articles articles article 4. 生成されたソースをいじる 5. 3, 4 を繰り返す
  37. 37. よくやるアレコレ入ってる • Web アプリでよくやるあれやこれやが予め 用意されてる • i18n 対応 • CSRF プロテクション • 監査カラム自動更新、楽観的排他制御 • OAuth モジュール :
  38. 38. • 何より、何も知らない Scala 素人が仕事し ながらの2週間程度でそこそこ使えるアプ リができたので、生産性はよいほうだと思 います
  39. 39. Skinny で始めた Scala • ○ はじめやすさ • ○ わかりやすさ • ○ 生産性
  40. 40. Skinny で始めた Scala • ○ はじめやすさ • ○ わかりやすさ • ○ 生産性 今回のケースでは Skinny を選んで正解だった
  41. 41. まとめ • Scala 未経験者が Skinny を使って社内ナ レッジ共有ツールをつくりました • Skinny の始めやすさのおかげで Scala を はじめるキッカケになった • フツーの Web アプリであれば Skinny は わかりやすいし生産性もよいのでオススメ
  42. 42. まとめ • Scala 未経験者が Skinny を使って社内ナ レッジ共有ツールをつくりました • Skinny の始めやすさのおかげで Scala を はじめるキッカケになった • フツーの Web アプリであれば Skinny は わかりやすいし生産性もよいのでオススメ Skinny Framework 使いましょう!

×