セルフメディケーション金額算出ツールをGitHubで公開する
レシート画像からCSVを作成し、SQLiteでセルフメディケーション対象金額を集計するツールを作りました。
今回は、このツールをGitHubで公開できるように整理します。
ただし、レシートデータには購入店舗名、購入日、商品名などの生活情報が含まれるため、CSVファイルやSQLiteデータベースは公開しないようにします。
今回公開するもの
今回GitHubで公開するのは、以下のPythonスクリプトです。
import_receipts_with_dedup_and_log.pymedication_summary.pymedication_summary_store.py
一方で、以下は公開しません。
- 実際のレシートCSV
receipts.dbskipped.csv- 個人の購入履歴
- 店舗名や購入日が入った実データ
コードだけを公開し、実データはローカル環境で管理します。
GitHubでリポジトリを作成する
まず、GitHub上で新しいリポジトリを作成します。
リポジトリ名は以下にしました。
self-medication-tax-deduction
設定は以下です。
- Add .gitignore:Pythonを選択
- Add license:MIT Licenseを選択
MIT Licenseを選ぶことで、「このコードは自由に使ってよいが、利用による責任は負わない」という意図を示せます。
個人用ツールや学習用ツールを公開する場合、MIT Licenseは扱いやすいライセンスです。
ローカルにcloneする
GitHubでリポジトリを作成したら、ローカル環境へcloneします。
cd ~/aw10s/github_open git clone git@github.com:Snowpooll/self-medication-tax-deduction.git
SSH鍵にパスフレーズを設定している場合は、ここでパスフレーズの入力を求められます。
なお、リポジトリURLは実際にGitHubで作成したものに合わせます。
メモでは末尾に - が付いたURLになっていました。
self-medication-tax-deduction-.git
もし意図せず末尾に - が入っている場合は、GitHub側のリポジトリ名を確認してからcloneします。
スクリプトをコピーする
作成済みのスクリプトを、GitHub公開用リポジトリへコピーします。
cd ~/aw10s/github_open/self-medication-tax-deduction cp ~/aw10s/purcharge_history/import_receipts_with_dedup_and_log.py . cp ~/aw10s/purcharge_history/medication_summary* .
medication_summary* としているため、以下のようなファイルがまとめてコピーされます。
medication_summary.pymedication_summary_store.py
CSV保存用ディレクトリを作る
レシートCSVを置くためのディレクトリを作成します。
mkdir csv_files
ただし、実際のCSVファイルは公開しません。
Gitでは空ディレクトリは管理されないため、必要なら後で .gitkeep を置いてもよさそうです。
touch csv_files/.gitkeep
ただし、今回はCSVファイルを誤って公開しないことを優先します。
.gitignoreを編集する
レシートCSVやSQLiteデータベースをGitHubに上げないように、.gitignore を編集します。
vim .gitignore
最終行に以下を追記します。
# セキュリティのための追記 receipts.db skipped.csv csv_files/*.csv .DS_Store
これで、以下のファイルはGit管理対象から除外されます。
receipts.dbskipped.csvcsv_files内のCSVファイル- macOSが作る
.DS_Store
なぜCSVとDBを公開しないのか
レシートCSVには、個人の生活パターンが分かる情報が含まれます。
例えば、以下のような情報です。
- どの店舗で買い物したか
- いつ買い物したか
- どの医薬品を買ったか
- 食品や日用品の購入傾向
- 家族構成や生活圏が推測できる情報
そのため、GitHubにはコードだけを公開し、実データはローカルで管理します。
git addする
ファイルを追加します。
git add .
追加対象を確認する場合は、以下を実行します。
git status
ここで、receipts.db や実際のCSVファイルが含まれていないことを確認します。
commitする
初回コミットを作成します。
git commit -m "Initial commit: Add receipt management scripts"
コミットメッセージは、最初の公開内容が分かるようにしました。
GitHubへpushする
GitHubへpushします。
git push origin main
SSH鍵にパスフレーズを設定している場合は、ここでもパスフレーズの入力を求められます。
pushが成功すると、GitHub上にスクリプトが公開されます。
公開前の確認
GitHubへpushする前に、以下を確認します。
- 実際のレシートCSVが含まれていないか
receipts.dbが含まれていないかskipped.csvが含まれていないか- APIキーやパスワードが含まれていないか
- 個人情報がコメントやREADMEに入っていないか
特に、GitHubで公開する場合は、コードだけでなくコミット履歴にも注意します。
一度でも個人情報やAPIキーをcommitしてpushすると、あとから削除しても履歴に残る可能性があります。
今回のコマンドまとめ
今回使ったコマンドをまとめると、以下です。
cd ~/aw10s/github_open git clone git@github.com:Snowpooll/self-medication-tax-deduction.git cd self-medication-tax-deduction cp ~/aw10s/purcharge_history/import_receipts_with_dedup_and_log.py . cp ~/aw10s/purcharge_history/medication_summary* . mkdir csv_files vim .gitignore git add . git commit -m "Initial commit: Add receipt management scripts" git push origin main
.gitignoreの追記内容
公開しないファイルを明示的に除外します。
# セキュリティのための追記 receipts.db skipped.csv csv_files/*.csv .DS_Store
今回できたこと
今回の作業で、以下まで完了しました。
- GitHubに公開用リポジトリを作成した
.gitignoreにPythonを選択した- MIT Licenseを設定した
- ローカルへcloneした
- セルフメディケーション集計用スクリプトをコピーした
- CSV保存用ディレクトリを作成した
- 実データを公開しないように
.gitignoreを追記した - 初回commitを作成した
- GitHubへpushした
ハマりどころ
リポジトリ名の末尾に注意する
リポジトリ名を作成するときに、末尾に余計なハイフンが入っていないか確認します。
例えば、以下は別のリポジトリ名として扱われます。
self-medication-tax-deduction self-medication-tax-deduction-
cloneするときは、GitHub上の実際のURLをコピーして使うのが安全です。
実データをcommitしない
今回のツールでは、CSVやSQLite DBに個人の購入履歴が入ります。
そのため、.gitignore を先に設定し、git status で確認してからcommitします。
MIT Licenseは免責も含む
MIT Licenseは自由に使えるライセンスですが、無保証であることも明記されます。
税制や確定申告に関わるツールなので、READMEにも「最終確認は利用者自身で行う」旨を書いておくとよさそうです。
次にやること
次は、GitHubリポジトリとして使いやすくするため、以下を追加したいです。
README.mdを作成する- 使い方を書く
- CSVフォーマットを書く
- サンプルCSVを個人情報なしで用意する
- 注意書きとして「税務判断は自己責任」と明記する
- 必要なら
requirements.txtを追加する
特に、CSVの列名とフォーマットはREADMEに書いておくと、あとで自分でも使いやすくなります。
まとめ
セルフメディケーション対象金額を集計するPythonスクリプトを、GitHubで公開できるように整理しました。
公開するのはコードだけで、レシートCSVやSQLite DBなどの実データは .gitignore で除外します。
MIT Licenseを設定することで、自由に利用できる一方、無保証であることも明示できます。
次はREADMEやサンプルCSVを整え、他の人や未来の自分が使いやすい形にしていきます。

コメント