ナウなヤングのためのgithub入門講座 -基本機能からdotfiles管理まで-
gitによるバージョン管理
バージョン管理システムはつかってますか?
僕は前に自分の作成したコードを元に、後輩にプログラムを作らせようとしてまずは僕のコードをコピペしろと指示したところ、コピペしかしてない(と言い張る)割にはコピペしたコードは動かず、さらに何故かコピペ元の僕のコードが滅茶苦茶に荒らされて当然のごとく動かなくなるという、なんかもう幽霊の存在を認めない限り説明がつかないような怪奇現象に遭遇したことがあります。しかもそのときはcpコマンドによるバックアップに頼っていて運悪くバックアップを忘れたために僕の貴重な1日が消え去ってしまった訳でして、それから僕はバージョン管理システムに頼ることを固く心に決めました。また僕はその目を覆いたくなるような残虐な事件以来、建設業界に見習って、IT業界でもプロジェクトキックオフ時にお祓いはすべきだと訴え続けています。
まぁそれはいいとして、いやまだ傷が癒えてないので全然よくないのですが、バージョン管理の有名所としてはsubversion,git,mercurialといったところだと思いますが、会社用途だとsubversionを使うことがまだまだ多いのかもしれません。直感的で、学習コストはgitなどの分散管理システムより低い為だと思います。
が、上のgoogleの検索トレンドの推移を見れば一目瞭然なように、今や時代はgitやmercurialのような分散バージョン管理システムなわけです。しかも国・地域で見るとsubversion使ってるのなんて日本だけという感じです。想像以上に日本がぶっちぎりですね。
というわけで、流行に敏感な若者である僕としてはこれはgitを使うしかあるめえというワケです。
ちなみにgitの検索割合のトップはトルコでした。さすがはトルコ風呂発祥の地といったところでしょうか。
エンジニアとしてのgithub
gitを使うとなれば、ここはひとつgithubを使ってみたいわけです。
githubはgitのプロジェクトをホスティングしてくれるサービスです。コード管理部は結局はgitなのでただの公開リポジトリなだけなんじゃ…という感じもあるかもしれませんが、というか僕は実際そんな感じだったのですが、「Social Coding」という文字が思いっきりgithubのページのタイトルに入っているように、ソーシャルな部分こそがgithubの売りな訳です。
ブログやtwitterで自分の知ったかぶり知識を披露したり、技術的な疑問を下心満載で#vimとかハッシュタグ付けてつぶやいたりすると親切な方々がつっこんでくれたりするのでとても嬉しいし助かるのですが、それがよりコードと近い環境でおこなわれるというのは魅力的です。
また、最近では採用時は志望者のgithubを見ることから始まるなんてところも多いそうです。確かにコード書いてなんぼですしね。人間力とかそんなもんお前の胸三寸だろ的な能力を見定められるより自分の書いたコード見せるほうがお互い幸せになれるはずでしょうし。
という感じでgithubをうまく活用できればただの公開リポジトリ以上のものになるかもしれないわけです。
まずはアカウントをつくってみる
まぁそんなことよりもまずはアカウントをつくってどんなもんか雰囲気を味わってみましょう。
githubのサイトに飛んでアカウントを登録します。
ど真ん中に青い登録ボタンがあるので、それを押して登録に進みます。
有料アカウントもありますが、わざわざ僕の個人的な日記を盗み見にくるあなたがたのような貧乏人には無料アカウントがお似合いです。上の「create a free account」ボタンを押しましょう。
次の画面で必要事項を入力すれば登録は完了です。
githubの素敵な機能
登録がうまくできたので、さっそくいくつか機能を使ってみます。
フォローする
肝心のソーシャルな機能はいくつかあります。
まずはtwitterのようにユーザーのフォローができること。フォローをするとその人がどのようなリポジトリを公開しているかが、誰をフォローし始めたかなどが手に取るように分かります。フォローしたユーザーの行動はログイン後のダッシュボード「Your Actions」タブから見ることができます。
上に書いたようにgithubはその人のプログラミング履歴が表れるため、twitterよりかは実名でやっている人が多いような気がします。フォローした人やしようとした人のプロフィールの名前を見て、あぁこいつリアルの知り合いじゃねぇかよこいつ何してんだよ…というかtwitterで何呟いてんだよ…とノスタルジックな気分に浸るという楽しみ方もありかもしれませんね。誰とは言いませんが。誰とは言いませんが。
フォローしたいユーザーのページを開き、followボタンを押せば完了です。
ウォッチする
言いようのない気分に浸っていてもしょうがないので、気を紛らわせるためにもドンドンgithubの機能を体験してみましょう。
フォローのような機能ですが、気になるプロジェクトをウォッチすることができます。ウォッチを行なうと、フォローと同じくそのプロジェクトのコミットログがこれまたダッシュボードから見れるようになります。Node.jsのようなものすごい勢いで開発が進んでいるプロジェクトの情報が楽に手に入るのは魅力的ですね。
ウォッチしたいプロジェクトのページを開き、watchボタンを押せば完了です。
gistで簡単なコードを張る
プロジェクトを作成するほどでもないんだけど、ちょっと人にコードを見せたい時なんかにgistが役にたちます。gistは1ファイルのテキストを貼りつけることができます。ファイル名からファイルタイプを判別し、シンタックスハイライトまでしてくれちゃいます。
せっかくなので試しに1つ公開してみましょう。
ダッシュボードの「gist」リンクをクリックします。
gistのページに飛ぶので、早速ファイル名とコードを書いてみましょう。書いたらsaveボタンを押します。
これで完了です。試しにappendChildのラッパー的なものを書いてみました。htmlそのままでも、html要素形式でもthisにバインドした要素に対して挿入できます。こうしとほうがいいとかあったらforkしてください。
リポジトリを公開してみよう -dotfilesの管理-
ここまできたらリポジトリも使ってみましょう。適当なテストファイルを置くのもアレなので、ドットファイルをgithubで管理してみましょう。
ドットファイルはhomeディレクトリにある各種プログラムの設定ファイルです。.vimrcとか.screenrcとか、ああいうやつです。これらがgithubにあると同じ設定ファイルを例えば会社と自宅のような別環境で使うことができ、どちらかで設定をしなおすという面倒なこともなくなり便利です。
ssh公開鍵の設定
githubへのpushを行なう際にはssh接続すると、その場合公開鍵を設定する必要があります。
公開鍵暗号方式って何?ということについては、下のリンクや自分で調べてください。
http://www.infonet.co.jp/ueyama/ip/glossary/public_key.html
早速鍵ペアを作成しましょう
# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/shimomura/.ssh/id_rsa): 【鍵を保存するディレクトリを入力する】
Enter passphrase (empty for no passphrase): 【パスフレーズの入力】
Enter same passphrase again: 【パスフレーズの再入力】
Your identification has been saved in /home/shimomura/.ssh/id_rsa.
Your public key has been saved in /home/shimomura/.ssh/id_rsa.pub.
保存ディレクトリはデフォルトは~/.sshです。プロンプトで何も入力しなければ、そこに鍵ペアが配置されます。
一応公開鍵のパーミッションを変更しておきます。
このとき鍵ペアの名前を管理しやすいよう適宜変更しておいてください。
# sudo vim config
ssh接続時に秘密鍵を使うための設定を.ssh/configファイルに以下のように書き込みます。
Host github.com
Hostname github.com
Identityfile ~/.ssh/github/id_rsa
Hostは任意です。適当にssh接続時に使う名前を入力してください。
Identityfileには秘密鍵(.pubじゃないほう)のパスを入力してください。
これで公開鍵の内容をクリップボードにコピーしましょう。
ここまでできたら今度はブラウザからgithub側の設定を行います。
ダッシュボードのAccount Settingsを押して設定ページに飛びます。
設定ページの「SSH Public Keys」タブをクリックします。
Add another public keyをクリックし、さっきコピーした公開鍵を貼り付けます。
これで「Add key」を押せば公開鍵の登録は終わりです。
再び端末にもどり、テストをしてみましょう。
# ssh git@github.com
PTY allocation request failed on channel 0
ERROR: Hi shim0mura! You've successfully authenticated, but GitHub does not provide shell access
Connection to github.com closed.
ユーザー名はgitで接続します。ERRORとかでちゃってビビるのですが、これで接続は上手く出来ています。
リポジトリにpushしよう
(すげえ長ぇ…正直もう面倒くさくなってきた…)
ここからやっとリポジトリが作れます。ダッシュボードで「New repository」ボタンを押しましょう。
リンク先で必要事項を記入します。プロジェクト名はdotfilesにしましょう。
そうするとご丁寧に次にやるべきことを表示してくれます。ので、このとおりにコマンドをぶっ叩きましょう。
# git config --global user.name "shim0mura"
# git config --global user.email tatshimomura@gmail.com
まずはgitにユーザー名とメールアドレスを設定します。gitをインストールしていない場合は yum install git とかでインストールしましょう。なお、gitのコマンドについてはほとんど解説しません。僕がよく理解してないからです。
# cd ~
# mkdir dotfiles
# mv .vimrc dotfiles
# mv .gvimrc dotfiles
# mv .xmodmap dotfiles
# mv .bash_profile dotfiles
# mv .vim dotfiles
homeディレクトリにdotfilesディレクトリを作成し、その中に管理したい設定ファイルをいれます。
# ln -s dotfiles/.vimrc .vimrc
# ln -s dotfiles/.gvimrc .gvimrc
# ln -s dotfiles/.xmodmap .xmodmap
# ln -s dotfiles/.bash_profile .bash_profile
# ln -s dotfiles/.vim .vim
設定ファイルの読み込みパスは変えていないし変えたくもないので、dotfilesに移したファイルのシンボリックリンクを張ります。
# cd dotfiles
# git init
# git add .
# git commit -m "first commit"
git initでリポジトリを初期化、git add . でディレクトリ内のすべてのファイルをaddしてコミッします。この時点ではローカル環境にコミットしただけです。
# git remote add origin git@github.com:shim0mura/dotfiles.git
githubのリポジトリをoriginという名前で登録します。shim0muraの部分はユーザー名で読み替えてください。
# git push -u origin master
Counting objects: 13, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (11/11), done.
Writing objects: 100% (13/13), 9.96 KiB, done.
Total 13 (delta 0), reused 0 (delta 0)
To git@github.com:shim0mura/dotfiles.git
* [new branch] master -> master
Branch master set up to track remote branch master from origin.
これでやっとgithubにpushできました。ちなみに-uオプションをつけることによって、dotfiles内の設定ファイルを編集したとしても、git push だけでgithubへプッシュしてくれるようになります。便利ですね。
これでgithubの基本的な使い方はわかったはずです。お疲れ様でした(僕が)。