Flaskのアプリの公開方法が知りたくて、Herokuというサービスが試すにちょうど良さそうでした。
Herokuに公開するためにはGITの知識が必要みたい
flaskのクイックチュートリアルで、Webアプリ作成の基本的な部分をやってきました。最後に、デプロイ(Webアプリをサーバーなどで公開すること)という項目があり、Herokuというサービスがテスト用にはちょうど良さそうな感じでしたので、ここにデプロイをしてみようと思いました。
やっていくと、GITの知識が必要みたいで、恥ずかしながら、GITを利用したことがなく(コマンドのコピペ程度の利用です^^;)、また、大規模な開発にも携わらないし、自分には必要ないかな〜と考えていました。
GITは、大規模でなくても、コードのバージョン管理ができたり、とても便利な側面だらけでしたので、ここで少し勉強することにしました。今回の勉強では、Herokuを使うためにGitを学ぶ、という趣旨で進めていきたいと思います。
こんな人の役に立つかも
・Herokuを使うためにGITを理解したい人
・GITを初めて使う人
gitの概要
gitはギットと呼び、プログラムのバージョンを管理するシステムです。プログラムを作成しているときに、gitで管理すると、変更点を明確に記録したりすることができます。gitのやり方に即してファイルを管理することで、いい感じにプログラムの変更履歴を残すことができますので、個人のプログラム管理にも生かしていくことも良さそうです。
ローカルでの開発と共有
gitでは、大きく分けて次のような2段階の管理範囲があります。
①自分一人で開発するときは基本的にローカルでプログラムのバージョンを管理することができます。
②チーム開発などバージョン管理を共有するとさらに仕組みが必要になります。
基本的には自分のパソコンの中の「ローカルリポジトリ」に変更をためていく感じなんですね。
※gitで「リポジトリ」は、バージョンが蓄積されていく「変更を集約する場所」というイメージの言葉として使っています。
次の図の左側が①個人の管理、右側が②共有時の追加での流れになります。
①ローカルでの管理
作業ディレクトリを作成(git initコマンド)、または共有リポジトリから複製(git cloneコマンド)することで自分のパソコンに作業用のディレクトリが作成されます。
作業ディレクトリにはWebサイトだとhtmlファイルなどがあります。作業ディレクトリはプロジェクトのようなイメージですね。
個別のファイルを変更したら、「git add」コマンドで「ステージングエリア」という控え室に変更を登録しておきます。色々なファイルを変更してaddしていくと、ステージングエリアに色々なファイルの変更が蓄積されています。一息ついた段階で、これらの変更を「git commit」します。commitした時点の状態が「ローカルリポジトリ」に追加してこの段階でのバージョンということになります。
大まかな流れとして、
1.ファイルの修正→2.add→3.commitのような流れでリポジトリに変更を追加します。
②共有したいときの管理
全体の仕組みに、「共有リポジトリ」という部分が追加されます。共有リポジトリでは、外部のサーバーなどに置かれていて、このリポジトリにローカルリポジトリを反映させることでみんなが見られるようになるというものです。
ローカルリポジトリを共有リポジトリに反映させることを「PUSH」といい、共有リポジトリからローカルリポジトリに持ってくることを「PULL」というようです。
共有リポジトリは、最近は「GitHub」などのホスティングサービスで利用することができ、自分でサーバーを立てて共有リポジトリを作成する手間を省けます。
herokuでのgit
herokuというサービス自体がgitのシステムを内包しているようで、gitを曖昧にしか仕組みを知らないと、いきなりここでgit??となりました。
チュートリアルのgitコマンド
git clone
git clone https://github.com/heroku/python-getting-started.git
herokuが準備したチュートリアル用のサンプルプログラムをgithubの共有リポジトリから取得してくるコマンドです。1からWebアプリケーションを作成する手間を省くためにcloneをしています。ここでcloneで取得してくる共有リポジトリは「GitHubの共有リポジトリ」となります。
git push
pushは、先ほど学んだように、「ローカルリポジトリを共有リポジトリに反映させる」ためのコマンドです。
「heroku create」コマンドでherokuサービスに共有リポジトリを作成するようです。そのため、「heroku master」というものがherokuの準備したサーバーの共有リポジトリを示すようになり、ここでpushする先は、herokuのサービスの共有リポジトリとなります。
git push heroku master
gitのpushでWebアプリケーションのデプロイを行いますので、herokuはgitを利用したサービスであると理解することができました。
より詳しくgit自体を学びたい場合のご参考
動画で簡潔な説明が特徴的です。
gitのサイトのpro bookです。