2001年7月29日(日)

2001年7月28日(土)

午後 - 仕事

2001年7月28日(土) 00:00

昼間は、奥さんが買い物に出かけたので、ずっと子どもの面倒を見る。 奥さんが帰ってきた時点では、もうへとへと。 夕食前のひととき、近所の喫茶店に出かけさせてもらい、仕事をする。

現在書こうとしているのは『Java言語で学ぶデザインパターン入門』の続編である。 続編を書こうと思ったのは、デザインパターン・メーリングリストを立ち上げた頃だが、 その具体的内容はぜんぜん定まっていなかった。 目次を書いては消し、書いては消す毎日。 先日、編集長にメールして、少しアドバイス(とはげまし)をいただいて、 再考した結果、けっこうよい方向でまとまりそうな予感。

(ある程度まとまってきたら、また「レビューア募集」をかけよう…)

今日、喫茶店で「はじめに」を書いているうちに、 いつもの「うん、これ、とてもいい本になる」という確信を得たように思う。 私はいつも「いま書いている本が最高の本」だと思って書くのだが、 今回もそうなりそうな感じだ。 うん、そうそう。素晴らしい本になるよ。 はじめは当たり前の話のように感じてするする読んでいくんだけれど、 そのうちに「ん?」と感じ始め、だんだんわくわくしていく…そんな本になるよ、きっと。 それは、私が素晴らしいからじゃなくて、 題材が素晴らしいから、そして神さまが素晴らしいから、なんだけれど。 奥さんからはまた「あなた、いつもそう言うわねえ」と苦笑されるかな。

などと考えつつ「はじめに」を書き進める。 各章の紹介を書いているうちに自分の周りの机や椅子は消え、 自分がどこにいるのかも忘れ、ただ頭に思いつく言葉がエディタの中に流れ込んでいく。 私はそれを(熱心な)傍観者として見ている状態になる。 思いつくことは全部書いてしまえばいいのだ。 思いつくことを全部そのまま、そっくりそのままエディタに突っ込んでしまえばいいのだ。 編集はあとでいくらでもできる。 いま、勢いの中から出てきている何かをそのまま、 出してしまおう。

それが、私の「文章を書く心がけ」。

2001年7月27日(金)

夜 - 文章を書く前の祈り

2001年7月27日(金) 00:00
…そして、入り組んでもつれている糸玉を前にして、
途方にくれてしまったような気持ちになる。
確かに、この糸は美しい。
そしてこの糸から作られる作品は、
おそらくすばらしい色合いの、
たぐいまれなる逸品となるだろう。
けれども、残念ながら、いかんせん、困ったことに。

    この糸はもつれている。

解きほぐすのは容易なことではないし、
また鋏を安直に持ち出して切ることも難しい。
へたに切ったなら、せっかくの糸がだいなしになってしまうからだ。
根気よく結び目を解いていき、
そしてどうしても解きほぐせない部分にだけ鋏を使う…

プログラミング言語の本を書くとき、
私は上のような気持ちになることがある。
丁寧に選り出された糸をきちんと伸ばし、
再度その糸を元にして新しい作品を作る。

もしかしたらその作品を見た人は、
「ここにはオリジナリティというものはなく、
単に元の素材がよいだけだ」
と言うかもしれない。
それには大いに反論もあるが、それはそれでよいことだ。
素材のよさが素直に表現されている、ということだから。

「高度な技術が見られなくてものたりない」
という人もいるかもしれない。
それも、よきかな、よきかな。

作品を作る人は、
自分の技法に溺れたり、淫したりしてはいけない。
作品を作るときには、
自分は「通りよき管」となるのがよい。
たんねんに「あるべきすがた」を求めて、
そこへ近づけていくようにすればよいのだ。

「ねえ、本を書くよい方法って知ってる?」
と私が家内に言うと、家内は、
「ただ、書けばいいんでしょ(あなたが先日そう言ってたじゃない)」
と答える。私は苦笑してこう言う。
「そうなんだけど、大事なのは『おおぜいの読者に向けて書かない』ということなんだ。
おおぜいの読者に向けて書くのではなく、

    『たった一人の《あなた》に向けて書く』

のがよい方法なんだ」
今度は家内が苦笑する。
家内は私の薀蓄に慣れているので、根気よくふんふんとうなづいてくれる。
「ねえ」と家内が言う。「あなたはそういうことをどこで学んだの?」
「聖霊が教えてくれるんだ」と私は半分冗談めかしていう。
実際には冗談なんかではないのだが。

文章を書く前、特に本を執筆する前にはよく祈るのがよい。
両手を机の上に置く。
てのひらは上に向けておく。
そして静かに目を閉じて、神さまに祈る。
もちろん八百万の神々なんぞにではなく、
この天地をお創りになった唯一絶対の神さまに祈る。
心の中で「おとうさん…」と呼びかけながら、
私は心を開く。
自分がおかした罪、傲慢、わがまま、自分勝手、不従順、いたらなさが
どっと吹き出してきそうになるが、そのことよりもまず、
神さまを——
    《自分に目を向けるのではなく、神さまに目を向ける》
神さまを——
    《感謝は要求に先立つ》
——ほめたたえる。

そのときに、いつも、私は主の祈りを思い出す。
イエスさまが教えてくださったあの祈りは確かに、
神さまへの呼びかけと、神さまへの賛美と感謝にはじまっていた。

祈りながら、心を主に向ける。
そして自分が感じている不安や悩みもまた、神さまの前に持ち出そう。
いまから自分は文章を書こうとしている。
その技術的な内容、文章の形式もさることながら、
そこに封じ込められ、読者の前に解き放たれるメッセージが
主によって聖いものとなるように、願おう。
単に上品ぶった・知識をひけらかす・技術だけが先走ったものにならないように。
広い意味で、深い意味で「よい」文章になるように、願おう。
主からの知恵が与えられるように、祈ろう。

この世の時は流れていく。
私に与えられた今日という時も、流れていく。
貴重な、かけがえのない、決して戻ることのない、今日というときも流れていく。
そんな中にあって、私がいまから書こうとしている文章が、
主の御前においても価値のあるものとなるように。
もしかしたら大量に編集しなければならなくなったとしても、
それが無駄とはならず、作品にとって必要な刈り込みとなるように。

いまから書かれる文章を通して、読者が単に知識を得るだけではなく、
はげましや、よろこびを得ることができるように。
たとえあまり売れなかったとしても、
必要な読者のところに必要な言葉が届けられるように。

そのようなことを自分の言葉で祈っていこう。

そして、目を開き、
淡々と、しかし情熱を持って文章を書き進めていこう。

朝 - 仕事

2001年7月27日(金) 00:00

朝、ミスタードーナツで本を書くお仕事。 本のテーマをもう一度見直して、目次を整理。 それから最初の章を少し書く。 ふむ。この章のプログラムは一応できた。 まだギアはローのまま、という感じ。 でも、そのうちギアがトップに入るような予感がする。

そのうち、ね。

2001年7月26日(木)

仕事

2001年7月26日(木) 00:00

昨日は大雨のため、ひどい目に遭った一日だった。

朝、マクドナルドで本を書くお仕事。 例となるプログラムを何度も何度も書き直しているが、 どうもしっくりこない。 どうして「シンプルな例」というのは作るのが難しいんだろう。 書いているうちに、あれもこれもと詰め込みすぎるため、 話したいテーマからどんどんそれていくのだ。 シンプルで、本質をついていて、トリビアルではない例。 これを見つけて書くのはとても難しい仕事であることがよくわかる。 人の書いた本や例を批判するのはとても簡単な仕事。 それから、頭の中で「これはこうすればいい」と思うのもまあまあ簡単な仕事。 だが、それを実際に紙の上(エディタの上)に表現することは信じられないくらいに困難な仕事なのだ。 これまで何度も何度もそういう経験をしているくせに、いまだに慣れない。 たぶん、私は謙虚さに欠けているのだろう。

めーちゃん、一歳の誕生日とのこと。 おめでとうございます。

2001年7月25日(水)

2001年7月22日(日)

夜2 - Futureパターン

2001年7月22日(日) 00:00
Doug LeaのFutureパターンのサンプルプログラムを(また)作っている。

RealDataはデータを準備するのに時間がかかるクラス。
FutureDataはRealDataをFuture化したクラス。
Printerはコンストラクタの中でFutureDataを作る
(ここで裏のスレッドでデータ準備を開始)。
Printer.printの中でgetDataを呼び出す。
準備ができるまでwaitで待つ。

この場合、RealDataのコンストラクタで時間を費やすことになる。
Futureパターンを使うと、
FutureData.getDataの中で「もしデータの準備ができていたらすぐにデータを得る。
もしできていなかったらできるまでブロックする」という構造が実現できる。
しかも、別スレッドが動くかどうかという詳細はFutureDataによって隠蔽されるため、
Printerには見えない。

Printerのコンストラクタの、
    this.data = new FutureData();
の部分を、
    this.data = new RealData();
にしたものと比較すると面白い。
import java.io.*;

abstract class Data {
    public abstract char[] getData();
}

class RealData extends Data {
    private char[] buffer = new char[26];
    public RealData() {
        for (int i = 0; i < buffer.length; i++) {
            buffer[i] = createCharSlowly(i);
        }
        System.out.println("");
    }
    public char[] getData() {
        return buffer;
    }
    private char createCharSlowly(int n) {
        try {
            System.out.print(".");
            Thread.sleep(100);
        } catch (InterruptedException e) {
        }
        return (char)('A' + (n % 26));
    }
}

class FutureData extends Data implements Runnable {
    private RealData realdata = null;
    public FutureData() {
        new Thread(this).start();
    }
    public synchronized char[] getData() {
        while (realdata == null) {
            try {
                wait();
            } catch (InterruptedException e) {
            }
        }
        return realdata.getData();
    }
    public synchronized void run() {
        realdata = new RealData();
        notifyAll();
    }
}

class Printer {
    private Data data;
    public Printer() {
        System.out.println("Printer:constructor");
        this.data = new FutureData();
    }
    public void print() {
        System.out.println("Printer:print");
        char[] buffer = data.getData();
        for (int i = 0; i < buffer.length; i++) {
            System.out.print(buffer[i]);
        }
        System.out.println("");
    }
}

class Main {
    public static void main(String[] args) {
        Printer printer = new Printer();
        heavyJob();
        printer.print();
    }
    private static void heavyJob() {
        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
        }
    }
}

朝 - ナルニアをめぐって

2001年7月22日(日) 00:00

中山牧師からの情報。

キリスト教に縛られない(?!)ナルニアの本を作ることを示唆したメモが HarperCollins社の子会社から漏れ、ひとしきり大騒ぎになった。 HarperCollins社の児童書部門の責任者は、 ルイスの作品に手を入れるようなことはない、 という声明を出した。という話。

  • 'Narnia' won't write off Christian values (USA TODAY)

上記のUSA TODAYの記事にもありますが、 HarperCollins社のwww.narnia.comには、 キリスト教的世界観に関する言及がないそうです。

2001年7月21日(土)

パターン

2001年7月21日(土) 00:00

先月から今月にかけて、 パターンをめぐるさまざまなことをやってきた。 やってきた、というと偉そうだけれど、 要するに勉強させてもらったということである。 パターンに関連した本もたくさん買って、たくさん読んだ。 家内からは「何だか、似たような本をたくさん買ってない?」とからかわれた。 私が「パターンについてはまだまだ勉強したいのだ」と奥さんに言うと、 家内から「普通は、本を書く前に勉強するんじゃない?」と反撃されてしまった。

家内の言うとおりだ。

でも、しょうがない。本を書いてみて、 パターンがこんなに面白いってことがわかったんだもの。

それはさておき。 この一ヶ月くらいに作ったパターン関連ページをまとめておこう。

2001年7月19日(木)

Nested class版

2001年7月19日(木) 00:00

Nested classを使った版。 NullProductがProductの中に入り、 NullFactoryがFactoryの中に入っていることに注目。

/*
 * Abstract Factoryパターン + Singletonパターン + Null Objectパターンのサンプル 
 * (Nested classを使った版)
 */

/*
 * 注意:
 * (1) framework, thirdpartyframework, userは通常は別パッケージにおくべき。
 * (2) ConcreteFactoryたちはSharableだと仮定している。
 */

/**** framework ****/

import java.util.Hashtable;

interface Product {
    public abstract void use();
    static class Null implements Product {
        private static Product singleton = new Null();
        public static Product getInstance() { return singleton; }
        private Null() { }
        public void use() { System.out.println("Product.Null:use()"); }
    }
}

abstract class Factory {
    private static final String DEFAULT_KEY = "default";
    private static Hashtable pool = new Hashtable();
    static { pool.put(DEFAULT_KEY, Null.getInstance()); }
    public static Factory getFactory(String key) { return (Factory)pool.get(key); }
    public static Factory getFactory() { return getFactory(DEFAULT_KEY); }
    public static void registerFactory(String key, Factory factory) { pool.put(key, factory); }
    public abstract Product createProduct();
    static class Null extends Factory {
        private static Factory singleton = new Null();
        public static Factory getInstance() { return singleton; }
        private Null() { }
        public Product createProduct() { return Product.Null.getInstance(); }
    }
}

/**** thirdpartyframework ****/

class YukiProduct implements Product {
    public void use() { System.out.println("YukiProduct:use()"); }
}

class YukiFactory extends Factory {
    private static Factory singleton = new YukiFactory();
    public static Factory getInstance() { return singleton; }
    private YukiFactory() { }
    public Product createProduct() { return new YukiProduct(); }
}

/**** user ****/

class Main {
    public static void main(String[] args) {
        // default factory
        Factory factory = Factory.getFactory();
        Product product = factory.createProduct();
        product.use();

        Factory.registerFactory("yuki", YukiFactory.getInstance());
        factory = Factory.getFactory("yuki");
        product = factory.createProduct();
        product.use();
    }
}

Abstract Factory + Singleton + Null Object 三題噺

2001年7月19日(木) 00:00

デザインパターン・メーリングリストの投稿を読みながら、 手をぱたぱたと動かしているうちにできた、 「Abstract Factory + Singleton + Null Object」のサンプルプログラム。 まるで三題噺みたいだな。

/*
 * Abstract Factoryパターン + Singletonパターン + Null Objectパターンのサンプル 
 */

/*
 * 注意:
 * (1) framework, thirdpartyframework, userは通常は別パッケージにおくべき。
 * (2) ConcreteFactoryたちはSharableだと仮定している。
 */

/**** framework ****/

import java.util.Hashtable;

interface Product {
    public abstract void use();
}

class NullProduct implements Product {
    private static Product singleton = new NullProduct();
    public static Product getInstance() { return singleton; }
    private NullProduct() { }
    public void use() { System.out.println("NullProduct:use()"); }
}

abstract class Factory {
    private static final String DEFAULT_KEY = "default";
    private static Hashtable pool = new Hashtable();
    static { pool.put(DEFAULT_KEY, NullFactory.getInstance()); }
    public static Factory getFactory(String key) { return (Factory)pool.get(key); }
    public static Factory getFactory() { return getFactory(DEFAULT_KEY); }
    public static void registerFactory(String key, Factory factory) { pool.put(key, factory); }
    public abstract Product createProduct();
}

class NullFactory extends Factory {
    private static Factory singleton = new NullFactory();
    public static Factory getInstance() { return singleton; }
    private NullFactory() { }
    public Product createProduct() { return NullProduct.getInstance(); }
}

/**** thirdpartyframework ****/

class YukiFactory extends Factory {
    private static Factory singleton = new YukiFactory();
    public static Factory getInstance() { return singleton; }
    private YukiFactory() { }
    public Product createProduct() { return new YukiProduct(); }
}

class YukiProduct implements Product {
    public void use() { System.out.println("YukiProduct:use()"); }
}

/**** user ****/

class Main {
    public static void main(String[] args) {
        Factory factory = Factory.getFactory();
        Product product = factory.createProduct();
        product.use();

        Factory.registerFactory("yuki", YukiFactory.getInstance());
        factory = Factory.getFactory("yuki");
        product = factory.createProduct();
        product.use();
    }
}

実行結果は以下。

NullProduct:use()
YukiProduct:use()

私はこういうプログラムを書いたり読んだりすると、何だかドキドキしてきます。

んー、これだとMainの中にYukiFactoryというクラス名が書かれてしまうなあ…。 poolをやめて、args[0]で名前を渡してClass.forNameするコードを書くのもよいか…。

2001年7月17日(火)

朝 - Nested class

2001年7月17日(火) 00:00

Javaで、以下の分類は正しいか、という問題。

+--- <class>
        +--- <top level class> (§7.6)
        +--- <nested class>
                +--- <static member class>
                +--- <inner class>
                        +--- <local class> (§14.3)
                        +--- <anonymous class> (§15.9.5) 
                        +--- <non-static member class> (§8.5)

2001年7月15日(日)

プログラマという仕事

2001年7月15日(日) 00:00
●質問

こんにちは。
私は現在高校三年生です。
いまコンピュータ関連の専門学校にいこうと思っています。
その中には私の好きな科があり、
そこを卒業するとプログラマという職業に就くことになると思っています。
漠然とした質問で恐縮ですが、
以下のような点について教えていただけますか。

(1) プログラマの仕事内容
(2) 大変なこと
(3) 楽しいこと
(4) 会社に勤めなくちゃならないんですか、それとも自由業なのでしょうか?
(5) その他、感じていらっしゃることについて
●回答

「プログラマ」という呼称の表す範囲はとても広く、
会社や仕事内容によっても異なります。
以下の内容がすべてではないし、固定的なものではない、
ということは心に留めておいてください。

(1) プログラマの仕事内容

基本的にはプログラムを書く、のが仕事です。
しかし、それに関連してたくさんの仕事がありますので、
「場合によります」というのが答えになります。
たくさんの仕事というのは、例えば…

・お客さんと話をする、お客さんの要求を聞き出す…
・仕様書を書く、読む、お客さんに説明する…
・設計する(システム全体を設計する、一部のプログラムだけを設計する…)
・どのようなプログラムにしたらよいか調査を行う…
・プログラムを書く、デバッグする…
・発生した障害に対応する、メンテナンスする…
・その他プログラムに関わることいろいろ。

(2) 大変なこと

・納期を守るために多大な努力が必要になること。
・時代にとり残されないようにするために、
 常に勉強しつづけていなければならないこと。

(3) 楽しいこと

・ともかくも何かを「作り出す」喜びが大きいですね。
・それから、新しいことを学んでいく喜び。
・それが結果的にお客さん(自分の仕事の成果を受け取ってもらう相手)から
 喜んでもらえるようなら、最高です。

(4) 会社に勤めなくちゃならないんですか、それとも自由業なのでしょうか?

・「なくちゃならない」ということはありません。
・多くの人は会社につとめるでしょう。
・個人でやっていける力のある人は個人で仕事をするでしょう。

どちらが楽、ということはありません。
それぞれにはそれぞれの喜びと苦しみがあります。

※でも、たとえ会社につとめている場合でも、
※「自分で自分の技能を磨く努力を忘れない」ということが大事です。
※会社まかせではいけません。

(5) その他、感じていらっしゃることについて

「自分はプログラマだから」といって、
あまり狭い領域だけに関心を絞らないほうがよいと思います。

ともあれ、あなたのこれからの人生が祝福と希望に満ちたものとなりますように、
お祈りしております。

以下もどうぞ参考に。

2001年7月13日(金)

闇黒日記

2001年7月13日(金) 00:00

野嵜健秀さんの「闇黒日記」から引用。

取敢へずうちを見たのなら見たと書いて呉れれば、と思つた。

ということなので遅ればせながらお返事です。

「見ました」<-niko>

いつも貴重なご指摘ありがとうございます。 感謝します。

  • 闇黒日記

2001年7月12日(木)

HTML Validator / プログラムデザインのためのパターン言語

2001年7月12日(木) 00:00

久しぶりにHTML Validatorを動かす。 ぼろぼろだった。 せめてトップページと日記ぐらいは、ということで少し直す。 トップページは100点になったので、 調子に乗って「Valid XHTML 1.0!」のロゴを張る。

ソフトバンクパブリッシングさんから、 『プログラムデザインのためのパターン言語』 という書籍を参考書籍としていただく。 これは、Pattern Languages of Program Design(PLoPD) からのパターン選集。 デザインパターンに限らず、いろんなパターンについて紹介してあるもの。

本の装丁は、 『オブジェクト指向における再利用のためのデザインパターン(改訂版)』や 『Java言語で学ぶデザインパターン入門』 と同じ系列のデザインになっています。 結城自身はこの書籍には関係していませんが、興味深いテーマなのでご紹介。

  • プログラムデザインのためのパターン言語 —— Pattern Languages of Program Design 選集
  • Java言語で学ぶデザインパターン入門
  • オブジェクト指向における再利用のためのデザインパターン(改訂版)

いま、私の本棚にこの3冊が並んでいますが、なかなか美しいです。 結城の本がちょっぴりおちびさんです<-niko>。

2001年7月11日(水)

AT DOT / 氷点2001

2001年7月11日(水) 00:00

rmsのメールアドレスが「rms AT gnu DOT org」と書かれているのはスパム防止かもしれない。 「hyuki AT hyuki DOT com」ということですね。

7月12日から木曜ドラマとして、テレビ朝日系で「氷点2001」が放映されるそうです。 原作は三浦綾子さんですが、おそらく舞台設定などは現代風になるのでしょう。 原作が持っている「原罪」というテーマはどうなるのかわかりませんが、 主がこの機会も用いてくださるようにと祈ります。

2001年7月10日(火)

ハーボット

2001年7月10日(火) 00:00

日記ページに「ハーボックス」を設置しました。 サムエルくんというハーボットが住んでいます。 どぞ、よろしく。

[ハーボックスのロゴ]

もしあなたのホームページにハーボットが住んでいましたら、 結城の日記のことも教えてあげてください。

↓窓拭き掃除中のサムエルくん。
[掃除中サムエルの画像]
↓食事中のサムエルくん。
[食事中サムエルの画像]
(C)copyright 2001 Sony Communication Network Corporation
Harbotは、ソニーコミュニケーションネットワーク株式会社の商標です。
Harbotに関わる著作権その他一切の知的財産権は、ソニーコミュニケーションネットワーク株式会社に属します。

2001年7月9日(月)

長文メールについて

2001年7月9日(月) 00:00

読者からのご質問

「メールを書く心がけ」は勉強になりました。 ありがとうございます。 友達から長文のメールをもらうのはうれしいのですが、 今度は自分も長文の返事を書かなければいけないような気持ちになります。 自分のペースでメールを書きたいのですが、 うまい方法はあるでしょうか。

お返事

特効薬のような方法はないと思います。 メールのやりとりというのは人と人とのコミュニケーションですので、 画一的なやり方はないと思っています。 つまり、あなたのお友達との関係の深さに応じていろんなやり方があるということです。

もしも、そのお友達と長いつきあいで、 ざっくばらんに言いたいことも言えるなら、 率直に「長文メールをもらうのはうれしいけれど、 わたしの方は自分のペースで書くわね」 と言っても何の問題も起きないかもしれません。 でも、相手によっては、そんなメールを出したら、 いきなり大喧嘩になってしまうかもしれませんよね。

頑張って長文の返事を書いても、そういうのは長続きしないでしょうし、 今度は相手のほうも同じようにプレッシャーを感じてさらに長文になったりしたら、 どんどんエスカレートしちゃいますね。

あなたが感じていることが、 うまく相手に伝わるような方法があればよいのですが、 それをどうすればよいか、はあなた方の関係そのものですので、 何ともお答えはできません。

1つのヒントとしては、 相手の長文メールで、自分が関心のある部分に短くコメントをして返し、 「あなたのメールを読むのはうれしい」という主旨のことを書く方法はありますね。 もちろん、もしもあなたがうれしいと思っているなら、ですが。

メールは、自分のペースで、 自分の書きたいことを書けるときには楽しくリフレッシュ/リラックスできるものですが、 非常に気を遣わなければならなかったり、 一種の「義務感」から書かなければならなかったりしたら、 とても苦痛なものだと思います。

何のアドバイスにもなっていませんが、 まあ、ケース・バイ・ケースということで、すみません。

2001年7月4日(水)

午前 - 週間ランキング1位

2001年7月4日(水) 00:00

『Java言語で学ぶデザインパターン入門』の売れ行きに関して、 とある関係者から情報をいただいた。 書泉グランデや書泉ブックタワーでは週間ランキング第1位だったとのこと。 その他のコンピュータ関連書店でもかなり高いランキングだったようです。 本書を応援してくださっている多くの読者および関係者に心から感謝します。 ありがとうございます。

正直申しまして、著者の私も(たぶん出版社さんも)、 こんなにものすごいスピードで売れるとは思っていませんでしたので、 感謝しつつもとまどい気味です。 どうか結城が傲慢な思いにとらわれることのないよう、 今後の活動を進めるにあたって誤った判断をすることがないように、 みなさま、ぜひお祈りください。

2001年7月3日(火)

一回性

2001年7月3日(火) 00:00

No Cross, No Crown. (十字架無くして、冠無し) という言葉があります。 これを単に「努力しなければ報酬はない」ととらえてはいけません。 十字架というもののもつ絶対さ、とりかえしのつかなさ、 について思いを寄せなければ意味がないのです。

とりかえしのつかなさ、というのはこなれない表現ですが、 それは命と関係しています。結婚とも、処女性とも、そして時間とも関係しています。 思いつくまま書いていきましょう。

友のために命を捨てるほど大いなる愛はなし。 命、というのは誰でも1つはもっていますが、1つしかもっていないものです。 それが——この世での命が——失われたなら、それは永遠に失われたのです。 1個しかない命、それが失われるかどうか、というのは大事件です。 大事件。失われた命は取り戻すことができない。

元に戻ることはできないものの1つとして、結婚があります。 確かに、離婚して再婚すれば何度でも結婚はできますが、 結婚というものが持っている一回性を感じる人は多いのではないでしょうか。 処女性、というのはその1つの現れです。 女性が一人いる。 古風な表現をすれば、 男性に肌をゆるしていない女性/すでにゆるした女性には違いがある。 そこには元に戻らない一回性、 何かが失われた(あるいは何かを得たのか?)感覚があります。

ここで処女性について書いたのは倫理的な目的ではありません (つまり処女で結婚するのがよいとかわるいとかの議論のために書いたのではない、 ということ)。 そうではなく、結婚に含まれている一回性(一回しか起こらないこと、 一度起こったら元に戻せないこと)の1つの例として書いているのです。

死ぬことと結婚することはよく似ている。 結婚は自分に(ある程度)死ぬことでもあり、 花嫁衣裳が死装束に似ていることはよく言われることですが、 「一回性」という点でも、死ぬことと結婚することは似ているのです。

人生だって、毎日だって、時間というものはそもそも1回きりのものです。 昨日はすでに過ぎ去り、絶対に(神さまですら)元に戻すことはできない。 私たちが悔しい思いをするのは、時間が元に戻せないものだからです (もしかしたら楽しい思いをするのも、同じ理由からかもしれませんが)。

神さまは、私たちを愛しています。 そのあらわれとして、たった一人の息子を十字架にかけました —— たった一人の息子 …代わりはいない…絶対的な一回性がここにも登場しています。 イエスさまは、私たちの命を買い取るために十字架にかかりました。 買い取る? 支払った代金はイエスさまの「命」です。 かけがえのない、とりかえしのつかない、たった1つの命を支払いました。

愛には、必ず犠牲がともないます。 例外は1つもありません。 犠牲のない愛はにせものです。 もちろん犠牲には程度があります。 愛するもののために、自分が自由に使える時間を犠牲にする。 愛する相手のために、自分のお金を犠牲にする。 愛する人のために、自分の心を、力を、能力を、機会を、楽しみを犠牲にする。 犠牲、という表現がなじまないというのなら「ささげもの」と呼んでも同じことです。 あなたが何かを/誰かを愛するとき、 あなたは自分の何かを「ささげもの」にします。 ささげたものはあなたの手から離れ、焼き尽くされ、あなたの手には戻ってきません。 しかし、愛は喪失で終わるのではありません。 福音書も、十字架で終わるのではありません。 イエスキリストの復活があり、聖霊の降臨があり、そして(いつの日か)イエスキリストの再臨があるのです。

結婚によって乙女は失われ、二度と処女は帰ってきません。 けれど、夫はすばらしい妻を得ます。

この世の命が尽きるとき、私たちは死を迎えます。 この世の命が失われたなら、それと同じものはもう二度と得ることはできません。 けれど、神さまは私たちを愛してくださり、 新しい衣を着せ、永遠の命を与えてくださいます。 それは新しい命です。 神さまは私たち全体をまるごと買い取ったのです。

友のために命を捨てるほど大いなる愛はない。 しかし、他の人に対して「友のために命を捨てよ」と強制することはできない。 愛は強制ではないからです。 男性は女性にプロポーズをする。 「私はあなたを愛してます。私と結婚してください」 女性には選択権が与えられている。 「はい、私もあなたを愛します。私はあなたを主人とします。結婚してください」と答えるか、 「いいえ」と答えるか、 その選択権は女性に与えられている。 男性の愛がいくら大きくても、このプロトコルは守られる。

神さまはひとり子を十字架にかけるほどに私たち一人一人を愛しておられる。 そして私たち一人一人にプロポーズなさる。 「私の目にはあなたは高価で尊い。わたしはあなたを愛している」 私たちには選択権が与えられている。 「はい、私もあなたを愛します。私はあなたを主とします。結婚してください」と答えるか、 「いいえ」と答えるか、 その選択権は私たちに与えられている。 神さまの愛がいくら大きくても、このプロトコルは守られる。 信仰告白、というのは神さまからのプロポーズに対する返答なのだ。

結城の日記を読んでいるあなたへ。 あなたは、この日記のような文章は好きですか。 ここに何か、人生を生きていくヒントのようなものを感じますか。

もし、そうなら、ぜひ聖書をお読みください。 最近読んでいない、という方は、もう一度本棚から取り出して読んでみてください。 毎日の生活に疲れている方、いくら新しい楽しみを求めてもどこか空虚な思いがする方、 ぜひ、聖書を読んでください。 現代のエンタティンメントのように手取り足取りの楽しみはないかもしれないけれど、 聖書の中にはあなたに必要なことが書かれています。 本当に価値のある時間の使い方を知る方法。 愛について、人間関係について学ぶための知恵。 神について、イエスキリストについて知るべきこと。 そして、あなたがかけがえのない、たった一回きりのこの人生を生きていくために必要なことが、 聖書には書かれているのです。

聖書の言葉は古くなることがありません。 新聞や週刊誌、雑誌、Webページに書かれている普通の情報はいつか古び、消え去っていきます。 けれど、聖書の言葉は古びることがありません。 聖書の言葉はあなたを導き、あなたを育み、 悩み多き人生で、正しい道を明るく照らす光となってくれるのです。

もう一言だけ。 「犠牲」や「ささげもの」は愛の証しと書きました。 けれどもそれは、結婚や命がけの特別な事態だけに登場するものではありません。 たとえば、あなたが(感情的には)嫌いで嫌いでたまらない相手、口もききたくない相手がいるとしましょう。 その人に「おはようございます」と挨拶し、 「ありがとうございます」と感謝の言葉をかけるとき、 それもまた、尊い「犠牲」の1つではないか、と私は思います。 そのときあなたは、自分のちっぽけなプライドを殺すことができたのです。 他の人にはたわいもないことかもしれないけれど、 それって、あなたにとっては、ある意味、いのちがけ、ですよね。 いのちがけの戦いは、私たちの平凡そうな毎日の中で起こっているのです。 イエスさまが、いつもあなたと共にありますように。

2001年7月2日(月)

子育て

2001年7月2日(月) 00:00

7月は結城の誕生月。 38年前、私を産んでくれたお母さんに感謝します。

息子二人をお風呂に入れて、 本を読んで寝かしつけるのが私の仕事になっている。 最近の次男のお気に入りは『しろくまちゃんのほっとけーき』(わかやまけん)である。 もうすぐ2歳の次男は内容をほとんど暗記していて、私が「しろくまちゃんの…」と読むと、 次男が「ほとけーき!(ホットケーキ)」と叫ぶ。 私が「たまご…ぽとん」と読むと、 次男が「あ、わりちゃた!(割れちゃった)」と叫ぶ。 特にお気に入りなのが冷蔵庫である。 冷蔵庫が登場するページを開くと「れぞこ、どこ?」と必ず言う。 ストーリーは次のページに進んでも、くりかえし「れぞこ、どこ?れぞこ、どこ?」とせわしない。 その話をすると、家内は「だって、冷蔵庫はあの子にとっては魔法の箱。 ジュースも、アイスも、大好きなものはあの中から出てくるんですもの」とにっこりする。 なるほど、なるほど。

もうすぐ7歳の長男は、眠るときに自分でポケモンずかんを読んだり、 ナルニアを読んだり、プーさんを読んだり。 ときおり「ねえ、おとうさん。『銀のいす』読んで」などと言ってくる。 全部読むわけにはいかないから、一章だけ読むと、 いつのまにか長男は眠り込んでいる。 最近はあまり「うさぎのまど」や「めーめーさん」をお話しすることはない。 次男がもう少し大きくなったらまたその機会もあるだろうか。

夜中、暑くて寝苦しいとき、次男が急に泣き出したりする。 そんなときは「だいじょうぶ、だいじょうぶ、おとうしゃんはここにいるよ」 と言いながら次男の背中を手でさする。 そうすると、すうっと泣き止んですやすや寝入る。

次男はまるで台風のように家の中をちらかしまくる。 新しいものを見つけ出すのがとても上手で、 本棚に新しく並んだ『Java言語で学ぶデザインパターン入門』をさっと引き出そうとする。 まったく油断がならないが、 カタコトでいろんなことを話そうとするのはとてもかわいい。 「ちんかんちぇん(新幹線)、ビューンってー」とか、 「(コップのジュースをこぼして)ボトボトってー」という。 ○○ってー、という表現がかわいい。

食事の時にはテーブルを囲んだ4人が丸く手をつないでお祈りをする。 「天のお父さま、この食事を感謝していただきます。アーメン」 その後、次男は右手を高く上げて「エイオー!」と叫ぶ習慣になっている。謎だ。

長男は小学校に楽しく通っている。 でも、登校直前はばたばた大騒ぎになる。 時間割がそろっていないーの、 プリントを出していなかったーの、 今週は給食当番だったーの。 登校直前にそんなことを言われても困るんだけどな、 という出来事が必ず起こる。 やれやれ、と脱力する幸福。

私はお風呂と寝かしつけだけだから楽なものだが、 家内は一日中子どもとべったりだから大変だ。 いつも、どこか目の端、意識の端で子どもを見ているから、 なかなか気が抜けない。 子どもが勝手に遊んでいるときでも、 親は危険はないかと常に意識している。 子どもはそんな親の意識は知らない。 「親の心、子知らず」とはよく言ったものだと思う。 でも、自分だって子どものときはそうだったのだな。 まあ「順番」ってことだ。

38年前、親が私を見守ってくれていたように。

日記一覧

2025年 010203040506070809101112
1999年 010203040506070809101112
[icon]
結城浩(ゆうき・ひろし) @hyuki

『数学ガール』作者。 結城メルマガWeb連載を毎週書いてます。 文章書きとプログラミングが好きなクリスチャン。2014年日本数学会出版賞受賞。

Twitter note 結城メルマガ Mastodon Bluesky Threads Home