TitaniumのCLI環境はそのままにしながらAppceleratorStudioをインストール


## 目的
### **[NodeBrew](https://github.com/hokaccha/nodebrew)でNode.jsを管理したままAppceleratorStudioを利用したい**

<blockquote class="twitter-tweet" lang="ja"><p lang="ja" dir="ltr">今のAppceleratorStudio4.4とNodeBrew、Zsh環境で実践してみた。後でまとめよう。<a href="https://twitter.com/hashtag/titaniumjp?src=hash">#titaniumjp</a> を使ってくならnvmやenv系は使うだろうから意識せずに使えるようになってほしいものだけど。&#10;<a href="https://t.co/joTH6ENWQx">https://t.co/joTH6ENWQx</a></p>&mdash; Opera (@opera627) <a href="https://twitter.com/opera627/status/682168183986372610">2015, 12月 30</a></blockquote>

普通にdmg形式でインストールしようとすると、
Node.jsとnodemoduleのappceleratorがインストーラに認識されないので、
普通にNode.jsとappcコマンドが/usr/local/配下にインストールされてしまいます

このままではNode.jsが２重管理になってしまうので気持ち悪いです
通常操作するターミナルではユーザディレクトリ以下のNode.jsですので、そこは一致させておきたいところ

## 環境
Mac OS X Yosemite (10.10.5)
Node (0.12.1)
NodeBrew (0.9.2)
PATH設定は~/.zshrc

AppceleratorStudio (4.4.0)

## インストーラにNode.jsを認識させる

インストーラーはどこを見てNodeが入っていないと判断するのでしょうか？
とりあえずググります
同じようなことをしている先人はやはりいらっしゃるようです

umi-uyuraさんの
[Appcelerator CLIと、Appcelerator Studioを（無理やり）インストールした](http://umi-uyura.hatenablog.com/entry/2015/06/08/214857)

こちらではndenvとanyenv環境で、
TitaniumStudioがAppceleratorStudioになってから
２〜３ヶ月といった位の時期のバージョンをインストールする記事みたいです

対してこちらは、NodeBrew環境で
現在（16/1/3）最新バージョンの4.4.0をインストールします

認識される配置場所は以下のようになります

- [usr]
    - [local]
		- [bin]
			+ node
			+ npm
			+ appc
			+ appcelerator
		- [lib]
			- [node_modules]
				+ [npm]
				+ [appcelerator]

この配置にするには、

```Bash
# モジュール配置ディレクトリを作成
$ mkdir -p /usr/local/lib/node_modules

$ export distbinpath=/usr/local/bin
$ export distlibpath=/usr/local/lib/node_modules

# シンボリックリンクを貼ってインストーラに認識させる
$ ln -is $HOME/.nodebrew/current/bin/npm $distbinpath
$ ln -is $HOME/.nodebrew/current/bin/node $distbinpath
$ ln -is $HOME/.nodebrew/current/bin/appc $distbinpath
$ ln -is $HOME/.nodebrew/current/bin/appcelerator $distbinpath

# node_modules配下のモジュールはディレクトリなのでまるごとリンクを貼る
$ ln -Fis $HOME/.nodebrew/current/lib/node_modules/npm $distlibpath
$ ln -Fis $HOME/.nodebrew/current/lib/node_modules/appcelerator $distlibpath

# 動作チェック
$ $distbinpath/node -v

```

終わったらインストーラーを起動してみましょう
インストールで認識されると思います
ここまでで、インストールだけは終了です

## まだ終わっていない...
私の場合はこれで終わりではありませんでした

TitaniumStudioの時は起動時にログイン認証などを行います
その時点で何かあるだろうなと思っていました

起動したら、「Validating...」とか言い始めて
待ってたら管理者権限を要求してきました

これは...
と思いながらとりあえずパス通して起動までいきました

そしてAppceleratorStudioのメニューからターミナルを表示して

```
# StudioのターミナルでのPATHからバージョンを確認
$ node -v
```

と打ったらなんと、バージョンが0.12.7に上がっている！？

```
$ which node
```

と打つと、/usr/local/bin/nodeとなっており、シンボリックリンク先じゃない
そう、nodeの上書きをされていました

その後、シンボリックリンクを貼り直してみても再起動でまた上書きされてしまうなど、
試行錯誤していました

じゃあ、要求してるバージョンてどこ基準なの？って気になって
AppceleratorStudio4.4.0の[ReleaseNotes](http://docs.appcelerator.com/platform/latest/#!/guide/Studio_Release_Notes)に

> Update Studio to check for minimum Node.js version 0.12.7 and will install version 4.1.0 on clean installs

と書かれており、これか！と

StudioのNode.js最小バージョンは0.12.7に変更され
チェックによりインストールされるが、
Node.js自体がクリーンインストールの場合は4.1.0となる

ってことだと思うけど、上書く場合は0.12.7をいれるとは書いてない...
そもそもバージョンを分岐させる意味とは...


最終的には、NodeBrewでv0.12.7を新規でインストールし直しました

```Bash
$ nodebrew install-binary v0.12.7
$ nodebrew use v0.12.7
$ npm install -g appcelerator
# シンボリックリンクにはバージョンに関するパスは混じっていないので貼り直しは不要
```

この状態で再起動すると、
バリデーションも問題なかったらしく、そのまま起動され、
ターミナルでもバージョンは一致するようになりました

## 所感

まさかインストール時に問題ないのに起動時に新しいNodeがインストールされるとは思いませんでした

というか、AppceleratorStudioのターミナルの$SHELL変数はZSHなのに
なぜ設定ファイルを読まないのか...
起動している時のバリデーションのnode参照パスがどうなってるか気になります

それと、作業時にはtitanium-code-processorのシンボリックリンクも貼っていたのですが、
Nodeのバージョン変えてから無くても問題ないような気がしてインストールしない状態でいましたが、
問題なさそうな気配がしています
GUIの必須インストール系の画面も出てこないので、気にしないことにします

それと、appceleratorをnpmで入れると、

```
$ npm list -g

npm ERR! invalid: chalk@0.5.0 /Users/naoya/.nodebrew/node/v0.12.7/lib/node_modules/appcelerator/node_modules/chalk
```

した時に[エラー](https://community.appcelerator.com/topic/4110/sdk-5-1-0-ga-and-studio-4-4-0-ga-now-available/20)が出てきてきもいですがおそらくこれは自分のせいではないような気がします（依存解決の指定先が古い？）

仕事マシンは低スペック過ぎてIDEを使う気すら起きずにSublimeText3を使っていました
というかあの頃はTitaniumStudioだったので、ti,alloyとかもうちょっと面倒そう

今回、いい加減IDE触っておこうということで、プライベートのマシンで試してみました
いやー、ブレイクポイントってすばらしい...
ログデバッグで大分頑張ってたので...

まあ、SublimeTextも大分慣れるといいんですけどね、マルチカーソルとか気持ちいいので
今後の基本はSublimeText＆iTerm2でコーディング・ビルド進めて、
AppceleratorStudioではデバッグという感じで場面ごとに使い分けていきたいですね

以上です、お疲れ様でした！