Ruby on RailsでWebアプリケーションを開発する場合、Gitを利用してソースコードのバージョンを管理するのが一般的です。そのためGitによるバージョン管理はWebエンジニアにとって必須のスキルと言えるでしょう。GitHubの使い方と合わせてGitによるバージョン管理のスキルを身に付けてください。
今回はRubyのソースコードのバージョン管理の重要性とGitの基本的な使い方について紹介します。
ソースコードのバージョン管理の必要性
Ruby on RailsによるWebアプリケーション開発のようなソフトウェアの開発では、ソースコードを安全に管理する仕組みが必要であり、その仕組みとして使われるのがソースコードのバージョン管理です。
まずはソースコードのバージョン管理の基本について解説します。
ソースコードのバージョン管理とは
Rubyに限らずプログラム開発の仕事ではソースコードを安全に管理しなければなりません。例えば途中まで動作していたのに、ある処理を追加したら全く動かなくなった場合、動作している時点に戻って作り直さなければなりません。しかし、もうその時点に戻れないとしたら、最悪最初から作り直すことになり、納期が遅れたり余計に費用がかかったりします。
そのためソフト開発の仕事に携わるのなら、ソースコードのバージョン管理スキルを身に付けてください。なおバージョン管理とは、ソフトウェアを開発するときに作成されるソースコードの複数のバージョンを保存する仕組みです。
そして複数のプログラマーが参加するプロジェクトでは、全員が同じバージョン管理の仕組みを利用することで、同じ開発環境を利用できたり、ミスが解ったら簡単に以前の状態に戻せるといったメリットが得られます。
バージョンを管理する目的とは
ではソースコードのバージョンを管理する目的とは何でしょうか。プロジェクトによっても多少違いがあるとは思いますが、少なくとも次の4つが挙げられます。
- ソースコードを以前の状態に戻せるようにするため。
- 複数ファイルのソースコードの整合性を管理するため。
- ソースコードを変更した者とその変更理由などの記録を残すため
- ソースコードの紛失を防ぐため
ソースコード管理の基本は、正常に動作するソースコードを短期間で開発することです。途中まで正常だったソースコードを編集したら誤動作してしまうようなケースでは、修正前に戻せる仕組みとしてバージョン管理の仕組みを利用します。
管理システムの仕組み
バージョン管理システムが無かった時代は、変更前のソースファイルと変更後のソースファイルの差分を基にソースコードのバージョンを管理していました。しかし手作業で差分を作っていたのでは手間がかかります。そこで差分を管理する仕組みを自動化したのがバージョン管理システムです。
さらに個人毎に利用していたバージョン管理の仕組みを、サーバーとクライアントの仕組みを利用して複数のメンバーで利用できるようにしたバージョン管理システムが普及しました。例えばSubversionは今もソフトウェア開発で使われています。
さらにインターネット上のサーバーを利用するGitが普及してからは、Webエンジニアとして働くならGitを用いたバージョン管理は必須のスキルです。
ソースコード管理システムGitを利用する
Ruby on RailsでWebアプリケーションを開発する際、多くの職場で作成したソースコードの管理にGitを利用しています。Rubyのプログラムを扱うのなら、Gitによるソースコードのバージョン管理方法を習得しましょう。
次からGitを利用したRubyのソースコードを管理する仕組みについて紹介します。
Gitとは
Gitは、Rubyに限らずプログラムのソースコードの変更履歴を管理する分散型バージョン管理システムです。そしてGitは、Linuxカーネルのソースコード管理用に開発された仕組みで、複数のプログラマーが共同で1つのソフトウェアを開発するために必要な、高度なソースコードの管理機能を提供します。
Gitを使った作業の流れは次のとおりです。
(1) 開発環境にGitの変更履歴保存環境を用意する。
(2) Gitのサーバーに保存されたソースコードを開発環境にコピーする。
(3) 開発環境でソースコードを編集し、開発環境にその変更履歴を残す。
(4) 開発環境の変更をサーバーに反映する。ここで他の人の変更もサーバーに反映される。
(5) (2)から(4)を繰り返す
GitHubを使う
Gitを運用するためには、ソースコードの履歴を保存するためのサーバーが必要です。そしてそのようなGit用サーバーをクラウドに構築してインターネットでも公開できます。そしてそのようなインターネットに公開されているGit用のサーバーで特に有名なのがGitHubです。
GitGubは、オープンソースの開発で使われることの多いGit用のサーバーです。エンジニアの中には自分のスキルを見てもらうためのポートフォリオをGitHubで公開している方もいます。
また非公開のソースコード履歴管理にも使えることから、Ruby on Railsで開発しているソースコードのバージョン管理をGitHubで実施することも可能です。
GitHubを利用するには
GitHubを利用してRuby on Railsのソースコードを管理するには、まず、GitHubにアカウントとプロジェクトを登録しなければなりません。まずはGitHubの公式サイトにアクセスして登録してください。
Gitの公式サイト
GitHub
続いて開発環境にGitのクライアントツールを導入します。UbuntuやCentOSのようなLinuxではそれぞれのパッケージ管理システムからインストールしてください。
Ubuntuでgitコマンドをインストールする例
$ sudo apt install git
続いてRuby on Railsで開発するアプリケーションのディレクトリでGitの初期設定を実施します。ただし、Ruby on Railsで新規にアプリケーション環境を作成すると、同時にgitの環境も作られます。ディレクトリに「.git」ディレクトリがあるので、チェックしてみてください。
Ruby on RailsでGitを使う
先ほど紹介したようにRuby on Railsで新しいアプリケーションを作成するとGitの設定も同時に作成されます。ソースコードを新規作成したり、そういったソースコードを修正したら、早速gitコマンドでそのファイルのバージョン管理を実施してください。
次から具体的なコマンドの使い方を紹介します。
変更をローカルに保存する
先ほど紹介したようにGitはサーバーと開発環境の両方に履歴を保存する分散型バージョン管理システムです。基本的な使い方は、ソースコードを変更したら一旦開発環境に履歴を保存し、定期的にサーバーに転送してソースコードのバージョンを管理します。
ソースコードを変更して履歴を保存するには、まずgit addで管理対象に追加し、続いてgit commitを実行してください。なお、git addでは「.」を指定すると変更があったすべてのファイルを対象にできます。また、git commit実行には、-m オプションでコメントを追加してください。
$ git add . $ git commit -m "最初の保存"
以前のバージョンに戻す
ソースコードのバージョン管理の目的の1つは、いつでも以前の状態に戻せる点です。
そして以前のバージョンに戻すコマンドがgit checkoutです。ただし、このコマンドを利用するにはコミットハッシュを指定しなければなりません。そしてコミットハッシュを調べるコマンドがgit logコマンドです。まずは、git logでチェックしてください。
git logの実行結果の例
$ git log commit 19dc8fb408bdf99aa21b8d3f192432c46468922b (HEAD -> master) Author: (登録したEメール) Date: *** *** ** **:**:** **** +0900 (git commit -m で指定したコメント)
上記の例の「19dc8fb408bdf99aa21b8d3f192432c46468922b」がコミットハッシュです。このgit commitで保存したバージョン戻すコマンドは次のとおりです。
git checkout の使用例
$ git checkout 19dc8fb408bdf99aa21b8d3f192432c46468922b app/views/moji/index.html.erb Updated 1 path from d634395
サーバーに保存する
Gitを利用して複数人でソースコードを共有するには、それぞれの担当者が開発環境に保存している履歴をサーバーに送信しなければなりません。自分の開発環境に保存したソースコードの履歴を定期的にサーバーに送信しておきましょう。
サーバーに送信するコマンドはgit pushです。そして、他の人が更新した変更を反映させるため、サーバーに保存されたソースコードを開発環境に複製するgit pullを実行してください。
git pushの使い方
git push サーバー上のブランチ名 開発環境のブランチ名
サーバーに保存する例
$ git push master master
サーバーのソースコードをコピーする例
$ git pull
まとめ
繰り返しになりますがソースコードのバージョン管理とは、ソースコードの複数のバージョンを保存する仕組みであり、正常に動作するソースコードを短期間で開発するために必要な管理方法です。Ruby on Railsで開発するソースコードも適切に管理されなければなりません。
そしてWebシステムの開発ではソースコード管理にGitがよく利用されます。GitとGitHubの使い方を学びましょう。なおRuby on Railsでは標準でGitに対応しています。ぜひ、Gitの使い方を学び、Ruby on Railsのソースコード管理に利用してください。