組み合わせと VCS
「サザエでございまーす」
<へる>と<ねむ>が見ているテレビから聞こえてくる。なお、<へる>、というのは<ちーた>と<にーね>の第一子、長女、娘、中学生である。<ねむ>は第二子、長男、息子、小学生である。二人は姉弟になるわけだが、一体この姉弟という漢字はなんと読むのが正解なんだろうか。
二人はこの番組が好きで、日曜の夕方は食事の準備中にこれを見る習慣になっている。念のため記しておくと、<へる>、<ねむ>、この二つも<ちーた><にーね>と同じくあだなである。そして同様にいくつかの派生形が存在する。なぜ<へる>なのか、またなぜ<ねむ>なのか。それは相変わらずまたのお話で。
僕は、サザエさんの歌を上の空で聞きながら、先日の巡回問題を考えていた。この間は幸いというかなんというか、二人の会話にまきこまれず傍観者に徹することが出来た(心の中ではつっこんでいたけど)。凝りない<ちーた>によって、四階以上の全ての条件で『ろ』の方が移動距離が小さい、ということは証明出来た。その後で教えてくれた階の数と移動距離との関係の式が、階の数が偶数でも奇数でも式が同じになることに直感的な説明が出来ないか、としばらく考えていている。正直段々面倒になっていたところだ。方法『ろ』の場合 d = 4l + 2 (l>=4) となることは自分でも納得出来たんだけど。
とそこまで考えて我に帰る。こんなことつきつめて一体なんになるのか。<ちーた>や<にーね>の影響が出ているんだろうか。
「<えぬ>も見ようよ」
と<へる>が僕を誘ってくる。<えぬ>、しつこいけど、これもあだな。この家ではそう呼ばれている僕は、居候とかホームステイとかまあそういう類で、一緒に暮らしている。ものすごくざっくりいうと、見聞き体験したことをまとめる、というのが僕の仕事というか事業というか、うまく対応する言葉を思い付かないが、自分の行うことである。この家族を調査の課題の一つにしているわけだ。僕は「観察」という表現をしている。
こちらに来た、というよりは放り出されたの方が近い気もするが、当初は意思疎通もままならない状態であった。なんやかやあって、居場所も出来たし、「観察」課題も決め、成すべきことも出来た。行きががり上、<ちーた>には僕のしていること、「観察」を詳しく説明している。その話をした時に<ちーた>は「マシンマン……、とは違うか」とかつぶやいていたけど、未だにその意味がわからない。ましんまん。妙に記憶に残る言葉だ。麻疹マン? なんじゃそりゃ。
「<えぬ>、見ないの」
<へる>がもう一度誘ってくる。
「あ、ごめん。ぼうっとしていた。見るよ」
サザエさんは、国民的番組と聞いている。ある意味家族というものの雛形だろう。——そんな風に思っていた日が僕にもありました。
僕の馴染のある家族は、<ちた家>、イソノ一家と二つしかないが(最近はその前の番組に出るさくら家も加えてもよい)、最近、それ、ちょっと無理がある、という気がしている。最初の選択を誤ったかな。
◇ ◇ ◇ ◇
いつものように<ちーた>が終わりの歌のところだけ見たり(<ちーた>は本編はあまり見ない)、その後夕食を取ったり、片付けたり、などをこなして、今は<ちーた>、<へる>、僕の三人でまったりとしている。<ねむ>と<にね>は風呂だ。僕はいつも通りぼうっと二人の会話を聞いている。
「今日のサザエさんで思ったんだけど」
と<へる>。
「カツオって頭悪いのかな」
なんつう質問なのか。
「ふむむ。まず、頭悪い、という言葉の意味をきちんと決めないといけないと答えにくいんだけど」
と<ちーた>は続ける。
「それはよしとして、作り話に対して真面目に答えるのも変かもしれんが、カツオってすごく頭がいいんだと私は思うな」
「えっ、そうなの。テストの点数は低かったよ」
「頭がよい、というのはテストの点数だけでは測れない、というのが私の今までの実感だね」
「そんなものなの」
<へる>にはちょっと難しいか。単純な世界に生きているし。
「カツオってさ、よく変ないたずら思いつたりさ、怒られないための波平さんへの言い訳を考えたり、とかさ、誰も考えつかないようなアイデア出したり、とかさ、実際身近にいたら、すごく頭の回転が早くて、頼りになると思う。確かに学校の勉強は苦手なのかもしれないけど、カツオの真価はそれ以外のところで誰よりも発揮されていると思うげんよ」
「そう、なのかな」
「いろんな頭のいい人っているんだよ。もちろん勉強も出来て頭がいいって人もいるんだけど」
そりゃあね。
「世の中は」
そう<ちーた>がいえば
「解決を求めている問題であふれている」
<へる>がすかさず。<ちーた>の好きないい回しだ。度々出て来るから<へる>もそらんじている。
「そう。そして、あっさりと誰も思いつかないようなスマートな答を出す人が沢山いる。<にーね>みたいにね。私はそういうの出来ないからさ、本当にうらやましい、といつも思っているげん」
さらっと<にーね>のことほめますな。本人いないのに。
「私なんかさ、なんかの話題の時に、相手に『いい意味で頭悪いですね』、ていわれたことがある。私の話の内容は覚えていないんだけど、それだけは忘れられなくて未だにどういう意味なのかわからない。それはほめられたのか、けなされたのか」
「いい意味なんだから、ほめられているんじゃないの」
「さらにややこしくなるんだけど、別の人、別の機会に『悪い意味で頭いいですね』といわれたこともある。どっちなんじゃい」
「それも、ほめて……いるようないないような」
「悪い意味なんだしね。モリアーティ教授がこれにあてはまりそうなので、やはり悪い方なんだと」
「もりあ? なにそれ」
「今度ホームズの最後の事件でも読みましょうか」
シャーロック・ホームズか。<ちーた>のすすめで何冊か読んだことがある。
「さすがに、<ちーた>をモリアーティ教授と同列にあつかうのは無理じゃなくない?」
「<えぬ>はいつも突然話に入りこむね。もちろん、モリアーティ教授の頭脳は、私のことを表した『悪い意味で頭いい』とは全然レべルが違うと思うよ。ただ、無限遠でつながっているんじゃない」
「無限遠じゃもはや全然別物だよ」
くっちゃべっている間に風呂があいたようだ。
「<へるにー>、風呂どうぞ。ところで、『悪い意味で頭いい』と『いい意味で頭悪い』とその性質を両方持つ私は実はすごいんじゃないか、と思わんでもない」
「いや、それどころか、<ちーた>は悪い意味で頭悪いこともあるから」
風呂から上がってきた<にーね>がつけ足す。
「おお、これで三冠だ。後一つで組み合わせ完成するね」
ん、また変な方向に話が進む気がする。
「いい意味、悪い意味、かける、頭がよい、頭が悪い、で、二かける二、四つの組み合わせが考えられるけど、その内三つを達成出来たと。スモールスラム、といえるんじゃないでしょうか。<にーね>、ほめてほめて」
得意気になる<ちーた>に。
「ほめるところなんかなにもないでそが」
「えー。スモールスラムだって滅多に取れないんだよ。この上グランドスラムまで望むのはちょっと多くを求めすぎだげんと思う」
「残った一つが『いい意味で頭いい』でしょ。それだけが唯一よい評価。そのほかの曖昧な三つ全部足したって、『いい意味で頭いい』一つあるだけで勝てないよ。というかグランドスラム取るより、それ一つだけにしてよ」
「ごまかせなかったか」
やっぱりいい意味で頭悪いんじゃないかな、<ちーた>は。それは結局、悪い、てことなんだけど。
◇ ◇ ◇ ◇
<へる>が風呂から上がり、<ねむ>はもう蒲団だ。
「多分私が高校生くらいだったと思うけど、サザエさんですごく印象に残る話があってね」
と<ちーた>。高校生、というと <ちーた>の年齢がいくつの時だ。それって随分前なのでは。というか、サザエさん話、まだ続くのか。
「サザエさんってそんなに前からやってるの。七 一歳とかそこらでしょ」
「十七」
「ごめん。そう、じゅうなな歳ね」
思わず口から出てしまったが、いかん。ちょっと間違えた。どうしても数を小さい位から考えてしまう。未だに前の習慣が抜けない。その間違いに<へる>が吹き出す。
「<えぬ>は大きいのに数よく間違うよね。<ちーた>の頭が今は真っ白かもしれないけど、さすがに高校の時からおじいちゃんてことはないんじゃないの」
「なーんすか、そりゃ。自分でいうのもなんだけど、さすがにじいさん、てことはなかったと思う。白髪は数本はえていたけどね」
「あったんかい」
「え、<ちーた>、高校の時から白かったの。やだなー。わたしも数年後に白髪になるのかな」
「ま、白髪の話はいいから、話戻すよ。サザエさんでカツオが新しい時間割表を思い付いて、教室に広める、という話があって、それが当時はあまりに画期的に感じてしばらく使っていたんだよね」
「時間割表? 一時間目国語、とか二時間目算数とか、あれ」
「そうそう。どういうアイデアか、というと、前日との違いを表にする、という方式」
「んー。よくわからない」
<へる>はぴんと来ていない。
「つまり、例えば月曜日になにか持っていくよね。それを基準にして考えて、火曜日は月曜日の持ち物から何を足して何を引くか、という表を作るわけ。例えば +理科 +社会 -音楽、とかね」
ほほう。
「各曜日それぞれ +X -Y の公式をあらかじて作っておく。その当日は土曜も授業あったから六日分作った。月曜日は土曜日からの差ね」
つまり、
「公式に合わせて、鞄からどの教科書類を取り出して、どれを追加する、という風に準備するわけか」
と僕がまとめて<へる>もぴんと来たようだ。
「わかったの、<へる>」
「うん」
「アハ体験?」
なにそれ。
「その言葉はいつものようにわかんないけど、一つわかった。<ちーた>って土曜も授業あったの」
そこかい。
「あったんです」
「<ちーた>の高校時代って大昔なの。<ちーた>ってやっぱりおじいちゃんなの」
「論点を戻さんでげ。それに論理がおかしいげ」
「ん、そうか。そういうの思いつくなんて、確かにカツオ頭いいのかも。」
と<へる>。ようやく納得したかな。
「で、<ちたじいさん>、話続けてよ」
と<にーね>が先を促す。
「<にねへ>は続けてほしいんすか、やめてほしいんすか。ま、いい。で、サザエさんではカツオが思いついてクラスにあっという間に広まったんだけど、落ちはカツオの公式作成に間違いがあってみんなが忘れ物する、という」
「いつも思うんだけど、<ちーた>細かくてどうでもいいことは忘れないね。大きいことはぽろぽろ抜けているのに」
<にーね>はいつもそれに不平をいっている。
「……話もう一回戻すよ。この新時間割表、とてもいいと思って高校の時実践していたんだけど、使っている内にいくつか困ることがわかった」
「公式の間違い以外にってこと?」
「そう、それは完璧、という前提でね。一つは初期状態が必要、ということ。最初の日だけは加減の公式で表せないから別に用意しないといけない。ま、これは最初に配られた時間割を持っておいてその日だけそっち見ればよい」
「で、ほかは」
僕は先を聞く。
「休みの日があったりすると困る」
「どういうこと」
「例えば月曜日学校に行くよね。祝日とかで火曜休みだとすると、火曜の準備はしないわけだ」
「もちろん」
「で、水曜日に学校行こうとすると、さて、どう準備すればいいんだろう、<へる>」
「え、わたし? ううん。公式は前の日から、ていうことは準備出来ないってことか」
<にーね>がぱっと思いつく。
「水曜日の準備する前に、月曜日の状態から公式使って火曜の準備をするよね。で、一度火曜の準備をしたところから公式使って水曜日の準備をする」
「そう、正解」
「えー、面倒くさい」
「たまにしかそういうことないんだけど、確かに面倒。一日休みならいいんだけど、連休だったり、試験休みとかで授業な日が続くと間が空いちゃうから、もっと面倒になる」
ははあ。
「例えば月曜に授業あって、火水木と三日間なくて」
と僕。
「私の時は土曜もあったから、最長で四日間連続がある」
「そうか、火水木金、と四日間ない場合は、無駄に公式を四回、じゃなくて五回か、五回分あてはめて土曜日の準備しないといけないのか」
「えー、すっごく面倒だよ」
と<へる>。私も、<にーね>も同意だ。
「その時考えたんだけど、実は五回無駄に対応する必要はない」
こういうのにすぐ反応するのは<にーね>だ。
「逆にすればいいのよね」
「ぎゃーたつ」
ぎゃーたつ、というのは「さすが」、の符牒らしい。語源不明。ここ以外で通用しないことを先日知って恥をかいた。<へる>が学校でその洗礼をあびないことを祈る。
「さすが、いい意味で頭のいい<にねへー>さんはちごね」
と<ちーた>。まだこの話題引っぱるのね。
「<にーね>がいい意味で頭よい、というのならば、夫婦二人でグランドスラムだ」
「逆ってのは?」
<へる>、グランドスラムは素通りですか。その純粋さを失わないで下さい。
「例えば土曜から月曜にするのは足す引くの公式がある。」
「うん。最初に準備する」
「足すと引くを入れ替えたら、月曜から土曜の状態に戻せるよね」
「……………あ、そうか」
「その内数学で移項というのを習うと思うだけど、それね。あるいは化学で習う可逆、といってもいい」
「移項は習った」
「そう。だから五日飛ぶ場合は一つの公式で出来る。じゃ、月曜から金曜日に飛ぶ時は」
「まず土曜に戻って、次に金曜に戻る」
「お、わかってきたね。二つでよい。順に四つ、より楽だ」
「でも木曜日の時は、どっちからやっても三つだわな」
<にーね>がまとめた。
「そう。それが最大。どうやっても三回は必要になる」
「うーん、さっきよりは楽だけど、やっぱり面倒かなー」
「高校の時、私もある日そう思った。そして解決策を思い付いた」
これは
「まさか…………」
と不安になる僕。
「最初に配られた各曜日の時間割を見ればよい」
「ですよねー」
「うん。そうすると、各曜日の時間割と、加減公式の時間割と二つ用意するってこと?」
という<へる>の疑問ももっとも。
「そう。一学期ほどそれ使って出した結論が」
とためる<ちーた>。
「結論が」
と期待する<へる>。<にーね>はなにかを悟ったのか呆れ顔。
「各曜日の時間割だけを持って、頭の中で加減を毎回考える方がなんぼか楽だった」
「ここまで来て全否定かい!」
がくっと来る僕。<にーね>の悟りはこれか。
「うん、時間割ってせいぜい、七教科くらいしかないでしょ。そうしたら毎回考えるのも大した手間じゃないんだよね。まあ、あえていうなら授業の順序は持ち物に関係ないので、最初に配られた時間割表を教科ごとに整列することぐらいかな。それやらなくても大したことはないけど」
「その頃から<ちーた>は<ちーた>だったということね」
「こういうこと思いつくカツオは本当に尊敬するけど、実用的ではなかったげん、と。いい方法だと思ったんだけどなー」
<ちーた>は時に悪い意味で頭悪い、というのはこういうところなのかな。いい意味で。あれ、なんだか混乱してきた。
「で、それはかなり前の話なんだけど、最近、ふとその加減時間割のこと思い出して、ああ、これって、要するにこういうことだな、と思ったことがある」
「要するに?」
「要するに?」
「ようするに?」
三人声がそろう。
「そう。要するに、git と mercurial の違いってことだ」
「全然要すってないよ!」
僕は大声出してしまった。<にーね>と<へる>はぽかんとしている。
「git と svn の方がいいかな」
「そういうことじゃないし」
「git と bazaar ってこと? <えぬ>氏、なかなか渋いね」
そこに<にーね>が割りこむ。
「その ぎっと って方は変わらないのね。つても、何の話かわからない」
「うまく説明出来ないんだけど、大まかにいえば、電子的な資源の変更履歴を保管する仕組だね。git, mercurial, svn, bazaar、どれもその時に計算機で使うプログラムの名前、といっていい」
<へる>は未だにぽかんとしている。そりゃそうだ。
「<へる>には難しいかと思うんだけど、いずれ<へるげっしょん>には Linuxの英才教育を、と思っているので、その時にきっちりと説明しますわ」
僕はその練習台なのか、<ちーた>の趣味なのか、Linux を使っている。最初はなんにも疑問に思わなかったけど、どうやらそれほど多いわけではないみたい。やっぱりサンプルとしては偏っているなあ。
<ちーた>の手ほどきにより、僕はいろいろな場面で git を用いているので、git をおぼろげながら知っている。<ちーた>は<にーね>に説明をはじめた。うわ、説明するんだ、この流れで。
「文書、でもプログラムのソースでも、なんでもいいんだけど、長い時間かけて書いたり、考えながら書いたりしていたら、どうしても推敲と同時進行になるよね」
「すいこうってなに」
「<へるげん>もよくお話書いているでしょ。それ、途中まで書いた後に、前書き上げたところまで戻って直したくなることないかな」
「あ、ある」
「推敲ってのは文章を作り直すこと。例えば月曜日に A,B,C 三行書いた。火曜日に D, E, F 三行を追加した。水曜日に、E の行を修正した。木曜日に C の行を削除した。金曜日に A と B の間に G の行を入れた。なーんて感じで文章は膨らんでいくのはよくある。中には最初から最後の行まで一切修正せずに書ける人もいるかもしれないけど、そうじゃない人が多いと思う」
同意。何度も推敲してもまだ足りない気がするんだよね。
「この文章の作り直しの歴史をところどころ記録してくれるのが、Version Control System, 略して VCS とよばれる道具なわけ」
「わたしはそういうの使っていない。ファイル名に日付をつけるとかしている」
と<にーね>。
「うん。それでもいい。別にこういうの使わなくたって、出来る場合は沢山あると思うんだけど、例えば複数の人で編集したり、ものすごく長い資料を編集したり、とか、道具があると便利な状況ってのはいくらでもある。そういう時に VCS を使うと、特に機械的に出来るような作業に関しては非常に便利に使えたりする」
「そんなものかね」
「私はかなり前から使っちょる。ずっと一つのものではなくて、SCCS, RCS,CVS とまあみんなが通る道をたどって、CVS の限界を感じて、 subversion, GNU arch, bazaar, monotone と少しずつ試して、特に 初期の monotone の遅さに我慢出来なくなって、まさにその時開発が進められていた git に乗りかえて、比較のため mercurial を同時に使って、結局 git 一本に絞る、という、よくあるパターンですな」
「ちんぷんかんぷん」
もう誰もついていっていない。
「あ、もんげ」
あ、この「もんげ」というのはコマさんの「もんげー」とは全く関けいない。謝罪を表す符牒である。こういうの途中でまぜないでほしい。
「それはおいておく。git, ぎっと、はその推敲の歴史を、あらっぽくいえば、そのまま取っておく方式。時間割でいえば、月曜はこれ、火曜はこれ、ていう学校でくばられるやつね。全部知っているわけではないけど、git 以外の多くは、例えば mercurial, マーキュリアル、ではそのままではなく、一つ前との違うを記録する。月曜はそのままだけど、火曜は月曜にこれを加えます、水曜は火曜からこれを引きます、という、加減方式の時間割」
「ふうん。なんで二つの方式があるの」
「それはちょっと説明しづらいけど、さきほどの休日があったらどうするか、てのに当たらずとも遠からず、てところ。git 方式だと、とにかく月曜日はこれ、水曜日はこれってすぐ情報が出てくる。その情報を元に今日は今の状態からなになにを足して下さい引いて下さい、という情報を作り出す。mercurial 方式だと一日飛ばして木曜の情報下さい、ていうと、人の見えないところで、足したり引いたりをして、最後の情報を見せてくれる。どちらもある場合には効率がよいか、それ以外の場合は悪い。時間割の種類、教科の数、一年に何度時間割を変更するか、などによって決まる。最近は計算機もかなり進歩しているから、加減の計算だってすごく早い。だからそんなに違いが見えることは少ないと思う」
「………でさ、なんの話してたんだっけ」
「git の思想」
「いや、ちごでしょう」
「あ、カツオが頭いいのかどうかだよ」
「うん。カツオは頭いいと思う。<へるげん>も見習うところは見習って」
「ん」
「明日から git を勉強しよう」
「いきなりそこからはきついよ」
やっぱり、<ちーた>が悪い意味で頭いい、ていわれるのもわかる気がする、結局どっちにせよ、悪い、てことなんだけど。といっても、悪い意味でなく(あれ?)。混乱してきた。
フィクションです、念のため。
git mercurial などで検索して来た方、すみません。求める情報はありません。