フィンローダのあっぱれご意見番

第11回:ログファイルの恐怖

初出: C MAGAZINE 1993年3月号
Updated: 1996-02-24

[1つ前] [1つ後] [一覧] [ホームページ]


 最近、「パソコン通信」という言葉ではなく、「ネット」あるいは 「オンラインコミュニケーション」という言葉を使うことにしている。

パソコン通信という言葉を使わない理由は、これがネットの本質をあまり表現し ていないと思ったからだ。まず、パソコンという表現がよくない。中には「ワー プロでも通信はできるから、パソコン通信というのは変だ」 という人もいるようだ。 ではワープロ・パソコン通信と言え ばどうだ。全然よくない。なぜなら、問題の本質は別の所にあるからである。 パソコン・ワープロという言葉には、いかにも「特殊技能がないと使え ない、一部の人のための機械」というイメージが強すぎる。 「パソコ…」まで聞いたか聞かないかのうちに、 「あ、こりゃワシには駄目だわ」と思わせるようではいけない。

実際、パソコン通信と言えば、いかにパソコンを使うことが目的であるかのよう に聞こえるものだ。ここではパソコンは単なる道具に過ぎないのであるから、そ のようなイメージを全面に押し出さない方がよい。

さらによくないのが「通信」という言葉である。これこそ、いかにもマニアック というか専門的技術を駆使する、というイメージを与える表現ではないか。 でも「オンラインコミュニケーション」と言っても、 結局コミュニケーション=通信じゃないか? いや、日本語では違うのである。 おそらく、日本語としてコミュニケーションという言葉を用いるときには、 通信というよりは意志の疎通のような、もっと瞹昧 な別のイメージがあるはずだ。例えば「親子のコミュニケーション」とは言っても 「親子の通信」とは言わないのである。 そして、オンラインコミュニケーションと表現した時の、コミュニケーシ ョンとは、まさにこの「親子のコミュニケーション」におけるコミュニケーショ ンと同じ意味を期待しているのである。

ここではネットの本質はコミュニケーションである、という思い込みが肝心であ るから、いやそうでない、という人にはぴんとこないかもしれない。

では、ネットとは何かというと、こ れは「網」である。「日本人は何でも省略したがる、ネットワークを略してネット と言うのも悪い癖だ」という人がいたが、違う。ネットとネットワークは別 のものだ。フィンローダ流に説明すれば、ネットワークを使 って多数の参加者が共有した社会、のことをネットと呼んでいるつもりだ。もっ とも、他の人が何を指してネットと言っているのかは知らないが。

「ネット」や「オンラインコミュニケーション」程度なら響きも悪くない。 ネットが社会に必然の状態に進化すれば、 「ネットする」なんて言葉が出てくるかもしれない。

    *
ネットを使い始めて誰でも悩むのがログの整理である。あまり知られていないが、 ログ整理には強烈な大技がある。すなわち、「整理しない」のだ。これは楽であ る。具体的には、logという名前のファイルを作り、どんどんこれに追加してしま うのだ。ハードディスクにファイルを作れば、巨大なファイルになるかもしれな い。どうしても我慢できなければ、1MBを超えた所で、ファイル名をその日付で変 更し、例えば921225という名前にしてしまえばいい。

コツは、なまじフォーラムやsigや電子メールやネットに応じてファイルを分けな いことと、途中の一見無駄であるようなシステムのメッセージやログイン、ログ アウトの時のモデムの表示まで、全部そのまま残しておくということである。メ ディアのコストと、ログを整理するコストを比べれば、多少の無駄を無視してそ のまま記録を持っていた方が結局能率的だし、もし後で気が変われば、その時に 処理すれば済むことである。さらに悟れば「ログを取らない」という人もいるよ うだが。

しかし実際は、ある程度まとまった単位でログを取っておきたい、という面倒な 人が多いのである。私の場合は、プログラマーズフォーラム位は、会議室ごとに、 毎月別ファイルにしてログを保存している。この時にどのようなファイル名にす るかは、個人の流儀次第だから深入りしない。今回のテーマは、後でファイル名 を変更したくなった時にどうするかである。

例えば、32日ステージという短期会議がある。これはあるテーマに対して32日間 で会議を尽くすという無謀な会議なのだが、以下のような名前のファイルとする。

    hex.1       hex.2       hex.3
とりあえず、MSDOSの環境で処理する前提にしておく。なぜ32日ステージがhexな のか、それには深い訳があるのだが、頁が足りないので今回はそういうものだと 思っていただきたい。これらを次のような名前にしたいと思ったとする。
    hex.01      hex.02      hex.03
つまり、1〜9という数字に対するファイル名を、01〜09のように2桁にしたいのだ。 そんなの最初からやっておけば何もしなくてよいのに? そりゃそうだが、それ では原稿のネタにならないのである。というわけで、心情的には、次のようにで きればありがたい。
    ren hex.? hex.0?
ちょっと無茶だが、最初にマッチした文字がそのまま使われるという感じで、意 図は想像していただきたい。もちろんMSDOSでこのように指定することはできない。 では、どうすればいいか。ひとつずつrenを実行するという手はある。実際やれな ぜコンピュータという便利なものがあるのに、こんな単調な手作業を…、と、か なり虚しい事甚だしい。ここで、プログラムを書けば一発で出来そうな気がして くれば、かなりプログラマーである。C言語を使ってよいなら、 hex.1からhex.01への改名は、次のよう に関数を使って実現できる。
    rename("hex.1", "hex.01");
そこで、1〜9を01〜09に改名するには、LIST 1のようなプログラムでよい。

余談だが、最近はさすがにnewなどという変数を使うことはなくなったが、 うっかり使うと後 でC++化する時にあたふたすることになるのでご注意を。


/* LIST 1 */

int main()
{
    int i;

    for (i = 1; i < 10; i++) {
        char oldname[7];
        char newname[8];

        sprintf(oldname, "hex.%d", i);
        sprintf(newname, "hex.0%d", i);
        rename(oldname, newname);
    }
    return 0;
}

LIST 1の程度なら、ちょっとCをかじった程度の人ならすぐ書けるはずだ。皆さんな らどう書くだろうか。実は、私はこのように書かなかった。LIST 2のように書い たのだ。
/* LIST 2 */

int main()
{
    int i;

    for (i = 1; i < 10; i++) {
        printf("ren hex.%d hex.0%d¥n", i, i);
    }
    return 0;
}

このプログラム自体は恐ろしく単純だ。forとprintf程度しか知らなくて も書ける。殆どCのプログラムを初めて書いたその日に作れるような代物である。 これを実行すると ren なんたら、かんたら、と画面に表示されるのだが、画面に 表示するのではなく、次のようにバッチファイルに書き出すのだ。
    xren > yren.bat
そして、yren.bat を実行したのだ。これは2度手間になってしまうが、Cでバッ チファイルを書こうという発想がポイントである。

ただ、実際はCではなくjgawkでこのバッチファイルを作った。LIST 3 のようなスクリプトである。


/* LIST 3 */

# list3.awk

BEGIN {
    for (i = 1; i < 10; i++) {
        printf("ren hex.%d hex.0%d¥n", i, i)
    }
}

';'がないのと、iをいきなり使っているのが違う程 度で、殆ど同じノリで書けてしまう。これを、次のようにダミーのファイルを与 えて実行した。コンパイルする手間が省けるので、ちょっと気分的に楽かなとい う程度の差がある。
    jgawk -f list3.awk dummy > yren.bat
凝った作りにしようとすれば、この処理はいくらでも複雑にできるが、できるだ け単純に、かつ危険を少なく、短時間で実行するという条件の下では、プログラ ムを使ってバッチファイルを作ってしまうという方法も一案である。特に、作成 したバッチファイルを確認すれば、危険を回避する効果がある点にも注目してよ い。バッチファイルの内容は、

ren hex.1 hex.01

のような行が羅列しているだけだから、 ざっと眺めて問題ないことを確認すればいいのだ。プログラムの 中でrenameを実行すると、うっかりバグが入り込んでしまった時に、取り返しの 付かない結果になりかねない。このリスクを回避するために、ダミーのファイル を置いてテストしたり、試作時にprintfを突っ込んでみるのも面白くない。どう せprintfを入れるなら最初からprintfだけにしてしまえ、という逆転の発想から 生まれたのがLIST 2なのである。


(C) 1993, 1996 Phinloda, All rights reserved
無断でこのページへのリンクを貼ることを承諾します。問い合わせは不要です。
内容は予告なく変更することがあります。