このブログを検索

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

2015/06/21

Kotlin M12 でCLIからビルド

これを読んでCLIでkotlinコードのビルドを試みた
http://qiita.com/saba1024/items/d525fb6c89d1180b409a
現在の最新のKotlinのバージョンは
Kotlin Compiler version 0.12.200
を使ってるので上に書いたQiitaの記事や、別のサイト
で挙げられているkotlincのオプションがなくなっていた。
0.12.200 では kotlincに -src, -output, -jar などのオプションは無い模様。
さっきのQiitaの記事の焼き直しになるが
具体的にやったことをメモしておく
環境
Mac OSX yosemite 10.10.3
kotlin M12のダウンロード
ここからkotlinをダウンロードした
https://github.com/JetBrains/kotlin/releases/tag/build-0.12.200
PATHに追加
Qiitaの例と同じく
/opt/kotlin に配置した
/opt/kotlin/bin を PATHに追加
(僕はzshを使っているので~/.zshenvの path=( ) に追加してごにょごにょしているが
macにはpath_helperというのがあるのでそれ使うのがいけてるのかな? )
ビルド対象のソース
//helloworld.kt
fun main(args : Array<String>) {
  println("Hello World!")
}
もしくはこれでもOKだ
fun main(args : Array<String>) = println("Hello World!")
ビルド
% cd sampe-project/
% kotlinc helloworld.kt
これだけ。
kotlincはシェルスクリプトになっていて、中ではkotlinc-jvmを実行するようになっていた。(見難いのでこの記事ではダブルクォートを削った)
#/bin/bash --posix
$(dirname $(which $0))/kotlinc-jvm "$@"
ビルドすると2つのクラスファイルが生成されていた。
なぜかjavapが文字化けして読みにくかったので中は詳しくみていない。
_DefaultPackage$helloworld$01be4776.class
_DefaultPackage.class
実行
% java -cp .:/opt/kotlinc/lib/kotlin-runtime.jar _DefaultPackage
Hello World!
感想(というほどでもないけど)
もとの記事でも近い事が書かれていたけど
scalaと比べると better java でエコシステムから何から java を置き換えて
新しい世界を提供するぜ!という感じがそこまでない。
実際のプロジェクトのビルドはgradleでやろうかと思っているけど
antとかmavenでもできるっぽい(やってないけど)

2015/03/10

first commit

[#1] first commit

% blogger init
Initialized empty blogger in http://tomlla.blogspot.jp/