はじめに
こんにちは ◤●ㅅ●◥ノ
今回はチームで開発活動を行う際の基盤となるツールについて学びました!
第13章 ソースコードの管理と共有
1.チームによる開発
開発効率を上げる方法の1つとして複数人で手分けをする...分業
分業の特徴
長所も短所も全体に大きな影響を与える諸刃の剣になる
具体例
1.連携が悪いと開発効率に悪影響を与える
2.人数が増えるほど連携が難しくなる
分業のメリットを最大限に発揮するために
連携を維持改善するための方法、道具、ルール、メンバーの努力が欠かせない
連携を維持改善していくため、プロジェクトではさまざまな取り組みが行われる
→プロジェクトの運営や管理に関する工夫...プロジェクトマネジメント
2.ソースコードの共有
ソースコードの共有には共有のファイル置き場を使用することでもできる
しかし、アップロードの際に過去のソースコードは上書きされ失われてしまう
常に最新のものだけになり、過去のコード内容の変更の経緯を調べられない
→ソフトウェア開発の現場では、 バージョン管理システム と言われる専用のファイル共有を使う
バージョン管理システムとは
複数の利用者間でファイルを共有することができる仕組み
ソフトウェア構成管理ツールと呼ばれることもある
ファイル置き場を レポジトリ とよび、
各開発者はクライアントツールを使ってレポジトリとファイルをやり取りする
ファイルの過去のバージョンや、内容、作成者、変更点などをすべて記録として残せる
代表的なものとしてSubversionとGitが挙げられる
3.Gitの基礎
Gitをはじめて使うにあたっての心構え
GItには豊富な機能や内部構造があり、それらを完全にマスターしようとせずに
日常的に使う範囲から着実に慣れていく
Gitの基本構図
ソースコードが置かれるのは3つの場所になる
-
ワークツリー
自分のpc内に置いている最新のソースコード一式
ワークツリーにある各ファイルはエディタなどでいつでも編集することができる -
ローカルリポジトリ
自分のPC内に存在するGit専用のデータベースで「過去から現在までの全ソースコードとそのすべての変更の歴史」が書き込まれている
通常ユーザーはリポジトリ内のファイルや歴史を直接編集することはできない
後述のcommitという手続きによってワークツリー上のファイルや変更点を新たな「歴史」としてリポジトリに刻むことができる -
リモートリポジトリ
ローカルリポジトリ同様、「過去から今までの全ソースコードとそのすべての変更の歴史」を保持している
ユーザーは後述のpushやpullという手続きを行なって自分のローカルリポジトリとリモートリポジトリをやり取りし、その内容を同期することができる
リポジトリとワークツリーの違い
・リポジトリはローカルとリモートがあるがワークツリーはローカルしかない
・リポジトリには過去からの全バージョンが記録されているが、ワークツリーには最新版のファイルのみしかない
・ユーザーはリポジトリ内に記録されたファイルを編集できないが、ワークツリーのファイルは編集できる
Gitのアクション
Gitには知っておくべき3つのアクションが存在する
-
commit
commitとは手元のワークツリーのファイルに行った修正を新たな歴史としてローカルリポジトリに正式に記録する行為
commitを行うことでどのファイルの、どのbぶんが、いつ、誰によって修正されたかという情報が追記される
2.push
ローカルリポジトリに刻み込まれた歴史をサーバに送り、リモートリポジトリと歴史を同期するアクション
手元PCで行った修正をサーバに公開することができる
3.pull
リモートリポジトリの歴史をローカルリポジトリに同期する、ローカルリポジトリの最新版をワークツリーに反映するという2つの処理が連続して行われる
送り出す時にcommitとpushの2つになぜ分かれているのか?
以下のようなメリット
1.ネットワークに繋がらない環境でも開発できる
ローカルリポジトリにcommmitしながら開発を進めることができる
2.中途半端な状態を公開せずに済む
修正に日数がかかる作業の場合、作業記録を残すいざというときのバックアップとしてこまめにcommitしておくと安心
この時pushまですると中途半端な状態でソースコードがチームメンバーに伝わってしまい、迷惑をかける恐れがある
場所の関係の結ぶアクション... clone
はじめに開発環境を作る時に全ファイルの全歴史が詰まったリモートリポジトリの複製をローカルリポジトリとして自分のpcに落とすことができる
4.競合の発生と解決
競合 とは
自分のローカルリポジトリの全歴史をリモートに同期しようとした時、偶然ほかのメンバーによって異なる歴史が刻まれていたときに発生する
成功してしまうと意図せずに過去の歴史を書き換えてしまうことになりかねないためにGitの安全装置が止めてくれている状態
解決方法
ほかのメンバーによって変えられたほかの歴史をリモートからローカルに落として
自分の変えたものと歴史を混ぜることで解決することができる
5.ブランチ
ブランチ とは
リポジトリの中の1つの歴史の流れが複数のcommitの数珠つなぎとしてつながっているこの流れのこと
特に指定されていないときはブランチの名前はmasterとなる
マージ
リポジトリ内にある2つのブランチをまーじして、1つの流れに統一すること
まとめ
分業は最も基本的かつ有力な効率改善の方法である
しかし、連携がうまくいかないとかえって非効率になる
バージョン管理システムを用いて、ソースコードをチームで共有できる
バージョン管理システムには、ファイルの変更履歴や内容を格納できる
代表的なものとして、 GitやSubversionが存在する
Gitはリモートリポジトリ、ローカルリポジトリ、ワークツリーの3つの場所が関係している
操作にはclone,pull,commit.pushなどのアクションを使いソースコードの共有を実現する
今回もありがとうございました!
ではまた〜 ◤●ㅅ●◥ノ"