週末起業とまでは行かなくても、仕事が休みの週末を利用して、何かしらのプロジェクトを進めようと思っている人もいるのではないでしょうか。そこで、今回は、週末だけの日付が入力された予定表を作ってみましょう。

  • 今回作る週末だけのカレンダー

    今回作る週末だけのカレンダー

週末プロジェクトのススメ

そもそも筆者が開発しているなでしこも、基本的には週末や仕事が終わった夜の時間を利用してコツコツ開発しているものです。すぐに成果は出ないとしても、コツコツ続けることで、みんなに使って貰えるようになったり、学校の教科書に採択してもらったり(55回目を参照:)と良いこともあります。

そして、何かしらのプロジェクトを完成まで導くには、予定表を作ると良いでしょう。大きなプロジェクトを完成させるには、長期目標に加えて短期目標を設定するのが大切です。そして、自由時間が週末しかないのであれば、週末だけの予定表を作ると良いでしょう。そこで、今回のプログラムが役立ちます。

週末だけの予定表を作ろう

それでは、週末だけの予定表をなでしこで作ってみましょう。ブラウザで、「なでしこ3簡易エディタ」にアクセスしましょう。

そして、以下のプログラムを入力しましょう。以下のなでしこのプログラムは、週末だけの予定表を作成するものです。

# === 週末予定表を作成 ===
# 開始日と終了日を設定 --- (*1)
開始日=「{今年}/04/01」
終了日=「{今年}/07/31」
「日付{タブ}曜日{タブ}作業内容」を表示。
# 繰り返し予定表を作る --- (*2)
F日数=0
対象日=開始日
365回
  # 曜日を確認 --- (*3)
  W=対象日の曜日
  もし、W=「土」またはW=「日」ならば
    「{対象日}{タブ}{W}{タブ}△△の作業日」を表示。
    F日数=F日数+1
  ここまで。
  # 対象日を翌日に進める --- (*4)
  対象日=(対象日に「0/0/1」を日付加算)
  # 終了条件を確認 --- (*5)
  もし、対象日=終了日ならば、抜ける。
ここまで。
「[メモ] {F日数}日あります」と表示。

エディタ下部にある「実行」ボタンを押すと、次のように日付の一覧がテキストボックスに表示されます。

  • プログラムを実行したところ

    プログラムを実行したところ

テキストボックスに表示されたテキストは、タブ区切りのCSV形式となっています。この形式で出力しておくと、Excelなどの表計算ソフトにデータを流し込むことができて便利です。

なでしこ簡易エディタで出力した予定表のテキストをコピーしたら、表計算ソフトを起動して、セルに貼り付けてみましょう。ちょっと色を付けたり列の幅を調整すると次のようになります。

  • Excelにテキストを貼り付けたところ

    Excelにテキストを貼り付けたところ

予定表が作成できたら、改めてプログラムを確認してみましょう。プログラムの(*1)では週末プロジェクトの開始日と終了日を指定します。ここでは、今年の4月1日から7月31までの予定表を作ることを指定しています。{今年}と書いているところを、2022や2023と直接西暦を書いても大丈夫です。

そして、プログラムの(*2)以下の部分では、繰り返し予定表を作成します。「365回 ... ここまで」のように書くと、最大365回プログラムを繰り返します。

(*3)の部分では、対象日の曜日を調べます。ここで得られる曜日は漢字1文字です。そこで、曜日が「土」か「日」ならばタブ区切りの日付と曜日を画面に表示します。

(*4)の部分では「日付加算」関数を利用して1日分の日付を進めます。この関数は加算したい「年/月/日」を数値で指定します。そして、(*5)の部分で、日付が終了日であれば繰り返しを抜けるように指示します。

改良のヒント

なお、作成したい予定表が土日ではなく、水日のものが欲しい場合もあります。その場合は、上記プログラム(*3)の部分を以下のように書き換えると良いでしょう。

  # 曜日を確認 --- (*3)
  W=対象日の曜日
  もし、W=「水」またはW=「日」ならば
    「{対象日}{タブ}{W}{タブ}△△の作業日」を表示。
    F日数=F日数+1
  ここまで。

このように、上記「もし」文の条件を変更することで、特定の曜日だけを抜き出したカレンダーを作ることが可能です。

プログラムのポイントを確認してみよう

なお、今回のプログラムのポイントとなるのが、上記プログラムの(*4)で利用している関数「日付加算」です。この命令については、本連載の67回目で詳しい使い方を紹介しているので、参考にしてみてください。

また、週末かどうかを調べるのに利用している関数「曜日」も重要な役割を果たしています。簡単に使い方を確かめてみましょう。以下のプログラムを簡易エディタに貼り付けて実行してみましょう。

# 2022年03月09日から11日の曜日を表示
「2022/03/09」の曜日を表示。 # → 水
「2022/03/10」の曜日を表示。 # → 木
「2022/03/11」の曜日を表示。 # → 金

実行すると、以下のように、日付に応じた曜日が表示されます。このように漢字1文字の曜日を返します。

  • 関数「曜日」を使ったところ

    関数「曜日」を使ったところ

なお、日付の計算では、数字で曜日の番号が得られると便利な場面も多いです。そこで「曜日番号取得」関数を使うと、日曜が0番、月曜が1番、火曜が2番...と数字で得られます。

まとめ

以上、今回は週末プロジェクトの予定表を作成するプログラムを紹介しました。関数「曜日」や「日付加算」を使う事で、任意の曜日だけを抽出した変則的なカレンダーを作成できます。また、今回のように、タブ区切りCSV形式のデータを出力すれば、手軽に表計算ソフトに貼り付けられるデータができる事を覚えておくと、いろいろな用途で活用できます。アイデア次第でいろいろな表を手軽に作成できますので、参考にしてみてください。

自由型プログラマー。くじらはんどにて、プログラミングの楽しさを伝える活動をしている。代表作に、日本語プログラミング言語「なでしこ」 、テキスト音楽「サクラ」など。2001年オンラインソフト大賞入賞、2004年度未踏ユース スーパークリエータ認定、2010年 OSS貢献者章受賞。技術書も多く執筆している。直近では、「シゴトがはかどる Python自動処理の教科書(マイナビ出版)」「すぐに使える!業務で実践できる! PythonによるAI・機械学習・深層学習アプリのつくり方 TensorFlow2対応(ソシム)」「マンガでざっくり学ぶPython(マイナビ出版)」など。