2011年8月14日日曜日
アルクの英辞郎をalfredからすげー簡単にひく。
ここをクリックしてね
これでalfredに登録されます。使い方は「alc 検索語」です。
alfredですげー楽に辞書を引く
- コマンドキーダブルタップ
- defiくらいまで入力してtabで保管
- 検索したい単語を入力
2011年8月3日水曜日
Macの開発環境のセットアップ
書きかけ。
@ebc_2in2crcさんが「MacBook Air買ったひゃっほーい。でもなにから手を付ければいいかわからないんだぜ?」状態になっていました。煽った責任は全く感じていないのですが、セットアップ関係についてちょっとメモしておきます。
開発環境
まず、ターミナルを起動します。
/アプリケーション/ユーティリティ/ターミナル
ターミナルを起動するとbashが待っているので、普通にunixのコマンド群で操作できます。
Javaランタイムのインストール
ターミナルでjavaと打つと、javaランタイムが入っていなければインストーラが起動します。
$ java
Xcodeのインストール
gccなどのコンパイラなどは標準でインストールされていません。Appleの提供するXcodeという開発環境をインストールすると一緒にインストールされるため、Xcodeをインストールします。
App Storeの起動
/アプリケーション/App Store
apple IDでサインインすることが必要です。
アプリケーションの購入(無料アプリもありますが)に利用しますので、さくっと作成してしまいましょう。
サインインした後は右上の検索フィールドにXcodeを入力すれば、検索結果にXcodeが出てきますので、インストールしてください。
XcodeはApp Storeでインストールしても、インストールされるのはインストーラなので、ダウンロードが完了したら「/アプリケーション/install Xcode」を起動してください。この際にiTunesが起動しとりますがな、とエラーが出た場合は、iTunesを終了して、さらに「/アプリケーション/ユーティリティ/アクティビティモニタ」を起動して、右上の検索フィールドに「iTunes」と入力するとiTunes Helperがヒットするので、これも終了してください。
homebrewのインストール
homebrewはmacのパッケージ管理ツールです。
標準でインストールされていないアプリケーションや最新バージョンを利用したいとか標準ではついていないオプションでビルドしたいなどの場合に利用します。gccなど開発ツールを使用するので、Xcodeを先にインストールしておくこと。
インストール方法
$ ruby -e "$(curl -fsSL https://gist.github.com/raw/323731/install_homebrew.rb)"
インストールが完了したらbrew updateしておきましょう。
$ brew update
homebrewでインストールするためのレシピはfomulaと呼ばれています。どんなfomulaがあるか検索したい場合はsearchオプションで可能です。
$ brew search 検索文字列 $ brew search /正規表現文字列/
subversionのインストール
OS Xはデフォルトでsvnがインストールされていますが、macの文字コードの関係で日本語ファイル名の扱いに問題があります。幸い、homebrewで対策済みのsvnをインストールするオプションがあります。
$ brew install subversion --unicode-pathちなみに、どのようなオプションがあるのかはoptionsで調べることができます。
$ brew options formula名
python3のインストール
$ brew install python3
pipのインストール
pipはpythonのツール管理ツールです。
$ sudo easy_install pip
OS Xではsuは使いません。su権限が必要な場合はsudoで実行します。
mercurialのインストール
メッセージが英語でよい場合はpipでインストールします。
$ sudo pip install mercurial
私は日本語メッセージが欲しかったのでパッケージでインストールしました。インストールされるディレクトリなどはpipと同じです。
bashの設定
普通に$HOME配下に.bash_profileを置いて設定を書きましょう。source .bash_profileで反映されます。以下は参考まで…。
export PATH=/usr/local/bin:$PATH export HGENCODING=utf-8 # mercurial用 export LANGUAGE=ja export LANG=ja_JP.UTF-8 export LESSCHARSET=utf-8 export EDITOR=nano export PS1='[\t \u@\H \W]$ '
vimの設定
$HOME配下に.vimrcを置いて設定を書きましょう。私はあまりvimを使わないので日本語が利用できるくらいしか設定していません。
set enc=utf-8 set fenc=utf-8 set fencs=iso-2022-jp,euc-jp,cp932
NetBeansのニーモニックを消す
OS Xではメニューのニーモニックが不要です。これを消す方法がFaqJaMacNnemonicJaにあります。OS XのFinderはWindowsのExplorerと違ってフォルダを上書きしてしまうので、terminalでやりましょう。
NetBeansのデフォルトエンコーディングをUTF-8にする
NetBeansで作成したファイルの文字エンコーディングはShift_JISです。何かと都合が悪いのでUTF-8に変更します。
NetBeansのデフォルトエンコーディングを変更したい場合はnetbeans.conf内のnetbeans_default_optionsパラメータに-J-Dfile.encoding=UTF-8を追加
/Applications/NetBeans/NetBeans 7.0.app/Contents/Resources/NetBeans/etc/netbeans.conf
NetBeansから起動したJavaアプリケーションの文字コードをUTF-8に変更する
OS XのJDKのデフォルト文字コードはShift_JISなため、NetBeansから起動したtomcatなどのログが文字化けします。Finderから起動したアプリケーションはシェルを介さないので~/.bash_profileに_JAVA_OPTIONSを設定していても読み込まれません。~/.MacOSX/environment.plistに設定したオプションはユーザがログインした際に認識されるため、こちらに設定を書きます。SSHなどでログインした場合を考慮して~/.bash_profileにも同様の設定を行います。
~/.MacOSX/environment.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>JAVA_HOME</key>
<string>/System/Library/Frameworks/JavaVM.framework/Versions/1.6/Home</string>
<key>_JAVA_OPTIONS</key>
<string>-Dfile.encoding=UTF-8</string>
</dict>
</plist>
~/.bash_profile
export _JAVA_OPTIONS=-Dfile.encoding=UTF-8
NetBeansのMercurialで日本語ログをコミットできるようにする
先の_JAVA_OPTIONS同様にHGENCODINGがNetBeansからでは認識されません。対処も同様に~/.MacOSX/environment.plistを編集します。dictの子に以下を追記。再ログイン後に認識されます。
<key>HGENCODING</key>
<string>utf-8</string>
postgresqlのインストール
homebrewでさくっと。以前はビルドエラーとかあったらしいですが、今は大丈夫です。
$ brew install postgresql
MySQLのインストール
homebrewでさくっと。
$ brew install mysql
/etc/my.cnf
[mysqld] max_allowed_packet=64M socket = /usr/local/var/mysql/mysql.sock character-set-server = utf8 innodb_file_per_table [mysql] default-character-set = utf8 [client] socket = /usr/local/var/mysql/mysql.sock default-character-set=utf8
操作方法あれこれ
アプリケーションがどこにあるかわからないんだぜ?
デフォルトでは「ctrl+space」で画面右上にspotlightという検索エンジンの検索条件フィールドが表示されます。インクリメンタルサーチでいろいろ探してくれます。ちなみに「ctrl+option+space」で検索ウィンドウが開きます。OS Xではシステムで日本語設定している場合、アプリケーションやシステムが表示するディレクトリなどを日本語表記にしていますが、実体は英語でのファイルパスです。そのようなファイルは日本語でも英語でも検索が可能です。例えば「アクティビティモニタ」は「activity monitor」でも検索にヒットします。
アプリケーションの中のディレクトリにアクセスする
.appはディレクトリなので、Terminalからcdでアクセスすると中に入れます。Finderでアクセスする場合は右クリックでコンテキストメニューの中の「パッケージの内容を表示」でアクセス可能です。
ライブラリフォルダがFinderに表示されない
なにかとアクセスすることが多いライブラリフォルダですが、一般ユーザへの配慮からか、OS X Lionから不可視に設定されました。可視に変更してしまいます。
可視にする
chflags nohidden ~/Library
不可視にする
chflags hidden ~/Library
TerminalのカレントディレクトリをFinderで開きたい
openコマンドで開けます。
$ open .
いろいろインストールしたアプリケーション
App Store
- dropbox:データストレージサービスのクライアント
- evernote:クラウド化されたメモ
- Alfred:ランチャ
- LimeChat:ircクライアント
- Cornerstone:svnのGUI
単体インストーラ
- 1password
- MacHg:mercurialのGUI
- CyberDuck:FTPクライアント
- KeyRemap4MacBook:キーアサイン変更
- Growl:いろいろ情報通知してくれる
その他の設定もろもろ
dashboardを無効にする
私はdashboardを利用しないので無効化してしまいます。
dashboardの無効化
$ defaults write com.apple.dashboard mcx-disabled -boolean YES $ killall Dock
dashboradの有効化
$ defaults delete com.apple.dashboard mcx-disabled $ killall Dock
Spotlightのショートカット
Ctrl + spaceがデフォルトなのですが、この組み合わせは貴重なのでoption + spaceに変更してしまいます。
locateが使いたい
$ sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.locate.plist
ファイル保存時のダイアログのデフォルトを詳細表示にする
$ defaults write -g NSNavPanelExpandedStateForSaveMode -boolean true
もとに戻す
$ defaults delete -g NSNavPanelExpandedStateForSaveMode
印刷のダイアログのデフォルトを詳細表示にする
$ defaults write -g PMPrintingExpandedStateForPrint -boolean true
もとに戻す
$ defaults delete -g PMPrintingExpandedStateForPrint
ネットワークディスクに.DS_Storeファイルを生成しないようにするOS XではFinderのアイコンの表示情報などを.DS_Storeというファイルで生成します。これはデフォルトでは不可視で、WindowsやLinuxでは不要なファイルです。ローカルでは問題ないのですが、ネットワークディスクにアクセスした場合に他のOSからはゴミとなってしまいますので、ネットワーク上のディスクには生成しないように設定します。
defaults write com.apple.desktopservices DSDontWriteNetworkStores true
dot filesのバックアップ
.bash_profileなどのファイルは中身に機密性がない(.sshとかは別)かつ修正したら自動でバックアップされてほしいということからgithubなどのバージョン管理ではなく、DropBoxを利用してバックアップしています。
オリジナルをDropBoxのディレクトリに移動して、本来あるべき場所からシンボリックリンクを貼るだけです。
作業前にバックアップ
$ cp ~/.vim.rc ~/.vim.rc.bak $ cp ~/.gitconfig.rc ~/.gitconfig.bak $ cp ~/.bash_profile ~/.bash_profile.bak
DropBoxにファイルを移動
DropBoxのdotfiles配下(ディレクトリは任意)に設定ファイルを移動する。
$ mv ~/Dropbox/dotfiles/.vim.rc ~/.vim.rc $ mv ~/Dropbox/dotfiles/.gitconfig.rc ~/.gitconfig $ mv ~/Dropbox/dotfiles/.bash_profile ~/.bash_profile
シンボリックリンクを貼る
ln -s ~/Dropbox/dotfiles/.gitconfig .gitconfig ln -s ~/Dropbox/dotfiles/.vimrc .vimrc ln -s ~/Dropbox/dotfiles/.bash_profile .bash_profile
まだ続く予定。
2011年6月25日土曜日
スクラム道バーストに参加した感想&doneの定義の話
2011/06/24にスクラム道バーストに参加してきました。申し込みを忘れていたのですが、当日行けそうに無かった方のご好意で代わりに参加してきました。@ledsunさんありがとう。
内容は過去のスクラム道の再演とトピックに対する議論の場でした。詳しい内容は他の方の素晴らしいレポートがあるのでそちらをご参照くださいw
選手ってなに?ってことが良くわからないまま選手として参加してしまいましたが、壇上に上ってもそんなに緊張しないものですね。変なこと言っても殴られたりしないので、このような形式があったらどんどん選手として名乗りをあげるといいと思います。
スクラム道バーストで「doneの定義を拡大/縮小することの是非」がトピックに上がりました。思い返すとストーリーのdoneの定義なのかタスクのdoneの定義なのかがあやふやだったので、それぞれ検討しました。
結論としては、拡大するにしろ縮小するにしろ、スプリントバックログをいじるのでプロダクトオーナーの判断が必要。拡大は(こなせるのであれば)問題になることはあまりないが、縮小はリリース時期や提供価値に影響が大きいので要注意。となりました。
ストーリーの場合
ストーリーのdoneの定義を変更するのはプロダクトオーナーの承認が必要。ストーリーをスプリントバッグログにいれる判断はストーリーが提供する内容に対する判断なので、doneの定義が変わった場合はストーリーが提供する内容が変わるはずだから。
doneの定義を拡大したい場合
スプリント内で追加するタスクが達成可能かの見積もりをした上でシステムに価値が向上するかをプロダクトオーナーに確認する(ストーリーのdoneの定義が拡大するということはタスクが追加されるはず)。プロダクトオーナーはもしかすると他のストーリーをスプリントに追加したいかもしれない。
doneの定義を縮小したい場合
縮小するということはストーリーのタスクをいくつか落とすことを意味する(ストーリーのdoneの定義に影響しないならタスクはチームの判断で落としてよいが、その場合は「ストーリー」のdoneの定義の縮小にはあたらない)。タスクを落とした結果、ストーリーの提供する価値がどのように変化するのかをプロダクトオーナーに提示して判断を仰ぐ。
- 他のストーリーのスプリントバックログから落とすことで当該ストーリーをdoneさせる
- 当該ストーリーを落として他のストーリーに入れ替える
- ストーリーを分割して、達成できないストーリーをプロダクトバックログにいれる
- あるタスクがブロック要素となっている場合はスクラムマスターにブロック要素の除去を要請する
などの判断などがありそう。
タスクの場合
タスクのdoneの定義の縮小がストーリーのdoneに影響を与える場合の対処は、ストーリーのdoneの定義の縮小と同じ。ストーリーのdoneに影響を与えない場合は縮小して問題ない。この場合はタスクを分割して不要なタスクを落とすことと同義。いまは必要ないという場合は他のストーリーのタスクとする場合もある。
doneの定義を拡大したい場合
タスクの所属するストーリーがスプリント内でこなせるなら、特に問題なし。しかし、そもそものタスクのdoneの定義がdoneしたとするには弱かったのではないか?という気もする。追加でこれもやっておきたい、はタスクの追加になるのではないか。
doneの定義を縮小したい場合
縮小したとして、それはそのタスクがdoneしたと言えるのかが問題。もし言えるのであればタスクが余分なものを含んでいたということ。言えないのであれば、それは縮小したからといってdoneしたということに意味が無い。ストーリーのdoneの定義に影響を与えるので、対処はストーリーのdoneの定義の縮小と同じ。タスクをdoneできない原因の対処はもちろん必要。
2011年6月20日月曜日
勉強会に参加すること
最近、勉強会などに参加するようになりました。何故かというと、こんな悩みがありまして…。
「生きる意味ってなに?」
とりあえず、生きるということは是と仮に置きます。生きてる限りは「より良い生を送りたい」ものです。より良く生きるって自分にとってはどういうこと? 自分にとっては「自分に価値が感じられる」「誰かを(多少なりとも)幸せにしている」「(いろいろあるけど)自分の欲求が満たされている」に少しでも近づくこととしました。
- 価値を生み出す(価値を生み出す自分には価値がある)
- 人を愛する(愛する人を幸せにするために行動する)
- 人に認められたり、認めたりする(承認欲求ってあるよね)
「他者との交流と自分の行動を通じて価値を作り出す」ことで実現できそうです。価値を作り出すためには能力が必要です。能力を得るにはどうしたらいいでしょうか?「学習して実践する」しかないですよね。インプットしてアウトプットしてれば自動的に能力が向上するはず。勉強会には人がいる。ということは相互活動でインプットとアウトプットができる。リソースの手当がつけば参加しない手は無いわけです。そんなわけで、都合がつけば勉強会に参加するようになったわけです。わかんなくてもできなくても得るものは必ずあるし、与えられるものは必ずあります。
Scrum Boot Camp横浜に参加した感想
6/18(土)に横浜で開催されたScrum Boot Campに参加してきました。Scrumの説明と演習でScrumへのとっかかりを体験できる勉強会です。休憩時間や懇親会でいろいろ感想を話したり、疑問点に対する意見を聞いたりできて有意義でした。以下、思ったことや感想や学んだことを雑多に書きます(あたかも最初から知っていたかのような口ぶりで書いている部分もあります)。
演習について
演習はテーブルごとに分かれてチームで行うのですが、自分のいたチームはほぼ違和感無く演習することができました。他のチームがどうだったのかに興味があったので、懇親会で別のチームの方々に感想を聞いて回ったところ、まったくうまくいかなかったチームは無いようでした。いろいろなバックグラウンドを持つ人々が初対面で演習可能というのは「Scrumの取り組みの一つ一つは誰でも可能なこと」と感じました。
勉強会に参加するということは、Scrumに興味がある、勉強しようとする意思がある、人の話を聞く気がある人が集まっている状態なので、そもそも成立する可能性が高いのは事実です。おそらく、参加者は自分の所属組織に戻って、勉強会で得たものを取り入れようとした際に相当のギャップを感じてしょんぼりするかもしれません。
感じたこと
自分を変えるのと他人を変えるのを比べると自分を変えることは自分自身の努力で可能ですが、他人を変えるのは自分の手の届かない部分が多いので、チームに導入するのは相当に難しいはずです。しかし、Scrum(じゃなくて他の開発手法でも)かどうかは、true/falseの二値で表されるのではなく、度数で表現するものなので、導入して成果が上がっている状態を想像して、その状態と現在の間を埋めていけば、ちょっとScrumからだいぶScrumに、そしてほとんどScrum、完全にScrumという風になるはず。
「うちの組織のメンバーはScrumを実施できるレベルにない」という質問がありました。確かに設計や実装、試験などのスキルの他にも「自動化されたテスト」「継続的インテグレーション」「ソフトウェア構成管理」「バグトラッキングシステム」「ペアプログラミング」「リファクタリング」「様々な活動の集計の自動化」などの様々な開発プラクティスを身につけた人々だけでチームが構成されていないとScrumできないと考えがちですが、Scrumを導入しはじめると必然的にスキルの向上や習得が必要になるはずです。これは「できるからやる」のではなく「できるようになるためにやる」そして「やるからできるようになる」と考えると良いのではないかと感じました。
Scrumにはいろんなツールがあります。プランニングポーカーとか朝会とかふりかえりとかバーンダウンチャートとか。全てのツールは可能な限り素早く最大限の価値を提供するための道具なので「何をどうする?そしてどうなった?」を明確にして「それは目的の達成に向かっているか?」を意識して取り組みたいと思います。
話は変わりますが、エリヤフ・ゴールドラット博士が亡くなりました。この人は「制約条件の理論」を生み出した人です。「制約条件の理論」というのは「システム(目的(ゴール)」を継続的に最大化するためのメソッド(といっていいのかな?管理哲学?)です。この制約条件の理論を達成するために「TOC思考プロセス」といういろいろなツールがあります。Scrumの導入のために役に立ちそうなツールが満載なので、まずは『ザ・ゴール ― 企業の究極の目的とは何か』という小説仕立ての書籍でどのようなものなのか一読することをおすすめします。
2011年5月28日土曜日
SafariのRSS FeedをOPMLに書き出してGoogle Readerにインポートする方法
手順
Thomas Tempelmann | Importing Safari's RSS feeds into Google Reader (OPML export) のDownloadからSafariFeedToOPML_1.0.2.zipをダウンロードしてきて解凍する。
- 自分のディスク上に新しいフォルダを作る(たとえばデスクトップ上、名前は好きにどうぞ)。このフォルダがブックマークを一時的に書き出す場所。
- お望みのRSSブックマークをSafariから書き出す。メニューバーの「ブックマーク」「すべてのブックマークを表示」で開いたパネルの左側に「すべてのRSS配信」があるので、好きなFeedを選んで(Command + Aで全選択)1.で作ったフォルダにDrag and Dropする。
- Safari Feed to OPML.appを起動して、1.のフォルダの中のファイルを全部をアプリケーションのウインドウにDropする。もしくはフォルダをDropする。アプリケーションは全てのRSSブックマークをウインドウの中にリストする。
- 最後に「Write OPML...」ボタンを押す。で、ファイル保存先を選ぶ。デスクトップを使うといいんじゃないかな。
- OPMLファイルができたので、1.でつくったフォルダは削除してもいい。
- このOPMLファイルをGoogle Reader(リーダー設定のインポート/エクスポートタブ)でインポートできる。