【コラム】
こんにちは。なでしこ作者のクジラ飛行机です。私事ですが、IPAX 2005(5/18~5/20)に出展しました。これは、情報処理推進機構(IPA)の事業成果等の総合展示会です。なでしこのブースでは、パンフレットを配ったり、実際にプログラムを作るところを見せたりしました。イベントは、皆様から素直な意見が聞ける絶好の機会です。今回も来場の皆さんからたくさんの意見を頂きましたので、今後の開発に反映させようと思います。
また、嬉しいことに、日本発のスクリプト言語"Ruby"の作者のまつもとゆきひろさんとお話することもできました。会話にあふれるユーモアとヒゲが印象的な方で、ヒゲについて伺うと「成功するプログラミング言語の作者(の多く)はヒゲを生やしている」とのことでした。それを聞いて、私もヒゲを伸ばさなければ、と密かに思っているところです。
他にも、いろいろな方と知り合うことが出来て、面白いお話を聞くことができました。3日間のブース展示でくたくたになったものの、とても有意義なイベントでした。
今回は、時間の使い方を反省するというちょっと変わったプログラムを作ってみようと思います。私は、普段からPCに向かって仕事をするのですが、PCの前で作業をしていると、あっという間に時間が過ぎてしまうのです。「おやっ、もうこんな時間に」と、時計を見て驚くことも多いです。
そこで、今回は時間の使い方を記録するソフトウェアを作成してみます。人間の集中力が持続するのは、だいたい30分と耳にしたことがあります。30分間隔で、この30分で何が出来たのかをメモしておきます。そして、その日の終わりに、時間の使い方について反省してみようというものです。
実際の使い方としては、タイマー付のメモ帳という感じのものを作ることにします。30分ごとに「作業内容を記録してください。」とプロンプトと共にメモ帳のウィンドウが前面に出てきて、そこに作業記録をつけていくという流れになります。
そこで、プログラムを以下のように設計しました。
|
|
30分ごとに作業記録を残し時間の使い方を反省するソフトウェア |
以下が実際になでしこで作った10行プログラムです。
※今回のプログラムは、なでしこのバージョン1.27で動作確認しています。動かない場合は最新版で試してみてください。
プログラムの解説をします。1行目では、記入した作業記録を保存する場所を変数「保存ファイル」に代入しています。
2行目から3行目では、以前に記録したファイルがあれば、その内容を変数「ログ」に読み込んでいます。もし、一度も記録したことがなければ、「ログ」に「30分ごとに作業内容を記入します。」という文字列を代入しておきます。
4行目にある「オンの間」というのは、プログラムが動いている間、ずっと、インデントした範囲(5行目から9行目)を繰り返し実行するという意味になります。
5行目にある「母艦」というのは、プログラムのメインウィンドウを表します。ここでは、母艦が最小化されていれば、これを元通りの大きさに戻します。
6行目の「メモ記入」というのは、メモ帳のような簡易エディタのインタフェースを表示する命令です。この命令の使い方は後で解説します。このとき、今までのログとともに入力時点の時刻を挿入しておきます。
7行目では、入力された内容を変数「ログ」に代入して、その内容をファイルへ保存しておきます。
8行目はプログラムのメインウィンドウである「母艦」を小さくします。そして、9行目では、30×60秒、つまり30分何もしないで待ちます。その後に、再び5行目を実行するという具合です。
本連載の第17回目「ラーメンタイマーを作る」では、タイマーの部品を利用して繰り返しタイマーを発生させていました。しかし、今回は、タイマー部品を使わずに、「xxの間」構文と「xx秒待つ」命令を組み合わせてタイマーを擬似的に表現しています。
この「xxの間」構文は、BASICやC言語でいうところの「while」構文と似ています。xxの部分に真または偽の値を返す式を記述し、その式が真の値を返せば、その次の行からインデントされた範囲を繰り返し実行します。以下のプログラムは、変数「A」が5以下の間、インデントされた範囲を繰り返し実行するプログラムです。
|
|
Aが5以下の間繰り返すプログラムの実行結果 |
また、10行プログラムの4行目のように条件文を「オンの間」と書けば、プログラムを起動している間、条件が常に真の値を返すため、プログラムを終了するまでインデントされた範囲のプログラムを繰り返すようになります。
10行プログラムの6行目には、「メモ記入」という命令が出てきました。この命令を実行すると、簡易メモ帳のインタフェースが表示され、ユーザが自由に文字列を入力することができます。
|
|
「メモ記入」命令の実行例 |
「xxのメモ記入」のxxの部分には、あらかじめメモ帳に表示させておくべき文字列を指定することができます。10行プログラムの中では、今までの記入ログと、入力時点の時刻を表示させていました。
そして、ユーザが決定ボタンか取消ボタンを押すまでの間、待機しています。決定ボタンが押された場合は、変数「それ」にユーザが入力した内容を代入します。取消ボタンが押された場合は、変数「それ」の値が空になります。
今回は、作業記録をつけるファイルを固定にしていますが、これを、1日ごとに別のファイルにするのも良いでしょう。これは、プログラムの1行目にあるファイル名に日付データを付け加えることで実現できます。また、今回はメモ帳への直接記入でしたが、これをグリッドのような表に記録できるようにしたら、もっと見栄えがよくなるでしょう。
それから、この時間の使い方を反省するソフトウェアを、試験勉強用に改造するのはいかがでしょうか。勉強を始める前に、今日の学習予定を記入し、その時間内に必要なものが暗記できたかどうか、問題集を進めることができたかなどをチェックするようにするのです。
実際に、私自身が使ってみた感想ですが、ちょっと作業に集中していると、うまくできない部分に集中してしまい、時間を無駄に過ごしていることが多かったようです。時間のかかる部分を後回しにして、優先順位の高い仕事から取り組むようにしないといけなかったなぁ、と反省しました。なかなか予定通り進まないスケジュールも、細かく時間を区切って反省することで、目標達成に近づくことができるかもしれません。
| 米サンディスク、「1Y nm」プロセス製造のフラッシュメモリをサンプル出荷 [18:57 5/22] |
| 写真や画像をアップロードする際に自動加工も可能な「SlimBrowser」最新版 [18:46 5/22] |
| フォーカル、フレキシブルアームを搭載したiOS端末向けのワイヤレスカメラ [18:38 5/22] |
| ロジクール、1台の端末に2台同時ペアリングできる耐水Bluetoothスピーカー [18:17 5/22] |
| 【特別企画】今週のおトクなキャンペーンの対象は「VAIO Tap 20」 [18:08 5/22] |
|
尾田栄一郎が扁桃周囲膿瘍により入院、『ONE PIECE』が2週間の休載へ [19:17 5/22] ホビー |
|
[フリーダムウォーズ]PSVitaオリジナル新作14年発売 8人同時プレー可能 [19:14 5/22] ホビー |
|
[ViVi]10年ぶり専属モデルオーディション開催 [19:05 5/22] エンタメ |
|
ネットギア、10ギガビット12ポート スマートスイッチ 『XS712T』新発売 [19:04 5/22] エンタープライズ |
|
資生堂、D-アミノ酸の新たな美肌効果を発見 - 化粧品に応用 [19:02 5/22] 開発・SE |