Written in Japanese(UTF-8)
2014.8.30
INASOFT


/トップ/いじくるつくーる/ダウンロード/WebHelp/ヘルプトップ/

本ソフトウェアの開発は終了しています。ヘルプに記載されている情報も古いものになっています。


連載(R-Script10周年 第4回) [ 4/ 5]

第4回 R-Scriptの成果

公開日:2012/ 1/ 1


あけましておめでとうございます。毎年、年始めに行うことと言えば、各ソフトウェアのバージョン情報等で表示される Copyright の「年」部分を書き換える作業なのですが、「いじくるつくーる」の場合、起動時に表示されるスプラッシュウィンドウの「年」を書き換える作業もあります。スプラッシュウィンドウはビットマップファイルで作成されているので、ここだけは「ペイント」を使って、ピクセル単位で作業しなければなりません。

まぁこれが、僕の年始の風物詩となっていますね。

ちなみに、R-Scriptこと「いじくるつくーる」を作り終えたのも、ちょうど年末年始の頃でして、今日はその頃のことを思い出しながら書いてみようかと思います。

R-Scriptを作り終わりましたが、それを論文発表するに当たって「定量的な成果を測る」必要が出てきました。

2 現状分析

いじくるツールの開発手法の悪さについて, 次のような推測を立てた.

2.1 おおまかな分析

 いじくるツールでは, おおまかにわけて, 次の3 段階でプログラムを作成しているが, そのためあとで示すような2つの問題が起こっている.

(A) 入力 レジストリから設定を取り込むためのプログラムの作成.
(B) 編集 レジストリから取り込まれた設定を変更するためのユーザー・インターフェイスの作成.
(C) 出力 変更された設定をレジストリへ書き込むためのプログラムの作成.

問題1 は, 上の各段階の作成に用いられる言語が汎用的言語であるC++であるため, 様々な雛形的な手続きをしなければならないことでプログラムの行数が増えてしまうことである.
問題2 は, 上の各段階がプログラム中に分散して存在してしまうことから, プログラマの注意が分散してしまうことである.

2.2 問題1 に関する現状と細かい分析

2.2.1 文字列

 レジストリのキーやエントリは文字列で構成されている. また, レジストリには文字列型が存在する. この2点により, レジストリ編集には文字列操作が欠かせないものとなっている.
 「いじくるツール」のプログラミングにはVisual C++ を用いていた. ところがC++言語というのは文字列操作が得意ではない. 文字列クラスを用いるという手段もあるが, レジストリ操作のためのWindows APIに処理を渡すときに, 結局C 言語的なアプローチに戻さなければならいので, よけいなコードを書かなければいけなくなる(*5).

2.2.2 エントリに関連づけられた意味とWindows API

 レジストリ編集を行う場合, ある設定に対して, その設定に対応する1 つ以上のエントリを編集を行うことになる. ここでは1つ以上と書いたが, 多くの設定では1つのレジストリエントリを編集するので, 大部分の設定では「1対1対応」がとれているといってよい.

 つまりレジストリ編集の観点からすれば, 1つの設定を操作するためには1つのエントリが編集できればよい.

 ところがWindows API では, 1つのエントリを編集する場合でも, エントリの所属するキーを開いたり閉じたりしなければならない. 1つのキーの中の複数のエントリを操作するのであればこの方法は効率がよいのだが, レジストリの編集の観点からすれば, この操作は煩雑である.


(*5) 一般のWindows API は, C++言語向けにもC言語用のプログラミングインターフェイスを準備している.

▲当時の卒業論文の一部。実際にはTeXで記述していましたが、ここではHTMLに変換しています。

会社でも施策を実行したら、結果をベンチマークしてフィードバックする必要があるのと同じで、R-Scriptもベンチマークしてフィードバックしなければなりませんでした。

これが難しい。プログラミングの手間が減ったことについて、どうベンチマークすればいいのか。「いじくるツール」「いじくるつくーる」は個人的な趣味で作っているものなので、作業時間を記録しているわけではありませんからね。「なんとなく、手間が減った気がする」程度の「定性的」評価なら、僕個人の頭の中でできますが、対外的な発表をするのであれば定量的なエビデンスを示すことは必須です。

というわけで、「いじくるツール(当時)ver.6」のソースコードと「いじくるつくーる ver.7」のスクリプトコードを比較し、行数どう変化したか? 同じキー・エントリ名に対する操作が複数箇所に分散していないか?という観点で統計を取り、数値化することにしてみました。けっこう苦し紛れです。

項目名(*14)C++R-Script
アニメーション設定 133 36
アプリケーションパス 432 25
Autorunの抑制 102 28
起動時に実行1330 393
Windowsの深い部分の設定+メディアプレイヤー 384 127
デスクトップ等 509 193
ドライブアイコン 207 126
エクスプローラ1118 106
ゲームのスコア編集 725 194
ドライブを隠す 196 51
マウスの感度 214 39
ネットワーク 477 81
固有アイコンの表示 389 96
特殊フォルダの名称・アイコン変更 666 100
ファイル名を指定して実行 129 70
システムの禁止設定 688 528
プログラムの追加と削除 335 25
Windows NT/2000/XP設定 508 121
Windows NT/2000/XPログオン 356 74
プログラム自身の設定 288 45
合計91862458
表1 C++プログラムとR-Scriptで作られたスクリプト行数の比較

C++で作られたプログラムに該当するものが, R-Script では複数のスクリプトに分かれている場合は, それらの合計の値を利用している.


(*14) なお, 各項目に付けられた名前は, いじくるツールやいじくるつくーるでレジストリを分類する際に用いているカテゴリであり, 詳しくはいじくるつくーるのヘルプ(Rnsf7.hlp) を参照のこと.
▲当時の卒業論文の一部。この他に、出現回数比較をしているページもある。

「減ってますね。」ということで、当日の卒論はクリアとしました。

なお、「Windowsの深い部分の設定」という名称が浮いている、という話題は、当時から出ていたのですが、この名称が以前のバージョンからの引き継ぎで付けられた名称で、すでに公開済みのソフトの事だったということで、このままにしました。ちなみに、たしかディープなんとかとかいうサイトから得られたレジストリネタが一番最初だったことから、この名前が付いたんだったと記憶しています。

また、スクリプトとしての行数は減っていますが、その分のトレードオフは当然、C++で作成されたインタプリタの方に転嫁されていることを、工学的観点としては忘れてはいけません。ただし、今後機能追加をしていくときは、スクリプト追加だけで済むという気軽さが、R-Scriptを利用する場合の長所となります。


 戻る
 前へ 次へ

※このページは、ソフトウェアに付属のヘルプファイルをWeb用に再構築したものです。大部分に自動変換を施しているため、一部は正しく変換しきれずに表示の乱れている箇所があるかもしれませんが、ご容赦下さい。また、本ドキュメントはアーカイブドキュメントであり、内容は「いじくるつくーる」最終公開時点、あるいは、それより古い時点のものとなっております。一部、内容が古くなっている箇所があるかと思いますが、あらかじめご了承下さい。
※このページへは、自由にリンクしていただいてかまいません。
このページに関するご意見の受け付けは終了しています。

/トップ/いじくるつくーる/ダウンロード/WebHelp/ヘルプトップ/