私のマクロ製作法
マクロ製作手順
秀丸マクロもその他のプログラムもだいたいの作成の流れは同じです。
作成方法の流れを以下にまとめておきました。
1.コメント文だけでプログラムの流れをざっと書く。
2.プログラムの流れを「初期化領域」「実行領域」「終了領域」に分ける。
・最近は「初期化領域」(「エラー対策領域」)「実行領域」「終了領域」に分けるときもある。
・物によっては「終了領域」がない場合もある。「初期化領域」「実行領域」は必ず存在する。
3.「実行領域」が大きな場合は幾つかのブロックに分ける。
4.各ブロックでおこなう処理を詳細にコメント文で書いていく。
5.「初期化領域」に必要な変数をリストアップする。
6.「実行領域」「終了領域」のソースコードを書いていく。
7.実行していみる。
8.バグを直す。
9.バグがなくなったら1日以上使ってみる。問題なさそうなら完成。
プログラムの規模による製作方法の違い
100行以内の非常に短いプログラムだと、7、8を数度繰り返すと終わりです。ただし、私のプログラムはソースコードと同じくらいのコメント文があるので(下手するとコメント文の方が多いときもある)、実際のソース自体は40行以内くらいです。
100~300行くらいのちょっと多めのプログラムの場合は、3で分けたブロックを作るごとに、きちんと動作しているかデバッグをしていきます。
たいていのデバッグは、プログラムがそこまで進んだときに、正しい値が各変数に入っているかを確認することでおこなっています。これはメッセージボックス(message 命令)で表示させて確認することが多いです。
300行を越えるプログラムは、いくつかの小さいプログラムに分割して作成することが多いです。各部分(300行以内)で動く小さなプログラムをばらばらに作り、そのプログラムをレゴブロックみたいに組み合わせて大きなプログラムを作ります。
小さなプログラムを作るときに十分バグが出ないかどうかデバッグして、その検証済のプログラムを組み合わせて大きなプログラムにしていきます。
例え大きなプログラムにしたときにバグが発生しても、必ず小さな部分を差しかえるだけでバグが解決するように組み上げていきます。
秀丸マクロでは、そんな大きなプログラムを作ることを想定されていないので、だいたい1ファイルで作るようになっていますが、プログラム言語によっては、それぞれの小さなプログラムをモジュールとしてファイルを分け、再利用できるようにしています。
余談( 例えば拙作の「めもりーくりーなー」は、ver
2.005の段階でモジュール70個以上、関数20個弱のブロックの組み合わせでできています。このモジュールの再利用で作ったのが「b2mcs」というソフトだったりします。)
マクロを作るときも同様に、各処理領域のブロックはなるべく簡単で分かりやすい小さな領域に分けて製作していくとバグが出にくいです。また、後々メンテナンスもしやすくなります。
型にはめる
秀丸マクロを作るときにいつも使っているファイルの「テンプレート」を掲載しておきます。区切り線でブロックを作り、その中にプログラムを書いて行っています。
<< テンプレート >>
この区切り線を簡単に作るために作ったマクロが「横線」というマクロだったりします。自分が良く使う作業は、極力自動化しておいた方が後々楽ですので。
ReadMeを作る
「ReadMe」ファイルはいつも同じ型で書いています。これも「テンプレート」と同様に、その雛型をアップしておきます。
<< ReadMe >>
マクロの履歴を管理
履歴には2つの履歴があります。1つは
「変更履歴」、もう1つは
「ソースの履歴」です。
「変更履歴」は、新しい仕様や変更を加えた日付を
「更新履歴」として記録していきます。また、後で見て、どのバージョンでの変更なのかが分かるようにバージョンの作成開始日と作成完了日も分かるように記入しています。
● 変更履歴サンプル
■■■■履歴
2000.01.15 : ver 1.01作成開始~完成
・範囲選択で「<>」を追加する仕様を追加。
2000.01.09 : ver 1.00作成開始~完成
ソースの履歴はバージョンが変わるごとに全てのプログラムや作業中データ、関連ドキュメントなどを1つのフォルダ以下にまとめ、
「.lzh」形式で圧縮して保存しています。
「.lzh」のファイル名には、
「開発softname100.lzh」といった形式で名前をつけて統一しています。
「softname」の部分にはそれぞれのソフト名が入り、
「100」の部分にはバージョン名を入れています。
また、完成品もReadmeファイルと合わせて
「.lzh」形式で圧縮して保存しています。これはホームページに公開している形式と同じものです。それぞれバージョンごとにファイルを作り、後で過去のファイルを確認したくなったときに、いつでも探せるようにしています。