僕は発展途上技術者

せっかちな人のための git 入門 - git をインストールし、共同で開発できる環境を整えるまで

subversion に代わる新しいソース管理システムということで git が注目されているようだ。


» Git - Fast Version Control System


subversion と大きく違うところは、分散されたレポジトリがローカルマシンに置かれている点。これは、ネットにつながっていなくてもソースをコミットできるということで、最近は電車のなかでもコードを書いたりする僕にはうってつけ。


マニュアルチュートリアルは充実しているのだが、僕はとりあえず最初にツールを触ってみて、ざっと全体像をつかみ、それから細部を調べたい質なので、もっとてっとり早く体験できるガイドを探したところ、あまり適切なものが見つからなかった。


そこで、レポジトリを作り、それをリモートにあるサーバーに置いたあと、subversion で言えば svn commit や svn update などにあたるコマンドを叩いて、2人以上の開発者でソースを共有するというシナリオで git を試してみた模様を自分でまとめてみた。


1. 構成


実際に試した構成は以下の通り。


git.png


Windows 環境の Bill さんと Mac の Steve さんでソースを共有する。おおもとのレポジトリは契約している VPS の Ubuntu サーバーに置く。


2. git をインストール


まず、それぞれの環境に git をインストールする。git のソースは Index of /pub/software/scm/git より最新のものを取得する。


[Ubuntu]



ubuntu% cd /tmp

ubuntu% wget http://www.kernel.org/pub/software/scm/git/git-1.6.0.tar.gz

ubuntu% tar zxvf git-1.6.0.tar.gz

ubuntu% cd git-1.6.0

ubuntu% ./configure

ubuntu% make

ubuntu% sudo make install


[Mac]



mac% cd /tmp

mac% wget http://www.kernel.org/pub/software/scm/git/git-1.6.0.tar.gz

mac% tar zxvf git-1.6.0.tar.gz

mac% cd git-1.6.0

mac% ./configure

mac% make prefix=/usr/local all

mac% sudo make prefix=/usr/local install



[Windows]


Windows 環境の場合は、cygwin でインストールするのがてっとり早い。


cygwin の setup.exe を起動し、ダウンロードサイトは http://mirrors.kernel.org を選択したら、Devel カテゴリの下に git が見つかった。


チェックボックスを選択してインストールするだけ。


3. レポジトリを作成し、最初のコミットをおこなう


最初に Mac の Steve さんが開発に着手、最初のコードを書いてレポジトリにコミットすることにする。


まずレポジトリ(ローカルの)を作成します。



mac% cd ~

mac% mkdir myapp

mac% cd myapp

mac% git init


次に適当に firstfile というファイルを作成し、レポジトリに追加、コミットします。



mac% touch firstfile

mac% git add firstfile

mac% git commit -m 'first commit'


4. サーバーにリモートレポジトリを作成


次に Ubuntu サーバーにログインし、リモートレポジトリを作成します。




ubuntu% mkdir /var/git/myapp.git
ubuntu% cd /var/git/myapp.git
ubuntu% git --bare init


[2008/08/29 追記]

git --bare init

の bare の前のハイフンは二つです。酒井さん指摘してくれてありがとうございます。


Mac に戻り、ローカルのリポジトリ(master)をリモートのリポジトリ(origin)にプッシュ、つまり反映させます。example.com はサーバーのドメイン名です。



mac% cd ~/myapp

mac% git remote add origin ssh://steve@example.com/var/git/myapp.git

mac% git push origin master (master を origin にプッシュするという意味)


5. Windows でチェックアウト


Windows の Bill さんがソースをチェックアウトします。


cygwin から



win% cd

win% git clone ssh://bill@example.com/var/git/myapp.git


すると、myapp というフォルダが作成され、その下に firstfile というファイルがあります。


steve さんと bill さんで共同開発できる準備が整いました。


6. コミットとアップデート作業の実際


では、ためしに bill さんがファイルを追加しコミットしたあと、steve さんのローカルの開発環境にその変更を反映させてみます。


Windows 上で新しいファイル secondfile を追加し、コミットします。



win% cd ~/myapp

win% touch secondfile

win% git add secondfile

win% git commit -m 'second commit'


ここでコミットしたのはローカルのレポジトリ(master)に対してであって、まだ変更はリモートのレポジトリ(origin)に対しては反映されていません。


つまりここまでは Windows の bill さんはネットにつながっていなくてもできるわけです。


次にローカルのレポジトリの変更をリモートのレポジトリに反映させます。



win% git push origin master


この部分が subversion でいえば svn commit にあたるわけです。


mac では steve さんがリモートレポジトリにあった変更をローカルの開発環境に反映させます。



mac% cd ~/myapp

mac% git pull origin master


これが subversion でいえば、svn update にあたります。


bill さんがおこなった変更が反映され、myapp 以下に secondfile という新しいファイルができているはずです。


つまり、bill さんのおこなった変更は、順に



  1. bill さんの開発環境

  2. bill さんのローカルレポジトリ(master)

  3. ubuntu 上のリモートレポジトリ(origin)

  4. steve さんのローカルレポジトリ(master)

  5. steve さんの開発環境


という経路をたどって steve さんの環境に反映されたことになります。


7. まとめ


git を使って分散レポジトリを体験してみると、開発環境の変更を(ローカルの)レポジトリに反映させる部分が高速でおこなえるのが気持ちいいことがわかりました。


subversion だと、常にリモートのレポジトリに対しておこなわれるため、コミットに数秒〜十数秒かかります。わずかな時間ではあるのですが、開発が中断され、リズムが損なわれてしまいます。git だとこの中断時間が一瞬なのでほとんど気にならないように思えます。(まだ本格的に git を使って開発を始めたわけではないのであくまでもそういう印象を持ったということですが。。)


あと、各フォルダの下に .svn フォルダが作られないというのもわずらわしくなくていいかも、です。


git をこれから積極的に使っていきたいという気になりました。


以下、参考にしたサイトです。


» Git - SVN Crash Course


» Compiling Git for Mac OS X Leopard (10.5)


» はじめてのgit | IDEA*IDEA


» Setting up a new remote git repository


プログラマーでない人が知っておいて損はないプログラマーの常識技(テクニック)

最近、僕が最初に就職した会社の人と会う機会が急に増えた。


僕が最初に選んだ会社は通信キャリアだ。会って話をする彼らは人事畑、営業畑だったり、転職した人もいれば、そのまま頑張っていたりと様々な境遇でそれぞれ色々な世界で生きている。その彼らと話をすれば、僕が普段どっぷりつかっているネットの世界がいかに狭くてかなり特殊なのかということを思い知らされる。


彼らとたまに会って話をすれば、普通の感覚をなんとか呼び起こし、あるいは想像できる。そんな彼らに使ってもらえるようなサービスを作ることが多くの人に喜んで使ってもらえるサービスにつながると思っていて、そういう意味で非常に貴重な存在なのだ。


さて、前置きが少し長くなってしまった。


彼らと会うと、こっちが当たり前と思っていることでも彼らにとっては全然当たり前じゃなかったり、その逆もしかりだったりする。そんななかで、これはプログラマーでなくても絶対知っておいたほうがいい、と思ったコンピューター周りのことを挙げておく。


パソコン教室に一時期通っていた母から聞いたのだが、入るとまず Word や Excel の使い方を習うのだそうだ。年賀状の書き方とか。そんなことより僕だったらまず以下のことを教えると思う。もう少し大きくなってコンピューターを使いこなすことになるだろう息子たちにも。。。


1. (プログラマーならほとんどが使っているはずの)RSS リーダーを使おう


お気に入りやブックマークの代わりに RSS リーダーを使うべし。使うサービスはGoogle リーダーあるいは livedoor Readerあたりを勧める。僕は使っていないのだけれど、使っている人は多いし、使いやすいという声を多く聞くので。


RSS リーダーを使う前後で、僕のなかに流れ込んでくる情報の量がまったく変わってしまい、驚愕したことを今でもよく覚えている。「なんでもっと早くから使ってなかんだろう」と思ったものだ。2003年 RSS リーダーの先駆けだった bloglines がでて間もない頃だ。


RSS リーダーがまだ普通の人の間ではまったく浸透していないのは非常にもったいないことだ。みんなが RSS リーダーを使うようになったら、みんながいままでよりも少しだけ賢くなり、世界の知的レベルが少しだけ底上げされるような気がするのに。


2. (プログラマーがいつでも思っているように)できるだけ楽をしよう、怠けよう


プログラマーって細かくて、几帳面で、勤勉で、というイメージがあるようだ。細かくて几帳面というのは確かに必要な素質だとは思う。(僕はどっちかというとそうではないのだけど。。)でも勤勉というのはちょっと違う。あえて言えば、多くのプログラマーは楽をすること、怠けるために勤勉なのだと思う。


たとえば、ワープロで作成された文書に100ヶ所登場するキーワードを別のキーワードに変更しなくてはいけなくなったら、100個のキーワードをひとつひとつ修正するなんてことはしない。どんなワープロソフトやテキストエディタにもあるはずの一括置換機能を使って置換する。


それと同じ考え方をすべてのタスクに適用しようとするのがプログラマーだ。どんな仕事でも自動で、つまりコンピューターにおしつけてしまい、自分は楽をしようと思っている。一括置換機能を使うだけには飽き足らず、仕事の定型化されている部分を自動でやってくれる専用のプログラムを自分で書いてしまうところまで行けば立派なプログラマーの仲間入り。


そこまで行かなくても、常に「どうしたら楽にできるか」ということを考えるといい。あるいは周りのプログラマーの人に聞いてみれば、たいていのことなら楽する方法を知っているはずだ。


3. (プログラマーが良く使っている)ショートカットキーを覚えよう


2. の楽をしよう、と同義といえば同義だ。


アプリケーションや最近だと Web サービスでも、各機能を呼び出すショートカットキーが用意されているものだ。これを知っていると知っていないのとでは効率がものすごく違ってくる可能性がある。それぞれの操作で、ショートカットキーを使うのと使わないのではわずか数秒の違いかもしれないが、良く使うアプリケーションならそれが積もり積もって結構な差になるはず。


ショートカットを集めた Cheat Sheet というものがあって、たとえば Gmail なら


» Gmail Shortcuts (printable cheatsheet)


のようなものが検索すれば見つかるので、こうしたシートを印刷しておくでもよし、とにかく何度か同じ操作をやってるなあ、と思ったらそれをショートカットキーを使うことでサクッとできないかを考えるようにするといいと思う。


プログラマーが何か作業をしていたら、背中の後ろから見てみるといいかもしれない。マウスを動かしていないのに、次々、アプリケーションの機能が呼び出されていたら、それはその人がショートカットキーを使っているからかもしれないので教えてもらうか、技を盗んでしまおう。


まとめ


なんか文体が偉そうになってしまった。途中で没にしようかとも思ったのだが、せっかく書いたので公開してしまう。


僕としては、



  • 営業でない人が知っておいて損はない営業の常識

  • 人事でない人が知っておいて損はない人事の常識

  • マーケティングでない人が知っておいて損はないマーケティングの常識


とか聞いてみたいな。


誰か書いてください。


Facebook Developer Garage Tokyo にて、開発事例として Kanji-Fandom FB版を紹介します

Facebook に注目しています。


Facebook のディベロッパーが集う


» Facebook | Facebook Developer Garage Tokyo


というイベントがあるというので、参加を申し込んだところ、Rails を使っての開発事例の一つとして


» Kanji-Fandom Facebook バージョン


を紹介させていただけることになりました。


これが初めての Facebook アプリの開発で、まだまだこなれているわけではありません。技術的につっこんだ話はできないとは思いますが、開発でつまずいたこととか気づいたことなどを紹介して、これから FB アプリを開発しようという人たちに役に立つ話ができれば、と思っています。


Facebook に興味がある方、ぜひ一緒に参加しましょう。


Mac でバックスラッシュを入力するには Option(Alt)キー + ¥

完全に自分用メモ。



あまり普通の人には関係のないバックスラッシュですが、たまーに必要な時があります。

ソフトウェアの環境にもよりますが、

optionキー(alt) + \ で、バックスラッシュになります。


» バックスラッシュ(\)を素早く入力 -macTips Mac OSX- より


日本語入力まわりは Windows の方が使いやすかったなあ。


追記


コメントで、ことえりの環境設定で”入力文字”タブの”Jisキーボードの ¥ キーで入力する文字”をバックスラッシュにすればいいということを教えていただきました。


これで ¥ をタイプすれば \ が入力され、Option + Y で ¥ マークを入力できます。


コード書くとき ¥ よりも \ を入力する機会が多い僕にはこちらの方がいいですね。


助かりました。なんでもブログで発信してみるものですね。


griffin-stewieさん、どうもありがとうございます。



英語の名前を漢字に変換する Kanji-Fandom Facebook 版をリリースしました

Kanji-Fandom は英語の名前を漢字に変換する Web サービスです。


この Kanji-Fandom の Facebook バージョンを作りましたので紹介します。


» Facebook | Kanji-Fandom


Facebook にアカウントがあれば上記リンク先から Kanji-Fandom のアプリケーションを追加することができます。


追加すると以下のように自分の名前が漢字に変換され、各漢字の意味とともに表示されます。


kanji.png


ただし、英語の名前をおもな対象としているので、日本人の名前だと変換されない可能性が高いです。


なので、外国人の友人・知人の方々に紹介してみてください。


Paste to your Profile ボタンを押すと、表示された漢字名を自分のプロフィール画面に貼付けることができます。


本家サイトの方で作った漢字名も Facebook のプロフィール画面に貼付けできるようにしました。Facebook 版 Kanji-Fandom から本家サイトの方に飛び、好きに漢字名を作ったら、それを Facebook のプロフィールに表示することができます。


Facebook アプリケーションを開発するにあたり、Rails プラグインの


» facebooker


を使用しました。


まだベータ版ですが Beta PDF を購入できる以下の書籍が非常に参考になりました。Rails とこれ一冊で Facebook アプリケーションを作るには十分だと思います。


» The Pragmatic Bookshelf | Developing Facebook Platform Applications with Rails


Facebook は5000万人以上もユーザー数がいると言われているSNSです。Facebook アプリケーションを作れば、この超巨大なネットワークの全ユーザーが潜在ユーザーとなるわけで、なかなかエキサイティングな話です。


mod_rails Enterprise Edition に切り替えました

Ruby on Rails で開発したいくつかのサービスを Apache + Mongrel という構成から Apache + mod_rails に切り替えています。


» Overview — Phusion Passenger (a.k.a. mod_rails)


mod_rails(正式名称は Phusion Passenger)は、Rails の弱点と言ってもいい本番環境へのデプロイの煩雑さを解決した、約一ヶ月前にリリースされ Rails 界隈で話題となったモジュールです。


» MOONGIFT: » チェック必須!Rails新時代の到来か?「Passenger(mod_rails for Apache)」:オープンソースを毎日紹介


一ヶ月ほど試しに使ってみましたが、何事も起こらず安定しています。


今なら自分が適切と思った額で Enterprise Edition ライセンスを取得できます。


今後開発していくサービスには積極的に mod_rails を使って行こうと思っています。その際何か困ったことが起こったときに、ライセンスを持っていれば手厚いサポートが受けられることは、いくつかの Web サービスやソフトウェア、オープンソースのプロジェクトの運営者側を経験しているので良く知っています。


ものを開発する身としては、時間と労力をかけて作り出されたものにはそれ相応の対価をもって報いる文化が定着してほしいと願っています。もし少しでも mod_rails の恩恵にあやかるのならばライセンスを購入することをぜひともおすすめします。


以下のページの Buy Enterprise License Today より PayPal 経由で購入できます。PayPal のアカウントがなくてもクレジットカードがあれば送金できます。


» Passenger Enterprise Edition — Phusion Passenger (a.k.a. mod_rails)


ライセンスを購入すると、ライセンスキーが送付されてきて、キーを有効にすれば、以下のようにHTTPヘッダーに Powered By Phusion Passenger Enterprise Edition の文字が現れます。


passenger.png


あと、いまなら購入者の名前が Passenger Enterprise Edition — Phusion Passenger (a.k.a. mod_rails) のページに表示されるという素敵なおまけがついてます。


頼めば名前の代わりに会社や Web サービスなど特定ページへのリンクを表示してくれるようなので、ちょっとした宣伝になるかもしれません。寄付した額が多いほど上位に表示されます。


コンパスなしで紙に円を描く方法

» パーフェクトな円を紙の上に描く簡単な方法 : 僕は発展途上技術者


というエントリーを一年前に書いた。


ブログ上での反応はいまいちだったのだけれど、YouTube にあげている元動画の方には英語のコメントがひっきりなしについていて、View数もいつの間にか40000を超えている。


欧米人の方がこういうの好きなんでしょうね。


オリジナルの動画を撮ったときは、ペンのインクがなくて円がかすれてしまい、そこを指摘して「全然パーフェクトじゃないじゃないか!」というコメントが多かったので、やり直した動画をアップしました。



ペンの持ち方とか支点をどう定めるかこの動画だとわかりにくいかもしれません。オリジナルの以下の動画を参考にしてください。



追記


この方法もなかなか!と思ったので思わず追記します。


中指と薬指を交差していて、こちらの方が技!って感じがします。


» コンパスなしで紙に円を描く方法(小さめの) (ウラ・スペシャライゼーション)



Mac で Microsoft Messenger を使うわず Adium を使う

Mac に変えてから、「あれ、そういえばあの人やあの人と最近 chat してないな」とうすうす思っていたのですが、その原因は Windows Messenger を使わなくなってからなんじゃないかと。。。


というわけで、リリースされたばかりらしい


» Microsoft Messenger for Mac: Connect Instantly Online| Mactopia


をインストール。


windowsmessenger.png


Mac 上で動く Microsoft 製品は不思議な感じ。デザインもなかなかじゃない?と思って使い始めたら、Mac の先輩に「いやいや Adium でしょ」と言われました。


» Adium - Download


Adium はフリーのメッセンジャーアプリケーション。MSN や Yahoo、Google Talk など数多くのサービスのアカウントが同時に使える。(Skype 使えないのが残念)


adium.png

↑ こんなに対応している!


なるほど、断然こっちだね、ということで可哀想な Microsoft Messenger、僕の Mac 上に居座った時間はわずか数分でした。


このエントリーも途中まで Microsoft Messenger のことを書こうかな、と思っていたのですが、途中で変更。


Google Calendar に祝日を表示する

ちょっとしたライフハックです。


スケジュールは Google Calendar で管理している。ネットにつながる環境であればいつでも入力、参照できるし、GooSync というツールを使ってW-ZERO3[es]と同期しているので、外出先でもチェックできる。


共有機能も便利で、うちの場合は家族それぞれのスケジュールを共有している。息子たちの入学式、入園式、参観日といった予定があればその時間帯が埋まるから打ち合わせを入れないし、逆に僕が打ち合わせで外出するときは家で仕事をしないから、僕の仕事の予定を見てお友達を家に呼べる、といた具合に活用されている。


ただ、Google Calendar には祝日が表示されないという難点がある。これまではなんとなく乗り切ってきたけど、ゴールデンウィークが近づいてきて、僕は基本的に祝日は関係ないんだけど、他人がいつ休んでいるのかがわからないというのは予定を立てにくい。


そこで方法を探してみたら、あっさり解決。


» @ parallel minds: iCalで祝祭日表示


に iCal に祝祭日をインポートする方法が紹介されているが、 同じ方法がそのまま Google Calendar でも使える。


» アップル - iCal - カレンダーライブラリ


に日本の祝祭日のカレンダーデータがあるから、この URL を Google Calendar に追加すればよい。




追記


Google Calendar の左下メニュー、追加>公開カレンダーを追加>一覧から探す でも「日本の祝日」を追加できました。しかもこちらの方は、Apple が公開しているものと違って、5/6 がちゃんと振替休日になっています。


この情報ははてなブックマークのコメントで教えていただきました。ありがとうございます。


ical1.png

↑ こんな感じで表示される


Google Calendar を使っているからだろうけれど、iCal 形式のデータってとっても便利。


iCal 形式のカレンダーデータをみんなで共有しよう、という


» iCalShare - Share Your iCalendars!


があったり、日本のサイトだと、イベント情報を共有できる


» eventcast - ソーシャルイベントサイト


もイベント情報を iCal データで配信していていい感じだ。


うまく活用する方法がもっともっといろいろあると思う。


» アカデミーヒルズのカフェ貸切時間を Google Calendar に表示 : 僕は発展途上技術者


では、HTML をスクレーピングして強引な方法を取っているが、最初から iCal 形式で発信してくれれば済むことなのだ。


持っているデータを iCal 形式に変換したい、とか良いアイデアあるので作ってほしい、という方がいらっしゃったらご相談に応じます。


webmaster at champierre dot com まで。


 


月額380円の「ワイヤレスゲート ヨドバシカメラ・オリジナルプラン」と「モバイルマップ」でどこでもオフィス

以下、先日リリースされた「モバイルマップ」の自画自賛エントリーなので興味ない方は読み飛ばしてください。


» モバイルマップ|PC Online ビジネスパーソンのパソコン活用情報サイト


近くで使える公衆無線LANサービスを探すのに便利な「モバイルマップ」。開発に関わっておきながら、実は普段は公衆無線LANを使っていない。


普段はイー・モバイルを使っているのだが、いまや都内ならほぼどこでも電波が入るようになった。僕のようにノートパソコンさえあれば仕事ができる人にとってはまさに画期的なサービス。イー・モバイルさまさまなのだ。


ただ、PHS などと比べて格段に速いとはいえ、公衆無線LANよりは遅いことは確か。それに、メールをちょっと確認するとか Google Calendar でスケジュールをちょっと確認したいというときには、わざわざノートパソコンを広げるより、iPhone で確認したいな、というときがある。


そこで、


yodobashi.com : 月額380円で使い放題の高速インターネットサービス


に入ってみた。


ワイヤレスゲートは複数の無線 LAN サービスが一つの ID で利用できるサービス。なかでもBBモバイルポイントとlivedoor Wirelessが利用できるのが大きい。


そのワイヤレスゲートがヨドバシカメラのプランだと月額380円で利用できるというのだからかなりお得。


契約したあと、さっそく使えるかどうかを試すため「モバイルマップ」で自宅周辺を検索。「BBモバイルポイント」と「FON(含livedoor Wireless) 」を選択し、自宅最寄り駅を「住所や駅名、主要施設名を指定する」の部分に入力して、「移動」ボタンをクリック(入力後リターンキーを押しても移動できる)。うーん、自分で開発しておいてなんだが、サクッと検索できて便利!


mobilemap1.png


駅近くのマクドナルドで使えることを確認し、パソコンと iPhone を持って場所移動。


すんなりと接続完了。


img118.png


iPhone については


» 接続方法/iPod touchの場合 :: WIRELESS GATE


が参考になる。


で、そのままこのエントリーを店内から書いている。


これで、iPhone でちょっとメール確認ってときに使えるし、イー・モバイルとの二段構えでますますどこでもオフィス化が進んだ。まったく便利な世の中になりました。


プロフィール

株式会社まちクエスト代表、つくる社LLC代表。

Scratchで楽しく学ぶ アート&サイエンスRaspberry Piではじめる どきどきプログラミングを書きました。

オンラインコンテンツ: 大人のためのScratch

Amazonから図書館検索 Libron、iPhoneアプリ ひらがなゲーム かなぶん を作っています。

Email: webmaster at champierre dot com

Twitter @jishiha

最近のエントリー

アーカイブ