目次
1.開発方法
2.アプリ概要
3.開発時の工夫
4.ソースコード
1.開発方法
Youtubeにて、以下の動画を参考にしました。
https://youtu.be/zp-kAt1Ih5k?si=6oU4RI2CQH7IfmFO
Pythonライブラリ、Streamlitを用いて様々なコマンドを紹介しています。
この動画での解説を参考に、オリジナルでWebアプリを開発しました。
2.アプリ概要
起床時間の記録アプリです。
ボタンを押すとその時刻が記録され、日々の起床時間を表で閲覧できる仕組みです。
「起床時間を選択してください」という文字の下部に現在時刻が自動で表示され、
「記録する」ボタンを押下すると、ページ下部の表にその日の日付、時刻が記録されます。
プルダウンから月を選択することで、月ごとの記録を閲覧できます。
3.開発時の工夫
Youtubeでの学習をもとに、以下の仕組みを活用しました。
・pandas:データ解析を支援するライブラリで、CSVの読み込みやデータの記録の際に活用しています。
・DataFrame:Pandasで使用されるデータ構造で、記録されたデータを表で示すために使います。
その他のソースコードの記載の仕方や、エラー時の対処などはChatGPTを参考にしました。
4.ソースコード
import streamlit as st
import pandas as pd
from datetime import datetime
# タイトル
st.title("起床時間記録アプリ")
# 日付と時間を入力
wake_up_time = st.time_input("起床時間を選択してください:", datetime.now().time())
# 記録ボタン
if st.button("記録する"):
# wake_up_times.csvというファイルに記録を保存する
try:
df = pd.read_csv("wake_up_times.csv")
except FileNotFoundError:
df = pd.DataFrame(columns=["Date", "Time"])
new_record = {"Date": datetime.now().date(), "Time": wake_up_time}
df = pd.concat([df, pd.DataFrame([new_record])], ignore_index=True)
df.to_csv("wake_up_times.csv", index=False) # インデックスを保存しない
st.success("起床時間を記録しました!")
# これまでの記録を表示するセクション
st.subheader("これまでの記録")
try:
df = pd.read_csv("wake_up_times.csv")
# 日付をdatetime型に変換
df['Date'] = pd.to_datetime(df['Date'])
# 月ごとのリストを作成
months = df['Date'].dt.strftime('%Y-%m').unique()
# 月を選択するセレクトボックス
selected_month = st.selectbox("月を選択してください", months)
# 選択された月のデータをフィルタリング
filtered_df = df[df['Date'].dt.strftime('%Y-%m') == selected_month]
# フィルタリングされたデータを表示
st.write(filtered_df)
except FileNotFoundError:
st.write("まだ記録がありません")