seratch's weblog in Japanese

About Scala, Java and Ruby programming in Japaense. If you need English information, go to http://blog.seratch.net/

pvm の紹介とその背景について #play_ja

この記事は Play framework 2.x Java and 1.x Advent Calendar 2013 の 2 日目です。元々 12/3 の予定でしたが 12/2 が空いたままで存亡の危機だったので、一日スライドしました。

http://www.adventar.org/calendars/104

pvm とは

今回は pvm(Play Version Manager)について紹介したいと思います。

https://github.com/kaiinkinen/pvm

pvm は nvm の仕様を踏襲した、複数の Play Framework のバージョンを管理するためのツールです。bash で書かれたシンプルなスクリプトで pvm.sh を .bash_profile などで読みこんで使います。

README では $HOME/utils/pvm に git clone する例が紹介されていますが nvm 的にするなら $HOME/.pvm でもいいかもしれません。実際 $HOME/.pvm で運用しても特に支障はないのですが、単に作者の好みですかね。

git clone git://github.com/kaiinkinen/pvm.git .pvm

使い方は一目瞭然なので使い方の解説は省略します。

$ pvm

Play Version Manager

Usage:
    pvm help                    Show this message
    pvm install <version>       Download and install a <version>
    pvm uninstall <version>     Uninstall a version
    pvm use <version>           Modify PATH to use <version>
    pvm run <version> [<args>]  Run <version> with <args> as arguments
    pvm ls                      List installed versions
    pvm ls <version>            List versions matching a given description
    pvm deactivate              Undo effects of PVM on current shell
    pvm alias [<pattern>]       Show all aliases beginning with <pattern>
    pvm alias <name> <version>  Set an alias named <name> pointing to <version>
    pvm unalias <name>          Deletes the alias named <name>
    pvm clean                   Removes non-installed versions from the cache
    pvm clear-cache             Deletes all cached zip files

Example:
    pvm install 1.2.4           Install a specific version number
    pvm use 1.2                 Use the latest available 1.2.x release
    pvm alias default 1.2.4     Auto use the latest installed 1.2 version

bash スクリプトなので Windows では使うことが出来ません。Windows で Play を使っている方、ぜひ Windows 版をつくりましょう!

そもそも必要なの?

「Play って sbt ベースだから play の sbt プラグインのバージョンを各プロジェクトで管理するだけじゃん。こんなの必要なの?」と思われた方、Play 新参者なのがバレてますよ!!!

確かに Play2 にだけ関わっている方であれば不要です。しかし、Play には Plain Old Play Framework ともいうべき 1.2.x がまだ現存しており、かつ世界中でそれなりに稼働し続けているという現実を忘れてはなりません。

http://www.playframework.com/download

こちらは私の開発マシンにインストールされている Play のバージョンです。

$ pvm ls
Available:
     1.2.5       1.2.6       2.1.3       2.2.1
   1.2.5.3       1.2.7       2.1.4

Aliases:
default -> 1.2.7

Current version:
current -> 1.2.7

特に 1.2.5 と 1.2.6 以降は cookie session の互換性がなかったりと断絶があるので 1.2.5 と最新を両方運用しているというケースはまだまだありそうです。Play1 のリリース管理においても 1.2.5 だけは特別扱いしていて 1.2.5.3 というバージョンが出ていたりします。

また 1.3 に向けた開発も続いています。

http://play.lighthouseapp.com/projects/57987/milestones/106971-13

http://play.lighthouseapp.com/projects/57987-play-framework/tickets

Play1 の運用に関わるならば、これからも pvm を利用することはありそうです。

全国の Play ユーザの皆さんへ

Advent Calendar がちょっと寂しい状況になっていますね。ちょっとしたネタでもよいと思うのでぜひお気軽にご参加ください。

Play framework 2.x Java and 1.x Advent Calendar 2013

http://www.adventar.org/calendars/104

Play framework 2.x Scala Advent Calendar 2013

http://www.adventar.org/calendars/114

FYI: