「うわっ…私のバージョン管理、ダメ過ぎ…?」を解決するGitの使い方“超”入門:かんばん!〜もし女子高生がRedmineでスクラム開発をしたら(5)(1/3 ページ)
本連載は、ちょっととぼけた女子高生の姉妹が今注目のアジャイル開発手法であるスクラムとプロジェクト管理ソフトの「Redmine」を使って、システム開発をするというフィクションです。
これまでのお話
本連載は、ちょっととぼけた女子高生の姉妹が今注目のアジャイル開発手法であるスクラムとプロジェクト管理ソフトの「Redmine」を使って、システム開発をするというフィクションです。
ひょんなきっかけから電子目安箱(カウンセラー)を開発することになった「ぷりん」と「まいん」の姉妹。第1回の『高校生になって初めてスクラムを始めました〜「ストーリー」で何を作るかまとめよう』、第2回の『スプリントと“かんばん”でチームのビートを刻め!! 〜スクラム開発で使う手法とツール〜』で取りあえず「スクラム」について勉強しました。
連載第3回「スクラムやるならRedmineとALMinium! 〜新キャラ登場!無表情なあの人が笑う日は来るのか?〜」では、ALMiniumを利用してRedmineのセットアップとプロジェクトを作成するところまで紹介しました。前回の連載第4回「Redmineでスクラム実践!〜アジャイル開発始めました〜」では、いよいよRedmineを使ってスクラム開発を実践。一通り使ってみました。
■登場人物の紹介
さて今回からは、「Git」について2回に分けて紹介していきます。スクラムに必須ではありませんが、スクラムを始めとしたアジャイル開発プロジェクトで最近広まりを見せています。バージョン管理システムの「Subversion」などを知らない人でも分かるように解説しているので、「Gitは難しい」という方も、ぜひお読みください。
ファイル管理のナイトメアっ!?
ねぇねぇ、この前、学校のグループワークのレポートを作ってたら、共有ファイルサーバに保存したファイルがグループのほかの人に上書き保存されてたんだー。せっかくレポートに書いた内容が、消えて、また書き直さなくいけなくなっちゃって大変だったんだよ(T_T)。
あと、ファイルを更新したときに、どこが更新されたか分からないから、別のレポートでは、ファイルを名前を付けて保存してたんだー。
それを、皆で編集しだすと、↓のようになっちゃって、結局どれが最新なのか分からなくなっちゃった(>_<)。皆のレポートをつなげるのに苦労したよー!!
バージョン管理は「Git」におまかせ
そういうときは、「Git」を利用すると便利よ、おねーちゃん。Gitを使うと、大勢の人で編集した内容をうまく合わせてくれるし、ファイルのバージョンの管理が楽になるよ。例えば、AさんとBさんがファイルを編集したときに別々の場所を編集していると、図1のように自動的に変更点を集めてくれるの。これを「マージ」って呼ぶんだよ。
図1の例では、変更点が別々の場合だけど、変更点が重複した場合、重複した場所を教えてくれるよ。学校のレポートじゃなくて、プログラムのソースコードの管理に使われることが多いんだけど、ファイルを簡単にマージしてくれるから、大勢の人で同時に開発しても整合性の取れたファイル管理ができるようになるよ。
便利だねー。
そんな感じでファイルを管理するツールのことを「バージョン管理システム」って呼んでるんだよ。Git以外にもいろいろあるんだけど、記事「分散バージョン管理Git/Mercurial/Bazaar徹底比較」にほかのバージョン管理システムについて書いてあるから、興味があれば読んでみてね。
あと思いっきりステマだけど、『Gitポケットリファレンス』って本もあるみたいだよ〜。
「スクラム界のドラッカー」こと@ryuzeeさんも、ブログに書評を書いていて、「Oかもとさんの前書きを見ると、Gitはツンデレで、戦隊ロボのツールと連携できて、Gitのコアユーザーはオタクだとか、Gitを使いこなして海賊王を目指せとか、こんなん前書きに書いたら立ち読みした読者は、全編がこんなトーンなのかと思って逃げ出してしまいそう」ってな感じで絶賛しているみたいねー。
それって、本当に絶賛って言うのかしら。ダメっぷりが際立っているだけな気がするけど(ーー; まぁ、前書き以外は、意外とまともみたいよ。エラーメッセージの対処法なんかもコマンドごとに細かく書いてるから困ったときに役に立ちそうね。
■「コミット」は因果の記録
Gitを使うと、保存したファイルを、どのバージョンでも取り出したり、比較したりできるよ。例えば、何かのプログラムを作っていて、それが普通に動いていたとするよね。そのプログラムを書き換えるときに間違っていると、以前動いていた機能が、いつの間にか動かなくなることがよくあるのよ。Gitを使っていれば、そんなときでも変更内容を記録してあるから、動いていた状態のプログラムに戻すことができるし、動かなくなったプログラムのソースコードの違いがどこにあるか調べられるんだよ。
へー、何が原因でプログラムが動かなくなるか分かるわけね。まさに「因果の記録係」って感じね
ちなみに、ファイルに対する変更の1つ1つの記録のことを「コミット」って呼ぶんだよ。コミットに番号や記号を付けたものは「リビジョン」と呼ばれることもあるの。コミットには、メッセージが付けられていて、例えば、「ユーザー認証機能」を実装する変更であれば「ユーザー認証機能を実装」みたいな感じで、なぜその変更をしたか記録しておくの。そうすると、後で何のためにどういう変更をファイルに加えていったか確認できるんだよ。
■「ブランチ」は食事のことではありません
あと、「ブランチ」っていう機能があって、開発者が皆で編集しているコードや、ほかのバージョンに影響を与えずに複数のバージョンの保守や機能追加などの開発ができる機能もあるの。
私も休みの日は朝ごはん食べるの面倒くさいから、よくブランチするよ!!
「ブランチ」っていうのは、「ブレックファースト(朝食)とランチ(昼食)の中間」という意味じゃなくて、「枝」の方ね。ある開発からリリースしたバージョンの保守用と、次バージョンの開発用に枝分かれさせて開発することがあるけど、ソフトウェアの開発の分岐を「木」に見立てて、「ブランチ(枝)」と呼ぶんだよ。
例えば、図2の例だと、最新版を開発するブランチがあって、そこから、1.xと2.x用の保守をする枝(ブランチ)が伸びたり、変更を行うブランチが伸びたりしている感じね。
ふーん、「世界線」とか、「因果の分岐点」とかの方が分かりやすいと思うんだけどなぁ
いや、普通の人は分からないから……。
■Gitの構成的な何か
何となーく、イメージは、分かるけど、具体的にGitってどのようにして使うのかなぁ。亜琉美ちゃん、教えてくんない?
承知しました。Gitの一般的な作業環境では、皆で作ったファイルを共有する「共有リポジトリ」と、ファイルの各編集者が作業するPC上にある「ローカルリポジトリ」の2つがあります。連載第3回で紹介したALMiniumを利用した場合、ALMiniumをインストールしたサーバ上で共有リポジトリを管理できます。
リポジトリは、各ファイルの編集履歴が記録されたデータベースのようなものです。共有リポジトリには、皆の編集履歴が記録されていて、共有リポジトリの内容を各開発者が利用するPC上にコピーしてローカルリポジトリとして利用します。
ローカルリポジトリから、自分が作業するべき編集履歴の最新版ファイルをフォルダに取り出し、編集します。フォルダに取り出されたファイルを「作業ツリー」と呼び、編集者は作業ツリー上のファイルを編集します。
Gitをチームの開発で使うには、こんな感じで共有リポジトリが必要なんだけど、最近はWebサービスとして使える「GitHub」が人気なんだよ。GitHubを使うと、共有リポジトリのためのサーバを自前で構築することなく、簡単に利用できるからなんだ。でも、GitHubに登録したファイルは基本、ほかのユーザーからも見られて、社外秘や学外秘のファイルを管理する場合は、お金を払ってプライベートリポジトリを利用する必要があるの。
では、ツモ……いや、ロンより証拠の大三元。次ページからは、あなたのプロジェクトに入っているALMiniumを使ってRedmineとGitを組み合わせて利用する方法を見ていくよ!! Redmineの連載でもあるからね。ALMiniumのインストールと初期設定は、スプリント3「スクラムやるならRedmineとALMinium!」を見て、あらかじめ使えるようにしておいてね!
オリジナルのRedmineを使っている人は、「Redmine SCM Creator」プラグインを使うと、ALMiniumのようにWebの画面から作れるようになるよ。後、GitリポジトリのWeb認証に関していうと、Redmine 2.1.0からGitでWebの認証ができるようになったんだよ。
Copyright © ITmedia, Inc. All Rights Reserved.