Python | 1 日 60 分 × 7 日アプリ学習:Python文法を学ぶアプリ メモ帳編

Web APP Python
スポンサーリンク
スポンサーリンク

1日目のゴールと全体像

メモ帳アプリ 1日目のテーマは 「Pythonの基本文法だけで“テキストメモを作って保存する”ところまでやること」 です。

この日はまだ複雑な機能は入れず、まずは

  • 変数で「メモの内容」を覚える
  • 繰り返しで「複数のメモ」を扱う
  • 条件分岐で「終了するかどうか」を決める
  • 関数で「入力・表示・保存」を部品化する
  • ファイル操作で「メモをテキストファイルに保存する」

という流れで、「動くメモ帳の最初の形」 を作っていきます。

メモ帳アプリの基本アイデア

メモ帳の仕組みは、とてもシンプルです。

  1. ユーザーがメモを書き込む
  2. 書いたメモをどこかに保存しておく
  3. 必要なときに一覧として表示する
  4. ファイルにも保存しておく

この「どこかに保存しておく」が、 Pythonでは 変数やリスト、そしてファイル の出番になります。

1つのメモを変数に入れてみる

まずは「メモ」を1つだけ扱ってみます。

memo = input("メモを書いてください:")
print("あなたのメモ:", memo)
Python

深掘りポイント

  • input() はユーザーから文字列を受け取る
  • 受け取った値を memo という変数に入れておくことで、後から使える
  • print() で確認することで、「変数に入った」感覚がつかめる

ここまでは「1つだけのメモ」です。 1日目の本番は、ここから 複数のメモを扱う ところです。

複数のメモをリストで管理する

メモ帳アプリでは、メモをどんどん追加していきます。 そこで、複数のメモをまとめて扱うために リスト を使います。

memos = []  # メモを入れていくための空のリスト
Python

ここに、ユーザーが入力したメモを追加していきます。

memo = input("メモを書いてください:")
memos.append(memo)  # リストに追加
Python

深掘りポイント

  • リストは「複数の値をまとめて扱う箱」
  • append() は「リストの末尾に追加する」メソッド
  • メモ帳アプリでは、リストが主役になる

繰り返しで「何件でも」メモを追加できるようにする

1件だけではなく、ユーザーが「もう1件」「もう1件」と 続けて入力できるようにしたいですよね。

そこで 繰り返し条件分岐 を組み合わせます。

シンプルなループの形

memos = []

while True:
    memo = input("メモを書いてください(終了したいときは空のままEnter):")

    if memo == "":  # 何も入力されなかったら終了
        break

    memos.append(memo)

print("=== メモ一覧 ===")
for m in memos:
    print("-", m)
Python

深掘りポイント

  • while True: は「ずっと繰り返す」
  • if memo == "": break で「空入力なら終了」という条件分岐
  • for m in memos: で「リストの中身を1つずつ取り出して表示」

この時点で、すでに 「簡単なメモ帳アプリ」 が完成しています。

関数にまとめて「部品化」する

1日目から「関数」を意識しておくと、 後の拡張がとても楽になります。

設計

  • 関数名:input_memos
  • 役割:ユーザーからメモを受け取り、リストとして返す
def input_memos():
    """ユーザーからメモを入力してもらい、リストで返す関数"""
    memos = []

    while True:
        memo = input("メモを書いてください(終了したいときは空のままEnter):")

        if memo == "":  # 空なら終了
            break

        memos.append(memo)

    return memos
Python

深掘りポイント

  • 関数は「処理のまとまり」
  • return memos で、関数の外に結果を渡す
  • 後で「表示」「保存」などを別の関数に分けやすくなる

メモ一覧を表示する関数

表示も関数にしておくと、 「表示方法を変えたい」ときに楽です。

def show_memos(memos):
    """メモ一覧をきれいに表示する関数"""
    print("=== メモ一覧 ===")

    if not memos:  # リストが空ならメッセージだけ表示
        print("メモは登録されていません。")
        return

    for m in memos:
        print("-", m)
Python

深掘りポイント

  • if not memos: は「リストが空かどうか」をチェックする条件分岐
  • 繰り返しで1件ずつ表示することで、見やすい一覧になる

ファイル操作の“入口”:メモを簡単に保存してみる

1日目では、ファイル操作は「軽く触る」程度にします。 「今日のメモをテキストファイルに書き出す」 だけでも、 かなり実用的になります。

def save_memos_to_file(memos, file_path="memos.txt"):
    """メモ一覧をファイルに保存する関数"""
    with open(file_path, "w", encoding="utf-8") as f:
        for m in memos:
            f.write(m + "\n")  # 1行に1つずつ書き込む

    print(f"メモを {file_path} に保存しました。")
Python

深掘りポイント

  • "w" モードは「上書き保存」
  • for m in memos: でリストの中身を1件ずつ書き込む
  • \n を付けることで、1行1メモになる

1日目では「読み込み」はまだ扱わず、 「書き出せるようになった」 ことを大事にします。

1日目の完成コード:シンプルメモ帳アプリ

ここまでの要素を全部つなげると、 1日目の完成版はこんな形になります。

def input_memos():
    """ユーザーからメモを入力してもらい、リストで返す関数"""
    memos = []

    while True:
        memo = input("メモを書いてください(終了したいときは空のままEnter):")

        # 条件分岐:空なら入力終了
        if memo == "":
            break

        memos.append(memo)  # リストに追加

    return memos

def show_memos(memos):
    """メモ一覧をきれいに表示する関数"""
    print("=== メモ一覧 ===")

    # 条件分岐:何も登録されていない場合
    if not memos:
        print("メモは登録されていません。")
        return

    # 繰り返し:1件ずつ表示
    for m in memos:
        print("-", m)

def save_memos_to_file(memos, file_path="memos.txt"):
    """メモ一覧をファイルに保存する関数"""
    with open(file_path, "w", encoding="utf-8") as f:
        for m in memos:
            f.write(m + "\n")  # 1行に1つずつ書き込む

    print(f"メモを {file_path} に保存しました。")

def main():
    """アプリ全体の流れをまとめた関数"""
    print("=== メモ帳アプリ 1日目 ===")

    # メモを入力
    memos = input_memos()

    # メモを表示
    show_memos(memos)

    # ファイルに保存するかどうかを聞く(条件分岐)
    answer = input("メモをファイルに保存しますか?(y/n):")

    if answer == "y":
        save_memos_to_file(memos)
    else:
        print("保存せずに終了します。")

if __name__ == "__main__":
    main()
Python

コードの重要ポイントを深掘り

1. 変数は「値を覚えておく箱」

  • memos:メモの一覧
  • memo:1件分のメモ
  • answer:保存するかどうかのユーザーの選択

これらはすべて「後で使うために値を覚えておく」ための変数です。

2. 条件分岐で「流れ」をコントロールする

  • if memo == "": break → 入力を終えるタイミングを決める
  • if not memos: → メモが1件もないときの表示を変える
  • if answer == "y": → 保存するかどうかをユーザーに委ねる

条件分岐は、 「ユーザーの入力や状態に応じて、アプリの挙動を変える」 ための基本です。

3. 繰り返しで「複数のもの」を扱う

  • while True: で「何件でも入力できる」
  • for m in memos: で「複数のメモを1件ずつ表示・保存する」

メモ帳のような「複数データ」を扱うアプリでは、 繰り返しが必須になります。

4. 関数で「役割ごとに分ける」

  • input_memos:入力担当
  • show_memos:表示担当
  • save_memos_to_file:保存担当
  • main:全体の流れ担当

この分割ができると、 「どこを直せば何が変わるか」 がとてもわかりやすくなります。

5. ファイル操作は「外部世界との橋」

1日目では「書く」だけですが、 それでもアプリは一気に実用的になります。

  • 画面に表示するだけ → 一時的
  • ファイルに保存する → 後から見返せる

この違いは大きいです。

1日目で本当に掴んでほしいこと

● 「動くものを作る」感覚

自分が入力したメモが

  • 画面に一覧表示されて
  • ファイルにも保存される

この体験は、 「Pythonで何かを作る」 感覚をつかむうえで、とても大事です。

● 文法は「アプリの中で使ってこそ身につく」

  • 変数
  • 条件分岐
  • 繰り返し
  • 関数
  • ファイル操作

これらは、単体で覚えるよりも 「メモ帳アプリの中で使う」 ほうが、ずっと記憶に残ります。

次のステップ

2日目以降では、このメモ帳をさらに育てていきます。

  • 2日目:タイトル付きメモ・番号付き表示・削除機能
  • 3日目:ファイルから読み込んで「前回のメモ」を復元
  • 4日目:設定ファイル導入・保存先や動作の外部化
  • 5〜7日目:検索機能・タグ・ログなどを追加して「本格的なメモ管理ツール」に近づける

1日目のこのコードを、 ぜひ自分の手で打ち込んで、少しずつ改造してみてください。 そこから先が、いちばん面白いところです。

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