2013-03-19

ライセンス切れました!

IntelliJのユーザ会から評価用にいただいたライセンスが切れました!
うん、使ってみて、ほんとうに良かったです...。
ひとまずDB接続、操作はRubyMineで代用中です(^_^;

2013-03-10

2013年デブサミメモ / JetBrains ハディーさん&@yusukeさん編

慌ただしい毎日ながらも、今年もデブサミには参加させていただきました。ただし、色々とバタバタしていたため、なかなか参加のBlogが書けず...。

開催からもう間もなく一ヶ月が経ってしまい、『なにを今更...』な感がありますが、毎年楽しみなイベントです。相変わらず私の活動時間は16時くらいまでなので、最後のセッションまではお話が伺えませんでした。 それでも、今年もたくさんの素敵なお話や刺激を受け、時に涙もあり、モチベーションをアップすることができました。

 今年のテーマは、Action! です!

文章によるまとめは今回省略。雰囲気を会場で記載のメモ、あとから書き起こしたスケッチを、複数に分けてポツポツとアップしていこうと思います。
ちなみに、お話を伺ったのは下記のセッションです。

2/14(木)

[14-C-1]  Androidセキュアコーディング
[14-D-2] One ASP.NET ~ 今、ASP.NET に何が起こっているのか? ~
[14-A-3] Ruby2.0
[14-B-4] チーム×ツール Team Foundation Server & Service
       "共感しActionできる開発基盤" アルティメイタム
[14-B-5] チケット駆動開発の本質

2/15(金)

[15-A-1] 「爆速」を支えるテクノロジー
[15-A-2] Webが生み出し始めた世界
[15-B-3] ICTでクルマと社会をつなぎ、安全・快適で低炭素なモビリティー社会の
     実現に向けたHondaの挑戦
[15-D-4] Opsから挑むDevOps
[15-B-5] SQLアンチパターン - 開発者を待ち受ける25の落とし穴
[15-E-6] JetBrainsのソリューションでスピードアップするWeb開発

* * *

今回は、中でも意外なスタイルで楽しませていただいた、15-E-6 JetBrainsの簡単なレポとなります。

15-E-6 JetBrains ハディーさん&サムライズム 山本さん


@yusukeさんのお話は、以前のデブサミでもお話を伺っています。そちらもとても感銘を受けたのですが、今回はJetBrainsの代理店、サムライズムの中の人として演壇に立たれていました。
私自身、昨年末からJetBrainsの製品に触れて、だいぶハマっていることもあり、『これはぜひ!』とばかり、レポーター特権(※1)を利用して最前列に座ってお話を伺う事にしました。

イケメンの誉れ高い@yusukeさん。登壇すると、タイムラインに『イケメン』の文字が踊ります。
 お話自体は、JetBrainsの製品の紹介と、どんなことができるかのデモという、一見オーソドックスな製品紹介...かと思ったのですが、そうではありませんでした。(いえ、内容上は確かに製品紹介だったんですが)

『ワタシは日本がダイスキ!』と、日本語でお話し、場を和ませて下さったハディーさん。
ですが、続いて "Tha's all what I know." の一言が。そこからは、もう英語一直線です。
#この時点で、このセッションの公式レポは厳しいと判断した自分です...orz

セッション概要には、『@yusukeさんが同時通訳』と書かれてあったので、 交互にお話をされるのかなと思ったら....。
 なんと画面の下部にテキストエリアを表示し、@yusukeさんがライブで字幕翻訳、というスタイルでした!(イラスト参照のこと。@yusukeさんにはご承諾済み)

ハディーさんのミッションは製品紹介、デモ。そのためにマイペースでどんどん英語の説明を進めていきます。取り上げたのは、ほぼ全てのIDEシリーズに組み込まれている、WebStormです。

"I hate mouse :) "とにこやかに呟き、流れるようなキータッチで、デモを進めるハディーさん。基本はHTML, CSS, JSの修正ですが、コードの補完機能が凄い凄い!
(わたしもRubyMineで実感していますが、あまり使いこなせていません...) 
サクサクとidに対応するCSSを修正し、ライブプレビューで確認し、JSを修正すればテストドライバを実行していきます。

その隣で、@yusukeさんが、怒濤のタイピングで字幕を起こしていきます。

会場内での『おおー!』の反応には、『\(^0^)/ オー!』の顔文字が画面にタイプされました。製品そのものも凄いのですが、想像を超えた同時通訳のスタイル、英語力、ハディーさんとの掛け合いに、講演というよりはライブパフォーマンスのような感覚を覚えました。

ざざっと、WebStormの機能をまとめると、下記のような感じです。
たぶん使ってみないと分からないでしょうけれど、ワタシ自身にはとても合う製品でした。
  • WebStormはIntelliJ, RubyMineを始めとしたIDEに基本的に装備
  • Web開発に必要なものは、何でもそろっているよ!
  • コードの補完、idタグの認識と対応するスタイル定義がすぐできる
  • color 指定のCSSがあると、カラーピッカーが起動してくれる
  • ブラウザを起動したり再読み込みしなくても、すぐに変更をプレビューで確認できる
  • インスペクションも強力!
 今回、JetBrains社はブース出展もされており、そこではTシャツとステッカーをいただきました。シャツにはショートカットキーがずらりと記載されているのですが、よーく見ると上下サカサマ。 自分で着るとショートカットキーが見えやすくなるよ、という配慮なんだそうです!
(しかもSサイズいただきました、ありがとうございます!)

昨年の終末セールと相まって、自分の周りでも少しずつJetBrains製品のユーザが増えているので、夏になったら何気なくシャツを着てお仕事してみようと思っています :)

遅ればせながら、楽しいセッションありがとうございました!

※1:公式レポーターになると、最前列のレポーター席に座ることができます。(レポート好きの方、Blogを良く書かれる方はオススメです!)
 ただし、それに見合うレポートが出来ているかは、私の場合はナゾです...。

2013-02-04

IntelliJ / SSHトンネル利用のデータベース接続をためしてみました。

昨年の後半にIntelliJを知ったものの、『そこまでは使わないよね...』と思い、特定の目的については、RubyMineの利用を続けていた日々。(これはこれで大満足です!)

ですが、いろんな言語のWebアプリケーションの動作チェックやちょっとした修正をしたり、DBを直接参照する事もあります。コードについては SublimeText2を使っているのですが、データベースについては色々あるので、その都度Macにクライ アントをインストールして、クライアントツールを切り替えて使っていたりしました。(MySQL WorkBenchとか、SQL Developerとかです)

で、こういったDBも直接はアクセスできないので、ポートフォワードして手元のMacから操作するようにしていたのですが、これも毎回DB毎にポートフォワードのプロセスを起動するのが面倒。ターミナルも増えてしまうのもなんだか嫌...。いい方法があったら教えて下さい〜(><)
 * * *


ひとまず、DB接続用のポートフォワードのプロセスをJenkinsのジョブに登録して、DB接続の必要が出てきたら、該当するジョブを起動してポート転送というやり方でしのいでおりました。

そんな折、下記のTweetを発見...。

どうやらDBに接続する際に、ポートフォワード(SSHトンネリング)の設定が出来る模様。
これは良いかも!と思い、IntelliJ IDEA 12.0.3 EAPをインストールしてみました。#評価版ライセンスです(^^;
そもそもIntelliJ 初めて&EAP(Early Access Program) での利用でしたが、試用については特に正式リリース版と変わらない感じです。

空っぽのプロジェクトでデータベース接続接続を作ります


『始まりは、何はともあれプロジェクト』のようですが、コードをスクラッチから書ける人間では無いので、空っぽのWeb Moduleプロジェクトで開始。

何もコードを書かずとも、画面の右端に『Database』というタブが表示されていたので、右クリック -> New -> Data Sourceで接続追加となるようです。
あまり芸が無くて申し訳ないのですが、まずは、踏み台サーバ1段を通して接続するMySQL&Oracleで試してみました。

新規接続では、JDBCのドライバファイルを選択します。
こちらも、あらかたのDBがプルダウンで選択できるようになっていて、使いたいデータベースを選ぶと、それに合ったJDBCをダウンロードしてくれる機能がついています。これって今時のIDEは普通なんでしょうか...?

ともかく、自分で探してきてからパスを通したりする手間が省けるため、これは嬉しい!
Oracleの場合だと、OTN行かなくても、IntelliJ側の用意しているOracle Driverをダウンロードできました。MySQLもドライバの設定は同様で、特に問題なく大変楽でした。


localhostにポートフォワードの設定をします


さて、本題のSSH Tunnel機能です。『Configure SSH』のボタンを押して、ssh -L .... に相当するポートフォワードの設定をします。添付の画像は、リモートのMySQLの3306番を、localhost:23306 に転送した例です。

Test Connectonでのチェックもできますし、本当に簡単です!
うまく繋がると、DBのEdition, ドライバの情報も表示されます。(下記はOracleの例です)


データベースのクライアントとしては?


接続できる/テーブル(モデル)が参照できるのも良いのですが、基本はSQLのコマンドが使えないと私は困ります....。
SQLについては、『Console』を起動させると、SQLコマンドが実行できるようになります。
正直、1ツールから複数種類のDBが扱えるだけでも十分だったので、そんなに期待して無かったのですが、コードの補完(Suggestion)もしてくれるのにはビックリ!


SELECT結果もエクスポートできます。逆にインポートもOK。テーブルの編集もできます。


多段になるとうまく行かないので....


嬉しいSSHトンネル機能+複数DB対応ではありますが、多段になってしまうとうまく行きませんでした。私の設定の仕方がいけないのかもしれませんが...(^^;
パスワードではなく公開鍵が使えるのは良いのですが、.ssh/config も読み込んで、うまく多段でもつなぎに行けると嬉しいです。

それにしてもなかなか良い機能なので、なんとかして遠くのDBにもIntelliJから繋ぎたいと思った結果....。
冒頭に書いていた、Jenkinsのポートフォワードのジョブ(多段の場合)を、IntelliJから呼び出して実行することにしました。これでひとまず完結できそうです。


 IntelliJのデータベース接続について(その他)

リリース情報の載っていたJetBrainsのBlogに、下記の記事がありました。
コメント欄を見ると、『sshトンネル機能希望。遠くのDBに接続が必要な場合はNavicat を使ってしのいでいるよ』といった書き込みもありました。(Navicatというツールは知らなかったので、これはこれで参考になりました)
その他にも、リモートホストでの作業用のプラグインが色々あるみたいです。
というわけで、使ってみるとやっぱり良いなあと思うようになりました.....(^^;

2012-12-21

RubyMine + Jenkins Control Plugin

この記事を書いている時点で、なにやらJetBrainsでは、大変な賑わいとなっていたようですが、それはさておき。
やっぱりJenkinsとの連携もしたくなります。
IntelliJのプラグインとしては、下記のものがありました。
IntelliJ専用だから追加できないかな?と思ったのですが、よく見ると Products: IntelliJ IDEA, ..... RubyMine と書いてあります。どうやら大丈夫な模様。
ということで、初の追加Pluginは、Jenkins Control Pluginとなりました。

追加してみます

まずは、上記のサイトからダウンロードし、RubyMineの設定 -> プラグインで追加となりました。特に再起動も必要なく、シンプルにインストールできました。
Jenkins Control Plugin
そんなに設定するところはありません。

 

設定&表示させてみます

localhostで起動しているJenkinsさんを設定してみました。
Jenkinsさんは左端に表示されました。また、画面右隅には、ビルドのステータスが表示されました。
JenkinsさんとHectorさん(らしい)
Jenkinsは1サイトだけ登録できるようです。ビルドの実行、表示(ブラウザで開く)といった基本的なことができます。
これくらいシンプルでも、IDEとブラウザを切り替えたりしないで良いので、十分かと思います。

ということで、今回はJenkinsのみ入れましたが、IntelliJ IDEA用のプラグインだと、たくさんあるんですね!
お遊び(息抜き)用のものもあって、見ていて面白いですね :)
そんなに使えないので偉そうなことは言えませんが、SQL& PL/SQL用のプラグインは入れてみようと思います。(BashSupport Pluginは、どうもRubyMineはNGなのかな....?)

2012-12-18

#jbugj RubyMineがとても良い件。

はじめに:Rubyのデバッグ環境に困ったこと

またまたRedmineの関係ですが、Redmineのプラグインを書くうちに公開したくなってきて、でも、コードも綺麗じゃない、しせめてデバッグやテストはちゃんと出来るようになりたいな...と思うようになり、今年のはじめ、Windowsの環境にRuby, NetBeansを入れて、なんちゃってながらもデバッグとテストができるようにしました。(注:偉そうなことは言えず、フルスクラッチでコードを書く能力はありません....)

その後、RedmineがRuby1.9, Rails3.2対応になってしまったので、また環境を作りなおさなくっちゃ...と思っていたところ、NetBeansがバージョン7からRubyの公式サポートを止めてしまったとのこと。

プラグインを使えばもちろん利用はできますが、デバッグをしようにも、テストしようにも、どうにも面倒...。AptanaというIDEも教えてもらったのですが、こちらはeclipseがベースらしく、個人的にはあまり相性が良くないので、やっぱり止めました。

そうこうしているうちに、Macに乗り換えることになりました。
改めてNetBeans7.1 + Ruby1.9の環境を作ったのですが、デバッグは出来るものの、とにかく重い!途中でハングしたような状態になってしまいます。

世の中のMac userがこんな環境でコード書いている訳が無い!と思ってRedmineの関係の方に聞いてみたところ、春からRubyMineを使ってます、とのコメントを頂きました。それがRubyMineを知るきっかけでした。

RubyMineを入れてみたよ



ということで、早速インストール。

基本的には、『プロジェクト』という単位でコードを扱いますので、eclipseやNetBeansとそんなに変わりません。わたしの場合は、いつも通りRedmineをプロジェクトとして設定してみたところ、問題なくRailsアプリケーションとして認識してもらえ、起動/デバッグのメニューもすんなり起動してくれました!

さて、その後、ターミナルからプロジェクトフォルダを眺めてみると、フォルダ直下に、.idea というフォルダがあるのを発見しました。
こちら、Jenkins繋がりで、IntelliJラブな今井さんのお話を聞いたときに耳にしたフレーズです。(修正:『イデア』と読むと思い込んでいたら、やっぱり『アイディア』らしいです、すみません... )
あれれーと思ってTweet してみると、今井さんと山本さんから、さっそくそのあたりを教えていただきました。


  • RubyMine入れてみたら、対象のフォルダに.idea っていうフォルダができてるんですが、どっかで聞いたなーと思ったら IntelliJ。IntelliJの親戚なのでしょうか??
  • IntelliJから機能削ってRubyプラグイン仕込んだのがRubymineです。d.hatena.ne.jp/masanobuimai/2
  • 親戚ですよー。IntelliJ IDEAからRuby用の機能だけ抜き出したのがRubyMineです
IntelliJが奥様のお小遣いではとっても買えない額だとは今井さんに聞いていたので、さぞかしRubyMineも高いんだろうな〜と思いつつ、ひとまず使ってみることにしました。

全然ハングしませんよ!

さて、実際の稼働ですが、IDE慣れている方なら、ほぼ意識せず、普通に使えます。(ただし、残念ながら表示/メッセージは英語です)
しばらく使っていて「あれれ?」と思ったのが、全然ハングしないこと!NetBeansのアレは何だったのか?と思いくらいに快適です。その旨つぶやいたら、また今井さんに怒られました(^^;


  • あやまれ、RubyMineにあやまれ!:-P RT @akiko_pusu: NetBeansにくらべると、RubyMine動作軽いですね…

 

謎のおじさんがいる!

そうこうしているうちに、画面の右隅に、帽子をかぶったおじさんを発見しました。


なんですか?これってJenkinsさんの親戚?と思って、またもつぶやいてみたところ、これまた今井さんからのお言葉が。


  • @akiko_pusu Hectorおじさんです。ナメたコードを書くとビシバシ文句言って来ます。:-)
なるほど、改めて見てみると、RubyMineのコードインスペクションがもの凄い事になっています....。コーディング規約から外れたもの、スペルミス、Deprecatedなものを使ってたりすると、黄色いマークがコードの右にいっぱい付きます。自分の書いたもので問題ないのは、Readmeくらいでした..... orz

このInspectionがうざい!という方は、レベルを調整したり、OFFにしたりできるようです。

 

スクリーンショットを載せます

以下は、RubyMineのスクリーンショットです。基本的にSCMと連携して、RubyMine内でコミットやpush/pull/ブランチ作成など出来ます。


コード中のTODO:も別画面で抽出/チェックできます。コミット前のタスクなど、コメントはいっぱい書く気がでます〜!



心配していたデバッグ、テストもちゃんと出来ます。良かった!



Coverageも取ってくれます。(ソースフォルダとかにcoverageが生成されず、RubyMineの中で閉じてくれるみたいです)




ただいま、rbenvを使ってRubyの環境を切り替えて使っていますが、こちらも問題なさそうです。

ライセンスは?

そんなこんなで、もうすぐ評価期間が終わってしまいます。IntelliJにくらべると、個人ユースなら69$ってとこなので、奥様のお小遣いでも大丈夫かとは思います:)

ちなみに、IntelliJをはじめ、JetBrainsのツールは、オープンソースプロジェクト用ライセンスというものがあって、オープンソースで活動しているプロジェクトには、無料でライセンスを提供してくれるそうです。素晴らしい!

そして、『これは良いなー』としみじみ思っていた矢先に、JetBrainsユーザーグループの勉強会の件を知りました。
残念ながら、平日夜も含め勉強会は出られないので、みなさんのTweetや資料を拝見しつつ、なるほど〜と勉強させていただいているところです。

Jenkins由来でIntelliJのことは知っていましたが、自分には全く縁の無いツールだと思っていたので、少しだけその世界を覗く事ができて、自分でも意外に思っています。
そして、名も無いユーザのTweetにもお返事を下さった今井 () さん、山本 () さん、どうもありがとうございました!

個人的に、とても良いツールだというのが実感できましたので、会社でもちょっとずつ宣伝していこうかと思っています。

記事の修正など

.ideaは、アイディアという指導をいただきましたので、訂正を行いました。
 

2012-12-13

チケットを復旧する

消えたチケット

先日、『Redmineのチケットを間違って削除してしまいました、どうしましょう』というお問い合わせをいただきました。残念ながら、Redminの場合はデータは物理削除されてしまうので、そのままでは復旧できません...。

生まれて間もないチケットなら、新規作成しなおして貰うという方法が一番早いのですが、今回は自分も参照していたIdaten関連のチケットで、本文に加えて注記も40件くらい溜まっていました。削除してしまった直前までの状況を聞いたところ、最終更新が前日で、今回は更新時の自分の注記を修正しようとしてチケット毎削除してしまったとのこと。

幸い、日々のバックアップ&前日時点のレプリカのRedmineがあるので、そちらでチケットを確認していただき、前日までの記録を戻せば大丈夫との印象でした。(各テーブルのモデルは連番で採番されるので、チケット番号に基づくデータがごっそり抜けちゃった状態です)

 

削除前のデータを取り出す

開発環境サーバへは、毎朝4時に、バックアップデータをもとにDBへ再インポートを行っています。
さらに、それに加えて、次回バージョンアップ予定のRedmineを使って、標準的な状態でうまくマイグレーションを実施し、Redmineのサービスを起動できるかを確認しています。(テストコードを書いている訳ではありませんが、実質、バージョンアッップ時に問題が発生しないかどうか、バックアップデータが健全で正しくリストアできるかを、継続的に検証できるようにしています


ということで、開発環境でレプリカとして公開しているRedmineは、メインに使っていただいているバージョンよりも1つもしくは複数進んだもので稼働させています。

基本的には構造に大きな変更はありませんので、ブラウザから削除されていない時点のチケットがどんなふうに表示されているかを確認しつつ、MySQLから削除されてしまったIDにまつわるチケットのデータ一式を抽出しました。

 

抽出にはMySQL WorkBench


MacにはMySQLとクライアント一式はインストールしていません。コマンドラインで操作するためにインストールしようかとも思いましたが、誤操作も心配なので、GUIのMySQL Workbenchをインストールして、そこからデータの確認や操作を行うことにしました。

開発機のMySQLポートはアクセス制限を行っているので、ここは便利になったMacの環境を利用して、localhost:3306にポートフォワードして確認します。

MySQL WorkBenchだと、抽出したレコードをcsvの形でなく、Insert文のようなSQLに書き出す機能があるので、今回はこちらを使って復旧用SQLを用意しました。

 

復元にもMySQL WorkBench


復旧用のSQLが出来たので、こんどは本番のMySQLにつなぎ直します。これもポートフォワードで。Redmineの作業用DBに接続し、Insert文でデータを戻してあげて、Redmineのweb画面からチケットが復活していることが確認できればOKです。

 

ファイルはscpで戻します

チケットはほぼ戻りましたが、添付ファイルの場合は実際のファイルを、Redmineのファイル格納用フォルダに戻してあげないといけません。また、フォルダ上のファイル名と、チケットで表示されるファイル名は違いがあります。(タイムスタンプとハッシュ値、拡張子で生成されています)

こちらは、issue_attachements テーブルで定義された、実際のファイル名を指定して、リストアしてあげます。これも直接はscpできないサーバなので、ポートフォワード+ scp で対応しました。

Redmineの添付ファイルは、config.ymlで/data/redmine_binary/と指定してあるので、ここに転送します。まず、localhostの4321番を、転送先のscp port 22番に繋がるようにして、そのあと localhost:4321 を指定すると転送先に繋がってくれます。
Exp.
$ ssh -p 22 -t -L 4321:localhost:1234 中継ユーザ@中継ホスト ssh -t -L 1234:localhost:22 転送先ユーザ@転送先ホスト
$ scp -P 4321  消しちゃったファイル.xls 転送先ユーザ@localhost:/data/redmine_binary/ハッシュ値で格納する名前.xls
以上でデータ復旧は完了です。
ちなみに、ファイルのパーミッションは注意!Redmineのプロセスを稼働させているユーザに権限が無いと、チケットを本当に削除したいときにPermission Errorになります。(現環境だとredmine:redmineです)

* * *
今回はsqlを使ってInsertで復旧していますが、mysqlのコマンドラインツールでcsvに書き出してインポートするのでも問題はないと思いますので、再発するようなら自動化しておこうかなと考えています。

ちなみに、大規模な環境なら、こんな記事は全然目新しくもないでしょうけれど...(^^;
いちおう事例として、恥ずかしいですが公開してみます。

できるだけすぐに直前の環境を再現できるようにしておいたことで、ワークフローのおかしいところを見直したり、プラグインの評価をする際にも利用できたりと、いろいろメリットはありますので、なんにしても用意しておいて良かった、と思った次第です。

2012-12-03

TortoiseHgインストール (Mac編)

初めておたちよりのみなさま、こんにちは。
Redmineつながりで、@cointoss1973さんが募集されていた、TortoiseHg アドベントカレンダーに参加させていただくことになりました。
実はMercurialはあまり使いこなせてなくて(GitもSVNも似ようなものではありますが)、正直エントリするのはおこがましい位なのですが、ちょうどMacに環境を切り替えたところだったので、インストール話なら...ということで、3日目のエントリとして書かせていただきます。

結果からいうと、基本操作はできますが、まだ日本語化とかアプリケーションフォルダからの起動ができず、完璧とは言えない状態です。

[20121210 追記]

本エントリでは、インストールは出来たものの、アプリケーションフォルダからの起動と、日本語化が上手く行きませんでした。
日本語化が上手くできなかった件については、TortoiseHgビルドの前に、gettextがインストールされているということが前提だそうです。
本エントリの中で、この部分と、gettextを先に入れていなかった場合の対応手順を追加しています。

* * *

1. 本家に行ってダウンロード....ではないらしい

  • まずは、TortoiseHg本家に行きます。
  • アクセスすると、日本語画面に直行。TortoiseHgダウンロード(for Mac OS X)のバナーがさりげなく表示されており、迷うことはまずなさそうですね。この辺のサイトの作り手の皆さんのご配慮は大変ありがたいです。


が、いきなりパッケージダウンロードではありません。
「あれれ?」と思ったら、どうやらMac専用のインストール解説ページに移りました。(ここから先は英語です)
TortoiseHgのページのDownloadのページを見ると、Windows向けバイナリがリストアップされていますが、Macはどうかというと、やっぱり下のほうにあり、なにやら専用の手順が必要な模様です。
"To use the settings tool on Mac OS X, you must have http://code.google.com/p/iniparse/ installed."

2. Bitbucketへ行きました



リンクをたどった先は、Bitbucketです。何やら注意書きには、finkのunstable treeに置いてあると書いてあります。また、どうやらpythonのバージョンにも依存するようです。
この時点で、わたしのMacには、すでにMercurialのソースを取ってくる必要があったので、hgとSourceTreeが入れてあります。Pythonは確認すると2.7が入っています。あまり考え無しにいろいろ入れているので、ちょっと不安.....
ただし、Note: Also if you already use Homebrew there are steps at the end. という一文がありましたので、こちらに従うことにしました。せっかくお誘いを受けてエントリしているのでBlogにはレポートしたいですし、ちょうどBitbucketのリポジトリにpush したいものがありましたので....。
ただし、このパターンでも、brew install .....  で済む訳ではないらしく、GUIにQtを使っている関係で、Qtのソースも入れてビルドしないといけない模様です。ということで、まずは、Homebrew版のインストールをすべく、説明のページの一番下に移動。
途中、ソースからビルドする場合のStepが書かれてあり、やっぱりインストールしなおしになったり使うのを止めた場合の対応が大変そうだったので、決心は変えませんでした。
でも、ソースからビルドする説明の最後に、 "Happy Hacking!" の文字が書かれてありましたので、達成感はありそうですね〜(^^;

3. Homebrewでインストール

ガイドでは、まずXcodeとHomebrew野インストールをしてね、という説明があります。実は、XcodeとHomebrewのインストールは既に終わっていましたので、その次のステップから記載します。
20121210追記分:
TortoiseHgのビルドの前に、gettextを入れておきましょう!(日本語化ファイルが生成できません!)Homebrewならすぐに入ります。
$ brew install gettext
$ brew link gettxt
単純に、順番に下記のコマンドを実行していきました。
$ brew install pyqt
$ brew install qscintilla2

$ brew update
$ easy_install pip $ pip install Pygments iniparse Mercurial
pyqtはソースからビルドしていくので、結構時間がかかりました。体感で10分くらいかかったような...(かなり心配でした)
それでも一応make installが出来たので、次々とガイドに従ってセットアップ作業を進めていきます。

途中で下記のように環境変数を設定してね、といったメッセージが出ましたが、何かハマりポイントなのかもと思って無視 :)
For non-homebrew Python, you need to amend your PYTHONPATH like so:
  export PYTHONPATH=/usr/local/lib/python2.7/site-packages:$PYTHONPATH
環境変数を設定しなくても、実はここまではうまくいきました。
さて、最後にbitbucketのリポジトリからTortoiseHgを一式チェックアウトとなります。
$ hg clone http://bitbucket.org/tortoisehg/thg/ ~/Documents/TortoiseHg
なぜ /tmp  とか /usr/local/src とかじゃないのかしら...と思いながらもチェックアウトが完了して、フォルダを見てみると、いろいろ入っています。
さて、最後のコマンドを実行してみると.....

$ ./thg log
Traceback (most recent call last):
  File "./thg", line 44, in
    build_qt(Distribution()).run()
  File "/Users/takano/Documents/TortoiseHg/setup.py", line 215, in run
    self._wrapuic()
  File "/Users/takano/Documents/TortoiseHg/setup.py", line 236, in _wrapuic
    from PyQt4.uic.Compiler import compiler, qtproxies, indenter
ImportError: No module named PyQt4.uic.Compiler
「あらあらどうしよう...」と思ったところで、「環境変数を設定してね」というNoteがあったことを思い出し、.bashrc に設定を追加して、source ~/.bashrc してから再度 ./thg log を実行しました。

4. 起動しましたよ!

./thg log で何が起こるかと思ったら、TortoiseHgが起動しました!


SourceTreeがブルーをベースにしているのに対し、TortoiseHgはグリーンです。見慣れたカメさんのアイコンもDocに表示されました!よくよく考えたら、thg = TortoiseHg のことなんですね。
thgのオプションの"log" は、TortoiseHgのリポジトリのログをデフォルトで表示しているんですね。「へえ〜」と思いながら画面を眺めました。

個人的には、これで十分な位なのですが、ドキュメントの最後にはTortoiseHgをアプリケーションから起動させるための方法が書かれてありました。一応挑戦してみたのですが、/Applications/ フォルダに出来たTortoiseHg.app を入れても、うまく起動してくれません...。
どうも、要求しているPythonのバージョンが違う、前提にしているTortoiseHgのバージョンが違うんじゃないかと思うのですが、ここはひとまず諦めました...。(いくつかIssueに報告が上がっているようです)

5. そういえば日本語化されてない&なにか変....

20121210: 追記
gettextを先に入れてインストールしていれば、多分大丈夫です。下記は、入れ忘れてしまった場合に起きる症状と、対応となります。
アプリケーションからの起動はあきらめ、とりあえずコマンドラインから thg  で起動できるように、パスとシンボリックリンクを調整。
これでいざpushを!と思ったのですが、メニューが日本語化されていないことに気がつきました。設定メニューで調整できるのかなと思ったのですが、選択可能だったのが、en  のみ。
環境変数を切り替えたりしてみましたが、これもうまく行きませんでした。
TortoiseHgをはじめとする、TortoiseXXシリーズは、Windows環境側でもちょこちょこ使っていたので、ここは諦めて、目標のBitbucketにpushするところまで進めます。

5'. gettextを入れていなかった場合の対応方法 (20121210追記)

やっぱり日本語でないと....と思った方。まずはbrew install  gettext を実行します。あとは、TortoiseHgをビルドし直すか、日本語用のmoファイルだけを用意するといった2つの対応があります。今回は後者の対応を付加します。
1. 日本語用のメッセージファイルから moファイルを作成します。(~Documents/TortoiseHg以下にインストールした場合)
$ cd ~/Documents/TortoiseHg/
$ cd i18n/tortoisehg/
$ python ../msgfmt.py ja.po -o tortoisehg.mo

2. 所定のディレクトリに作成したmoファイルを配置します。
$ mkdir -p ~/Documents/TortoiseHg/locale/ja/LC_MESSAGES/
$ cp tortoisehg.mo !$

3.  あとは、LANGUAGE=ja もしくは TortoiseHgの言語設定でjaを指定すればOK。

6. Pushしたいんだけどhttpsからsshに切り替えたい!

だいたいはコードが修正済みで、SourceTree を使ってブランチを切ってpushしていました。あとはほんの少しの修正をし、defaultブランチにマージ、マージ後に、今回入れたTortoiseHgを使ってBitbucketにpushするのがゴールです。

まずはブランチ間のマージが成功。
次にリモートへのpushですが、これが上手く行きません!
どうやらhttpsでpushしに行ってしまうらしく、設定を変えないといけません。
こちらは、TortoiseHgからでも良いですが、ローカルリポジトリのフォルダから $ vi .hg/hgrc でhgrcファイルを編集すればOK。

これでようやく基本の操作ができました....。


* * *
という感じで、無理矢理TortoiseHgアドベントカレンダーに参加させていただく形となりました。結局中途半端で申し訳無いのですが、もう一回インストールしてみてちゃんと日本語メニューが使えそうになったら、再度ご報告したいと思います。
機会を下さった@cointoss1973さま、ありがとうございました!

念のため、現在のバージョン情報をご報告して、まとめとさせていただきます。-> 追記しました!
ちなみに、~Dcoments/TortoiseHg に入ったものは、インストールしたというよりは、リポジトリのソースをそのまま持ってきている感じなので、hg up 2.x  とかするとTortoiseHgのバージョンが切り替えできます。(依存するPythonの関係でちゃんと動くわけではないですが)

$ thg version
TortoiseHg Dialogs (version 2.5.1+29-1f7dfd2a0e6d), Mercurial (version 2.4+20121101)

Copyright (C) 2008-2012 Steve Borho and others.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.