プログラミング奮闘記

難しいと評判!初心者がN予備校でプログラミングを学んだ感想と備忘録!
No.14:ソーシャルコーディング

N予備校 プログラミングコース 第14回

あなたは2019年の目標って立てましたか?
どんな目標を立てたか覚えていますか?

私は2018年末に2019年の目標を立てました。
その一つにプログラミングを学び仕事として使えるようにすることをあげました。
そして、思い立ったが吉日と「N予備校のプログラミングコース」を申し込みました。

そして受講と同時に自身の振替と、これから始めようと考えている人の参考になればとブログを書き始めました。
今回ブログの移設にともない、再度そのブログを読み返しながら、今思うことを加えて記載していきたいと思います。

また私が受講したのは【2018年度】で、現在公開されている【2019年度】との違いについても書いていきたいと思います。

このブログは、初心者が学びながら書いているため、間違っている場合があります。
分かり次第修正していくつもりです。

そのあたりも含め楽しんでいただければと思います。 

最後に進めていてわからなかったところや気になったところをまとめています。

プログラミング入門 webアプリコース 第14回

 前回は、自動的に情報を集めるプログラムであるボットを作成し、GitHubを用いて自分が作成したプログラムを公開できるようになりました。

 今回は、GitHubのブランチ・マージ機能について学び、現代的な開発スタイルであるソーシャルコーティングについて学びます。

  • 今回の内容まとめ(第2章 14~16)
    ・GitHubに変更をアップデート
    ・ブランチについて
    ・ソーシャルコーティングについて

  • 今回の目標
    公開されているソフトウェアを、ローカルリポジトリにコピーし修正を行い、その修正内容をオリジナルのリポジトリに送信することでソフトウェアが改善されます。こうしたソーシャルコーティングと言う開発スタイルを理解する。

  • 今回新しく扱っているコマンド等
    ・config
    ・init
    ・add
    ・commit
    ・push
    ・branch
    ・checkout
    ・merge

GitHubに変更をアップデート

自分のパソコン(ローカル)で行った変更内容を自分以外のパソコン(リモート)に適用します。

gitに自分の情報を登録する(初期設定)

自分の名前・メールアドレスをgitに登録します。PowerShellでvagrantを立ち上げ、RLoginを起動し下記コードを実行します。

git config –global user.name ○○
git config –global user.email ××
git config –global core.editor “vim”

1行目でユーザーネームを○○に設定し
2行目でメールアドレスを××に設定し、
3行目で自分が使うエディタをvimに設定します。

尚、登録した情報は、以下のコマンドで確認できます。

git config -l

自分のパソコン内のリポジトリ(ローカルリポジトリ)の作成

自分のパソコン内にリポジトリを作成します。

git init

これは、gitリポジトリを作成するコマンドで、.gitディレクトリが作成され、このディレクトリを削除することでローカルリポジトリを消去することができます。

ローカルリポジトリの内容変更

ローカルリポジトリに変更を加えます。
今回は、ファイルをリポジトリに加えるという変更を行います。
このリポジトリの変更には、「変更情報の登録(add)」と「登録した内容の実行(commit)」の二つの操作が必要です。

変更情報の登録(add)

リポジトリの変更を実行する前に変更する内容を登録します。

git add ○○

このコマンドにより「○○というファイルをリポジトリに加える」という変更情報を登録します。このように、変更情報を登録することをステージングと言います。
この変更情報が登録されている領域を、インデックスと言います。

ステージング(現在の変更情報の登録)状況を確認したいときは次のコマンドできます。

git status

この段階では、まだ変更すると言う情報を登録しただけで、ファイルをリポジトリに加えることはできていません。

<addした状態のイメージ図>

 

変更の実行(commit)

インデックスに登録した変更情報を実際に実行します。

git commit -m “××”

このコマンドを実行することで先ほど登録した変更(○○というファイルをリポジトリに追加すること)が完了します。このことをコミットといいます。
-mは、コミットコメントをつけるときのコマンド

このとき、git commitには必ずメッセージ(コミットコメント)をつける必要があります。今回は××というメッセージをつけています。

*commitした状態のイメージ図

ローカルリポジトリの変更をGitHubに置く(push)

ローカルリポジトリ内にある変更後のファイルをリモートリポジトリに適用することをpushといいます。
pushは、英語で「押す」という意味です。

git remote add origin △△
git push origin □□
△△には、GitHubのアドレス(自分のリポジトリのアドレス)が入ります。

1行目で、リモートリポジトリのoriginに△△を設定します。
2行目で、先ほど指定したoriginの□□というブランチに適用すると言う意味のようです。

(ブランチについては後述。)

<pushしたときのイメージ図> 

ブランチ(branch)について

通常、あるソフトウェアを開発する際に、数人で並行して開発します。
その際、それぞれの作業を別々の場所で開発する必要があります。
あるプログラムが別々の場所に分岐したものをブランチと言います。
branchは、英語で「枝」と言う意味です。

 

ブランチの確認

現在自分が利用しているブランチがどのブランチなのかを確認します。

git branch
自分が開いているリポジトリにどのようなブランチの一覧が表示されます。
この時、アスタリスク(*)がついているブランチが現在使用しているブランチになります。
ここで、masterというブランチは、リポジトリを作成した際に自動で作成されるブランチです。

 

ブランチの作成

先ほどと同じコマンドを使用してブランチを新規に作成することが出来ます。

git branch A
このコマンドで、Aというブランチが作成できます。

masterとAは同じものになります

 

ブランチの切替(checkout)

今いるブランチから他のブランチへと移動することをcheckout(チェックアウト)といいます。

git chckout A
今いるブランチからAというブランチへと切り替わります。

ブランチの変更

移動したブランチを使って開発を行います

touch b
git add .
git commit -m “変更しました”
1行目でbというファイルを作成し、
2行目でインデックスへと追加します。
3行目でコミットコメント(変更しました)を加えてローカルリポジトリに追加します。

作成したブランチをリモートリポジトリに送信

pushコマンドで好きなブランチをリモートリポジトリに渡すことが出来ます。

git push origin A
Aというブランチを、originというリモートリポジトリに加えることができます。

変更した内容をmasterに適用します

ブランチ間で変更内容を取り組むことをmerge(マージ)といいます。

git checkout master
git merge A
1行目でmaterというブランチに移り、2行目でAというブランチの変更を取り込みます。

最後に、ローカルのmasterブランチの変更をリモートのmasterにも適用します。

git push origin master
このコマンドにより、originというリモートリポジトリのmasterというブランチに変更が適用されます。

ソーシャルコーティングについて

GitHubで公開されているソフトウェアを、ローカルリポジトリにコピーし修正を行い、その修正内容をオリジナルのリポジトリに送信することでソフトウェアが改善されます。こうした開発スタイルをソーシャルコーティングと言います。

このソーシャルコーティングを行う際に必要になるのが上で学んだブランチ・マージ機能です。

ブランチ・マージ機能を利用することで、並行して開発が可能になります。

しかし、複数の人が別々の変更を行った場合、同じ場所に色々な修正が行われるときがあります。このことをconflict(コンフリクト)と言います。
conflictは、衝突という意味の単語です。

 

コンフリクト

今回は、masterブランチとAブランチを使ってコンフリクトを起こします。
まず、masterブランチと同じ内容のAブランチを作成します。
それぞれに含まれるファイルの内容を確認すると、AとDが1つずつ多かったとします。

ここで、masterブランチではAを削除、AブランチではDを削除というcommitしたとします。
この段階で、masterブランチではDが多い状態(ABCDDE)、AブランチではAが多い状態(AABCDE)になっています。

この状態で、Aブランチの変更をmasterブランチへと適用しようとするとそれぞれで異なった変更が行われているため衝突が起こります。これがコンフリクトです。

このとき、masterブランチとAブランチの差を確認することができます。

git checkout master
git diff A
1行目でmasterブランチへと移動し、2行目でAブランチとの差が生じされます。このときに違いが生じている部分を、一般に差分といいます。
 

プルリクエスト

GitHubで公開されているプログラムをフォークしたリポジトリを変更した際、その変更をGitHubのリポジトリにpullしてもらえるように依頼することをプルリクエストと言います。この機能により、オリジナルのリポジトリを変更する人を限定でき間違った変更が行われる危険性を下げることができます。


 

以上までが、第2章の内容です。

第2章では、Linuxについて学び、GitHubについて学ぶことで開発をする環境の準備ができました。

第3章以降では、実際にWebサービスを作成するようです。 

ABOUT ME
GoodAmbition
オンライン塾経営者(大阪大学工学部出身の元開発技術者) 自身も家庭教師や塾講師として働きつつ、後輩の育成やオンライン塾を経営しています。 私自身も約10年にわたり家庭教師や塾講師として100人以上の受験生と向き合ってきました。 色々な学生、保護者の方とかかわる中でよく質問される内容や、受験に必要な内容について書いています。 独学で頑張っている人たちへ勉強計画や悩み相談なども受け付けていますので気軽にお問い合わせください。 就職活動や資格の勉強などで悩んでいる方もご連絡ください。 教育・就活、書籍、食べ歩きに関するお話がメインです。 最近取り組んでいること プログラミング、筋トレ、マラソン、ライティングスキル向上etc. 苦手なことを克服しようと頑張っています。