EnvaderでPythonの環境構築を学んだのでmacOSで実践してみる(第7回)

## はじめに
はじめましてa-min3150です。エンジニアへの転職を目標に学習中です。
アウトプットのためEnvaderで学習したこと、ハマったことなどを書いていきたいと思います。

## 今回の学習内容
EnvaderでPythonの環境構築について学習したのでアウトプットします。

今回は第7回目(最終回)でmacOSでの```git clone```の使い方についてです。

第１回(Pythonとは)は[こちら](https://qiita.com/a-min3150/items/bf2e575668cc986dd5d9)
第２回(pyenvについて)は[こちら](https://qiita.com/a-min3150/items/56b2e9bf8957d3247d81)
第３回(pipについて)は[こちら](https://qiita.com/a-min3150/items/6d1c9b7b3b4cd5039f39)
第４回(venvについて)は[こちら](https://qiita.com/a-min3150/items/6211b80617d00284a081)
第５回(virtualenvについて)は[こちら](https://qiita.com/a-min3150/items/76ab94d98b1292e1c8f7)
第６回(requirements.txtの使い方)は[こちら](https://qiita.com/a-min3150/items/c51e5090353e10b4df91)


## git cloneとは？
```cloneコマンド```とは同じものを複製することができるコマンドです。指定したディレクトリに元のリポジトリと同じものを複製することができます。Githubなどからソースコードをコピーしてきたいときなどに使用されます。

```git clone``` は、gitからソースコードを複製することができるコマンドです。複数人で開発するときなどに各々が自分のローカルリポジトリにコピーして作業したいときなどに利用します。このようにすることで、何かしらのトラブルが発生した場合にも、元のリポジトリがあるため、元の状態に復元することができます。

## 基本的な使い方
git cloneの後にリポジトリのURLとソースコードを複製するディレクトリを指定して実行します。複製するディレクトリを指定しなかった場合はカレントディレクトリ内に複製されることになります。
```
$ git clone リポジトリURL ディレクトリ
```
複製するディレクトリを指定しなかった場合はカレントディレクトリ内に複製されることになります。
```
$ git clone リポジトリURL
```
カレントディレクトリ内に複製

## 通信方式
また、リポジトリをクローンするする時にも通信方式があり、http方式、git方式、ssh方式などがあります。

それぞれ git clone の後に 通信方式：リポジトリURLとするだけで通信方式を指定することができます。

### http方式
http方式は、通信速度が早く高速で通信したいときに使われます。
```
$ git clone http:リポジトリURL ディレクトリ
```
### git方式
git方式はさらに高速で通信することができます。しかし、認証部分が暗号化されなかったり、クローンしたものを参照することしかできません。取得したいだけ、pushする必要がない時におすすめです。
```
$ git clone git:リポジトリURL ディレクトリ
```
### ssh方式
ssh方式は開発現場で使われることが多く。認証部分を含めたネットワーク上のすべての通信が暗号化されるので、安全に通信することができます。しかし、通信速度が早くないため巨大なリポジトリだとかなりの時間がかかってしまいます。
```
$ git clone ssh:リポジトリURL ディレクトリ
```
## リモートリポジトリをクローンする時
リモートリポジトリをクローンする時はリモートリポジトリのURLを指定してあげれば大丈夫です
```
$ git clone リモートリポジトリURL ディレクトリ
```
リモートリポジトリの場所を確認
リモートリポジトリがネットワーク上のどこに存在するのか調べたいときは ```git remote -v``` を実行します。実行することでリモートリポジトリの場所を確認することができます。
```
$ git remote -v
origin リモートリポジトリのURL
```
## git cloneしたPythonを実行してみる。

Desktop上に作成した「test_gitclone」というディレクトリに移動します。
そこで下記のコードを実行します。これは私のGitHubでpublicで公開している「test_repository」という名前のリモートリポジトリを複製(clone)して自身のPCへダウンロードしてきています
```
macOS:test_gitclone user$ git clone https://github.com/a-min3150/test_repository.git
```
```
Cloning into 'test_repository'...
remote: Enumerating objects: 6, done.
remote: Counting objects: 100% (6/6), done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 6 (delta 0), reused 6 (delta 0), pack-reused 0
Receiving objects: 100% (6/6), done.
```
git cloneで複製してきた、「test_repository」ディレクトリが作成されていることがわかります。
```
macOS:test_gitclone user$ ls
test_repository
```
そこに移動してディレクトリの中身を確認します。
「Hello.py」と「README.md」というファイルがあることがわかります。
```
macOS:test_gitclone user$ cd test_repository/
macOS:test_repository user$ ls
Hello.py	README.md
```
```Hello.py```ファイルを実行してみる。
```
macOS:test_repository user$ python Hello.py 
Hello world
```
```Hello.py```が実行されて、ターミナルに「Hello world」が出力されました。
このような手順で```git clone```は使われ、チーム開発で環境を揃えるのに使われたりします。
## まとめ
今回は```git clone```について解説しました。

複数人で開発するときに必ずといっていいほど使います。
```
$ git clone リポジトリURL
```
開発で絶対に使うコマンドなので簡単な使い方だけでも覚えておきましょう。
今回で最終回となります。
最後までお読みいただきありがとうございました。

## 引用サイト
- Envader(エンベーダー):https://envader.plus/
- コース一覧:https://envader.plus/course
- Python環境構築コース:https://envader.plus/course/8
- 今回解説したコースシナリオ:https://envader.plus/course/8/scenario/1077