Pythonを学びたい方のために、すぐに動くタスク管理アプリのサンプルコードを作成しました。
簡単なコードの組み合わせですが、基礎知識を学べるようなコードです!
3ステップに分けて、実際にアプリを作りながら学べる内容となっています。
今回は、アプリの土台になる基礎の処理を作っていきます。
なるべく細かく説明を書いておりますので、まずは動かしてみて、
1つずつ意味を理解していけると良いと思います!
ステップごとの目的
STEP | 目的 | 内容 |
---|---|---|
1 | Pythonの変数、リスト、if文、ループ、inputの使い方を覚える |
・タスクをリストに追加できる ・現在のタスク一覧を表示できる ・タスクを削除できる(番号で指定) ・終了操作ができる(アプリ終了) ・無効な操作に対するエラーメッセージ表示 ・操作メニューを繰り返し表示(ループ処理) |
2 | ファイル操作、辞書、日付の扱い、データ構造を理解する |
・ファイルにタスクを保存する(例:JSON形式) ・アプリ起動時に保存ファイルからタスクを読み込む ・タスクに「期限(日付)」を追加できる ・タスクに「優先度(高・中・低)」を設定できる ・完了したタスクにチェックを入れられる ・完了済みタスクと未完了タスクを分けて表示 |
3 | 応用的なデータ処理、関数化、保守しやすいコード設計を学ぶ |
・タスクを期限順、または優先度順に並べ替え表示 ・タグやカテゴリでタスクを分類 ・タスクをキーワードで検索できる ・各機能を関数に分割し、コードを整理 ・必要に応じてクラスを導入 ・エラーハンドリングを追加して安定性アップ |
完成形のコードを見てみましょう
ステップ1の解説に入る前に、完成系のコードを見てみましょう。
サンプルコードをクリックすると全体のコードが表示されます。
※ある程度知識のある方は、下の説明をみながら、全体コードを完成させてもいいですね!
#!/usr/bin/env python3
import sys
# タスクの追加
def add_task(mytask):
# ユーザーが入力したタスクを追加
add = input("追加タスク(追加を辞める場合は 0 と入力):")
# 追加をやめる場合
if add == "0":
print("追加をキャンセルしました。")
return
# 追加
mytask.append(add)
print(f"タスク「{add}」を追加しました。")
# タスク一覧の表示
def task_list(mytask):
if not mytask:
print("表示するタスクがありません。")
return
else:
print("===== タスク一覧 =====")
for index, task in enumerate(mytask):
print(f"{str(index + 1)}. {task}")
print("======================")
# タスクの削除
def delete_task(mytask):
if not mytask:
print("削除するタスクがありません。")
return
else:
while True:
# 削除対象を選べるように一覧表示
print("===== タスク一覧 =====")
for index, task in enumerate(mytask):
print(f"{index + 1}. {task}")
print("======================")
delete_number = input("削除するタスク番号(削除を辞める場合は 0 と入力):")
try:
# 数字が選択された場合
index = int(delete_number)
# 削除をやめる場合
if index == 0:
print("削除をキャンセルしました。")
break
# 削除
elif 1 <= index <= len(mytask):
# 選択された番号のタスクを削除
mytask.pop(index - 1)
break
else:
print("その番号のタスクは存在しません。")
print()
except ValueError:
print("番号は数字で入力してください")
# アプリを終了
def exit_app(mytask):
if mytask:
show = input("残りのタスクを表示しますか? (y/n):")
if show.lower() == "y":
print("===== 残りのタスク =====")
for index, task in enumerate(mytask):
print(f"{str(index + 1)}. " + task)
print("======================")
else:
print("残りタスクはありません")
sys.exit()
# 操作リストの表示
def display_operations():
print("===== 操作メニュー =====")
operation_list = [
"1. タスクを追加する",
"2. タスク一覧を見る",
"3. タスクを削除する",
"4. アプリを終了する"
]
for task in operation_list:
print(task)
print("======================")
# ユーザーの入力に基づいた処理
def execution_operation(mytask):
execution = input("番号を選んでください:")
print()
# 有効な番号が入力された場合、その番号の操作を実行
if execution in operations:
operations[execution](mytask)
else:
print("無効な選択です。もう一度試してください。")
# 操作に対応する関数のマッピング
operations = {
"1": add_task,
"2": task_list,
"3": delete_task,
"4": exit_app
}
# メイン処理
def main():
# タスクを格納するリスト
mytask = []
while True:
# 操作リスト
display_operations()
# 実操作
execution_operation(mytask)
print("\n\n")
if __name__ == "__main__":
main()

このサンプルコードは、コンソールで見やすいように、print文に ” = ” を多く使用しています。各々の見やすいように修正してください!
実行イメージ(例)
===== 操作メニュー =====
1. タスクを追加する
2. タスク一覧を見る
3. タスクを削除する
4. アプリを終了する
======================
番号を選んでください:3
===== タスク一覧 =====
1. 勉強する
2. 洗濯する
3. ブログを書く
======================
削除するタスク番号(削除を辞める場合は 0 と入力):2
コードの解説
最初に確認するのは if __name__ == "__main__":
コードを読む時は、 if __name__ == "__main__"
:
の下に書かれている関数を実行の起点として、最初にその関数から追うのが基本です。
例えば test()
が書かれている場合、そこからコードを追い始めます。
if __name__ == "__main__":
main()
プログラムの起点となる main() 関数
# メイン処理def main():
# タスクを格納するリスト
mytask = []
while True:
# 操作リスト
display_operations()
# 実操作print("\n\n")
execution_operation(mytask)
mytask
リストは、このメイン関数内で初期化され、execution_operation()
関数に渡されることで、関数内でも同じリストを共有して操作できるようにしています。while True:
によって無限ループを作り、毎回メニューを表示し、操作を受け付けます。
このループはbreak
やreturn
がない限り終了しません。
今回の処理では、ユーザーが「アプリ終了」を選ぶまでループが続く構造になっています。print("\n\n")
は、画面上での可読性を高めるための空行出力です。
操作リストを表示する関数 display_operations()
# 操作リストの表示
def display_operations():
print("===== 操作メニュー =====")
operation_list = [
"1. タスクを追加する",
"2. タスク一覧を見る",
"3. タスクを削除する",
"4. アプリを終了する"
]
for task in operation_list:
print(task)
print("======================")
- ユーザーに現在利用できる操作をコンソール上に表示するための関数。
print()
文を使って、どのような操作が可能かを視覚的にわかりやすく案内します。- 操作項目は、
operation_list
というリストにまとめており、個別にprint()
を繰り返す代わりに、for
文で一括出力しています。
print("1. タスクを追加する")
print("2. タスク一覧を見る")
:
※上記のようにも書くことはできるが、リストで定義しておくことで、他の処理でも operation_list
を再利用しやすくなり、メニュー内容の管理や変更も簡単になる
保守性が高い:リストにまとめているので、操作項目の追加・変更が簡単
再利用性:同じメニューを別の場所で使いたいときも、リストごと使い回せる
まとめ
今回は、タスク管理アプリの全体像から、操作リストまでを紹介しました。
難しく感じる部分もあるかもしれませんが、一つずつ理解していくと、汎用性のあるコードばかりです。
次回は、実操作の処理を解説していきます。
ぜひコードを実際に動かして、理解を深めてくださいね!