【コラム】

日本語で10行プログラミング

85 カード式メモ帳

85/90

今回の10行プログラムでは、すぐに簡単なメモを書けるメモ帳を作ってみたいと思います。そして、自動保存や、項目ごとに分けて記述できるカード式など工夫を凝らしてみます。

最近というか昔からなのですが、頼まれたこと、やらなくてはならないことを、コロっと忘れてしまいます。なんとか忘れないようにと、用事ができると紙のメモ帳にメモしておくようにしています。紙のメモ帳は、さらさらっと書けるので、アイデアをメモしたり、考えをまとめたりするのに向いています。

ここしばらくは、パソコンに向かって作業することが多いので、パソコンでやるべきことはパソコンの中にメモするようにしています。パソコンにメモしておくには、付箋などをデスクトップに貼りつけておくソフトもあります。また、デスクトップに「ToDo.txt」などというテキストファイルを置いておき、ここにやるべきことをメモしていくというシンプルな管理方法もあります。

今回作るのは、この中間のようなソフトです。基本的にはメモ帳にメモを書いていくのですが、メモを自動保存する機能や、カード式になっていてメモを次々と切り替えていけるような機能を持つメモ帳を作ってみます。

画面デザインを決める

カード式メモ帳ですが、画面は以下のように、左側にカードの一覧、右側にメモ帳というレイアウトにしてみます。

画面レイアウトの設計図

左側のカードの1つをクリックすると、カードの内容がメモ部分に表示されるという具合です。そして、メモを変更するとカードの内容が更新されます。

こうしたツールを作る場合には、どの部品をどんな風に使えば良いのかが重要です。設計図を描いてみたところ、カードの一覧はリスト部品で代用できそうです。そして、右側のメモはメモ部品を使えば良さそうです。

アイデアを実現するために

今回のメモ帳では、自動保存と、カード方式で使えるという2つの目玉機能を考えています。そこで、これらの機能をどうやって実現するのか考えてみたいと思います。

自動保存機能

まず、自動保存の機能ですが、これは、プログラムを起動したときに指定ファイルを読み込み、プログラムを終了するときにそのファイルを上書きするようにすれば良いのです。

「メモ.txt」という名前のファイルを作り、ここに読み書きするようなプログラムを作ると以下のような感じになるでしょう、

「メモ.txt」を開く。
それをメモ記入。
「メモ.txt」へ保存。
終わる。

たった4行のプログラムですが、これで自動読み込み、自動保存の機能を備えていることになります。

ただ、注意しないといけないのは、指定ファイル「メモ.txt」がまだ存在しないときには、存在しないファイルを開こうとするためエラーが出ます。そこで、「メモ.txt」があるかどうか確認して、ある場合のみ読み込む処理を作ってあげます。上のプログラムを改良すると以下のようになるでしょう。

もし(「メモ.txt」が存在する)ならば
  「メモ.txt」を開く。
違えば
  それは「ここに何か書きます。」
それをメモ記入。
「メモ.txt」へ保存。
終わる。

カード式を実現するために

次に、カード式のエディタを実現する方法を考えてみます。そのために、部品のレイアウトによる配置方法を見ていきます。

エディタやリストなど、画面に比較的大きく場所をとる部品には、「レイアウト」という設定項目が用意されています。レイアウトには、「全体」「左」「右」「上」「下」という位置を指定することができます。ちょっと試してみましょう。

全体メモとはメモ。
そのレイアウトは「全体」。

これを実行すると、画面全体にメモが配置されます。全体の部分を「左」とか「上」に変えて試してみると動きが良く分かります。今回作りたいレイアウトでは、リストが左側、メモが右側なので、以下のようなプログラムを作りたくなってしまいます。

項目リストとはリスト。
そのレイアウトは「左」
本文メモとはメモ。
そのレイアウトは「右」。

配置失敗

ところが、上のように書くと、リストは画面の左端に、メモは画面の右端にと分かれてしまいます。そこで、リストを画面の「左」に、メモの方を「全体」にするとうまい具合に配置ができます。

項目リストとはリスト。
そのレイアウトは「左」
本文メモとはメモ。
そのレイアウトは「全体」。

配置成功

10行プログラム

それでは、10行プログラムを作ってみようと思います。その前に、いつものようにプログラムの流れを追ってみようと思います。プログラムの流れは以下の通りです。

  1. リスト、メモを配置する
  2. 「メモ.txt」があるか調べてあれば読み込む
  3. リストに現在のメモを表示
  4. リストをクリックしたら、メモに選択中のカードの内容を表示
  5. メモの内容を変更したら、リストの項目を更新する
  6. プログラム終了時に「メモ.txt」へカードの内容を保存する

そして、以下がなでしこで実際に作ったプログラムとなります。

項リストとはリスト。そのレイアウトは「左」。#1
内容メモとはメモ。そのレイアウトは「全体」。#2
カードは「1,2,3,4,5,6,7,8,9,10」を「,」で区切ったもの。#3
もし(「メモ.txt」が存在する)ならば、カードに「メモ.txt」を読む。#4
項リストのアイテムはカード。#5
項リストをクリックした時は~#6
  内容メモは項リストの「|」を改行に置換したもの。#7
内容メモを変更した時は~#8
  項リストは内容メモの改行を「|」に置換したもの。#9
母艦を閉じた時は~(項リストのアイテム)を「メモ.txt」へ保存。#10

実行してみたところ

1から2行目ではリスト部品・メモ部品を配置しています。

3行目では初期値を指定し、4から5行目では、データ保存用のファイル「メモ.txt」があるか確認し、存在すれば、その内容を読み込むようにしています。

6から7行目では、リストをクリックした時の処理を指定しています。リストをクリックしたら、メモに内容を表示します。

8から9行目では、メモの内容を変更した時の処理を指定しています。メモの変更内容をリストに反映させます。

10行目では、プログラムを閉じる時に、「メモ.txt」へ保存します。

改造のヒント

シンプルなカード式メモが完成しました。シンプルで結構使い勝手も良くできました。これをさらに使いやすくするヒントを書いてみようと思います。

上のプログラムでは、リストの大きさが固定になっているので、一覧で見たときに、もうちょっと大きくなったら良いのにと思います。そこで、リストの大きさが可変するように「スプリッタ」部品を差し込んで、レイアウトの大きさを変えられるようにしてみます。

そのためには、プログラムの1から2行目を以下のように書き換えます。これでリストが可変になります。

項リストとはリスト。そのレイアウトは「左」。
区切り線とはスプリッタ。そのレイアウトは「左」。
内容メモとはメモ。そのレイアウトは「全体」。

ほかに付け加えたい改造としては、上のプログラムでは、メモの個数が10個に固定されていますが、メモの個数を増やせるメニューをつけたいところです。また、日付とか定型文が挿入できるようになっていても便利だと思います。

ぜひ、オリジナルアイデアでメモ帳をより便利に改造してみてください。

85/90

インデックス

連載目次
第90回 10行プログラミング最終回~10行プログラミングを振り返って
第89回 フォルダ一括圧縮
第88回 テキストエディタに貼り付けたExcelの表を見やすく整形する
第87回 一発加算電卓
第86回 ブログにHTMLソースを貼れるよう変換する
第85回 カード式メモ帳
第84回 時間電卓を作る
第83回 アスキーアート地図エディタ
第82回 縦書き風テキスト作成ツール
第81回 Excelシートの比較を行う
第80回 ノルマ計算機
第79回 高速バックアップ
第78回 単語帳に読み上げ機能をつける
第77回 ホームページのバックアップツール
第76回 英単語帳を作成する(その2)
第75回 英単語帳を作成する(その1)
第74回 メモリカード挿入でデータをコピーするツール
第73回 モールス信号ソフトの作成
第72回 フォトCDランチャーを作る
第71回 残暑見舞い作成ツールを作る
第70回 画面キャプチャプログラムを作る
第69回 様々なルールに対応するビンゴシートのプログラムを作る
第68回 ビンゴカードを作る
第67回 ビンゴマシンを作る
第66回 パスワードマネージャの作成
第65回 アンドゥ機能をつける
第64回 テキストの比較ツール~FCフロントエンド
第63回 システム情報クリップ
第62回 飲み会電卓を作る
第61回 バイナリエディタの作成
第60回 メールフッタ作成ツール(その2)
第59回 メールフッタ作成ツール(その1)
第58回 プロセス監視ツールを作成する
第57回 TODOメモを作る
第56回 携帯電話をテキストリーダーに使う(2)
第55回 携帯電話をテキストリーダーに使う(1)
第54回 「オープンソースカンファレンス2006 Tokyo/Spring」に参加しました
第53回 10行でチャットソフトを作る(2)
第52回 10行でチャットソフトを作る(1)
第51回 プレゼンタイマーを作る
第50回 カラーピッカーを作る
第49回 簡単な暗号作成プログラム
第48回 お手軽データベース「SQLite」を使う
第47回 CUI(コマンドライン)環境を拡張する
第46回 デスクトップ画像を記録するプログラム
第45回 市外局番で住所を調べる検索プログラム
第44回 コマンドライン型ランチャーを作る
第43回 文字数カウンタを作る
第42回 日本語でバッチ処理
第41回 イベントドリブンと電光掲示板
第40回 なでしこでWindowsの「送る」メニューを使いやすくする
第39回 同人音楽即売会M3に参加して思ったこと
第38回 画像のサムネイル作成
第37回 なでしことExcelで行事予定カレンダーを作ろう
第36回 なでしことExcelで月間カレンダーを作ろう!
第35回 なでしことExcelで年間カレンダーを作ろう
第34回 急な電話にも安心、意外と便利な「手書きメモ」
第33回 携帯電話のアドレスデータを取り出す
第32回 記念日カウンターを作る
第31回 顔文字入力支援ソフト
第30回 アスキーアートのためのエディタ
第29回 HTTPサーバーを作る
第28回 手紙のあいさつ文を作成するプログラム
第27回 ギターコードの構成音を表示
第26回 音楽の再生スピードを変える
第25回 ミニスライドショーを作る
第24回 撮影日で写真を振り分け
第23回 PSP用テキスト画像の作成
第22回 金種計算
第21回 パスワードを自動生成
第20回 携帯メールでWEBを更新する
第19回 時間の使い方を反省するプログラム
第18回 ウェブを画像でキャプチャ
第17回 ラーメンタイマーを作る
第16回 画像のトリミングツール
第15回 ごみの分別カレンダー
第14回 デスクトップ検索ツール
第13回 フォント見本帳
第12回 セピア調の画像ビューワー
第11回 健康チェック
第10回 10行で壁紙にらくがきする
第9回 WEBサイトの更新チェッカー
第8回 WEBページのリンク切れをチェック その2
第7回 WEBページのリンク切れをチェック
第6回 音楽ファイルの整理 - メディアタグから自動フォルダ分類
第5回 請求書の自動作成・印刷~Word連携技
第4回 重要データのバックアップ術
第3回 10行ニュースリーダーを作ろう!
第2回 なでしことは その2
第1回 なでしことは? その1

もっと見る

人気記事

一覧

イチオシ記事

新着記事