現在Laravelの教材を鋭意制作中です!完成まで今しばらくお待ちください

#13 GitHubとの連携

この章では、Laravelプロジェクトを開発・運用するうえで欠かせない「Gitによるバージョン管理」と「GitHubとの連携」について解説します。

Gitはソースコードの変更履歴を記録・管理できるツールであり、GitHubはそれらをインターネット上で共有・連携できるプラットフォームです。

この2つを組み合わせることで、プロジェクトの状態を安全かつ効率的に保ち、複数人での協力開発や将来的なメンテナンスに備えることができます。

まずは、実際に作成したLaravelプロジェクトとGitを連携させるところから始めていきましょう。

Gitで管理する

現在のプロジェクトをGitで管理するためには、Gitファイルを生成する必要があります。まずは以下のコマンドを入力して、Gitファイルを生成しましょう。

git init

このコマンドによって、.git という隠しフォルダが作成され、Gitによる管理が開始されます。

以降、変更されたファイルはすべて Git によって履歴が記録できるようになります。

.gitignoreとは何か

LaravelのプロジェクトをGitHubにアップロードするとき、必ず目にするのが.gitignoreというファイルです。

最初は何のためにあるのか分かりにくいですが、実はとても大事な役割を持っています。

.gitignoreはGitに対して「このファイルやフォルダは管理しないでください」と指示するための設定ファイルです。

Laravelのプロジェクトには最初から用意されていて、不要なファイルや公開してはいけないファイルを除外するために使われます。

つまり.gitignoreはLaravelのプロジェクトを安全に管理するため、セキュリティを守りつつ効率的に開発を進めるの必須ファイルと言うわけです。

.gitignoreの基本的な書き方

.gitignoreはテキストファイルで、無視したいファイルやフォルダを1行ずつ書いていきます。

vendor/

このコードはvendorフォルダ全体を無視する設定です。Laravelでは外部ライブラリが大量に入るため、これをアップロードしないようにしています。

.env

このコードは.envファイルを無視する設定です。環境変数が書かれているため、公開するとパスワードやAPIキーが漏れてしまいます。

特定の拡張子を無視する

特定の種類のファイルをまとめて無視することもできます。例えばログファイルをすべて無視したい場合は次のように書きます。

*.log

このコードは拡張子が.logのファイルをすべて無視する設定です。Laravelのstorage/logsに生成されるログファイルなどが対象になります。

フォルダごと無視する

特定のフォルダをまるごと無視することも可能です。例えばキャッシュを保存するフォルダを無視する場合は次のように書きます。

storage/

このコードはstorageフォルダ全体を無視する設定です。キャッシュやセッションファイルなど、環境ごとに異なる内容が保存されるためGitHubにアップロードする必要はありません。

既に管理されているファイルを無視する場合

.gitignoreに書いても、すでにGitで管理されているファイルは無視されません。その場合は一度Gitの管理から外す必要があります。

git rm --cached .env

このコードは.envファイルをGitの管理から外す操作です。これにより以降は.gitignoreの設定が有効になり、GitHubにアップロードされなくなります。

Laravelでよく無視されるファイル

Laravelのプロジェクトでは、特に以下のようなファイルやフォルダが.gitignoreに含まれています。

vendor/は外部ライブラリが保存される場所で、Composerを使えば再生成できるためGitHubにアップロードする必要はありません。

.envはデータベースのパスワードなど機密情報が書かれているため、公開すると大きなリスクになります。

Laravelのプロジェクトを始めると必ず目にするのが.envファイルです。最初は何のためにあるのか分かりにくいですが、実は開発を安全かつ便利に進めるための大切な仕組みです。

.envファイルとは何か

.envファイルは環境変数を定義するためのファイルです。

環境変数とはアプリケーションの動作に必要な設定値を外部から与える仕組みのことです。

Laravelではデータベースの接続情報やアプリケーションキーなどをこのファイルに記述します。

なぜ.envファイルが非公開なのか

.envファイルは環境変数を定義するためのファイルのため、これらの設定を直接ソースコードに書いてしまうと、環境が変わるたびにコードを修正する必要が出てきます。

.envにはパスワードやAPIキーなどの重要な情報が含まれており、GitHubにアップロードしたときにパスワードなどの機密情報が公開されてしまう危険もあります。

そのため.gitignoreに登録されており、GitHubにアップロードされないようになっています。

結果として.envを使うことで、環境ごとに設定を分離し、セキュリティを守りながら開発できます。

.env.exampleの役割

Laravelのプロジェクトには.env.exampleというファイルも含まれています。

これは.envのひな型であり、他の開発者に必要な設定項目を伝えるために使います。

実際の値は含まれず、各自がコピーして.envを作成します。

cp .env.example .env

このコードは.env.exampleをコピーして.envを作成する操作です。

これにより必要な設定項目が揃った状態で環境変数を準備できます。

.envファイルの基本的な書き方

.envファイルはシンプルなテキスト形式で、キー=値という形で設定を書きます。

APP_NAME=Laravel備忘録
APP_ENV=local
APP_KEY=base64:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
APP_DEBUG=true
APP_URL=http://localhost

このコードはLaravelの基本的な設定例です。

  • APP_NAMEはアプリケーション名
  • APP_ENVは環境
  • APP_KEYは暗号化に使うキー
  • APP_DEBUGはエラーを詳細に表示するかどうか
  • APP_URLはアプリケーションのURLを指定

データベースの設定

Laravelではデータベース接続情報も.envに記述します。これにより環境ごとに異なる設定を簡単に切り替えることができます。

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel_db
DB_USERNAME=root
DB_PASSWORD=password

このコードはMySQLを使う場合の設定例です。

  • DB_CONNECTIONは使用するデータベースの種類
  • DB_HOSTは接続先のホスト名
  • DB_PORTはポート番号
  • DB_DATABASEはデータベース名
  • DB_USERNAMEDB_PASSWORDは接続に使うユーザー名とパスワード

.gitignoreについて

.gitignore は、Gitによるバージョン管理の対象から除外したいファイルやディレクトリを指定する設定ファイルです。

共有する必要のないファイルや、むしろ共有してはいけない機密ファイルをコミット対象から外すことで、セキュリティや運用の安定性を保つことができます。

通常、Laravelのプロジェクトをインストールすると自動的に.gitignoreは生成されますが、今回はdockerを使用しているため、一部のファイルを共有したくありませんのでさらに作成します。

contactformフォルダに移動して.gitignoreを作成しましょう。.gitignoreには以下の内容を入力してください。

docker/mysql/data/*

これで、dockerフォルダ内のmysql/dataフォルダ内のファイルが共有されなくなります。

あとで実際にgithubと連携した際に、このフォルダの中身をのぞいてみてください。

ローカルのプロジェクトをコミット

それでは実際にプロジェクトをコミットしていきましょう。

まずはローカル内のコミットから行います。まずは、現在のgitの状態を見てみましょう。

git status

すると、以下のような表示があると思います。

/* Your code... */

赤色で表示されている部分はまだファイルがステージングされていない状態です。そこで、ステージングするために以下のコマンドを入力してください。

git add -A
または
git add .

git add -Aとすることによって、変更されたすべてのファイルをステージングします。
git add .は変更されたファイルに関わらず、すべてファイルをステージングします。

ここで、もう一度現在のgitの状態を見てみてください。

git status

すると、今度は先ほどまで赤色だったものが、緑色に変わっているかと思います。

この状態になったら、ファイルの履歴を記録する準備が整った合図ですので、今度はgitにファイルの履歴を登録していきましょう。

git commit -m 'first init'

”の中はなんでも構いませんが、後で見返したときにわかりやすいコメントをつけておくと、共同で編集している人にも、自分にも優しいです。

今回は初めての共有ですので、「first init」としていますが、ご自身のわかりやすいコメントで構いません。

ブランチ名の変更

今回は自分でgitinitしているので、ブランチ名も変更しておく必要があります。

git initした段階ではメインのブランチの名前が「master」という名前になっているのですが、現在ではmainという名前が推奨されておりますので、変更しておきましょう。

変更は簡単で以下のコマンドを入力するだけです。

git branch -m master main

このコマンドのみで変更が可能です。ちゃんと変更できたかどうか確認する場合は以下のコマンドを入力してみてください。

git branch

これでmainが表示されていれば変更が完了となります。なお、*は現在のブランチを指しています。

GitHubと接続

いよいよGitHubとローカルリポジトリを接続します。接続には以下のコマンドを入力します。

git remote add origin git@github.com/username/repositoryname.git
# 今回の場合は以下の通り
git remote add origin git@github.com/username/contactform.git

※usernameにはあなたの作成したGitHubアカウントのアカウント名を入力してください。

無事、GitHubと連携ができたら以下のコマンドを入力してみましょう。

git remote -v

これであなたのアカウントが表示されれば無事にアカウントの接続ができております。

リモートリポジトリと共有

それでは最後にローカルリポジトリとリモートリポジトリと共有させましょう。

共有はpushコマンドを使用しますが、初回のみ-uオプションを使用します。以下のコマンドを入力してください。

git push -u origin main

次章:#14 Gitのブランチについて に進む