このブログを検索

2015/08/23

play 1.x to ?

さいきんかるくぐぐったことをまとめておく
ほんとうにぐぐったことをだらだらとかいているだけです

playの代わりに使うライブラリについて

都内某所でplay1.Xを使っているが、もうメンテナンスだけやってる雰囲気のフレームワークだし
javaの流儀とはずれた運用やビルドが必要なのでモダンなライブラリやツールが非常に導入しにくい
という点が良くないため、他の道を探している
play2 + scala は良いと思うが幾つか心配がある
- 後方互換性が保たれた進化をしているのか微妙
- scalaいい言語だと思うけど、ビルド遅いしテンプレートファイルまでコンパイルするとか嫌だ
ぐぐったところこんなのがあるということがわかった
  • ratpack(netty base)
    非同期性に重きをおきすぎてアプリ書くという視点からのシンプルさがあまり感じられない
  • spark
    sinatraレベルでスマートな記述ができる
    servletベース
  • scalatra
  • kotlin + (kara or wasabi or spark)
ただしこれらでやっているのはplayのにおけるコントローラの部分だけなので
  • DBアクセス(hibernate使うだろうけど、ブートストラッピング的なこと)
  • マイグレーション
  • 開発時用にコード監視&ビルド
  • 依存性管理とビルド(maven? gradle? sbt?)
についてきめないといけない
mavenはたまにつかってたので依存性管理&ビルドはmavenでもいいが
xmlが冗長で嫌なのと、gradleならタスク組めるので必要なことができそうなので
gradle使って見ることにした
まずプロジェクトの作成
$ gradle init --type java-library
カレントディレクトリにbuild.gradleやgradlewを含むgradleで管理できるjava appの雛形ファイルを生成
libraryとあるけど libraryではなくてjava appとして使えるファイルを生成する
--type java や --type java-app とかはない
$ gradle init --type pom
カレントディレクトリにpom.xmlがあるmavenプロジェクトだったら、それをもとにgradleを作成
ただし会社で使うことを考えると
  • .gitignore書く
  • lombok使う
  • 部内共有ライブラリ追加 
  • インハウスmavenリポジトリ追加したい
その他もろもろ、新規アプリ作るときに書くことがあるので
雛形生成したい。まあ、テンプレートプロジェクトを用意して
「新規アプリはこのプロジェクトをコピーして作り始めてください」
でもいいレベルですが。
(あとrailsみたいなscaffoldingもやるとスクラップアプリ作るときに便利なのかな)
それでしらべたんだけど
gradle init –type おれのかんがえたさいつよの構成
みたいなことをgradle pluginで提供する方法がみあたらなかったので
yo(yeoman generator)を使ってみようとした(まだつかっていない)
yo でgenerator作るときように yo generator-generator というのがあるらしい
というところまでは調べた
ここで用事があったので数時間後べつのことをやりだした
フロントエンドまわりのことである。
ぼくフロントエンド弱い
jsレイヤもcssレイヤもhtmlマークアップも。
よくみるブログの「XXXを作ってみました」レベルの画面つくるのが
あれもこれもやり方をググりながらなので
実装がとても遅い
さくっと画面作れるようになっておきたい
しごとでありそうなパターンはSPAではないので
modernで短時間で作れてnodejsでテスト走らせられるようなもの
を書いてみたい
ためしにmulti page applicationのためのビルドを
gulp + webpack + coffee でやろうとしたがうまくいかない
やりたいことは
src/
  common/
    util.coffee // module.exports = ...
    OurSystemApiClient.coffee // module.exports = ...
    page/
      pageA.coffee // require('util')
      pageB.coffee // require('OurSystemApiClient')

public/js/
    bundle.js <- contains util.coffee, OurSystemApiClient,coffee
    pageA.js
    pageB.js
という様にビルドしたい
SPAの話はよくポストされるけど
multi page applicationのページごとのエントリポイント処理について
あまり「こういう構成にしました」という記事をみないし、
こういうことやる人いないのかなとおもっていたが
browserfy + factor-bundle というのを使えばまさしくかんがえていたのができそうだった
https://github.com/substack/factor-bundle