Skinny Framework で始めた Scala
-
Upload
ryuji-yamashita -
Category
Software
-
view
4.431 -
download
0
Transcript of Skinny Framework で始めた Scala
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 対応
はじめての実装のおすすめ• ビューテンプレートは 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
今では社内の情報共有インフラに定着
Scala• Scala、はじめてみたいけど • 環境構築めんどくさそう • Scala のバージョンや sbt • activator って何者・・・
• FW/ライブラリ事情がわからない • FW いっぱいある・・・ • Play framework が無難?
• DB アクセスライブラリいっぱいある・・・
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 のドキュメント• ドキュメント • 公式 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 とかあると妙に安心する
• 困ってもなんとかできそう感 • コンフィギュレーションやデプロイも想像がつく
コンパイル時間問題への対策• 開発時は最小限のコンパイルのみ行うようになっている • 基本、変更したものだけ差分コンパイル • ビューの変更であればアプリサーバーの再起動不要
• 今回程度のアプリでは特に大きなストレスは感じなかった
近道 - 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 未経験者が Skinny を使って社内ナレッジ共有ツールをつくりました
• Skinny の始めやすさのおかげで Scala をはじめるキッカケになった
• フツーの Web アプリであれば Skinny はわかりやすいし生産性もよいのでオススメ