某日記

(中期)

平成16年9月11日(土曜日)

昨日

肉。うまかった。

夢見るように恋したいッ! / 東雲 水生」 「フェアリーアイドルかのん(1) / 袴田 めら」 を読んで寝た。

今日

ドトールでマターリ。

ヒープ

ヒープ 。 ヒープの空きが断片化してるんでしょうな。

たとえば、全部で 10 ブロックのメモリがあって 2 ブロック使われてる場合に、 この 2 ブロックがヒープの端にあれば残り 8 ブロックを連続したメモリとして 獲得することができますが、そうでなければ 8 ブロックの連続したメモリを 割り当てることはできませんな。

言語や実装によっては空き空間をつめてくれる場合もあります (コンパクション)。しかしそれが期待できない場合も多いです。 C 言語を例にすると、malloc はコンパクションすることが 無理なインターフェースになっています。 まあ、デマンドページング環境では実メモリを再配置可能で、 しかも仮想空間が十分広い(という建前がある)ため あまりコンパクションは必要ないともいえます。 一方、Win16 の GlobalAlloc/LocalAlloc はコンパクションを 意識したインターフェースになっていますね。

で、こういうのへの対策は、 「まず最初に必要なメモリを予約して割り当ててしまう」という方法や、 「連続したメモリを必要としない実装をする」という方法があります。 Java だったら、もしかしたら明示的に GC を走らせるとコンパクションを してくれるのかもしれませんが、まああまり期待できませんな。

無題

(仮性から ぎゃるぐる(エロサイト注意)。 俺も引いた、 というか No.006 の方がいいと思うのですがどうでしょう午の人 ワラタ。

にしても、ラブドールデリバリなんてあるんだな。

そういえば 揉めんたんメモ。

平成16年9月13日(月曜日)

昨日

ドトールでマターリ。

「ビーナスは片想い (10)(11)(12)/ なかじ 有紀」を読んで寝た。このへんのいなばっちが大好きなのだ。

wxWidgets と wchar

について調べてみた。

発端。 どうもこの辺読んでると Unicode mode というのは 「文字列操作で常に wchar_t を使うモード」のことらしいのだが (要するに Win32 でいえば W で終わる関数を使うモードですな)、 ソースを見てると wxUSE_WCHAR_T と wxUSE_UNICODE の二つの define があってよくわからん。

しょうがないからソースを読んだらどうやら次のようなことらしい:

  1. wxUSE_UNICODE が真ならば文字列操作は wchar_t ベースで行われる
  2. wxUSE_UNICODE が偽ならば(wx_USE_WCHAR_T の真偽に関係なく) 文字列操作は char ベースで行われる
  3. wxUSE_WCHAR_T が真ならば wchar_t サポートが追加される

もう少し言えば、wxUSE_UNICODE のほうが Win32 の __UNICODE に相当すると。 wx_USE_WCHAR_T は Win32 には相当する概念が存在しない。 しいていえば、 「MultiByteToWideChar()/WideCharToMultiByte() が存在するかどうか」 を示すフラグと言えるか。

次に 「wxUSE_UNICODE が偽の時の wchar_t サポートってなんぞや」 という疑問がでるので調べると、

  • wxString クラスの内部はあいかわらず char ベースだが、 しかし「ワイド文字列による初期化や代入」が追加される。 wxString にワイド文字列を食わすと、 内部で自動的にマルチバイト文字列に変換されて保持される。
  • マルチバイト文字列バッファとワイド文字列バッファとの間の 変換クラス群 (wxMBConv と仲間たち)が使えるようになる。
という感じ。ちなみに wxUSE_UNICODE が偽でも ちゃんとマルチバイト文字列の表示はできるのだが、 しかしながら wxString::Len() が文字数ではなくてバイト数を返してくれたりするので、 場合によってはインチキなことになる。

ところでこの wxMBConv というのがクセモノでして、 UNIX 環境では wxMBConv クラス自身は libc の mbsrtowcs とかを使って実装されてる。 ところが、wxMBConv はいくつかのサブクラスを持っていて、 こいつらはことごとく wchar_t の内部表現が UCS であることを仮定してる。 たとえば wxMBConvUTF8 は 「UTF-8 バイト列をデコードして得た 32bit 値を wchar_t にそのまま放り込む」なんてことをやってるし、 任意のコードセット名から wchar_t を得る wxCSConv というクラスでは、 「iconv_open() に "UCS4-LE" (あるいは "UCS4-BE") を渡して iconv() に wchar_t の配列を渡す」 という荒技を使っている。

いずれにしろ、ベースクラス wxMBConv で得たワイド文字列と、 wxMBConv の派生クラスから得たワイド文字列に互換性がないし、 それどころか後者は ISO C の規格違反だったりして。

ちなみに、 「現在の locale のエンコーディングのマルチバイト文字列からワイド文字列を得る」 方法としては、wxConvCurrent 変数を使う方法と wxConvLocal 変数を使う方法があるのだけれど、 前者のデフォルトは wxMBConv のインスタンスを指しており、 一方で後者は wxCSConv のインスタンスなので、 この二つの返すワイド文字列は互換性が無いので注意。

いやまあ、UCS Normalization 自体は否定しないけど、 頼むから wchar_t の誤用はやめてくれと思うわけでして……。 百歩譲って、誤用するなら誤用するのでもいいけれども、 libc と混ぜて使わないでくれ、という感じ。

しかしながら、そういう不満を捨てれば wxMBConv クラス群は 割と便利だったりする。 たとえば、UTF-8 を現在の locale のエンコーディングに変換したい場合は、

wxWCharBuffer wtmp = wxConvUTF8.cMB2WC("UTF-8文字列");
wxCharBuffer tmp = wxConvLocal.cWC2MB(wstr);
wxString str(tmp);
などとするだけ(ここで wxConvLocal の代わりに wxConvCurrent->cWC2MB(...) と書くと CSI 環境で動かないので注意)。 これはもっと短くかけて、
wxString str(wxConvLocal.cWC2MB(wxConvUTF8.cMB2WC("UTF-8文字列")));
でもよいし、あるいは
wxString str(wxConvUTF8.cMB2WC("UTF-8文字列"), wxConvLocal);
でもよい。wxString はこういう風に明示的に wxMBConv クラスを 引数として取る関数が存在するのだけれども、 wxUSE_UNICODE の真偽によって無視されたりして使いどころが難しい。 たとえば最後の形式では、wxUSE_UNICODE が真の時には実は wxConvLocal は無視されてる。逆に、wxUSE_UNICODE が真だと
wxString str("UTF-8文字列", wxConvUTF8);
とすら書けるのだが、wxUSE_UNICODE が偽の時には wxConvUTF8 は無視されてしまう。

というかまぁそれにしても一旦ワイド文字列を 介するという方法自体が迂遠なので、 もうちょっとなんとかしてもらいたいところではある。 wxEncodingConverter が使い物になればいいんだが、 こいつがマルチバイト環境では全く役たたずというのがアレ。

平成16年9月15日(水曜日)

おととい

のだめカンタービレ(10) / 二ノ宮 知子」読んで寝た。

きのう

アキバ。CD を n 枚購入。 123456

中原小麦が重度のボコーダー病に罹ってることを確認。 ナースウィッチもこの不治の病には勝てないらしい。 その上さらに音程が狂ってるとは、なかなかやるな。

平成16年9月16日(木曜日)

昨日

日向で昼寝 / ささだ あすか」を読んで寝た。

Render エクステンションのお約束

使ってみていくつか気になったこと:

Picture の fill-nearest が存在しない。 プロトコルドキュメントにはあるのに。 実装がないどころか render.h/renderprot.h にすらない。 でも、あったところであまり役には立たんわな。 こんなものは要らんので、 out of bounds したときのデフォルト色を指定できたほうがずっと便利だ。

transform が有効な時(identical mapping では無いとき)、 Picture repeat が効かない。効かないどころか絵がでない。 Xserver/fb の実装を見ると明らかにおかしい。

CompositeTriangle とかの描画では、 src の原点が図形データの一番最初の点になる。 そういう仕様にする意図がわからん。

RGBA データは pre-multiplied alpha で使いにくい。

ドキュメントにおいて pre-multiplied alpha であるということについての注意喚起が足りない。 そら Porter/Duff オペレータがちゃんと動くためには pre-multiplied alpha でないと駄目なので、 そのへんの事情を熟知してる人には自明かもしれんが、 普通の人は separated alpha しか知らんだろ。

pre-multipled alpha って、よその RGB データに A コンポーネントだけを くっつけたところで全く意味がないので、 Picture に alpha-map なんて仕組みがあるのは意味がわからん。

遅い。単純な AlphaBlt ならば、 きっと手元で処理して MIT-SHM でバルク転送したほうが速い。 もっとも、ネットワーク経由ではそれなりなのかもしれず。 でも、ネットワーク経由で使うにしては Glyph の仕組みはもう少し何とかならなかったのか。

しかしながら、こういう処理が手軽にできるようになったのはよい:
.
画像はごめんなさいフォルダからランダム。

平成16年9月17日(金曜日)

昨日

おととい読みかけだった 「日向で昼寝 / ささだ あすか」を読んで寝た。

そういえば寝る前に WOWOW で「あずみ」を観た。

gettext

gettext のファイルフォーマットにはいくつかのリビジョンがある:

  • 0.0 : 最初のバージョン。
  • 0.1 : system dependent strings サポート。 これは C99 の inttypes.h で導入された PR ほげほげマクロに 対応するためのもの。 PR ほげほげマクロの展開結果はシステムによって違うけど、 .mo はシステム非依存でなければならないため、 これを含んだフォーマット文字列は特別な処理を必要とする。
  • 1.1 : ソースを読むかぎり、 0.1 で特定の PR ほげほげマクロが使われてると落ちる問題があったので リビジョンアップした模様。 おそらく 0.1 のときに major を上げるべきだったところで上げ忘れたので、 ここで上げたのではないかと思われる。

夕方

Brombo!2 / JB プロジェクト」を聴きながら仕事。 前作のジャイアントステップスの強烈な印象はさすがにないものの、 やっぱりこの人たちは面白いわ。あいかわらずブロンバーグのベースは エレベのテクニックをアコベに持ちこんだような感じだし、 神保彰のドラムはしなやかだ。

この面白さの源泉は「フレンズ / チック・コリア」 とかあるいはステップスあたりのそれと同種なのかもしれない。 考えてみればエディゴメスもちょっと変わったアコベを弾く。 一方で神保彰はスティーブガッドというよりはデイヴウェックルのほうが近い --- しかしながら系統としては同じ線の上に乗ってる気はするが。

大学の後輩とアイリッシュバーなんぞへ行って、 フィッシュアンドチップスを肴アンド切れ端にしてエールとかを。

ピアノとボーカルのデュオの生演奏を流していて、 イパネマの娘とかそんなのをやってた。 その中の一曲、All things you are のイントロで C#7+9 → C7+9 のバンプを弾いていたのだが、 どこかで聴いたことがあるなぁとよくよく思い出してみると、 Bardstown Audio の Bosendorfer Imperial Grand のデモの中にある All things you are のそれと全く同じなのであった。 元ネタはなんなのかね。ちなみにこのサンプル CD は ベーゼンドルファーなのにスタインウェイみたいなきらびやかな音なのだが、 そのくせやっぱりベーゼンドルファーらしくこれでジャズを鳴らすと いかにもヨーロピアンな雰囲気になるところが俺好みなので、 前から欲しいと思ってるのだけれども、なかなか。

そのあと喫茶店で他愛もない話を駄弁りて解散。

平成16年9月19日(日曜日)

おととい

親指からロマンス(3) / 椿 いづみ」 を読んで寝た。

きのう

一日中家で何もせずにぼーっとしてた。

今日

ドトールでマターリ。

明日は早く起きられればどっかに行くかもしれないが、 起きられなかった、ないしは日和ったら多分一日寝てる。

ぐぐったら出てきた 若本 規夫プロフィール 。 サンプルボイスがおもろい。

平成16年9月20日(月曜日)

昨日

昨日の日記の日付を一日間違えてた。

で、 「からくり変化あかりミックス!(1)(2) / 石田 敦子」 を読んで寝ようとした。なかなか面白かった。 しかし結局寝られなかったのであった。

ので、厳密に言うと起きれなかったといえば起きれなかったのだが、 起きているといえば起きているわけで、 それで差し支えないといえば差し支えない。もっとも、 睡眠不足は日和りの理由としては申し分なく、 従って日和る前に出かけてしまおうということで、 さっさとシャワーを浴びて家を出た。

05:30。こんな時間にバスがあるはずもなく、駅に向かって歩くことにした。 もっとも、バスが始まる時間になってから家を出ても差し支えはなかったのだが、 そこは理由が理由なので仕方がない。3km ほどあるが、 普段歩いている道であるし始めのうちは平坦なのでさほど苦ではない。 しかしながら、私は根がせっかちというか、 時間溜め込み症というか、そういう一種の神経症のような持病があるのであった。 従って、歩いてゆくうちに段々時間を無駄に使っているようで気が急いてくる。 気が急いてくると足早になって汗も出る。その上、 駅の手前は延々たる上り坂だ。 「普段歩いている道なのでさほど苦ではない」と書いたが、 普段歩いているのは逆方向なのでそれは楽に違いない。 まあ大した坂ではないのだが、日和りそうなところをおして家を出てきたので、 もしも駅につく途中に日和ってしまったら道半ばどころではなく全く面白くない。 そんなことを考えているところに丁度よくやってきたタクシーがあったので、 残り 1km ほど楽に行くことにした。

駅から電車に乗り、06:20 渋谷着。 いわゆる「やられる」つもりは全くないので、 特急が使えるところではしっかりと使うことにする。 みどりの窓口で乗車券と料金券を求める。 空き席照会とかのやりとりがおっくうだったため、料金券は自販機で購入。 乗車券はややこしいので、あらかじめ書いておいたメモを見せる。 ややこしいと言ってもたったの六線区でしかないのだが、 しかしながらこれを口述するのは面倒くさいし間違いの元だから、 字を見せるのが手っ取り早く簡単だ。窓口のお姉ちゃんは使いにくそうな タッチパネルを操作して手際よく……とは言えないが、 大して待つことなしに発券してくれた。

さて 06:34。渋谷から山の手線外回りに乗りこんだ。 乗り込んで座席に座って一息ついてから「しまった」と思い当たったのだが、 もうそれは気にしてもしょうがないことなので、 とりあえず窓の外でも眺めていることにした。 天気予報では晴れのはずだったのだが、空はどんよりとしている。 ちょっと日の選択を誤ったかもしれない。まあいい。 向こうに見えていた原宿のお召し臨時ホームが消えて、 その代わりに中央線の線路が横づけになると代々木着。 代々木を出ればすぐに新宿だ。 そもそも代々木駅は新宿駅の構内みたいなもんなので、 新宿駅のホームを伸ばせば駅が一つ少なくなっていいのにと思う間も無く 新宿到着。電車を降りる。

06:45 新宿。次に乗るのはいわゆる千葉あずさ。 このあずさ 3 号は新宿 07:28 着なのである。 何が「しまった」なのかといえば外でもない。 列車が着くまでどうやって時間を潰すのか、ということなんだね。 新宿駅というのは皆さんご存じのとおり世界一乗降客数の多い駅なのだが、 それくらい人が多い駅なので、人の流れの邪魔になるものは極力排除されている。 つまり、椅子というものがほとんどない。 あまり一般には知られていないが、新宿駅というのは 単位面積あたりの椅子の数が世界一少ない駅でもあるのだ。 なんで知られてないかというと、いま私が作った嘘だからなんだけど。 まあ冗談はともかく、それくらい椅子が少ない。それだけならばいざしらず、 改札内にはほとんど飲食店がない。あっても立ち食いそば屋かカレースタンドか スタンディングスタイルのドトールくらいなもので、 要するに新宿駅というのは頑なまでに旅客を座らせないことを 信条としているように思える。 その風情の無さは上野駅や東京駅と比べるまでもなく、 とても長距離列車が出る駅とは思えないのであった。

それはともかくとして、ドトール好きの私はとりあえずドトールに 吸い込まれてみるわけだ。祭日の早朝にしては込んでいたが、 四席ほどある椅子の一つをなんとか確保した。 しかし、混んでいるときにあまり長居をするのもなんなので 15 分ほどで辞去。 まだ入線まで 20 分ほどある。仕方がないのでトイレへゆき、 駅弁を買い、一旦ホームへ降りてみた。乗る号車を確認してから 一つ隣の中央線快速上りホームを見てみると、 そちら側のホームには 良い具合にベンチがあることに気づいたのでそちらで時間を潰すことにした。

10 分ほど時間を潰すと、向こうのホームからあずさが入線する由アナウンスが 聞こえてきたので移動した。階段を上ると丁度あずさのヘッドマークが目の前を 通過していった。7 号車 10 番 A。真ん中あたりの車両のしかも窓際で、 なかなか具合が良い。席に着いてリクライニングを操作したり何やかんや しているうちに、07:30 新宿出発。これで座っていればそのうち松本まで着く。 私は松本で降りるのだが、しかしこの列車は南小谷行きなので注意しないと 乗り過ごす。特に今日は寝ていないので注意が必要だ。 取り立てて今回は大糸線に用事はないし、何より行程に余裕がない。 大糸線は大糸線で惹かれなくはないのだが、 それも南小谷-糸魚川間のことであってそこより手前はさほどでもない。 糸魚川まで行ってしまうのもアリはアリだが、 時間的に残りの経路が面白みのないものになってしまうし、 第一乗車券のかなりの部分を買い直さなければならなくなってしまう。 こういうときのために、「とりあえず松本まで買っておく」 というのができる性分ならいいのだが、 あいにくとケチなので運賃の距離逓減制を有効活用してしまうのであった。 ともあれ乗り過ごさないように注意しようと思う。

そうこうしているうちに、立川、八王子と停車、そして発車。 高尾を過ぎたあたりからめっきりと山深くなってくるのであった。 建設中の圏央道のインターを横目に見つつ、あずさは山の間を縫ってゆく。 今日はとことん山間線区を行く計画で、 そのスタートとして中央線はふさわしいと言えるだろう。 もっとも、山間線区とは「山間線区」と書いて 「かんさんせんく」と読むようなところこそ山間線区にふさわしいので、 その点では中央線は少し物足りない。 しかしオープニングラップとしてはそれくらいで良いのだろう。 すれちがう普通列車がオレンジ色の電車から横須賀色の電車へと変わって、 いよいよそれらしくなってきた感じがする。

あずさ 3 号は快調に走り続けているが、空模様は怪しいままだ。 腹が減ったので、新宿で買った「あじさば寿司」弁当を食べる。 どうも私は旅行に出るとこの手の押し寿司系の駅弁をよく食べるのだが、 モノがモノだけにそのうち当たるかもしれない。 もっとも、駅弁は衛生管理が徹底しているらしいから、 賞味期限さえ守れば平気なのだろう。しかしながら、ビールが無いのが寂しい。

大月を出ていくつもの駅を通過すると、やがて左側が開けてくる。 甲府盆地だ。塩山、山梨市と停車して、08:58 甲府着。 この列車は普通のあずさなので、スーパーあずさと比べると停車駅が多い。 韮崎、小淵沢、茅野、富士見、上諏訪、下諏訪と停車する。 上諏訪から下諏訪にかけて、中央線は琵琶湖の北東側を回りこむように進むが、 線路は高架ではなく地上を走っているし、 建物にふさがれていて湖面が見えるところは少ない。 それに私の席は右側なので、どうせ見えたとしてもよく見えない。 10:08 岡谷着。岡谷から中央線は新旧二つに分岐しているが、 この列車は新線の方を通る。

岡谷を出るとほどなくしてトンネルに入る。 長いトンネルを抜けたところにあるみどり湖駅を通過、数分で塩尻に到着。 ここから列車は中央線と別れて篠ノ井線に入る。 篠ノ井線に入っても、あずさはいままでと変わることなく快調に飛ばして 10:23 松本着。ここで一旦改札を出て下車印を押してもらう。 駅前を少しふらふらしてみたが、 松本城は駅から少し離れており、 しかも駅前ロータリーからだとビルの影になって見えない。 ゆえに、とりたてて見るものはない。

見るものがないので駅に戻って既に入線していた篠ノ井線経由長野行き 1227M 列車に乗りこみ、進行方向右側のボックスに陣取る。 篠ノ井線は松本の南北で大きく様子が異なる。 松本以南は松本の市街地のようなところを走るし、 中央線の一部と思ってもよいくらいに特急がひんぱんに走っているのに対し、 松本から北に向かうとほどなくして山の中に入り、 そして篠ノ井までの区間はほとんど単線だ。 もっとも、長野と松本という長野県の二大都市を結ぶ線なので、 それなりに列車の密度はあるし特急も走っているが。

向かいのホームにスーパーあずさ 5 号が到着するのを待って、 10:41 に松本を出発。 ちなみに、家から始発のバスに乗ると、 このスーパーあずさ 5 号に乗ることになっていた。 松本を出ると単線だが、次の田沢からは複線になって、 明科からはまた単線に戻る。 しかしよく見ると明科から西条の間のトンネルは線路一本分の余裕がある。 ここは複線化する計画があるのかもしれない。 しかし、車窓風景はどんどん山深くなってゆく。 モーターは喘ぎながら列車を冠着(かむりき)山の方へと進めてゆく。

今回わざわざこのルートを選んだ目的が冠着山なのであった。 冠着山と言われても耳慣れないかもしれないが、 この山の別名である姨捨山という名前は知っている人が多いと思う。 冠着山の長野盆地側に面した斜面に姨捨という駅があって、 この駅から長野盆地を一望できる。いろいろな路線を乗ってみると、 鉄道というのは案外景色が良くない。 海にしろ山にしろ、景色の良いところというのはたいてい交通の難所で、 自動車ならばどうということもないようなところでも鉄道だと難儀する。 そんなわけで鉄道というのは元来あまり景色の良いところを 通らないものなのだけれども、姨捨はずば抜けて景色が良い。 その景色の良さは日本三大車窓の一つに数えられている。

さっきから無性に天気を心配してるのはそのためなのであった。 なんとも都合の良いことに、松本を出る頃から晴れ間が見えはじめて、 冠着山の手前あたりではほとんど晴れていたので都合がよい。 列車は冠着山を超えるために南から冠着トンネルをくぐる。 冠着トンネルを抜けると眼下に長野盆地が広がり、 間もなくして姨捨の駅に停車した。 名古屋方面からやってくる L 特急しなの 81 号の通過待ちで 8 分停車する。 姨捨の駅は本線から分岐するような形で生えている。 駅というものは線路が平坦なところでなければ作れないらしく、 やむをえずこういう形になっているらしい。 しかしそんな難所の割にはホームは二面もあって 上り列車と下り列車でホームが異なる。 しかしそれにしても景色がよい。 雲が多くガスが少しかかっているのが残念だが、 晴れただけでも御の字としよう。なお、 姨捨サービスエリアからほぼ同様の景色を眺めることができるので、 自動車で長野道を通るときには足を止めてみるとよいかもしれない。

ホームをぶらぶらしたりしているうちに、 しなの号はこの列車の背後から姨捨を無視するように通過していった。 ほどなくしてこちらの列車も発車する。 坂になっている本線の途中から生えたような駅なので、 列車が本線に戻るのも難儀する。 まず一旦もと来た方向に列車はバックする。 駅の手前には踏切があるのだが、 そこで運悪く行く手を阻まれた自動車が止まっている。 列車は踏切を跨いだままこの自動車の前にこれ見よがしに停車する。 ポイントが切り替わるのを待ってから列車はまた方向転換する。 自動車の疎ましそうな視線を背中に受けて、 列車は本線を下ってゆき、姨捨の駅は頭上へと消えてゆく。

列車はこのまま聖高原の麓をゆるやかにカーブしながら下ってゆく。 このあたりはさすがに自動車でも辛いらしく、 長野道も篠ノ井線に並行しながらソロリソロリと山を下る。 しばらく下ったところにある桑ノ原信号場で今度は上り列車との交換待ちをする。 ここでも一旦列車は方向転換をし、 列車が通過した後また本線へと戻ってゆく。ほどなくして線路は平坦になり、 長野盆地を進んでゆく。

11:53 篠ノ井到着。ここから列車は信越本線に入り、長野まで向かう。 今回きっぷを買うにあたって、どういう経路にしようか悩んだのだが、 そのポイントの一つが篠ノ井なのだった。 とりあえず姨捨を通るのは決めていたのだが、 その先をどうするかで案が三つあった。

  1. 長野から飯山線を通って上越線で戻ってくる
  2. 信越線を乗り継いで宮内まで出て上越線で戻ってくる
  3. 篠ノ井でしなの鉄道に乗り換えて、 軽井沢からバスで横川に抜けるか、小諸から小海線経由で中央線に抜ける
比較的楽なのは 3 なのだが、 しなの鉄道を跨ぐと切符が切れてしまって単価が上がる。 新幹線に乗るのも癪なのでやめた。 2 はこのままこの列車に乗っていると 長野で列車番号が変わって直江津まで行ける。 悪くないのだが、ずっと電車というのも面白くないし、 ルート的にも妙高高原を越えるだけなのでそういう意味でもさほど面白くない。 一方、飯山線なら一応はディーゼルカーだし、 千曲川が山肌を削り取ってできた渓谷沿いの山深いルートを通るので面白い。 そんなわけで結局 1 にした。 運賃 9,560 円、単純に新宿-東京で概算した換算キロは 652.8km になった。 通用期間 5 日間を 1 日で乗り潰すのだから贅沢といえなくもないが、 乗車券料金券あわせて 15,290 円だから、 銀河で大阪に行くよりは安いと思えばそんなもんだろう。

篠ノ井を出るとすぐに長野に着く。12:07 長野到着。

次に乗るのは長野発 12:35 戸狩野沢温泉行き 135D 列車で、 時間があるので駅舎を出て土産物を物色する。 別に観光に来たわけではないので土産なんぞ要らんといえば要らんのだが、 せっかくなので漬け物とお菓子を買った。駅で昼飯を食っている時間はないので、 構内の売店で「松茸はじめました弁当」を買って列車に乗りこんだ。

飯山線は途中に日本最高積雪 7.85m を記録した森宮野原があるくらいの雪深い路線であり、 その雪深い冬期にあわせてダイヤが組まれているため、 列車はゆっくりと進んでゆく。 豊野から信越線と離れて、こちらは千曲川に沿って下ってゆく。 川はずっと下っているはずなのだがどんどん山深くなる。 左は斑尾、右は志賀というスキー銀座のようなところを通り抜けてゆく。

この列車は二両編成で、普段ならワンマン運転をしているはずなのだが、 今日は研修か何かで職員が運転席のまわりに 4 人ほど乗り込んでいる。 それを眺めつつさっき買った弁当を食べ終わるとすっかり まわりは山の中になっていた。 腹がくちると眠くなるということで、 しばらく舟をこぐ。川を下っているのだから舟をこぐ必要もなく、 気づくと飯山だった。 飯山は上杉謙信が北信州侵略の要衝としたところで、 北飯山駅近くに城址がある。でも眠いのでぼーっとしながら通過した。

飯山を過ぎてしばらくするとこの列車の終点の戸狩野沢温泉駅に着く。 ここで列車を乗り換えるが、5 分接続なのと編成が 1 両に減るのとでさっさと乗り込んでくつろぐ。 この駅は戸狩温泉の中心から数百メートル離れたところにあるので、 1 時間くらいの間合いがあれば温泉に行けなくもないのだが、 列車本数が少ないので難しい。ちなみに、 野沢温泉はこの駅からは少々離れた山の中腹にあるので徒歩では難しい。 駅としては上境の方が近い。もともとこの駅は戸狩駅という名だったのだが、 JR 発足寸前に今の名前に改称されたらしい。 温泉地としての知名度もスキー場としての知名度も野沢温泉のほうが高いので、 まあしょうがないのだろう。

13:39 戸狩野沢温泉出発。戸狩野沢温泉を出るとまた左右から山が迫ってくる。 千曲川の川幅が狭くなって曲がりくねりだし、飯山線もそれに沿ってのたくる。 西大滝のダムを過ぎるといよいよ川と山との間に余裕がなくなり、 トンネルの連続になってゆく。 川面は線路の 20m ほど下を流れ、飯山線を見あげている。 このあたりは特に雪が多いところなので、 トンネルの手前はスノーシェードで被われている。 いつのまにやらスノーシェードを通して見る空の色がネズミ色に なっているのに気づいた。

いくつものトンネルを抜け、まもなく新潟県というところに森宮野原駅がある。 さっきも書いたとおり、この駅は日本で最大積雪量を記録したところで、 ホームの横にはその時の積雪量と同じ長さの柱が立っている。 こんな雪深いところに列車を走らせるというのもご苦労なことだが、 逆に言うとこんなところだから飯山線が残っているともいえよう。

森宮野原を出発してまもなく新潟県に入り、 いままで千曲川と呼ばれていた川は信濃川と名前を変える。 今までずっと信濃を流れてきたのに越後の国に入った途端に 信濃川と名前を変えられるとは、 まるで関西からやってきた転校生に大阪という あだ名をつけるようなものではないか。へーちょ。 川という生き方もそれはそれで気苦労の多いことだと思う。 そんなことを知ってか知らずか、 千曲川は信濃川となって少し大人びたように見える。嘘だけど。

さて、国境というのはたいてい一番辺鄙なところにあるようで、 ここからは先程とは逆に段々と開けてくる。 越後鹿渡というちょっと洒落た名前の駅を過ぎて、 今までの左岸から右岸へと信濃川を渡ると一気に開けてくる。 14:53 十日町到着。

十日町で北越急行に乗り換えると 20 分ほどで六日町に着く。 一方このまま飯山線で越後川口経由で行くと、 六日町まででも一時間以上かかる。しかし、 どうせ上越線で乗るのは同じ水上行き最終 1742M 列車で、 時間には余裕がありすぎるくらいなので気にせずに飯山線を乗り継いでゆく。

15:19 十日町出発。すっかり川幅が広くなった信濃川を左に見つつ、 線路わきのススキを掻き分けて一両編成のディーゼルカーは快調に飛ばす。 15:47 越後川口着。地下通路で線路をくぐり、 ほどなくやってきた上越線上り 1740M 列車越後中里行きに乗りこむ。 15:52 越後川口発。

夕方

さて、この列車に乗ったはいいものの、この列車では越後中里までしか行けない。 さっきも書いたとおり今日は水上行きの 1742M 列車で上越国境を 超えるつもりでいるのだが、 その列車は今乗っている列車のほぼ一時間後に同じところを通過する。 したがって、どこかで降りて時間を潰さなければならない。 こういう時、地方というのは難儀する。あまりいい考えが浮かばなかったので、 新幹線停車駅でスキー場でもある越後湯沢ならば何かあるだろうということで、 とりあえず越後湯沢まで行くことにした。

小出から乗り込んできた女グループの笑い声がうるさい。 うるさいだけならいいのだが、笑い声がしゃべり声よりも 20dB くらい大きく、 いちいち耳に突き刺さる。浦佐で降りないかなぁと思っていたら 降りないので諦めたところ、六日町で降りてくれた。 まあいい眠気覚ましになったと思おう。 しかし、あまり空模様がよろしくない。だんだんと暗くなって、 列車が越後湯沢に入るころにはとうとう降り始めた。

16:44 越後湯沢着。とりあえず駅の中をうろついてみたが、 あまり見るものもなく、食堂もすでに終了してた。思ったよりも何もない。 こういうときは蕎麦でもたぐると茹でる時間で確実に時間が潰せるので、 雨の中外に出て適当なそば屋でもりを頼む。 15 分くらい本を読んでいたところ蕎麦がでてきたので、適当に食べる。 まあスキー場だしこんなもんか、というような味。

駅に戻って土産物屋などをブラブラしていると程よい時間になったので入場。 外はすっかり暗くなってしまった。 17:49 に 1742M 列車が入線してきたので乗り込む。 一応右側を陣取ってみたが、こう暗くては何も見えまい。 17:54 越後湯沢発。

越後中里を出ると少し長めのトンネルがあるが、 これは土樽までの高低差を吸収するためのループ線になっている。 トンネルを出ると雨が段々と強くなってきた。土樽で左側の扉が開くと、 ホームで水が跳ねているのが見える。土樽は上越線の越後側の最南端の駅で、 次の土合はもう上州になる。 土樽を出るとすぐにトンネルに入って谷川岳を越える。 今の上越線の下り線は新清水トンネルという別のトンネルだけれども、 これが昭和 42 年に開通するまでは上り下りともこちらの 清水トンネルを通っていたので、 川端康成の雪国に出てくる国境の長いトンネルは 他ならぬこのトンネルということになる。 実際に入ってみるとかなり長く感じる。トンネルの途中には、 交換用の複線箇所がいまだに残っている。 昼行列車が一日 5 往復しか通っていない今となっては、 単線に戻してしまっても十分かもしれない。

長いトンネルを抜けると土合に到着。暗くてよく見えないが、 右後方にあるのが下り線ホームへの通路だろう。 土合は下り線のホームが新清水トンネルの中にあって、 上り線のところにある駅舎から 10 分くらいかけて階段を降りないといけないらしい。 その高低差 143m。降りるのは良くてもちょっと登りたくはない。

土合を出発するとまたトンネルに入る。 トンネルを二つ抜けると、 しばらく右下に湯桧曽(ゆびそ)の集落の明かりが見える。 またトンネルに入る。このトンネルも直径 1km ほどのループになっていて、 ここで先程見えていた湯桧曽の集落との高低差を吸収する。 湯桧曽に停車したがまだ雨が降っている。 湯桧曽を出発してまもなく水上に到着。 18:32。あたりはすっかり真っ暗になってしまった。

水上も雨に濡れて、線路と線路の間の溝にたまった水が駅の明かりを 反射してちらちらと光っていた。 長岡から延々やってきた白と水色の列車に別れを告げて、 向かいのホームに止まっている湘南色の高崎行き 752M 列車に乗り換える。 もっとも、塗色が違うだけで中身はいままで乗っていた列車と大差ない。

さすがに朝が早かったので列車の中ではほとんど寝ていた。19:41 高崎到着。 このまま普通列車に乗り換えると確実にやられるので、 最初から新幹線に乗り換えるつもりで MAX たにがわ 454 号の指定席を取っておいた。5 号車の二階席の一番前で、 窓割りがよろしくないがどうせ外なんぞ暗くて見えないので構わない。 19:51 高崎出発。 すぐ隣が売店なので、席に荷物を置いてホットコーヒーを購入。 夜が遅くなって行くにもかかわらず、 街の明かりで段々と明るくなってゆく窓の外をぼーっと眺めつつ、 ホットコーヒーを飲みながら東京までの一時間を過ごしたのであった。