学んだこと

#git  
gitとは、ソースコードを始めとするファイルの変更履歴を管理するためのシステム。
変更履歴を記録するシステムのことをバージョン管理システムと言う

gitをなぜ使う必要があるのか。
「git」を使う上での利点を述べて下さい。
ファイルの変更履歴を管理するため
何か問題があったときに過去のファイルに戻れるようにしておくため。


#github
gitの仕組みを利用したwebサービスのこと。
gitの機能に対してチーム開発に便利な機能と付け加え、gitにおけるリモートリポジトリの役割も担っている。
github上にチームで共有のプロダクト（ソースコード）を配置し、開発者はgithub上からソースコードをコピーしたり、ソースコードをgithub上のリポジトリに反映させることが出来る

#github desktop
github desktopとは、gitを扱うためのGUIツールの一つです。
GUIツールとは、グラフィカルユーザインターフェースのことで、gitを扱う際に直感的な操作が出来るツールのことです。
github desktopは、githubが提供しているGUIツールです。


#リポジトリ
リポジトリとは、変更履歴を管理しておくための入れ物。
このリポジトリにファイルやディレクトリの変更履歴を記録しておく。

#ローカルリポジトリ
ローカルリポジトリとは、自分のPC上（ローカル環境）に置くリポジトリのこと。
自分のPC上にあるファイルやディレクトリのバージョン管理を行いたいときに使う

#リモートリポジトリ
外部のサーバーなどのネットワーク上に置くリポジトリのこと。

#リモートリポジトリを利用するメリット
ネットワーク上に置くことで、複数人で管理下のファイルやディレクトリを共有することが出来る。
ローカル環境下で問題が起こったとしても、またリモートリポジトリからダウンロードを行うことで元に戻すことが出来る

#クローン
リモートリポジトリを複製してローカルリポジトリを作成すること。
クローンを行うとリモートリポジトリの内容をそのままダウンロードすることが出来る

#インデックス
インデックスとは、コミットをするファイルを登録するための場所。
ファイルをコミットすると、インデックスに登録されているファイル群の変更が記録される

#インデックスのメリット
一度に多くのファイルを変更した際に、どのファイル単位でコミットするかを選択するために使用する。
インデックスに登録したファイル単位が一つのコミットとなるために、どのファイルをインデックスに登録するかを決める必要がある

#コミット
ディレクトリやファイルの状態を記録するための操作。
コミットすることで現在の状態が、日時や変更を加えた人の情報を含めて一緒に保存することが出来る

#コミットメッセージ
コミットメッセージとは、一つのコミットに対してつけるコメントのこと。
そのコミットでどのような作業をしたのかということを記録しておくために記述する。


#コミットをする際に気をつけた方がいい点

コミットはなるべく細かく行うべきです。
1機能1コミットをするのがベター。
なぜなら、基本的にファイルを元に戻したいと思ったときには、コミットごとでしかファイルを元に戻すことが出来ないため。

#プッシュ
ローカルリポジトリで加えた変更とリモートリポジトリに同期させること。
ローカルでコミットが終わり、リモートに変更を同期させたい場合には必ずプッシュを行う必要がある。

#ブランチ
以下3点 リポジトリで管理をしているプロジェクトの履歴の1つ。 自分の作業をしている場所のこと。 ブランチ同士は独立しているため、それぞれのブランチが干渉していない。
以下2点 開発者ごとに担当する機能を明確に分けることが出来る 完成途中や問題のあるソースコードをリリースしないで済む。

#プル
リモートリポジトリの変更履歴をローカルリポジトリに反映させる操作のこと。
他の開発者による変更がリモートリポジトリに反映された後や、自分でマージを行った際には必ずこのプルの作業を行う必要がある。


#プルリクエスト
作成したブランチをmasterブランチにマージをするときの確認作業のこと。
ブランチ間の差分を他の開発者から確認やレビューを貰うということを行います。
そのコードに問題が無いかどうかを他の開発者や上司に確認を行うためにプルリクエストを見て貰います。

#マージ
ブランチとブランチを結合すること。
結合する側のブランチを結合される側のブランチにマージを行うと、結合する側のブランチの内容が結合される側のブランチに反映される。

#LGTM
Looks good to meの略であり、「コードに問題が無いので、マージをして大丈夫ですよ！」ということです。
LGTMを貰ったら、マージをしてプルを忘れずに行いましょう！

#デプロイ
ソースコードをAWS等の本番環境に設置し、稼働させること

#競合（コンフリクト）
複数の人が同じ箇所を編集してしまい、変更箇所を自動では判断できすにマージできなくなること。
競合が起きる条件をしては、2つのブランチで同じ箇所のソースコードを編集している 片方のブランチをマージし、もう片方のブランチを同じブランチにマージをする という2つの条件が起こったときに、競合は発生する。

#Githubの開発フローに乗っ取って開発を行うときの順序

①masterブランチは常にデプロイできる状態とする
③新しい作業をするときはmasterブランチからの記述的な名前のブランチを作成する
⑥作成したローカルリポジトリのブランチにコミットする
②GitHubのリポジトリ（リモートレポジトリ）に定期的にプッシュする
⑤開発にあたり疑問点が生じた時やフィードバックがほしいときはプルリクエストを作成し、プルリクエストでやりとりする
④他の開発者がレビューし、作業終了を確認したらmasterブランチにマージする
⑦masterブランチへマージしたら、直ちにデプロイする



#.gitignore

以下5点 gitの管理対象から管理を外すためのファイルやディレクトリを指定するためのファイルです。 .gitignoreにファイルやディレクトリを指定すると、管理対象から外すことができます。
以下5点 管理対象から外れるということは、githubにコードやファイルを同期させ無くて済むということです。 - アプリケーションのlogファイル - 画像ファイル pulic/uploads 以下 - secrets.yml 等のセキュリティ上問題があるファイル 上記にあげたようなファイルを主にgitignoreに指定します。 これ以外にも、自分でgithubで公開したくないファイルも自分で指定をすることができます。



/log/*という記述が.gitignoreのファイルにあった際の意味

logファイル以下のファイル、ディレクトリをgitの管理下から除外を行う指定を行っている。







SQLはデータベースやテーブルに対して様々な命令を行いますが、 その命令は大きく2つ、データを定義するDDL（Data Definition Language）と、データを操作するDML（Data Manipulation Language）に分類されます。



#SQL


・DDLの出来ること
命令	機能
CREATE	データベースやテーブルの作成
ALTER	データベースやテーブルの更新
DROP	データベースやテーブルの削除
　 ・DMLの出来ること
命令	機能
INSERT	データの登録
UPDATE	データの更新
DELETE	データの削除
SELECT	データの検索
　


mysqlで数字型や文字列型を定義する際は以下のような型名を使用します。
型名	保存できる値
INT	数字
VARCHAR(M)	最大M文字の文字列