読者です 読者をやめる 読者になる 読者になる

imthinker::net

ふらふらうぇぶろぐ

Python の virtualenv で作る Titanium 用仮想環境

Titanium Mobile JavaScript Alloy Python

Titanium CLI や Alloy は全て node.js を基盤として作られています。主観では Titanium 開発者は Mac を使っている人が多く、 Mac で node.js の環境を整えるのに Homebrew を使っている人も多いと勝手に思っています。

Homebrew は非常に使い勝手が良いのですが、様々なソフトウェアやライブラリを Homebrew でインストールして環境を整え、ふと、

brew update && brew upgrade

をやったときに思いがけず node.js がバージョンアップされてしまうことがあります。 node.js を基盤に作られたソフトウェアは node.js のバージョンに依存していることが多く、 Titanium CLI や Alloy もその例に漏れません。つまりは動かなくなってしまいます。今回は node.js の管理を Python の virtualenv を使って行い、想定したシーンに合わせて node.js 環境を切り替える方法を紹介します。

Python と virtualenv

Python は言わずもがな有名な LL 言語です。日本ではよく Ruby と比較されることがありますが、それはさておいて、簡潔な記法と幅広い用途に使える汎用性から世界的に人気のあるプログラミング言語です。

# coding: utf-8

from __future__ import print_function

def hello(name):
    print(u"Hello! " + name)

if __name__ == "__main__":
    hello(u"Titanium")  # Hello! Titanium

OS X Mountain Lion を使っているのであれば、 Python 2.7.2 がインストールされていると思います。 Python には easy_install や pip というパッケージ管理の仕組みが用意されており、これらを使うとモジュールを追加したり、管理したりすることを簡単に行えます。

Ruby には gem があり、これを Bundler でさらにラップすることでアプリケーションごとのモジュール管理を簡単にしていますが、 Python には virtualenv という Python の仮想実行環境を作るための仕組みがあり、これを使うと必要に応じてクリーンな Python 実行環境を構築することができます。

f:id:RyuGoo:20130406192333p:plain

Mountain Lion の Python には easy_install のみインストールされているので、先に pip をインストールしてから virtualenv をインストールします。

sudo easy_install -U pip
sudo pip install -U virtualenv virtualenvwrapper

virtualenv と virtualenvwrapper をインストールした後は、 .bashrc.bash_profile.profile などに

# virtualenv
export WORKON_HOME=$HOME/.virtualenvs
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python
source `which virtualenvwrapper.sh`

を追記します。これで準備は完了で、端末を立ち上げ直すなどして virtualenv --version が動作するか確かめてください。

仮想環境を作る

次に mkvirtualenv を使って仮想環境を作ります。ここでは titanium という名前で仮想環境を作ります。

mkvirtualenv titanium

これだけです。仮想環境の作成に成功すると、 workon というコマンドで仮想環境に入れるようになります。

workon titanium

仮想環境に入ると端末の行頭に仮想環境の名前が表示されるようになります。仮想環境から抜け出すには deactivate というコマンドを使います。

/Users/ryugoo% workon titanium
(titanium)/Users/ryugoo% deactivate
/Users/ryugoo%

nodeenv で Titanium 用の仮想環境を作る

titanium 仮想環境を作ったら、これに入ります。仮想環境では既に easy_install も pip も使える状態になっているので、 pip を使って nodeenv パッケージをインストールします。 nodeenv は virtualenv と連携して node.js 用の仮想環境を作ることができるミドルウェアです。

pip install -U nodeenv

sudo は付けていません。これは .bashrc などに追記した内容で仮想環境の作成先をユーザーディレクトリの .virtualenvs に設定しているからです。もしも仮想環境の作成先を sudo が必要な場所に設定したのであれば、 pip も同様に必要になります。 nodeenv のインストールに成功すると nodeenv コマンドが使えるようになります。もしもコマンドが見つからなければ端末にログインしなおしたり、 exec $SHELL -l などを使ってください。

nodeenv --version

nodeenv は今現在入っている仮想環境に対して node.js の環境を構築することができます。環境を構築するときには node.js のバージョンを指定することも可能です。ここでは node.js 0.8.22 を仮想環境 titanium に登録してみます。

nodeenv -p -n 0.8.22

上のコマンドを実行すると指定したバージョンの node.js のインストールが始まります。ソースからビルドするので時間がかかります。まったりと待ちましょう。インストールが終わると node コマンドと npm コマンドが使えるようになっているはずです。

node -v  # v0.8.22
npm -v  # 1.2.14

あとは npm を使って Titanium CLI や Alloy をインストールすれば良いわけですね。

npm -g install titanium
npm -g install alloy

Titanium ベータ用の環境を作る

virtualenv を使って node.js の環境を構築するメリットは Titanium CLI や Alloy のベータ版環境を簡単に構築できるところにあります。先日も Titanium 3.1.0 のベータ版が登場し、インストール方法が公開されましたが安定版との排他インストールが必要でした。 virtualenv と nodeenv を使えば簡単にベータ版用の環境を作成することができます。

mkvirtualenv titanium_beta
workon titanium_beta
pip install -U nodeenv
nodeenv -p -n 0.10.3
npm install -g alloy@1.1.0-beta
npm install -g titanium@3.1.0-beta

あとは titaniumtitanium_beta 仮想環境を workon で往き来すれば、簡単に安定版やベータ版を切り替えることが可能です。

CODESTRONG!