Gitとgithub

Gitでバージョン管理

pythonでWeb公開の準備としてgitを行います

今回はPythonをherokuで公開することを目的としてgitを行います。gitはバージョン管理を行うもので、リモートのgithubとローカルのgitを組み合わせて使います。

github概念

まずは、github.comに行ってgithubのアカントを取っておきましょう。Freeで無制限のパブリック/プライベートのリポジトリを登録できますが、プライベートで月に2000分を超えたり、月に500MBを超える場合は、Teamに切り替えて月$4のコースにしてください。

github

 

gitをdownloadしてインストールします

gitforwindows.orgでローカル用の環境をダウンロードします

git download

ダウンロードしたらダブルクリックで起動して「next」「next」で入れていきます。editorの選択は自分が使っているものを選んでください。またPATHのところではgit bashしか使わないのであればgit bash onlyで構いません。それ以外は一番上の選択肢で構いません。installが終わったら、Gitのアプリグループの中にGit Bashが登録されるはずです。

初期設定

では Git Bashを起動してください。まず先程作ったgithubの設定をローカルにも設定します。

git download
git config --global user.name "githubのユーザー名"
git config --global user.email githubのemailアドレス

これでgithubとgitの繋がりが設定できました

gitのサンプルを作ってみる

pythonのWebのサンプルを作ってみましょう。Git Bashを起動します。

ls

lsと入力すると、カレントのフォルダーのファイル一覧が表示されます。コマンド体系はLinuxです。

フォルダー作成

ここにフォルダーを作って、ローカルレジストリを作成します。

mkdir pythonWebSample
cd pythonWebSample
echo "# webSample" >> README.md
git init

git initをすることでローカルレジストリーが作成されます。

git add README.md
git commit -m "at first readme"

さきほど仮に作ったREADMEを追加して、コメントを入れてコミットします。これでまず最初のレジストリーが作成されました。コマンドの最後に(master)と表示されます。masterというブランチが自動作成されています。

masterブランチは基本的に変更しないようなので、githubのお勧めに従って、mainブランチに名前を変えて作業をすることにします。

git branch -M main

また、githubとの連携の設定を宣言するので、以下のように入力します。ただし、みなさんは違うアカウントですからそれぞれ書き換えてください。

git remote add origin https://github.com/アカウント名/webSample.git

まだgithubへの認証ができていません。ここで一度ログインして認証を行います

git push -u origin main
たとえばの話

今回はやりませんが、もし別ブランチを作って行う場合は、このような流れになります

git branch main
git checkout main
git add ファイル名
git commit -m "なにか"
git push origin main
リモートに公開して、みんなの意見を聞く
git checkout master
git pull origin master
git merge main
git push origin master
git checkout main

まず、mainブランチを作成して、mainに移動し、変更を加え、コメントを書き、リモートに一度pushして、みんなの意見を聞き、OKならばmasterに移動して、リモートのレジストリをmasterに受けて、mainと混合して、新たなmasterをリモートレジストリにpushして、またmainに移動しておく

pythonのプログラム作成

では、pythonでWebアプリを作っていきます。今回はFlaskを使用して、get,postのデータの送受信を行います。

なので、flaskをinstallしておいてください

pip3 install Flask
プログラム内容

適当なフォルダーに app.pyを作ります。その配下に staticとtemplatesフォルダーを作っておきます。

整数を2つ入力して、次の画面でそのべき乗を計算して表示するという簡単なサンプルです。

べき乗を計算するサンプル

app.py

from flask import Flask, render_template
from flask import request
import time
import datetime
import signal
import sys

app = Flask(__name__)

@app.route("/")
def hello():
	return render_template('index.html')

@app.route("/calc",methods=['POST'])
def connect():
	print("calc called")
	num1 = int(request.form['num1'])
	num2 = int(request.form['num2'])
	powered=0
	try:
		powered = num1 ** num2
		print("data:",num1,num2,powered)
	except:
		pass
	return render_template('calc.html', a=num1,b=num2,c=powered)

def sigint_handler(signal,frame):
	sys.exit(0)

if __name__ == '__main__':
	signal.signal(signal.SIGINT, sigint_handler)
	app.run(host='0.0.0.0', port=5000, debug=True)

このapp.pyでindex.htmlとcalc.htmlをコントロールして、入力データの受け渡しを行います。

表示する index.htmlと calc.htmlは templatesフォルダーに作成します。

/templates/index.html

<!DOCTYPE html>
<html lang="ja">
	<head>
		<meta charset="UTF-8">
		<title></title>
		<link rel="stylesheet" type="text/css"
			href="{{ url_for('static', filename='style.css')}}">
	</head>
	<body>
		<h1>べき乗の計算</h1>
		<div class="wrap">
		<p>pythonでべき乗の計算をします。整数を2つ入力してください。</p>
		<form action="/calc" method="post">
			<dl>
				<!-- もとの数 -->
				<input type="text" name="num1" size="20" maxlength="200">の
				<!-- べき乗の数 -->
				<input type="text" name="num2" size="20" maxlength="200">べき乗
			</dl>
			<div>
				<!-- submit -->
				<input type="submit" value="計算">
			</div>
		</form>
		</div>
	</body>
</html></pre>
						

submitで渡されるPOST変数は num1 と num2 です。これをcalc.htmlに渡しますが、その際、Jinja2というFlask付属のテンプレートエンジンを使用します。

/templates/calc.html

<!DOCTYPE html>
<html lang="ja">
	<head>
		<meta charset="UTF-8">
		<title></title>
		<link rel="stylesheet" type="text/css"
			href="{{ url_for('static', filename='style.css')}}">
	</head>
	<body>
	
		<h1>べき乗の計算</h1>
		<div class="wrap">
		<p>結果</p>
		<dl>
			<!-- 結果 -->
			{{a}}**{{b}}={{c}}
		</dl>
		</div>
	</body>
</html>

staticフォルダーに cssを置いていますので、それも書いておきます。

/static/style.css

@charset "utf-8";
body {
	padding: 0;
	margin: 0;
}
h1 {
	margin-top: 0;
	padding: 20px;
	border-left:10px solid #6ff;
	background:linear-gradient(to bottom right, #aaf, #88f 50%, #66f 80%);
	color:#fff;
}
div.wrap {
	margin: 10px;
	padding:10px;
	background:linear-gradient(to bottom right, #eff, #aff 50%, #9ff 80%);
}
dt {
	border-left:5px solid #66f;
	padding-left: 5px;
}
dd {
	margin:2px 0 4px 3px;
}
実行して確認

一度実行してみましょう

python app.py
 * Serving Flask app "app" (lazy loading)
 * Environment: production
   WARNING: This is a development server. Do not use it in a production deployment.
   Use a production WSGI server instead.
 * Debug mode: on
 * Restarting with stat
 * Debugger is active!
 * Debugger PIN: 281-714-877
 * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)
127.0.0.1 - - [12/Jan/2021 10:27:46] "[37mGET / HTTP/1.1[0m" 200 -
127.0.0.1 - - [12/Jan/2021 10:27:46] "[37mGET /static/style.css HTTP/1.1[0m" 200 -
127.0.0.1 - - [12/Jan/2021 10:27:47] "[33mGET /favicon.ico HTTP/1.1[0m" 404 -

ブラウザを起動して、localhost:5000 とurlを入力すると、プログラムが動きます。もし3と20を入力したら

べき乗を計算するサンプル

このように表示されます。

git登録

Git bashで登録

git add .
git status

new fileで4つのファイルが対象になったと思います。

git commit -m "debug success"
git push origin main

これでgithubに公開できました。

githubに公開
次のページへ