トップ 追記

日々の破片

Subscribe with livedoor Reader
著作一覧

2015-05-05

_ 突然漂流教室

妻がレンタルマンガで漂流教室を借りて読んでたので、おれも読んだ。

子供(といっても小学高学年の頃だと思うが)の頃、少年サンデーの連載を途中まで読んだが、怪虫のエピソードのところのあまりの恐怖に読むのやめてしまったまま読まずじまいだったのだった。どれくらい恐怖だったかというと、今でも舟虫とか見ると飛び上がって逃げ出すくらいで磯には近寄れないくらいの恐怖だ。

それにしても、読んでつくづくと、楳図かずおの溢れるばかりの才能に舌を巻く。

次々と襲い掛かる難関はちょっとぶっ飛び過ぎのきらいもあるけれど(たとえばペストとか)子供の知識で恐ろしさが十二分に理解できるように巧妙に練り込まれているし、伏線の回収っぷり、泣かせどころ、リアリティ(ペストとかが出てきてどこにリアリティとは言えるが、にも関わらず恐怖の質感が現実的なのだ)、まったく見事なものだ。

ただ、70年代ならではの恐怖(ちょうど今の中国みたいな強烈な公害―汚染による奇形生物の発生であるとか成分分析ができていないためあまりにも怪しく謎に満ちた汚染大気(スモッグというのだが今は見かけない言葉だ)やらゴミの処理ができない状態(今でこそ燃焼力の強さとそれを許容できる炉の建設などによって石油製品も燃やせるようになったが、当時はプラスチックの廃棄がうまくできないため大問題となっていた)などが、その当時にはリアルな恐怖の未来として表現できたし、それが現実的な恐怖の触感として生々しさがあったのだが、現在の目から見ると、ちょっと怖がり過ぎのきらいも無いわけでもない(でも、このあたりの恐怖がトラウマになっていると、いわゆる「放射脳」的な感覚としていろいろと今でも目にする大仰な反応となるのかも知れない。その意味では現代にあっては、70年代的な恐怖というものを理解できる実に興味深いマンガだ)。

しかもラストには完全に感動、感服してしまった。異様な恐怖や残忍な殺し合いの果てに、こうまとめるかというくらいにきれいにまとめて感動させるのだから、楳図かずおは本当にすごい作家だ。

物語はいきなり小学校がまるごと現在の現実から切り離されるところから始まる。学校のあった場所にはただの穴がある。主人公の同級生で忘れた給食費を取りに家に戻った遅刻生徒を用意することで、外側からの観察をうまく処理している。

一方、小学校から見ると校門の外は砂漠だ。砂漠の外の危険性というものを表現するために、すぐに何人か生徒が死ぬ。

主人公は、おそらくうしおととらに影響を与えたに違いない(性格と髪型)うしおのような小学校6年生。地味に支えてブレーンとして知識をそれなりに(しょせんそれなりでしかないところもリアリティがある)伝えることができるオバQのハカセのような目つきのおかしい5年生(6年生かも)、同級生のちょうどドラエモンの出木杉そっくりな優等生の学級委員長、主人公と時空を超えて母親とつなげることができる脚が悪い5年生の女の子、主人公のことが気になる6年生の女の子、3歳児、取り残された給食納入業者、先生たち、それから1970年代現在に居る母親と父親(当時の良き父親像らしく、あまり介入しないが、ここぞというときは理解者としてサポートするのがおもしろい)といった登場人物が(子供が読んでも理解できる程度に)複雑にそれぞれの思考によって活動しながら、生き残るためにあがきまくる。

当然のように、大人(力があってでかくて車を運転できて嘘を平然とつく)と子供の関係、子供同士の関係、暗黒、食糧不足、水不足、次々と屋上から飛び降りる子供たち、宗教によるごまかし、異様なキノコによる侵略、病気、暴力、これでもかこれでもかとすごい勢いで子供が感じる恐怖が襲い掛かって来る。

主人公は決して完璧超人ではないので、大事な話を聞かずに味方を殴って駆けだしたりするし、副主人公も平気で大事な約束を忘れたりもする。出木杉君の役回りの子供も出木杉君ならではの苦悩もあり、反逆もあるし、裏切りもある。

漂流教室〔文庫版〕(1) 小学館文庫(楳図かずお)

少年サンデーのマンガだな、と思う点があって、母親と子供の関係がすごく強く表現されている。

少年マガジンはおそらく永井豪のススム君のせいもあって(いや、ない。想定読者層が少し上だからだろう)親はほとんど物語に介入しない。唯一の例外が星飛雄馬と親父の関係(母親ではない)くらいだが、それにしても方向が違う。

怖すぎる永井豪 (トクマコミックス)(永井 豪)

少年ジャンプは友情!なのでそもそも家族はあまり描かれないし、描かれても母親は主人公に食事を提供し、父親は主人公に金銭的な保護を提供する役回りがせいぜいだ。

が、少年サンデーはなぜか印象的な作品は主人公と母親が相当強い関係を持っているし、主人公の家庭とそこでの生活が描かれることが多く感じる。なんでだろう? ママさんおかわりのオバQにしてもそうだし、そこが小学館というものかも。


2015-05-04

_ 糖衣構文

ライブラリの内側を実装する場合と外側を実装する場合の一番の相違は、糖衣構文の下の生な実現方法についての知識の必要性の有無だ。

IDispatchとIDLを知らずにCOMのコンポーネントを開発するのは相当に無理がある(例:MFCを使ったActiveXコントロール)。同様に、LINQで操作できるオブジェクトの開発を行うには、IQueryableを知らずに何かするのは無理がある。そこまで行かずともforeachできるようにするにはIEnumerableを知らずに作るわけにはいかない。

でも、外側だって、それを結局は知らなければデバッグも何もできないのではなかろうか。

それに、DSL的なデータ構造を使ったプログラミングをするには、オブジェクトのみならず型も抽象化して扱う必要があるので、リフレクションや糖衣構文の下にある本来の呼び出し方法を知らないと無理がある(たとえばIDEのインテリセンスに頼って500個のオブジェクトに対する5000行列挙された手続きを読むより、500要素の配列を列挙してループで操作する10行のコードのほうが読みやすい)。

というわけで、結局は生なAPIを知らなければ相当辛い。

入門書に歯がゆい思いをするのは、そこの説明がおざなりであったり、無かったりすることだ。


2015-05-01

_ 子供のプレゼント

小さな町の小さな百貨店、お母さんと贈り物の思い出』を読んでいて、子供からの最初の(お金を使う)プレゼントのことを思い出した。

その頃、小遣いをあげていたかどうかは全然覚えていないのだが(小学校の4年か5年で、おそらくあげていないような気がするが、お年玉貯金みたいなものは持っていた)、とにかくそれが最初の買い物によるプレゼントだった。

秋頃だと思うのだが(夏休みの可能性もある)、家族で科学未来館へ行きいろいろ観たあと、1階のお土産物売場に寄った。で買うでもなくうろうろ見ていたら、どうも子供の動きがおかしい。何かこそこそしていて、そのうち母親の方へ行き何か喋りあっている。そのうち、何かを買っているのが見えて、おれではなく、母親のほうにねだりたい何かがあったのかな? とか思うと同時に、なんとなくおれに何かを買ってくれているのかなというのは感じた。が、その後何もくれなかったのでそのまま忘れてしまった。

というようなことをさらに忘れたその年のクリスマスだ。

子供がおれにプレゼントをくれた。何だろうと開けてみると(でも確か、包みは科学未来館のものだったようで、その瞬間に科学未来館のお土産物売場での怪しい動きは思い出した)、宇宙飛行士の携帯ストラップだった。

おれが欲しそうにしていたから、とか理由を言われたような言われなかったような、そのあたりの記憶は全然ないが、宇宙を飛行できるくらいに嬉しかったのは覚えている。物を買ってプレゼントにして、しかも時期が来るまでずっと待っていたとは。大きくなったなぁという嬉しさだ。子供からのプレゼントの本質って、おそらくその成長したなぁという感覚なのだと思う。それは同時に、ここまで育てたという自負心をくすぐるものでもあるのだろう。まったく得難い感覚だ。

その後、数年もたたずに携帯ストラップとしてズボンの尻ポケットと手の間の往復旅行に酷使された宇宙飛行士は、腕が無くなり脚が無くなり、ついに紐以外はどこかへ飛んで行ってしまってデブリと化したが、最初にもらった(買い物された――幼稚園で作ってくれた父の日の画とかはまた別の話だ)プレゼントだという名誉はおれの記憶にしっかりと残っている(が、書いてみたら、覚えていることは少ないものだ)。

次にもらったプレゼントは、修学旅行のお土産のウサギの小さな置物で、これは引き出しの中に無事な姿でしまわれてある(数年はPCの上に載せていたのだが、当時の環境もあって雪ウサギが茶色い野兎に変わってしまって、これはいかんとしまったのだった)。


2015-04-20

_ 吉田さんの家を訪問

群馬から東京へ戻るのに、上を通れば北陸自動車道で、下を通れば中山道ばかりでつまらないので、カーナビが一番勧めないコースを選んでみた。

254号線だ。今調べたらこれが川越街道なのか。

ちょっと妙な感じもする道で、特に藤岡市のあたりは変なのだが、荒涼としているのだ。途中、いかにも研究所という感じの建物が左に見えて、なんて書いてある? と妻に看板を読ませると原子力研究所で、荒涼としているだけに、そのての研究所があるのかなぁとか思いながら先へ進む。

神流川(これでかんながわと読むのには驚いた。橋の手前には「神流川」と書いてあるのでじんりゅうがわかなとか思うのに、橋を渡りきると平仮名でかんながわって書いてある。しかも、えらく長いらしい自転車専用道(と書いてあるし、見ると車では入れない細さの舗装道路がえんえんと続いているのが見える)を越えて埼玉へ入る。

途中、右へ行くと秩父だなというところを左に行ってしばらくすると、山の中だ。ここらあたりが嵐山かと、なるほどところどころに渓谷はあるし、不思議なところだ。

さらにクレヨンしんちゃんの画が書いてある妙にテカテカしたピラミッド(シタデルに花崗岩を奪われる前の、本来の光り輝いていたギザのピラミッド)みたいなでっかな建物がでてきて、なんだろう? と思いながら(どこかの工場だったようだが忘れた)進む。

さらにしばらく進むと、どーんとでっかなホンダの工場地帯が出てきてびっくりした。

そのとき、右側に、「重要文化財 吉田家住宅」と書いた看板に気がついた。

なんだろう?

だいたいこんなところに重要文化財というのも良くわからないし、寄ってみることにした。妻がスマホで調べると、埼玉県最古の住宅(約300年前で元禄期あたり)だということらしい。蕎麦屋をやっていると書いてあるというが、別に腹は減ってないなぁとか言いながらとりあえず向かう。

すると、山があってふもとに家があって道路があって、田畑があって川があるという典型的な日本の田舎風景となった。

そこの山のところに、吉田家があった。

藁葺の立派な家だ。

中に入るとタケノコがバケツに入って売っている。そのほか、唐辛子だのいろいろ売っている。観光地に来た観光客だから、あとでタケノコを買うかと考えながら、うろうろする。

先客がいて、おばあさんがいろいろ説明している。一通り説明が終わったらしくこちらに来たので、とりあえず団子を頼んだら、もう遅いからおしまいだという。

はて団子はあるのに、と思ったら、囲炉裏で焼くのだが火が消えてしまったのだという。

でも燠火があるから、大丈夫かも、とまだ赤い炭を寄せてそこに網を置き、あとは自分で焼けと言われた。醤油味は適当に焼けたら竹の筒に入った醤油につけて、もう一度焼き、全体が乾いたらもう一度漬けて、さらに炙ったら食べられる。餡子のほうは、これでお終いだから全部使っていいよと弁当箱を渡された。

で、神妙な顔つきで団子をころころ焼いたりしてみた。

写真を撮ろうとしたら家の中が薄暗いからか、燠火だけでえらくハレーションがおきて、おもしろい。

なかなか香ばしいなと食っていると、米の粉だけで作った団子だよ、と教えられる。新粉だな。

トイレへ行くかと裏のほうから出ようとすると、この扉は低いから頭をぶつけないように気をつけろと言われた。確かに低い。ところが、この右手は馬小屋なので、馬を入れるときは、この扉全体を開けるのだ、と二重構造を見せてくれた。

うむ、猫扉と人間扉の関係が、人間扉と馬扉なのだな。

で、普通はこの高さで十分だが、あちらの(と、正面の最初に入った扉をさす)はさらに高い。

なぜ、そんなに高いのかというのは、実際のところはわからないのだが、入って左の一段高いところには畳が敷いてあったらしいということが調査してわかった(井草でも出て来たのかな?)。本来、百姓は畳は使えないことになっている(商人が絹を着てはならない、というようなことだな。封建時代というのはくだらないルールが多い)。なのに畳があるということは、おそらく、そこには馬に乗ったまま代官なりなんなりが入って来てそのまま通すようになっていたのではないかということらしい。

で、こちらの馬小屋だが、なぜこれが馬小屋とわかったかというと、土間より一段低くなっている。地層が異なるのであとから埋めたということがわかったのだ。馬はイバリをすれば糞もする。土間と同じ高さだと人間のところに流れてきたりして厄介だ。というわけで一段低く作るものらしい。ここは2頭入れるサイズだったのだが(そういうふうに掘り下げられていた)、一度屋根を葺き替える時に削ってしまったのではないかということで、こないだ修繕したときにきっとこうだったのだろうという形に直してみた。

(どうも、長い年月の間に改築したり改装したり生活習慣が変わったりで、内部にいろいろ手が入って元々どうだったかは学術調査していろいろわかったらしい)

というように、話はおもしろい(プロのガイドといえばプロのガイドだからうまくても当然かも知れないが、この家の関係者だよなぁ多分)が、「らしい」がえらく多い。

本当に、徳川幕府はバカだ。

ひまなときに、農民ったってこれだけでっかな家の持ち主だ。筆と紙とほんのちょっとの教育を与えれば、いろいろメモを残しただろうに(畳奉行ですら残すのだ)、あの連中がばかで、くだらない政策をとるから、何も本当のところはわからんじゃないか(もちろん連中の目論見としては、字が書けて読めれば、軍事行動のための計画、作戦伝達などが自由にできてしまうから、それを政権としては避けるためという立派な名目があるわけだが、おかげで未来のおれたちにはこの国のことが良くわからないというおまけがついてしまった)。

元禄御畳奉行の日記―尾張藩士の見た浮世 (中公新書 (740))(神坂 次郎)

と、こういう話を聞くと、つくづく徳川家康の先見性の無さを思い知るのだが(結局、おそれていたとおり、薩長に食われたわけなんだから、国民(封建制だから自国の人間=天領の人間ということになるのだが)に教育の自由くらい与えておけば良かったのだ。そうすれば、赤報隊あたりの下劣な宣伝にころりとだまされて甲州-秩父の人間が薩長を歓迎するなどということもなく態勢を整え直すことだってできたかも知れないのだ)、それでも知らないことばかりでえらくおもしろい。

小川町は紙の産地でもあるので、明り取りには紙(ということはつまりは障子なのだが、桟が狭いのでなるほど、明り取りには良いものなのだとわかった)。

煙突で煙を逃さないのではなく、煙をまんべんなく屋根に下から回すことで、酸による虫避け剤の塗布効果にする。

茅葺屋根は、ツーバイフォーに乗っているのと同じ。乗っているだけなので、隙間をそこら中にあけておくので、煙はそこらじゅうから出て行く。乗っているだけといってもすさまじく重いから飛ばされたりはしない(乗っているだけと聞いて不思議に思っておれが聞いたのだった)。

夏の暑さをしのぐことのほうが重要だったのだな。

で、筍を買って帰った。


2015-04-17

_ 15年前に気付かなかったこと。

ActiveScriptエンジンにJScriptを選択した場合の一番の問題はin/outパラメータにある。

in/outパラメータというのは、具体的には、引数に対して値を返せるものだ。Cならお馴染みなので、Javaでもやりたがる人がいて、無理矢理配列にしたりするあれである。

void c_func(int* p) {
  *p = result_value;
}
を無理にJavaでやろうとして
void java_method(int[] p) {
  p[0] = result_value;
}
で、ActiveScriptは本来的にVBScriptがプライマリ言語なので、当然のように呼び出し可能なCOMコンポーネントにも山ほどin/outパラメータが出てくる。
interface COMobject {
  [id(1)] HRESULT hello([in,out]BSTR* greeting, [out, retval]long* pResult);
}
でVBScriptだと
dim greeting
If object.hello(greeting) = 0 Then
  WSH.echo greeting '結果が返っている
End If
で、このてのやつをJScriptから呼ぼうとすると型エラーとなる。
var greeting;
if (object.hello(greeting) == 0) {  // エラー型違い
  WSH.echo(greeting);
}
と言う問題があって、JavaScriptを使いたくてもVBScriptを選択せざるを得ないことがあった。
これは簡単なラッパーをかませることで対応できると気付いた。
HRESULT Wrapper::Invoke(....) {
  IDispatchEx* p; // JScriptのオブジェクトはIDispatchExなので話が簡単
  pDispParams->rgvargs[0].pdispVal->QueryInterface(IID_IDispatchEx, (void**)&p);
  DISPID dispid;
  p->GetDispID(CComBSTR(L"value"), 0, &dispid);
  VARIANT var;
  p->InvokeEx(dispid, LOCALE_SYSTEM_DEFAULT, DISPATCH_PROPERTYGET, &noargs, &var, 0, 0);
  p->Release();
  pDispParams->rgvargs[0].vt = VT_BSTR | VT_BYREF; // idlのin,outの型に合わせる。
  pDispParams->rgvargs[0].pbstrVal = &var.bstrVal;
  HRESULT hr = wrappedInterface->Invoke(....);
  return hr;
}
呼び出し側は上に合わせて
  var inoutparam = { value: '' };
  if (objectWrapper.hello(inoutparam) == 0) {
    WSH.echo(inoutparam.value);
  }
もっともJavaScript同士と同様に、値オブジェクトの利用が正解だとは思う。
function hello() {
  return { greeting: 'hello world',  // Javaでもこのくらい簡単に記述できれば配列をパラメータにして結果を返すなどという妙なことをする人は出て来なかっただろうな。
           resultCode: 0
         };
}
と同じように、
interface Result {
  [id(1), propget] HRESULT greeting([out, retval]BSTR* p);
  [id(2), propget] HRESULT result([out, retval]long* p);
}
で、
  var r = object.hello();
  if (r.result == 0) {  // なぜ戻りコードが必要かは謎。エラーなら例外で良いのではなかろうか。
    WSH.echo(r.greeting);
  }

2003|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|

ジェズイットを見習え