Streamlitを使ってシンプルメモアプリを作成しよう!

IT・プログラミング

今回はStreamlitを使ってシンプルなメモアプリを作成する方法を紹介していきます。

全体像

最終的な完成イメージとしては以下のようになります。

左側のメニューから、

  • 新規メモ
  • 既存メモ
  • 削除

の3つのパターンを選択します。

新規メモ

新規メモには新しくメモ内容を追加できます。
新規メモ

既存メモ

既存メモはすでに保存したメモの内容を確認できます。
既存メモ

削除

削除では作成したメモを削除することができます。
削除

基本的なメモ内容の保存はファイルに保存するという形式をとっていきます。

それでは早速コードを作っていきましょう。

コード全体

全体のコードは以下のようになります。

import streamlit as st
import os

# メモを保存するフォルダを指定
MEMO_FOLDER = "memos"

# メモの作成と表示
def create_memo():
    memo_content = st.text_area("メモ内容")
    return memo_content

# メモの保存
def save_memo(memo_name, memo_content):
    memo_path = os.path.join(MEMO_FOLDER, memo_name + ".txt")
    with open(memo_path, "w") as f:
        f.write(memo_content)

# メモの読み込み
def load_memo(memo_name):
    memo_path = os.path.join(MEMO_FOLDER, memo_name)
    if os.path.exists(memo_path):
        with open(memo_path, "r") as f:
            return f.read()
    else:
        return None

# メモの削除
def delete_memo(memo_name):
    memo_path = os.path.join(MEMO_FOLDER, memo_name)
    if os.path.exists(memo_path):
        os.remove(memo_path)
        st.success(f"メモ '{memo_name}' を削除しました。")
    else:
        st.error("指定されたメモは存在しません。")

def main():
    st.title("シンプルメモアプリ")

    if not os.path.exists(MEMO_FOLDER):
        os.makedirs(MEMO_FOLDER)

    menu = ["新規メモ", "既存メモ", "削除"]
    choice = st.sidebar.selectbox("メニュー", menu)

    if choice == "新規メモ":
        st.subheader("新規メモ作成")
        memo_name = st.text_input("メモの名前")
        memo_content = create_memo()

        if st.button("保存"):
            save_memo(memo_name, memo_content)
            st.success("メモが保存されました。")

    elif choice == "既存メモ":
        st.subheader("既存メモ表示")
        memo_list = os.listdir(MEMO_FOLDER)
        selected_memo = st.selectbox("メモを選択", memo_list)

        if selected_memo:
            memo_content = load_memo(selected_memo)
            if memo_content is not None:
                st.write(memo_content)
            else:
                st.warning("選択したメモの内容は存在しません。")

    elif choice == "削除":
        st.subheader("メモ削除")
        memo_list = os.listdir(MEMO_FOLDER)
        selected_memo = st.selectbox("削除するメモを選択", memo_list)

        if st.button("削除"):
            delete_memo(selected_memo)

if __name__ == "__main__":
    main()

コードの解説と手順

このメモ帳アプリは、Streamlitというライブラリを使用して作成されています。Streamlitを使用すると、Pythonスクリプトから簡単にウェブアプリケーションを構築できます。以下では、アプリケーションの主要な機能とそれぞれのブロックについて説明します。

ライブラリのインポートと設定

import streamlit as st
import os

# メモを保存するフォルダを指定
MEMO_FOLDER = "memos"

最初に、必要なライブラリをインポートします。streamlitはアプリケーションを構築するために使用され、osはファイルやディレクトリの操作に必要です。また、メモを保存するフォルダのパスを定義しています。

メモの作成と表示

def create_memo():
    memo_content = st.text_area("メモ内容")
    return memo_content

この関数は、新しいメモを作成するためのテキストエリアを表示し、ユーザーがメモの内容を入力できるようにします。ユーザーが入力したメモの内容を戻り値として返します。

メモの保存

def save_memo(memo_name, memo_content):
    memo_path = os.path.join(MEMO_FOLDER, memo_name + ".txt")
    with open(memo_path, "w") as f:
        f.write(memo_content)

この関数は、ユーザーが入力したメモの内容をファイルとして保存します。メモの名前と内容を引数として受け取り、指定されたフォルダ内にテキストファイルとして保存します。

メモの読み込み

def load_memo(memo_name):
    memo_path = os.path.join(MEMO_FOLDER, memo_name)
    if os.path.exists(memo_path):
        with open(memo_path, "r") as f:
            return f.read()
    else:
        return None

この関数は、指定された名前のメモを読み込みます。ファイルが存在すればその内容を読み取り、存在しなければNoneを返します。

メモの削除

def delete_memo(memo_name):
    memo_path = os.path.join(MEMO_FOLDER, memo_name)
    if os.path.exists(memo_path):
        os.remove(memo_path)
        st.success(f"メモ '{memo_name}' を削除しました。")
    else:
        st.error("指定されたメモは存在しません。")

この関数は、指定された名前のメモを削除します。ファイルが存在すれば削除し、削除が成功したかどうかをメッセージとして表示します。

メインのアプリケーション

def main():
    st.title("シンプルメモアプリ")
    # ... 以下省略 ...

main()関数はアプリケーションのエントリーポイントです。ここでStreamlitのタイトルを設定し、メニュー選択に応じて適切な操作を行う処理が続きます。

かなりシンプルなコードで実際に動くアプリが作れました。

実際にサクッとGoogleColaboratoryで動かすには以下のコード!
コードはこちら

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