2012年6月24日日曜日

新しい環境からHerokuの既存アプリを更新

普段はあまり更新しないTwitter botがあるのだけど、久々に更新しようとしたところ今メインで使っているMBAから更新したことがないので環境構築からスタートする。 Herokuでcronがセットしてあるbotなので、Heroku環境構築。

まず、gitをインストール
$ brew install git
以下省略

いろいろ調べると、rvmを使うとrubyのバージョンが管理できて便利とのことなのでインストールする。
$ bash -s stable < <(curl -s 
https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer)

.bash_profileにパスを通す。
[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm"


これでrvmが使える。インストールしてみよう。
$ rvm install 1.9.3-p125
Fetching yaml-0.1.4.tar.gz to /Users/****/.rvm/archives
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  460k  100  460k    0     0   124k      0  0:00:03  0:00:03 --:--:--  141k
Extracting yaml-0.1.4.tar.gz to /Users/****/.rvm/src
Configuring yaml in /Users/****/.rvm/src/yaml-0.1.4.
Compiling yaml in /Users/****/.rvm/src/yaml-0.1.4.
Installing yaml to /Users/****/.rvm/usr
Installing Ruby from source to: /Users/****/.rvm/rubies/ruby-1.9.3-p125, this may take a while depending on your cpu(s)...

ruby-1.9.3-p125 - #fetching 
ruby-1.9.3-p125 - #downloading ruby-1.9.3-p125, this may take a while depending on your connection...
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 9505k  100 9505k    0     0  1459k      0  0:00:06  0:00:06 --:--:-- 1630k
ruby-1.9.3-p125 - #extracting ruby-1.9.3-p125 to /Users/****/.rvm/src/ruby-1.9.3-p125
ruby-1.9.3-p125 - #extracted to /Users/****/.rvm/src/ruby-1.9.3-p125
ruby-1.9.3-p125 - #configuring 
ruby-1.9.3-p125 - #compiling 
ruby-1.9.3-p125 - #installing 
Retrieving rubygems-1.8.24
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  371k  100  371k    0     0   493k      0 --:--:-- --:--:-- --:--:-- 1874k
Extracting rubygems-1.8.24 ...
Removing old Rubygems files...
Installing rubygems-1.8.24 for ruby-1.9.3-p125 ...
Installation of rubygems completed successfully.
ruby-1.9.3-p125 - adjusting #shebangs for (gem irb erb ri rdoc testrb rake).
ruby-1.9.3-p125 - #importing default gemsets (/Users/****/.rvm/gemsets/)
Install of ruby-1.9.3-p125 - #complete 

どれどれバージョンチェック。
$ ruby -v
ruby 1.9.3p125 (2012-02-16 revision 34643) [x86_64-darwin11.4.0]
便利だ!
それではherokuを入れてみよう。
$ gem install heroku
Fetching: excon-0.14.1.gem (100%)
Fetching: heroku-api-0.2.6.gem (100%)
Fetching: netrc-0.7.4.gem (100%)
Fetching: mime-types-1.19.gem (100%)
Fetching: rest-client-1.6.7.gem (100%)
Fetching: addressable-2.2.8.gem (100%)
Fetching: launchy-2.1.0.gem (100%)
Fetching: rubyzip-0.9.9.gem (100%)
Fetching: heroku-2.28.2.gem (100%)
Successfully installed excon-0.14.1
Successfully installed heroku-api-0.2.6
Successfully installed netrc-0.7.4
Successfully installed mime-types-1.19
Successfully installed rest-client-1.6.7
Successfully installed addressable-2.2.8
Successfully installed launchy-2.1.0
Successfully installed rubyzip-0.9.9
Successfully installed heroku-2.28.2
9 gems installed
Installing ri documentation for excon-0.14.1...
Installing ri documentation for heroku-api-0.2.6...
Installing ri documentation for netrc-0.7.4...
Installing ri documentation for mime-types-1.19...
Installing ri documentation for rest-client-1.6.7...
Installing ri documentation for addressable-2.2.8...
Installing ri documentation for launchy-2.1.0...
Installing ri documentation for rubyzip-0.9.9...
Installing ri documentation for heroku-2.28.2...
Installing RDoc documentation for excon-0.14.1...
Installing RDoc documentation for heroku-api-0.2.6...
Installing RDoc documentation for netrc-0.7.4...
Installing RDoc documentation for mime-types-1.19...
Installing RDoc documentation for rest-client-1.6.7...
Installing RDoc documentation for addressable-2.2.8...
Installing RDoc documentation for launchy-2.1.0...
Installing RDoc documentation for rubyzip-0.9.9...
Installing RDoc documentation for heroku-2.28.2...

入ったかな。heroku listコマンドでアプリケーションを確認する。
$ heroku list
Enter your Heroku credentials.
Email: ****@***.**.**
Password (typing will be hidden): 
=== My Apps
*****
*****
*****
よしよし、問題なさそう。
herokuからアプリをcloneする場合のコマンドは以下とのことなのでやってみる。
$ git clone git@heroku.com:アプリ名.git
Cloning into 'アプリ名'...
Warning: Permanently added the RSA host key for IP address '***.***.***.***' to the list of known hosts.
Permission denied (publickey).
fatal: The remote end hung up unexpectedly

お、失敗した。
どうやらcloneする場合はRSAキーをHerokuに登録しなければならないようだ。
$ heroku keys:add
Could not find an existing public key.
Would you like to generate one? [Yn] Y
Generating new SSH public key.
Uploading SSH public key /Users/***/.ssh/***.pub... done

$ git clone git@heroku.com:アプリ名.git
Cloning into 'アプリ名'...
remote: Counting objects: 95, done.
remote: Compressing objects: 100% (79/79), done.
remote: Total 95 (delta 20), reused 0 (delta 0)
Receiving objects: 100% (95/95), 94.58 KiB | 80 KiB/s, done.
Resolving deltas: 100% (20/20), done.

成功。 /home/ユーザー名/ 配下にアプリ名のフォルダができた!
でもこのまま git push heroku master すると失敗するらしくremote addしておく必要があるとのことで以下を入力。
$ git remote add heroku git@heroku.com:アプリ名.git

ここまできたらもうあとはいつものHerokuですね。
$ git add .
$ git commit -m 'a'
$ git push heroku master

以上、新しいMac環境からのHeroku更新が無事にうまくいきました。いやー、Heroku便利ですねー。

2012年6月14日木曜日

LionにHomebrew入れてec2-api-toolsを動かす

本業が営業なので最新技術は追いつつもあまりコマンドラインは触らない(好きだけど)のでMacにはPortsが入っていたが、同僚から「今時はHomebrew、Portsはありえない」ような話を聞いて、んじゃ入れなおしてみるかと。
$ /usr/bin/ruby -e "$(/usr/bin/curl -fsSL https://raw.github.com/mxcl/homebrew
/master/Library/Contributions/install_homebrew.rb)"
==> This script will install:
/usr/local/bin/brew
/usr/local/Library/Formula/...
/usr/local/Library/Homebrew/...

Press enter to continue
==> /usr/bin/sudo /bin/mkdir /usr/local
Password:
==> /usr/bin/sudo /bin/chmod g+rwx /usr/local
==> /usr/bin/sudo /usr/bin/chgrp admin /usr/local
==> Downloading and Installing Homebrew...
==> Installation successful!
You should run `brew doctor' *before* you install anything.
Now type: brew help

む、brew doctor とな。
$ brew doctor
Error: You have no /usr/bin/cc.
This means you probably can't build *anything*. You need to install the Command
Line Tools for Xcode. You can either download this from http://connect.apple.com
or install them from inside Xcode's Download preferences. Homebrew does not
require all of Xcode! You only need the Command Line Tools package!
Error: Git could not be found in your PATH.
Homebrew uses Git for several internal functions, and some formulae use Git
checkouts instead of stable tarballs. You may want to install Git:
  brew install git
Error: Your Xcode is configured with an invalid path.
You should change it to the correct path. Please note that there is no correct
path at this time if you have *only* installed the Command Line Tools for Xcode.
If your Xcode is pre-4.3 or you installed the whole of Xcode 4.3 then one of
these is (probably) what you want:

    sudo xcode-select -switch /Developer
    sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer

DO NOT SET / OR EVERYTHING BREAKS!

どうやらいろいろ足らないようだ。 Xcode の Command Line Tools をAppleのサイトからインストール。 んでgitをinstall。
$ brew install git
==> Downloading http://git-core.googlecode.com/files/git-1.7.10.4.tar.gz
######################################################################## 100.0%
==> make prefix=/usr/local/Cellar/git/1.7.10.4 CC=/usr/bin/cc CFLAGS=-Os -w -pipe
   -march=native -Qunused-arguments LDF

==> Build Environment
CPU: dual-core 64-bit penryn
MacOS: 10.7.4-x86_64
Xcode: dunno
CC: /usr/bin/cc
CXX: /usr/bin/c++
LD: /usr/bin/cc
CFLAGS: -Os -w -pipe   -march=native -Qunused-arguments
CXXFLAGS: -Os -w -pipe   -march=native -Qunused-arguments
MAKEFLAGS: -j2
Error: Failed executing: make prefix=/usr/local/Cellar/git/1.7.10.4 CC=/usr/bin
/cc CFLAGS=-Os\ -w\ -pipe\ \ \ -march=native\ -Qunused-arguments LDFLAGS= install
 (git.rb:49)
These existing issues may help you:
    https://github.com/mxcl/homebrew/issues/8643
    https://github.com/mxcl/homebrew/issues/9618
    https://github.com/mxcl/homebrew/issues/10544
    https://github.com/mxcl/homebrew/issues/11481
    https://github.com/mxcl/homebrew/issues/12325
    https://github.com/mxcl/homebrew/issues/12344
Otherwise, please report the bug:
    https://github.com/mxcl/homebrew/wiki/reporting-bugs

エラーがでてるけど、まぁいいや、あとでみるか。
ではec2-api-toolsを入れてみよう。
$ brew install ec2-api-tools
==> Downloading http://ec2-downloads.s3.amazonaws.com/ec2-api-tools-1.5.2.5.zip
######################################################################## 100.0%
==> Caveats
Before you can use these tools you must export some variables to your $SHELL
and download your X.509 certificate and private key from Amazon Web Services.

Your certificate and private key are available at:
http://aws-portal.amazon.com/gp/aws/developer/account/index.html?action=access-key

Download two ".pem" files, one starting with `pk-`, and one starting with `cert-`.
You need to put both into a folder in your home directory, `~/.ec2`.

To export the needed variables, add them to your dotfiles.
 * On Bash, add them to `~/.bash_profile`.
 * On Zsh, add them to `~/.zprofile` instead.

export JAVA_HOME="$(/usr/libexec/java_home)"
export EC2_PRIVATE_KEY="$(/bin/ls "$HOME"/.ec2/pk-*.pem | /usr/bin/head -1)"
export EC2_CERT="$(/bin/ls "$HOME"/.ec2/cert-*.pem | /usr/bin/head -1)"
export EC2_HOME="/usr/local/Library/LinkedKegs/ec2-api-tools/jars"
==> Summary
/usr/local/Cellar/ec2-api-tools/1.5.2.5: 322 files, 15M, built in 41 seconds

うん、入ったな、どれどれ。
$ ec2ver
-bash: ec2ver: command not found

パスが通ってない、そりゃそうだ。ec2-api-toolsインストール時に表示されていた内容どおりに設定。 具体的には pk-***.pem と cert-***.pem を ~/.ec2 に配置して、/.bash_profileにバスを通す。
$ ec2ver
1.5.2.5 2012-03-01

動いた。これで rds-command-line-tools とか elb-tools も簡単に入るみたいなので便利な気がする。よしよし。

2012年5月20日日曜日

ロジカルセリングを読みました

よい本です。営業でなくても顧客と関わる職業の方なら読んで損はないと思います。そもそも顧客と関わらない仕事なんて民間ではないかな。

本書はコンサルティング会社でおそらくIT系が主な戦場の方が書いているものなので、やや大規模企業寄りではありますが、考え方や組織管理の仕方など大変参考になります。
営業は結果が大事なことは当然ですが、指標としてはプロセスを管理した方がよいという考え方にも同意します。プロセスがよければ結果はついてきますからね。
ではでは。

ロジカル・セリング ―最強の法人営業 (BEST SOLUTION)

2012年5月5日土曜日

リーンスタートアップを読みました


リーンスタートアップを読みました。
人に焦点を当てているところがとても勉強になります。その名のとおりスタートアップに対する内容が中心ではありますが、うまく営業や教育などの現在の自分の仕事にも応用できそうなのでいくつかチャレンジしてみたいです。

リーン・スタートアップ  ―ムダのない起業プロセスでイノベーションを生みだす

この本の1文に、
成功とは機能を提供することではなく、顧客の問題をどうしたら解決できるのか学ぶこと
とあります。
この本の場合は主に BtoC 向けになっているようですが、BtoB でも応用できそうです。

ちょっと話はそれますが、BtoB では末端には Customer がいることもあるとはいえ間のBの問題も当然解決する必要があります。
この場合、実際の現場としては予算が固定されていたり、フルリニューアル案件を小さくスタートするわけにもいかなかったりと、なかなか理想通りにいかないです。
ただこうした状況ではあるものの、先に引用した「成功とは機能を提供することではなく、顧客の問題をどうしたら解決できるのか学ぶこと」を意識することで少しずつでもいい方向にいくような気がします。Bおよびその先のCの両方の気持ちをよく考え、いい提案を見つけること。たぶん最近増えてきた要件定義と設計までは準委任契約にするという契約方法もその1つかなと感じています。

この本はその手法についてコホート分析やピボットなど多くを勉強させてもらいました。お客さんのことをよーく考えて、これらの手法をうまく使ってよりよいお仕事ができるようにがんばっていきたいと思います。