TitaniumMobile勉強記

Web系エンジニア向けのキャリアアドバイザーやってましたが現在はフリーランスで開発含めて色々やってます。技術ネタとしてはRuby/RailsとJavaScript関連(Node.js、Titanium)あたり

Titanium Studio の設定がうまくいかないのでBoxenで環境構築するのを諦めました

以前、Boxen使ってMountain Lionの環境構築した感想と作業記録というエントリ書いた時に

Titaniumの環境構築、Genymotion・・・と細かいものは手を付けてないですが、作業の流れはこれで理解出来ましたなので、残りのアプリについてもBoxen使って設定しようかと思います

と書きましたが、

  • Titanium Studio 自体のBoxen経由でインストール→これは出来なかった
  • node.js とTitanium CLI インストール →これは簡単に出来た
  • Titanium CLI でビルド → ちょっと苦労したが出来た
  • Titanium Studio でのビルド → これは出来なかった

という感じになったのでタイトルの通り、Boxenで環境構築するのを諦めました(T_T)

すでにBoxen経由で構築していた環境を潰して、再度通常通り手作業で作業中にこのブログを書いてて、記憶をたどりながらなので、間違ってる箇所もあるかもしれませんが、やったことについてまとめておこうと思います

Titanium Studio 自体のBoxen経由でインストール

modules/people/manifests/ディレクトリ以下に、自分のGiHubのアカウント名+拡張子ppという名前、つまり、h5y1m141.ppというファイルを作り

class people::h5y1m141 {

  # homebrewでインストール
  package {
    [
      'tmux',
      'reattach-to-user-namespace',
      'tig',
    ]:
  }
  package {
    'TitaniumStudio':
      source =>"xxxxxx.dmg",
      provider => pkgdmg;
  }   

  $home     = "/Users/${::luser}"
  $src      = "${home}/src"
  $dotfiles = "${src}/dotfiles"
}  

みたいな感じにしました。dmgファイルのリンク先のパスはうろ覚えですが、そもそもTitanium Studioのdmgファイルってログイン必須だったかと思います。

BoxenでAppcのサイトでログイン→dmgファイルのダウンロードという一連の処理ができるかどうかあまり詳しく調べませんでしたがこれは結局あきらめて手動でインストールしました

node.js とTitanium CLI インストール

  • node.jsはBoxen経由でインストール済
  • npm使って Titanium CLIを通常インストールするかと思いますがこれもBoxen経由でインストールできます。具体的には前述のh5y1m141.ppに
# install some npm modules
nodejs::module { 'titanium':
  node_version => 'v0.10'
}

という記述を追記することで、Titanium CLI(必要に応じてAlloyも)をインストールできます。

Titanium CLI でビルド

ひとまず、Titanium CLI で既存のプロジェクトがbuildできるかどうか確認しました。

ターミナルで、いつものよう

titanium build --platform ios

としたら

nodenv: couldn't find any version specified for use

と怒られました。

原因が最初良くわからなかったのですが、node boxen error, nodenv: couldn't find any version specified for useという情報を を読んでなんとなく理解出来ました。

Boxen経由でnode.jsをインストールした時に、複数のnode.jsがインストールされているので、どのバージョンを利用するか指定しないといけないみたいなので、

cd ~/myProject
nodenv local v0.10

のようにして、Titaniumのプロジェクトディレクトリ配下でどのnode.jsを利用するか設定ファイルを作った上で再度buildすればOKでした

Titanium Studio でのビルド

これが結局出来ませんでした。色々試していたので、記憶が曖昧ですが、以下の様な状況でした

  • Titanium Studioは起動する
  • メニューから、Run を実行すると「nodenv: couldn't find any version specified for use」が出る。Titanium Studioの環境設定からBoxen経由でインストールしたnode.jsのパスを指定するが現象かわらず
  • Titanium Studioから、Titanium CLI のインストールを促すポップアップが何度も出る(Boxen経由でインストール済でした)
  • Boxen経由でインストールしたパスを参照するようにTitanium Studioの設定変更できないか探してみたがこれがわからず断念
  • Boxen経由でインストールしたTitanium CLI もあるが、それと別にTitanium Studio上でCLIインストールすることを仕方なく実施。そうすると 「Failed to get value of npm config key prefix」となる
  • Boxen使ってるから、npm config get prefixすると「/opt/boxen/nodenv/shims」になる。Titanium Studioはここじゃない所(たぶん /usr/local/etcかな)を参照するからそれが原因っぽい気がした。 sudo npm set prefix '/usr/local/etc' --global とすればたぶん直るだろうけど、そうなると今度はBoxenで npmなモジュールが入れられなくなりそうな気がして結局断念

1. ~/.npmrcを作成 2. .npmrcに、prefix=/opt/boxen/nodenv/shimsという一行を記述

最後に

勉強会とかで Titanium Studio使って教える機会あることを考えると、Titanium Studio も利用できないと個人的にちょっと致命的なので諦めましたが、Titanium CLI しか使わない人だったら、Boxen 経由で 環境構築するのはアリなのかと思います