第11回 課題レポート2:スケジュール管理ツール①
「プログラミング入門」の卒業課題として、実用的なスケジュール管理ツールを作ってみよう。必要なすべての機能はこれまでの授業で学んだし、前回から、いくつかヒントも出してきた(お気づきだろうか? 「スケジュール = ToDo項目 + 日付時刻」だとか)。
前回の課題レポート「ファイルマージツール」と比べると、何倍かの規模(たぶん150行内外)なので、今回と次回の2コマを充てる。ただ、初級者はもう少し時間がかかるかもしれないから、時間的余裕をもって開発に臨んでほしい。前にも言ったが、「急がば回れ」で、プログラミングを始める前に全体のプランを時間を取って考えるのがコツだ。
この課題をやり遂げれば、この科目を履修した動機「自分のアイデアを要求仕様化し、プログラムを書ける」ところまではあと一歩である。ちなみに、第13~15回の授業ではもう大きな提出課題はなく、「プログラミング応用」につながるアドバンストなテーマを紹介するので、肩の力を抜いて受講してよい※1。
1 ただし「第13回(Aコース) 正規表現」には、この課題に追加する入力チェック機能の「演習」がある。
この回の内容
プログラムの要求仕様
「スケジュール管理ツール」は、前回の授業でデータ構造を設計したToDoリストを、日付・時刻と一緒に記録し、検索や登録・削除・一覧などの機能を提供するものである。これが実現できれば、他への応用も広がり、学生生活や新社会人生活にPythonを活用する意欲も湧くだろう。
このツールの最大の特徴は、つぎの各項だ。
- アプリはColabノートブックから起動するが、登録したスケジュールのデータはアプリ終了後も永続的に保存される
- 実行中に、複数回コマンドを選んで実行できる画面遷移がある
- ディクショナリの検索キー(文字列)に対する部分一致検索が必要。この機能はディクショナリ自体には標準で備わっていないので、自分でロジックを組まなくてはならない
仕様の詳細
- Colabノートブックのコードセルから起動する
- 起動すると以下の各機能を選択できる
- 今日の予定を表示
- 登録済の予定を一覧表示
- 日付を入力して予定を検索・表示
- 新たな予定を登録。それぞれの予定に重要度を付与できる
- 既存の予定を実行済にする
- 既存の予定を削除(編集機能は不要だろう。修正が必要なら「削除→登録」すればよい)
- 上記の各機能を何回か使い、終了コマンドで終了する
- この仕様を実現するには、たとえば以下のようなメニュー画面をコマンド実行毎に表示するのが便利だ
番号を入力してください。 1:今日のスケジュール 2:スケジュール一覧 3:スケジュール検索 4:スケジュール登録 5:スケジュール実行済・削除 0:アプリの終了 ->
- アプリ終了時に、現在のスケジュールデータを、特定のファイルに保存し、次回起動時に自動で読み込む※2。
2 自分でテキストファイル形式を設計してもよいが、前回紹介したpickleを利用するのが便利だ。もちろんRDB(sqlite3)に挑戦してもよい
- 本来なら、日付や時刻としてユーザが入力した文字列をチェックして、不適切な入力をはねる処理が必要だが、今はまだ考えなくてよい(第13回に「Aコース 正規表現」を履修するクラスは、演習課題として実装する予定)
作業手順とヒント
前の課題レポート「ファイルマージツール」では、簡単なフローチャートを書き、プログラムのロジックを確認することを奨めた。それは今回も同様であり、むしろロジックが複雑なだけに、必要性は高まっている。前回は参考までに実例を挙げたが、もう2回目なのだから自分で描こう。提出は求めないので紙に手描きで十分。
次回(第12回)の講義資料に、開発のヒントをいくつか挙げたので、併せて参考にすること。教科書やWeb情報も自由に参考にしてほしい。