それでもNode.jsをMacアプリ化するをやる
おはようございます。次男は長男に比べると、よく食べます。そして、食べてないほうが良い物まで食べようとします。そんな訳で、先週は次男のスーパーボール食べちゃった事件が起きました。しかし、結局はかじって、ボールを分割しただけのようでした。kjunichiです。
はじめに
Atom Shellやnode-webkit使えば、アプリ化を自分で1からする必要はないと思うが、 無理やり上げるなら、node-webclで作ったOpenGL表示をするスクリプトなどが、 多少アプリ化するとかっこよさそうだし、現状node-ffiが0.11系に非対応なので、 Atom Shellや最新のnode-webkitで動かすことは出来ないので意味がありそう。アプリ化するのに必要な事
- アプリケーションバンドルに関しての知識
- アプリケーションバンドル内に配置したファイルへのパスの取得方法
- nodeコマンドのフルパスの取得
アプリケーションバンドル
Hoge.appという名のディレクトリ配下に特定のフォルダ、ファイルを配置することで、OSXにアプリケーションを認識され、Finderに表示されたアイコンをダブルクリックすることで、起動が可能となる。
アプリケーションバンドルの雛形を作る
以下のコマンドでアプリケーションバンドルに必要なフォルダやファイルを作成できる。
echo ""|osacompile -o foo.app
アプリケーションバンドル内のリソースへのアクセス方法
AppleScriptの場合や、おそらくネイティブのCocoaアプリならそのためのAPIが用意されている模様。しかし、今回のNode.jsの場合、これらのAPIを使えない。困った。
シェルスクリプト自身のパス取得が可能
今回の作業で初めて知ったが、シェルスクリプトで自分自身のパスを取得することが可能だった。
そこで、この自分自身のパスを元に、jsファイルにアクセスする。
# ${0} の dirname を取得
cwd=`dirname "${0}"`
# ${0} が 相対パスの場合は cd して pwd を取得
expr "${0}" : "/.*" > /dev/null || cwd=`(cd "${cwd}" && pwd)`
jsPath="$cwd/../Resources/Scripts/test.js"
node_modulesの配置
nodeコマンドに指定する.jsファイルの格納されたフォルダ配下にnode_modulesフォルダを置けば、アクセス可能となる。
nodeコマンドのパスの取得
bash -lで.bash_profileが読み込まれるので、.bash_profileにnodebrewやnvmの設定を記述していれば、これらのバージョン管理システムに設定したnodeが使用される
bash -l -c "node hoge.js"
Link
まとめ
タイトルは、それでもNode.jsをやる by Yosuke Furukawaからインスパイヤーされリスペクトしてみました。 実は、彼と私は共通点があり、富士ゼロックス、DeNAを受けた事、違いは、私は両方落ちたことw。
トラックバック
この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/11179/60199782
この記事へのトラックバック一覧です: それでもNode.jsをMacアプリ化するをやる:
コメント