\ お問い合わせはこちら! /

【Python】Streamlitで簡単に家計簿アプリを作る手順をご紹介

  • URLをコピーしました!
  • PythonでWebアプリを作ってみたい!
  • でも、フレームワークを使ったWebアプリ開発って難しそう…

そんな方におすすめなのがStreamlitです。

Streamlitを使えば、少ないコードで簡単にWebアプリが作れちゃいます。

今回は、誰でもすぐに試せる「家計簿アプリ」を一緒に作っていきましょう。

  • 初めてWebアプリ制作にチャレンジしたい
  • Python学習のアウトプットをしたい
  • ポートフォリオを作って、転職・副業に活かしたい
  • 自分用の家計簿管理ツールが欲しい

そんな方に向けた入門記事にしてみました!

冗談抜きで本当に簡単なので、ぜひ本記事を参考に進めてみてください。

【Python】Streamlitで簡単に家計簿アプリを作る手順をご紹介

次の流れで説明します。

  • ディレクトリ構成
  • 環境セットアップ
  • Streamlitコードの作成
  • 動作確認

ディレクトリ構成

完成系のディレクトリ構成は、こんな感じです。

kakeibo-app/
├── app.py           # Streamlitアプリのメインスクリプト
└── data/            # データ保存用フォルダ
    └── kakeibo.csv  # 家計簿データを保存するCSVファイル

最初はapp.pyだけを配置してください。
data/kakeibo.csvは実行時に、自動的に生成されるようになっています。

この構成によって、後々の機能追加やデプロイもスムーズに行えるはずです。

仮想環境とライブラリを導入する

前提条件として、Pythonのインストールは済んでいることとします。

適当な場所にkakeibo-appというディレクトリを作成して、まずは仮想環境を作っていきましょう。

# 仮想環境の作成
python -m venv venv

# 仮想環境の有効化(macOS, Linux)
source venv/bin/activate

仮想環境を作成することで、他のプロジェクトとライブラリのバージョンなどが干渉せず、独立した環境を作ることができます。

続いて、必要なライブラリをインストール。

# pipのアップグレード
pip install --upgrade pip

# 必要なライブラリのインストール
pip install streamlit pandas matplotlib watchdog

これで必要なライブラリは揃いました。

実際のStreamlitコードの作成

実際のアプリコードapp.pyを書いていきましょう。
今回は、「家計簿の記録 → 保存 → 表示 → グラフ化」までを一気に行います。

import os
import platform
from datetime import date

import matplotlib
import pandas as pd
import streamlit as st

# CSV保存用
DATA_PATH = "data/kakeibo.csv"
os.makedirs("data", exist_ok=True)

# CSVが存在しなければ空のデータフレームを作成
if not os.path.exists(DATA_PATH):
    pd.DataFrame(columns=["日付", "費目", "金額", "メモ"]).to_csv(
        DATA_PATH, index=False
    )

# OSごとに日本語フォントを自動設定
system = platform.system()
if system == "Darwin":  # macOS
    matplotlib.rcParams["font.family"] = "AppleGothic"
elif system == "Windows":
    matplotlib.rcParams["font.family"] = "MS Gothic"
else:
    matplotlib.rcParams["font.family"] = "IPAPGothic"

# タイトル
st.title("📒 シンプル家計簿アプリ")

# 入力フォームの作成
with st.form("entry_form", clear_on_submit=True):
    col1, col2 = st.columns(2)
    with col1:
        date_input = st.date_input("日付", value=date.today())
        category = st.selectbox("費目", ["食費", "交通費", "日用品", "娯楽", "その他"])
    with col2:
        amount = st.number_input("金額(円)", min_value=0, step=100)
        note = st.text_input("メモ")

    submitted = st.form_submit_button("追加する")

# 保存処理
if submitted:
    new_data = pd.DataFrame(
        [[date_input, category, amount, note]], columns=["日付", "費目", "金額", "メモ"]
    )
    df_old = pd.read_csv(DATA_PATH)
    df_all = pd.concat([df_old, new_data], ignore_index=True)
    df_all.to_csv(DATA_PATH, index=False)
    st.success("✅ 追加しました!")

# データ表示
st.subheader("📊 入力履歴")
df = pd.read_csv(DATA_PATH)
st.dataframe(df)

# 集計表示
if not df.empty:
    st.subheader("📈 月別合計 / 費目内訳")

    # 月別集計
    df["日付"] = pd.to_datetime(df["日付"])
    monthly_sum = df.groupby(df["日付"].dt.to_period("M"))["金額"].sum()
    st.bar_chart(monthly_sum)

    # 費目内訳
    category_sum = df.groupby("費目")["金額"].sum()
    st.write("### 費目内訳(円グラフ)")
    st.pyplot(category_sum.plot.pie(autopct="%1.1f%%", figsize=(5, 5)).figure)

ローカルマシンで家計簿アプリを起動・動作確認する

動作確認は、以下のコマンドで行います。

streamlit run app.py

するとブラウザが起動して、以下のような画面が表示されます。

日付や金額、費目を入れて「追加する」ボタンを押すことで、CSVファイルにデータとして保存されていく仕組みです。

動作は大丈夫そうですね。

アプリを終了する場合は、ターミナル上でCtrl + Cを押します。

インターネット上に一般公開する

アプリが完成したら、次はインターネット上に公開してみましょう!

Streamlitをインターネット上に一般公開する方法

まとめ

今回は、PythonとStreamlitでシンプルな家計簿アプリを作ってみました。

Streamlitはデータサイエンスやちょっとしたツール作りとの相性が抜群です。

特にStreamlitはブラウザ上で動くので、一般公開して「人に見せられる形」にできるのが魅力。

自分のコードが「作品」として外に出る感覚を、ぜひ味わってみてください!

ぜひ次は次の記事を参考に、VPSを使ったアプリをインターネット上に公開にチャレンジしてみましょう。

Streamlitをインターネット上に一般公開する方法

シェアはこちら
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

旅行が趣味のミニマリストです。
YouTubeでは「食べて飲んで帰るだけ」をテーマに『酔い旅』を投稿しています。
たまに趣味のプログラミング記事の投稿します。

コメント

コメントする

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)