今回は、予定通知機能を持ったデジタル時計を作ってみます。予定の一覧はExcelで編集できるようなものにしてみます。1分に1回など、定期的に処理を行うようなプログラムの作り方を紹介します。
今回作るプログラムはじめにプログラムから見てみましょう。このプログラムは、予定を通知する機能を持ったデジタル時計です。予定の内容は、Excelなどで編集します。プログラムを実行すると、タスクトレイに時間が表示されます。そして、Excelに記述されたスケジュールの時刻になると、メッセージを出して教えてくれます。
【プログラムソース1】
# --- 設定など
「yotei.csv」を読んで、予定表に代入。#1
母艦を最小化。#2
# --- 繰り返し実行
オンの間 #3
時間は、今から5文字左部分。#4
もし(時間の1文字左部分=「0」)ならば、時間の1から1文字削除。#5
母艦のタイトルは時間。#6
# --- 予定チェック
予定表の0から時間を表ピックアップして予定内容に代入。#7
もし、予定内容が空でなければ #8
母艦を元通りに。#9
予定内容を言う。#10
母艦を最小化。 #11
60秒待つ。#12
![]() |
図1 普段はタスクバーに時間を表示します |
![]() |
図2 時間になると予定を表示します |
【使い方】
(1)プログラムをコピーしてなでしこエディタに貼り付けて「予定時計.nako」という名前で保存します。
(2)予定のひな形をダウンロードしてプログラムと同じフォルダーに保存します。
予定のひな形
(お使いにブラウザーによってはCSVデータが画面に表示されますのでコピーしてyotei.csvというファイル名で保存してください)
(3)予定を編集します。yotei.csvをExcelで開くと、A列に予定時間、B列に表示メッセージが入っていますので編集します。
![]() |
図3 今回使用するCSVファイル |
(4)Excelを閉じたら、プログラムを実行します。
一番簡単な時計
なでしこで時計を作ろうと思ったとき、一番簡単なプログラムを作ると以下のようになります。
【プログラムソース2】
オンの間
母艦のタイトルは、今。
1秒待つ。
これは、1秒ごとに、母艦のタイトルに今の時刻を表示するプログラムです。母艦というのは、なでしこ独自の造語で、プログラムを実行して初めに表示されるメインウインドウのことを指します。
なでしこで作ったプログラムでは、普通、メインウインドウには「なでしこ」と表示されてしまいますが、せっかく自分だけのオリジナルプログラムを作ったら、母艦のタイトルを自分のプログラム名に変更すると良いでしょう。例えば、第13回で作った画面キャプチャのプログラムなら以下のように書くと良いでしょう。
【プログラムソース3】
母艦のタイトルは「連続画面キャプチャ」
それから、繰り返しプログラムを実行し続ける方法ですが、以下のように「オンの間」と書いて次の行から字下げして(インデントして)書くようにします。この字下げが重要なので忘れないようにしてください。
オンの間
※ここに字下げして
※繰り返す内容
この時、気をつけないといけないのは、「(N)秒待つ」命令を使って、休憩をはさんでおく必要があるということです。そうしないと、ひたすら繰り返しプログラムが実行されてしまいます。
【プログラムソース4】
オンの間
「こんにちは」と表示。
1秒待つ。
もし、「(N)秒待つ」命令の一行を削ってしまった場合、しばらくプログラムからの応答がなくなってしまいます。なでしこのプログラムでは、あまりにプログラムからの応答がないと自動的に休憩が入るようになっていますが、できれば、意識して休憩を入れるほうが安定したプログラムになります。
CSVを読み取って予定をチェック
次にExcelなどで編集した予定データ(CSV形式)を読み込むところを見てみます。CSVファイルの形式に関しては、「ダイエットに役立つプログラムを作ってみよう!後編(第11回)」を参考にしてください。
以下は、冒頭のプログラムの1行目です。
「yotei.csv」を読んで、予定表に代入。#1
「読む」命令では、指定されたファイルの内容を読み込み、変数「予定表」に代入しています。
7行目からは、現在時刻が、予定に登録されているか確認します。
予定表の0から時間を表ピックアップして予定内容に代入。#7
もし、予定内容が空でなければ #8
母艦を元通りに。#9
予定内容を言う。#10
母艦を最小化。 #11
#7行目では、予定表の0列目(ExcelのA列目)の時間から、現在時刻と合致する予定があれば、ピックアップしています。そして、次の行で、もし予定内容が空でなければ、内容を表示する処理を行っています。
また、今回は、予定を「時:分」の形式で記述しています。なでしこで現在時刻を返す「今」という命令は、「03:10:30」のような形式で時間を返します。そこで、4行目から5行目の部分で、「(N)文字左部分」命令を使って、うまく予定をピックアップできるように工夫しています。つまり、今が03:10:30だった場合、今回の例では時間は左側の5文字分、すなわち03:10と認識されます。加えて、Excelで時間を「03:10」と入力すると「3:10」と揃えられるので、00時から09時までの場合は、5行目で左端の0を削る処理を入れています。
時間は、今から5文字左部分。#4
もし(時間の1文字左部分=「0」)ならば、時間の1から1文字削除。#5
まとめ
今回は、予定通知機能のついたデジタル時計を作ってみました。「オンの間」構文を使うことにより、終わることなく繰り返し実行するプログラムの作り方を紹介しました。
それから、補足になりますが、プログラムの末尾で、以下のように60秒待つという処理を行っています。
60秒待つ。#11
つまり、プログラムが予定のチェックを行うのは、1分に1度だけという具合になっています。もちろん、時間きっかりに予定を教えてくれるように、毎秒予定をチェックするようなプログラムを作ることもできたでしょう。
しかし、時計やスケジューラーのような常駐型のプログラムでは、できるだけ動作負荷を抑えて、使ってくれる人が快適に利用できるように工夫するのも大切です。1分に1度だけしか動作しないプログラムなら、それほどメインで使うプログラムの邪魔にならないだろうというわけです。
プログラムは、こうしたちょっとした工夫で、格段に使いやすいものになります。ぜひ、プログラムを作ったなら、もっと使いやすくならないかと、ちょっと頭をひねってみると良いと思います。
はじめてこの連載を読む方へ |
この連載では、日本語でプログラムが書ける「なでしこ」というツールを使って仕事に役立ちそうなプログラムを紹介しています。なでしこのプログラムエディター(なでしこエディタ)に、記事中で紹介しているプログラムソースをコピー・アンド・ペーストし、実行ボタンを押すだけで、プログラムを動作させることができます。詳しい内容は本連載第1回をご覧ください。 |
【PCオンライン編集部からのお願い】
「なでしこ」は個々のユーザーの責任において利用してください。
コラムで紹介するなでしこのプログラム動作については編集部でも確認していますが、すべてのユーザーのパソコン環境で同じように動作することを保証するものではありません。
申し訳ありませんが、紹介する内容について、個別のご質問にはお答えしかねます。なでしこの公式ページでは詳しいマニュアルや質問を受け付ける掲示板が提供されていますので、そちらをご参照ください。
よろしくお願いいたします。