LoginSignup
48

More than 5 years have passed since last update.

LINE BOTの作り方を世界一わかりやすく解説(3)【Gitでサーバーとの連携編】

Last updated at Posted at 2016-11-12

はじめに

今回は、ローカル(Mac)で作成したアプリケーションのファイルをリモート(サーバー)と同期していきます。
プロジェクトのファイルの同期には Git を使用します。

プロジェクトを Git で管理

最近のソースコードを管理することは Git が多くなって気ました。
SubVersion なら使ったことがあると言う人もいるかも知れません。

何を使うにも基本的に一長一短なのですが、複雑なことをしなければ、基本的には Git は難しくないので、ここでは Git を使ってソースコードの管理をしていきます。

Gitとは?

Gitに関する説明は他に譲るとして、メリットだけ書いておきます。

  • ローカル(手元のMac)とリモート(サーバー)のプログラムを簡単に同期できる
  • 複数人で同じプロジェクトを運用できる

特に、ひとりで開発する際には前者の恩恵を受けることが多いです。
FTPでいちいちファイルをやりとりして、、、などGitを使い始めると考えられないですね。

Gitに関して、分かりやすい解説記事はこちら
サルでもわかるGit入門

この解説記事内にあるのですが、後者の複数人で同じプロジェクトを運用するとこのようなイメージです。

リモートリポジトリ と呼ばれるところ(クラウドと思ってください)で一元管理しており、それをローカルのPCにクローン(ダウンロード)してきて作業を始めます。
自分が編集した差分をリモートリポジトリに反映させることを Push と呼び、他の人がリモートリポジトリに加えた変更点を自分のローカルリポジトリに反映させることを Pull と呼びます。

基本これぐらいなので、使いながら覚えていくといった方針で大丈夫かと思います。
※ 複数人でのプロジェクトに携わる際は、経験上、Git初心者がプロジェクトを荒らす可能性大のため、しっかり使い方を習得してから加わることをオススメします。そのためにも、まず一人でやってみましょう。

ローカルリポジトリ(Mac)をリモートリポジトリ(BitBucket)にPush

それでは Git を使って、ローカルリポジトリ(Mac)をリモートリポジトリ(BitBucket)にPushします。

ここで、リモートリポジトリとして、BitBucketというサービスを使っていきます。

Gitのリモートリポジトリとして、一番有名なものはGitHubではないでしょうか。
ただ、GitHubはプライベートリポジトリ(他人に非公開にしたリポジトリ)が有料であるため、プライベートリポジトリが無料の BitBucket を使用していきましょう。
BitBucketとローカルやリモートのSSH経由での連携はなかなか設定すべきことが多いため、ここも説明は他に譲るとし、ローカルとリモートでGitの使用ができるという前提で話を進めていきます。

リモートリポジトリの作成(BitBucket)

BitBucketにアクセス(アカウント未登録の場合は登録)し、新規にリポジトリを作っていきます。
「リポジトリ」のプルダウンから新規リポジトリを作成できます。

スクリーンショット 2016-11-12 14.10.28.png

以下のようにリポジトリの名前を決めて作成しましょう。
※ リポジトリの名前とディレクトリ(フォルダ)の名前が同じである方が直感的に管理し易いです。

スクリーンショット 2016-11-12 14.12.25.png

これでリモートリポジトリの作成は完了です。

スクリーンショット 2016-11-12 14.14.51.png

ローカルとリモートの紐付け

この画面の「私はゼロからスタートします。」を参考に、ローカルリポジトリとリモートリポジトリの紐付けを行います。
スクリーンショット 2016-11-12 14.33.57.png

では、ローカル(Mac)で作業していきます。
作業前に、作成した api のディレクトリへ移動しておいて下さい(これを作業ディレクトリと呼びます)。

gitの初期化

まず作業ディレクトリで、git の 初期化を行います。

gitの初期化
$ git init

そうすると、隠れディレクトリですが、.git というディレクトリができ、こちらで git に関する情報を管理していきます。

.gitignore の作成

.gitignore とは、git では管理しない拡張子やファイルを指定するファイルです。
これを指定しておかないと、全てのファイルをgitで管理することになり、細かい一時的なファイルがリモートリポジトリでの衝突(コンフリクトとよく呼びます)の原因になります。

どの拡張子を git の管理下から省いたら良いのかと言うところは初心者にはもちろん難しい(私もわかりません)のですが、これは gitignore.io が全て教えてくれます。

スクリーンショット 2016-11-12 14.24.06.png

ここで、PythonDjango を入力し、.gitignore のファイルを生成します。

スクリーンショット 2016-11-12 14.24.58.png

このように、.gitignore に書き込むべきファイルがでてくるので、.gitignore にコピペして貼り付けます。

.gitignoreの編集
$ vim .gitignore

vim で .gitignore を以下のように編集しました。

.gitignore

# Created by https://www.gitignore.io/api/python,django

### Python ###
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class

# C extensions
*.so

# Distribution / packaging
.Python
env/
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
*.egg-info/
.installed.cfg
*.egg

# PyInstaller
#  Usually these files are written by a python script from a template
#  before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec

# Installer logs
pip-log.txt
pip-delete-this-directory.txt

# Unit test / coverage reports
htmlcov/
.tox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*,cover
.hypothesis/

# Translations
*.mo
*.pot

# Django stuff:
*.log
local_settings.py

# Flask stuff:
instance/
.webassets-cache

# Scrapy stuff:
.scrapy

# Sphinx documentation
docs/_build/

# PyBuilder
target/

# Jupyter Notebook
.ipynb_checkpoints

# pyenv
.python-version

# celery beat schedule file
celerybeat-schedule

# dotenv
.env

# virtualenv
.venv/
venv/
ENV/

# Spyder project settings
.spyderproject

# Rope project settings
.ropeproject


### Django ###
*.pyc
db.sqlite3
media

vim で入力や保存ができないという人は以下の6つの手順でコピペしてください。

1.gitignore.io で生成した内容をすべて選択してコピー
2.$ vim .gitignore
3.i を押して入力モード(下に -- INSERT -- と表示されます)
4.command + v でいつものように貼り付け
5.esc を押して、入力モードの終了
6.:wq と入力して、保存してvimを終了

これで、.gitignore の設定完了です。

リモートとの紐付け

最後に、リモートの指定したリポジトリを origin という名前を付けて、対応関係を定義しておきます。

リモートとの紐付け
$ git remote add origin git@bitbucket.org:#{your_name}/api.git

このコマンドひとつでリモートとローカルの対応付けは完了します。

リモートリポジトリに全てをpush

まず、最初は細かい事を考えずに、.gitignore で省かれたもの以外の全てをpushしましょう。

masterブランチへ全てpush
$ git add .
$ git commit -m 'first commit'
$ git push origin master
Counting objects: 18, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (15/15), done.
Writing objects: 100% (18/18), 6.12 KiB | 0 bytes/s, done.
Total 18 (delta 1), reused 0 (delta 0)
To git@bitbucket.org:#{your_name}/api.git
 * [new branch]      master -> master

BitBucketで確認

BitBucketのリポジトリ内の「ソース」にアクセスすると、ローカルの情報がリモートに送られ、同期が出来ていることが確認できます。
スクリーンショット 2016-11-12 19.51.07.png

これで、リモートからPushが完了しました。

リモートリポジトリ(BitBucket)からローカルリポジトリ(サーバー)にClone

Macの手元にあったファイルをリモートリポジトリ上に同期できたので、今度はサーバー側にその情報をclone(≒ダウンロード)していきます。
なお、サーバー側も BitBucket とのSSH鍵の登録が済んでいることを前提として話を進めていきます。
※参考:Bitbucket使ってみるメモ①-さくらvpsやら会社のlinuxにgit cloneってみる

サーバーにログインし、cloneしたいディレクトリに移動します。
clone に必要なコマンドはBitBucketから取得出来ます。

スクリーンショット 2016-11-12 14.46.51.png

これで、clone用のコマンドが以下のように取得出来るのでコピーします。

スクリーンショット 2016-11-12 14.48.33.png

あとは、サーバー上でコピーしたコマンドを実行します。

$ git clone git@bitbucket.org:#{your_name}/api.git

これでサーバー上にも同じファイルが作成され、サーバーとの連携が完了しました。

おまけ

フォローお待ちしています!

サービス紹介
「数学→プログラミング→Webアプリケーション」まで一気に学べる機械学習のマンツーマン家庭教師サービス「キカガク」に興味のある方はお気軽にご連絡ください。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
48