セルフメディケーション金額算出ツールをGitHubで公開する

セルフメディケーション金額算出ツールをGitHubで公開する

レシート画像からCSVを作成し、SQLiteでセルフメディケーション対象金額を集計するツールを作りました。

今回は、このツールをGitHubで公開できるように整理します。

ただし、レシートデータには購入店舗名、購入日、商品名などの生活情報が含まれるため、CSVファイルやSQLiteデータベースは公開しないようにします。

今回公開するもの

今回GitHubで公開するのは、以下のPythonスクリプトです。

  • import_receipts_with_dedup_and_log.py
  • medication_summary.py
  • medication_summary_store.py

一方で、以下は公開しません。

  • 実際のレシートCSV
  • receipts.db
  • skipped.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.py
  • medication_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.db
  • skipped.csv
  • csv_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を整え、他の人や未来の自分が使いやすい形にしていきます。

コメント

タイトルとURLをコピーしました