last modified on [2003-02-23 21.29 (JST: GMT+0900) @562]
Author: 河本孝之 (Takayuki Kawamoto, aka philsci);
1st appeared on 7th and 13th July, 2002.
Revised on [23th February, 2003].
pika, "Basics of the Step.rc", trepidation (2002);
moved to "Basics of the Step.rc, trepidation hosted by shellscape.org.
Acknowledgement: thanks to ayamame, Fizz.oO, Fuji, hideh, Toshiyuki Itakura, Naoto Kanzaki, ken, Ks, ManiMani, Yusuke Mizukoshi, N&R, Hirohisa Teramoto, Taro "O_SAKANA" Todoroki, and especially to the LiteStep Documentation Effort Team.
Copyright©2000-2003 by Takayuki KAWAMOTO.
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with the Invariant Sections being LIST THEIR TITLES, with the Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
A copy of the license is included in the section entitled "GNU Free Documentation License" [translation in ja].
step.rc ファイルは、litestep.exe と各種モジュールの動作や初期設定を記述するためのファイルです。他にも modules.ini というファイルを使って初期設定(モジュールの初期配置など)や一時的に記憶する情報を扱いますが、modules.ini はユーザーが LiteStep を使う際にあらかじめ何かを記述しておくのではなく、モジュール自身が自分で覚え書きのように利用しているので、特にユーザーが何かを記述しておく必要はなく、モジュールが自動的に取り扱ってくれます。
また 2000-11-28 のビルドからは include 文がサポートされており、step.rc の設定内容を任意のファイルへ分けて記述できるようになりました。LiteStep を動作させる最低限の設定を step.rc へ記述して、あとはテーマごとやモジュールごとの設定を任意のファイルへ書けます。見た目の設定だけを個別のファイルに記述して複数の外観を(Recycle することで)サポートするテーマが簡単に作れたり、色々な利点がある筈です。
まず、このページでは step.rc がどのようなファイルなのかを簡単に解説します。実際に記述するのは次のページからとなりますが、step.rc ファイルの役割や特性を理解しておけば複雑な設定(とりわけ他の人が公開している step.rc ファイル)でも理解しやすくなるでしょう。
OS やハードウェアの構成あるいは使用するユーザーの言語など、全ての条件があらかじめ決まっていて、しかもプログラムがやるべきことは単純で決まりきっているなら、わざわざ設定を別に(とりわけ別のファイルに)しておく必要はないでしょう。そのような状況なら設定を変更する必要がないのですから、プログラムの中で初期値を定義しておけば十分な筈です。しかし実際には、Windows だけでもタブレット用の Windows XP から Windows Server 2003 まで用途に応じて幾つかの亜種がありますし、あるいは年代別にも Windows 95 から Windows XP 64-Bit Edition まで色々あります。ですから、少なくとも 32 bit Windows という環境で動作することを謳っているプログラムは、色々な種類の 32 bit Windows を使うユーザーが実際に使用する環境で、それぞれ正しい動作をしなくてはなりません。
このため、プログラムはユーザーが使っている個別の環境に依存するような設定を、書き換えできる別のファイルつまり設定用のファイルへ記述したり、あるいはレジストリに登録しています。そして起動したときにユーザーごとの環境に応じた幾つかの初期値を Windows から受け取り、それぞれの環境に見合った初期設定を行うわけです。プログラムの中で(32 bit 環境なら必ず共有しているような値はともかく)ユーザーの環境によっては異なってしまうような初期値を定義してしまうと、Windwos 95 のユーザーは使えても Windows Me のユーザーは使えないといった支障が起きるかもしれません。また、新しい環境に対応するにはプログラムを書き直して再コンパイルしなくてはならず、開発者に負担がかかります。
プログラムの設定ファイル(レジストリへの登録でもよいのですが)をプログラム本体から分離しておいた方がよいもう一つの理由は、LiteStep のようなカスタマイズを目的としたプログラムの場合は特にそうですが、もちろんユーザーが自分でプログラムの動作や見栄えをカスタマイズできるからです。たとえば、(なぜか)ベンチマーク・テストでよく知られるようになった「スーパー π」のようなソフトは円周率を算出することが目的なので、「何桁(ビット)まで算出する」という項目の他にユーザーはプログラムの動作を設定できませんし、その必要もないでしょう。これに対して、LiteStep はユーザーのデスクトップ全体をつくりあげるので、ユーザーがコンピュータとどのようにやりとりするかを詳細に決めてやらなければなりません。通常、LiteStep のユーザーはデスクトップ上で右クリックしたときの動作を「ポップアップ・メニューの表示」と設定しますが、このような設定もエクスプローラのデスクトップみたいにあらかじめ全てのユーザーに強制されているわけではなく、他の動作を自由に割り当てられるのです。
ユーザーインターフェイスを設定するという目的のためには、使うモジュールの数にもよりますがかなり数多くの設定が必要です。また自分で設定した項目をきちんと反映させるために他の設定との調整も必要ですし、画像を使う場合は自分で用意しなければなりません。しかし、逆に言うとそのように詳細な項目を全て自分で設定しコントロールできるのですから、あなたの思い描いているデスクトップを作るには最適な環境とも言えるでしょう。もちろんそこまで複雑な設定は望んでいないという方は、他の方が公開しているテーマを使って少しずつ自分の環境に合わせていけばいいでしょうし、あらかじめ幾つかの設定が決まっている他の互換シェルを使ってもいいと思います。
さて、このように数多くの設定を LiteStep では step.rc, modules.ini というファイルに記述しています(include すれば、事実上は任意のファイルに記述できる)。特に step.rc はシステムの本体である litestep.exe やモジュールの動作および外観などを扱うので、modules.ini と比べて重要さは比較になりません。また冒頭でも述べたように現行の LiteStep は include 文をサポートしていて設定の殆どを任意のファイルへ移し替えてしまえるわけですが、これらのファイルにしても step.rc の中でインクルードされねばならないので、いづれにせよ step.rc がなければ LiteStep はあなたの望むようには動作しないと言えます。
step.rc が litestep.exe と同じフォルダにない場合は、次のようなダイアログボックスが出ます。

プログラムの中には、設定内容を .ini ファイル(ふつう Windows では、この拡張子をもつファイルが「設定ファイル」として関連付けされています)に保存するものと、レジストリに保存するものがあります(LiteStep のように、.ini ではなく専用の拡張子をもつファイルへ設定を保存するプログラムも、ここで対比する限り .ini ファイルを使うプログラムの仲間と見做してよいでしょう)。.ini ファイルは何の変哲も無いテキスト形式のファイルで、レジストリは Windows の設定情報を記憶するバイナリーファイルです。これらの良し悪しについては、アクセスするスピードと扱い易さを考慮すれば .ini (つまり step.rc と同じテキスト形式の設定ファイル)の方がよいと言えるでしょう。レジストリには Windows 自身の重要な設定も含まれているため、誤ったアクセスの仕方をすれば取り返しのつかないことになるかもしれません。また、レジストリの仕組みについて詳しく解説されている haltz.com の Regist"o"ry によると、いったん作ったキーとデータをプログラムのアンインストールと共に削除しても、レジストリの容量がさほど縮減せずに無駄な空き領域が残る場合もあるようです。このような理由からか、中には「レジストリに設定を記録する」ソフトウェア(特にフリーウェアや試用版など)を使いたがらない人もいるようです(現に多くのソフトウェアはそうしたユーザーに配慮して、readme に「このソフトはレジストリを使わないので気軽に試用できます」とうたっています)。
step.rc は、LiteStep の動作に必要な「コマンド(command)」あるいは「宣言文(decralation)」(構文上の違いは殆どない)を記述して、LiteStep と LiteStep 用のモジュールについて動作や見栄えなどを設定するファイルです。LiteStep の起動時と再起動(Recycle)時に読み込まれ(読み直され)て、LiteStep のシステムがどんなモジュールを読み込んで、どういう見てくれでどう動くべきなのかを細かく設定できます。
まず LiteStep が起動すると、litestep.exe は幾つかの初期値を設定してからシェルとしての動作に必要な shell32.dll, user32.dll という API を読み込みます(この仕組みに関する簡単な説明は、当サイトの「シェル」のセクションにあります)。シェルとして動作する準備が整うと、litestep.exe は
という確認を経て lsapi.dll を読み込んだ後に、2002-02-13 のビルドからサポートされたログファイルを生成したり、既にあるログファイルへ起動の内容を追記したりします(上記のうち、LSUseHooks はテストコードでのみ使えます。公開されているビルドでは無効化されていますから、一般のユーザーが step.rc に記述して設定する必要はありません)。
実際に step.rc を読み込んでパース(構文解析)しているのは、stepsets.dll と lsapi.dll です。stepsets.dll は lsapi.dll が肥大化してきたために分離されたモジュールで、2001-02-01 のビルドから導入されました。もうこの辺になると殆ど分からないのですが(笑、ソースを漠然と見ている限り、stepsets.dll は「読み込んだ step.rc の内容を正規化(コメントを無視したり、コマンドとパラメータを「トークン」と呼ばれる最小単位に分けたり)して、lsapi.dll が正しく処理できるように送り出す」モジュールのようです。ここで日本語のようなマルチバイトの文字列が正しく扱われないと、LiteStep の動作に悪い影響を与えるでしょう。日本のユーザーにとってもとりわけ重要なコアファイルの一つだと思います。

したがって、これから解説していく step.rc の構文は、プログラミング言語と同じく厳密に解釈されます。Perl などのような自由書式の言語と異なり、step.rc では一つのコマンドが基本的に一行単位で解釈されるので、
CommandName
Command Option
Parameter
といった書き方は許されていません。この点を最初に注意しておいて下さい。
さて、いよいよ step.rc を扱ってゆきます。設定の仕組みと言ってもそれほど大袈裟なものはありません。step.rc に記述できるのは、いまの段階では
くらいです。これ以降の各ページでは、上に紹介した文やコマンドを全て解説していきます。
step.rc ファイルは、みなさんがちょっとした覚え書きをメモ帳へ残すときなどに使っている「テキスト形式」のファイルです。拡張子が .rc となっているのは litestep.exe が自分自身の設定ファイルを探しやすくするためであり、何か特別な仕方で生成されているファイルだからというわけではありません。ですから、step.rc ファイルをメモ帳で開いたり編集しても何ら問題はありません。但し、Windows はファイルをそれの拡張子に「関連付けられた」アプリケーションで開くという特徴があるため、あなたが既に .rc という拡張子のファイルに関連付けをもつようなアプリケーションをインストールしている場合には、.rc という拡張子の取り扱いに注意しましょう。具体的には、Microsoft や Borland から出ている C, C++ の統合開発環境で使われる「リソース・ファイル(正確には "Resource Compiler script files")」、つまりウインドウのメニューに表記する「ファイル(F)」といったような文字列を集めた「ストリング・テーブル」と呼ばれるファイルなどに .rc という拡張子が使われていたりします。また他にも .rc という拡張子のファイルを使うようなアプリケーションがあるかもしれません。
関連付けは、レジストリ・エディターで HKEY_CLASSES_ROOT\.rc , HKEY_CLASSES_ROOT\Rc.Document の各データを編集したり、あるいはエクスプローラのフォルダ・オプションで設定を変えたりしてカスタマイズできます。もし頻繁に step.rc もしくはインクルードする他の *.rc ファイルを編集するなら、.rc という拡張子をあなたが使っているテキスト・エディターに関連付けておけばよいでしょう。
ビルドの中身を LiteStep フォルダへ展開しているところまで来ていますから、あとは step.rc ファイルを準備すれば LiteStep を正しく起動する準備が整います。そこで、いつもあなたが使っているテキスト・エディタで新規ファイルを作成し、litestep.exe と同じフォルダへ "step.rc" というファイル名で保存しておきましょう。このとき、Windows のメモ帳(notepad.exe)を使っている方は「名前を付けて保存」するときのエディット・ボックス(ファイル名を入力する欄)に、ファイル名を二重引用符で囲んで入力して下さい。そうしないと、メモ帳は勝手に ".txt" という拡張子を付けてしまうので、"step.rc" と入力しても実際には "step.rc.txt" というファイル名になって保存されてしまいます。
step.rc ファイルは、litestep.exe と同じフォルダになければなりません。litestep.exe は起動するときに自分自身が置かれている場所つまりパスを取得して、step.rc を探したり、あるいはデフォルトで設定されている画像ファイルのフォルダを探したりします。後で解説する include 文によって step.rc に書くべき設定の多くを他の場所にあるファイルへ分散できますが、include 文は litestep.exe と同じフォルダにある step.rc に書かれていなければならないため、全ての設定ファイルを全く任意の場所へ置くわけにはいきません。考えてもみれば、レジストリを使うのでない限りこれは当たり前のことだと言えます。もしユーザーが任意の場所へ step.rc を置けるようになれば、litestep.exe は起動したり再起動するたびに step.rc を全てのドライブについて検索しなければなりません。あなたが 120 GB のハードディスクを使っていたら、LiteStep が起動するまで数十秒ほど余計に待たされることになるでしょう。かといって、あなたが step.rc を置いた場所をあらかじめ litestep.exe に教えておく方法は、「litestep.exe が起動するときに読み込む何か特別なファイルへ記述する」以外にありません。では、その特別なファイルが step.rc なら何が悪いのでしょうか(笑。もしその特別なファイルも任意の場所に置きたいということになれば、きりがなくなるのは自明です。後に残る方法は、あなたが step.rc を置きたい場所を定数としてソースコードに追加し、コンパイルしなおすくらいしかないでしょう(そうしても別にいいわけですが)。
次に step.rc ファイルの編集です。これはお好きなように。保存するときのエンコードを気にする方がおられるかもしれませんが、Windows 9x/Me なら ANSI, Latin-1 (ISO-8859-1) かシフト JIS で保存すれば問題ありません。NT/2K/XP の場合は内部的に Unicode へ対応していますし、stepsets.dll の中で step.rc をパースする際にも(一応)Unicode は考慮されていますから、UTF-8 を指定してもよいでしょう。僕自身も step.rc は UTF-8 (CR/LF) で保存していて問題がありません。
| Windows 9x 系 | Windows NT 系 | |
|---|---|---|
| 日本語環境での step.rc | シフト JIS | シフト JIS, UTF-8 |
| 国際版での step.rc | Latin-1, ANSI | Latin-1, ANSI, UTF-8 |
もし、あなたが自作のテーマを wincustomize.com や customize.org などで公開したいと思うなら、step.rc に日本語を記述するのは好ましくありませんし、日本語用のエンコードで step.rc を保存するのもお勧めできません(仮に日本語が全く書かれていないとしても、Shift_JIS や EUC-JP で保存するのはお勧めできません)。ですから、国際化したテーマであって 9x 系のユーザーも対象にしたいのであれば、Latin-1 か ANSI で保存するのが適切です。
ここで「国際版」と言っているのは、どの言語で発売されている Windows でも扱えるという意味であって、イデオロギーの話をしているわけではありません。日本人であるあなたが中国語に堪能で、中国語版の Windows で開けるエンコードを使ったとしても、それは国際版とは言えないわけです。Latin-1 が全てのローカル版 Windows と親和性が高いのは歴史的な偶然に過ぎず、それゆえ Latin-1 でエンコードされたテキスト・ファイルが日本語版の Windows で扱えなかったとすれば、同じくそれを「国際版」と言うわけにはいきません。
ここでは、「お勧めのテキスト・エディタ」という不毛な話題について語るのはやめておきます(笑。一般のユーザーさんから見れば、「大は小を兼ねる」という理屈は通用しないという現状があり、幾ら「A というエディタの機能は B というエディタにもある」という仕方で比較をしても、結局は「僕はそんな機能までは要りません」とか「そんな機能があっても難しそうで使いこなせない(使う気はなくても<笑)」という理由で行き詰る、というのが分かっています。実際、ウェブデザイナーを志す人の大半が Dreamweaver API について殆ど関心がなくてもそれなりにうまく行っているのと同じで、テキスト・データを扱う人がテキスト・エディタで何でもかんでもやれる必要はないと思います。ひとまず、いまやりたいことが問題なく片付けられる道具を使うというのが(ユーザー指向の見方では)正しいのでしょう。
ですから、一介のユーザーとしては「特に決めていないならこれをお使いなさい」と言えても、「それを使うくらいならこれを使え」とまで言える条件は限られています。実際、僕は亀井哲弥さんの xyzzy を使わせてもらっていますが、「xyzzy はライフスタイルである」とまでは言いませんし(笑、昨日やおとつい Windows を使い始めたばかりの人にこれを勧めるのは(実はいいのではないかとも思うが)酷なことでしょう。ひとまず、このチュートリアルは LiteStep を少しばかり詳しく解説することが目的なので、別にテキスト作業のエキスパートを養成するものではありませんから、上で述べているようにお好きなエディタを使っていただければよいと思うわけです。