Node.js史上最高のIDEといううわさのCloud9を
Macでつかいたくなったので、インストールしてみた。

以下、結構はまったので、インストールメモ。

一番最初に大事なことを書いておきます。
はまったのは、node.jsのバージョン

「You should use 0.6.x, not 0.8.2. Cloud9 isn't compatible with 0.8 yet.」
引用もと:https://github.com/ajaxorg/cloud9/issues/1900

つまり、Cloud9はまだ、node.jsの0.8.xに対応していない!

Macportsだと、0.8.3がインストールされてしまうのですが、
このままだとCloud9はインストールすらままならないです。

というわけで、まず、node.jsの0.6.20をインストールすることにします。

node.jsのバージョン管理ツールは
nvmと
naveと2種類あります。

どちらでも好みのものをつかってよいとおもいますが、
自分は、naveを使いました。


$ git clone git://github.com/isaacs/nave.git
$ cd ~/nave
$ ./nave.sh install 0.6.20

しばらく時間がかかりますが、node.jsのバージョン0.6.20がインストールされます。

$ cd ~/nave
$ ./nave.sh use 0.6.20

0.6.20を使うように指定します。

つづいて、Cloud9をインストールします。
githubからもってきます。

$ git clone git://github.com/ajaxorg/cloud9.git
$ cd ~/cloud9

naveでnode.jsのバージョン0.6.20の環境でnpmをつかって必要なモジュールをインストールします。

$ cd ~/cloud9
$ npm install

だいたい必要なものをインストールしてくれるのですが、
依存関係が完全ではないらしく、いくつかインストールされないモジュールがあります。
以下、手動でインストール

が、しかし、npmでみつけてくれないモジュールが1つ・・・
vfs-architectをうまくみつけてくれないです。

しょうがないので、githubからもってきます。

$ git clone https://github.com/c9/vfs-architect.git
$ cd ~/cloud9
$ npm install ../vfs-architect

上記、で無事vfs-architextはインストール
以下たらないモジュールのインストール

$ cd ~/cloud9
$ npm install jsDAV
$ npm install socket.io
$ npm install asyncjs
$ npm install vfs-nodefs-adapter
$ npm install v8debug
$ npm install amd-loader
$ npm install async
$ npm install sourcemint-loader-js
$ npm install ace
$ npm install treehugger

上記で多分全部たらないものはいれたはず・・

そしてcloud9の起動!

$ cd ~/cloud9
$ ./bin/cloud9.sh
make: Nothing to be done for `update'.
OSX
connect plugin start
Connect server listening at http://localhost:3131
MINT /^\/static\/bundles\/helloworld(?:.js)?(\/.*)?$/ /Users/sugu/GitClone/cloud9/configs/../plugins-client/ext.helloworld
info - socket.io started
IDE SERVER PLUGIN: auth
IDE SERVER PLUGIN: git
IDE SERVER PLUGIN: gittools
IDE SERVER PLUGIN: hg
IDE SERVER PLUGIN: npm
IDE SERVER PLUGIN: search
IDE SERVER PLUGIN: revisions
IDE SERVER PLUGIN: settings
IDE SERVER PLUGIN: shell
IDE SERVER PLUGIN: state
IDE SERVER PLUGIN: watcher
IDE SERVER PLUGIN: node-runtime
IDE SERVER PLUGIN: npm-runtime
IDE SERVER PLUGIN: python-runtime
IDE SERVER PLUGIN: apache-runtime
IDE SERVER PLUGIN: ruby-runtime
IDE SERVER PLUGIN: php-runtime
Started '/Users/sugu/GitClone/cloud9/configs/default'!
IDE server initialized. Listening on localhost:3131

localhostのポート3131を待受ポートとして起動しました。

おもむろにSafariで
http://localhost:3131
にアクセスする!

渋谷で働くソーシャルアプリエンジニアのブログ-cloud9

ブラウザ越しに動いているとは思えない、インターフェースです。

ただ、自分のなかでは、JavaScriptのIDEでいけてるのは
WebStormだとおもっているので、
使い勝手を今後比較してみます。
今年もPHP Matsuriにいってきました。
昨年も参加してみて、Cake、Symfony、Lithiumの開発者の方の話をきくことが
できて感動したのですが、今年も刺激を受けるために参加しました。

| 今年の印象


このBGMなくして、今年のPHP Matsuriは語れません。
何の前触れも無く、ながれるこのBGMを何度きいたことでしょう・・・・

今年も夜のゲーム大会が・・・。
何故か夜中の3時くらいに、巨大スクリーンでAngryBirdsをやる自分。
いや、ねむかったんで、息抜きに・・・

と、前置きは置いておいて。

昨年、Lithiumの開発者Nateの話をきいて、猛烈にLithiumに興味をもったのですが、
今年は、Lithiumのワークショップに参加することができました。

なんと、Lithium開発者の@gwoo(ギャレットさん)の隣という席配置。
詰まっていたら、話しかけてくれる心遣い!やさしかったです。

他の方のBlogを読めばわかりますが、
今年のPHP Matsuriはギャレットさんのノリに巻き込まれた感じです。
いや、とっても楽しかったって意味ですが。

Lithiumのセッションの話をきいて、ふと、今年つくるもの決めてなかったけど
そうだ
JenkinsとLithiumのプラグインをなんかつくれないだろうか。
と、夜中に思い立つという、去年の反省が活かしきれていない
スロースタートでした。

PHP Matsuriなのに、Javaと格闘している自分・・・・

2日間で結局JenkinsのPluginのチュートリアル通りまでしか
動かなかった・・・orz

| 今年できたこと

でも、今年は去年自分ができなかったこととして、
発表に参加するということができました。
(最終のLTでなく闇phpmatsuriの方ですが。)



いや、夜中なんで、皆さんの発表面白すぎでした。
闇PHP Matsuriを企画してくださったvoyagegroupさんに感謝です。
voyagegroupさんを持ち上げたわけではないですが、
「Tuningathonにいってみた」といったLTをさせてもらいました。
まぁ、時間がたらず、最後の結論を言う前にNinjaにきられたわけですが・・・

あと、テストワークショップも参加したのですが、
そこで教わったことを社内に持ち帰って、
自分が講師で、TDD勉強会ができたのも
良かった点です。

テストワークショップに参加してみて、
やっぱりプログラムは座学ではなく、体験してみないと
その本質はわからないと思ったからです。


| 振り返って

やっぱり、最後の皆さんのLTをきくと、
自分もなにがしかのものを発表できるくらいまで、
プログラムして、LTするべきだったな、
と思います。

発表してなんぼ何だと思います。

今年は大阪ってことで、最後の最後までいくかどうか
悩みましたが、行ってよかったです。

非日常がやっぱりPHP Matsuriにはあって、
その時間をみんなと過ごすだけでも刺激になりました。

とはいえ、2回参加してるのに、まだ最後の発表ができていないのは
悔しいので、来年こそは発表するぞ、と
1年後のために、ここに書いておきます。

来年こそは!
Macでいろいろ試したいミドルウェアをいれてきたが、
仕事でつかう環境は、Linuxなので、検証用に
ローカルにVMwareでCentOSの環境をつくることにした。
VMware Fusionはもっていたが、いちいち、GUI画面が立ち上がるのが
うっとしかったので、バックグランド実行できないかとおもって調べてたら、
できたので、メモ。

まずは、.vmxファイルに次の記述を追加

msg.autoAnswer = "TRUE"
signal.suspendOnHUP = "TRUE"
signal.powerOffOnTERM = "TRUE"

参考:http://communities.vmware.com/docs/DOC-6263

つづいて、起動スクリプトの作成
Macのデスクトップ上に
CentosBoot.commandというファイル名以下の内容を記述して保存

#!/bin/bash

/Library/Application\ Support/VMware\ Fusion/vmrun start /path/to/VMname.vmx nogui

参考:http://macosx.seesaa.net/article/115038173.html

CentosBoot.commandのアイコンをダブルクリックすると起動するようになる。

これで、TerminalでLinuxサーバに接続して操作できるようになった!
ログを効率よく管理ツールを探していたが、logstashなるものをみつけた。

http://code.google.com/p/logstash/

試しにインストール。
インストール手順のメモ。

centos5.5
のserver packageのみの状態からインストール。
各種開発ツールが入ってなかったのでインストールした
以下、インストールしたパッケージ(依存関係で勝手に入るのを除く)

# yum install gcc
# yum install gcc-c++
# yum install java-1.6.0-openjdk
# yum rubygems

rubyは1.8.6以降が必要だったので
RPM Searchから拾ってきてインストール

ruby-1.8.6.383-6.el5.kb.x86_64.rpm
ruby-devel-1.8.6.383-6.el5.kb.x86_64.rpm
ruby-irb-1.8.6.383-6.el5.kb.x86_64.rpm
ruby-libs-1.8.6.383-6.el5.kb.x86_64.rpm
ruby-rdoc-1.8.6.383-6.el5.kb.x86_64.rpm

準備がととのったのでlogstashに必要なもののインストール
インストールドキュメントにもあるが、elasticsearchをいれる

ES_PACKAGE=elasticsearch-0.12.1.zip
ES_DIR=${ES_PACKAGE%%.zip}
if [ ! -d "$ES_DIR" ] ; then
wget --no-check-certificate http://github.com/downloads/elasticsearch/elasticsearch/$ES_PACKAGE
unzip $ES_PACKAGE
fi

つづいて
logstash本体

# gem install logstash

がrackのバージョンがあわなくてうまくうごかない
http://code.google.com/p/logstash/issues/detail?id=5
を参考にrackのバージョンの入れ替え

# gem uninstall rack
# gem install rack --version 1.1.0

とりあえず、インストールまで、
実際の、configは次回に。
11/25に、「新人マネージャ研修」なるものを会社にて受講させていただいた。

あっ、ちなみに、私、10月からマネージャになってました。はい。

「最低1つ覚えっていってほしい」

の主旨があったとおり、
自分の脳内にリピートされるようになった言葉がひとつ

「それは"組織の成果"に結びつくか?」

という問いでした。

仕事をこなすうえで、
以前より、判断に迷うことが増えました。

決定がおくれることにメリットはありません。

迷ったとき、何を幹として自分は判断したらいいか。
その答えとして、

「それは"組織の成果"に結びつくか?」

を常に自分に問いていこう、
そう決心することができました。

どうしても、決定が遅れがちですが、
決定しなければ、すすみません。

いたずらに遅らせるのではなく、
「遅らせることを決定する」
くらいの決断ができるよう、
瞬発力を高めていきます。

ほかにも様々なことを学びましたが、
1つ、ここに上げて、実践していきます。