1歳児を連れて東海道新幹線を利用して得られた知見

先日、妻と子供と一緒に新幹線を利用する機会があり、いろいろと気づいたことが多くあったので書き留めておく。

前提

  • ベビーカー利用
  • 妻、子供、自分の3人
  • 荷物は1泊分
  • 東京~新大阪の往復

その1 ベビーカー利用なら東京駅より品川駅のほうがいい

東京駅は新幹線と在来線の連絡改札の周辺で細かい段差が多く、ベビーカーだとつらい。

一方品川駅で新幹線と在来線を乗り継ぐ場合には、エレベーターが必要なのはホームと連絡通路の昇降のみで、連絡通路には階段やスロープはない。東京側の発着駅を選べるのであれば、ことベビーカーでの移動に関して言えば品川駅を利用したほうが楽だ。

その2 ベビーカー置き場は別に確保したほうが楽。各車両の一番後ろの列の席を取るか、それが無理なら子供の分の席を取る

足元の広い新幹線といえども、自分の膝の前に畳んだベビーカーを置いてしまうととても窮屈で、それで2時間近く過ごすのはなかなかにつらい。そのうえ放っておくとあちこち動き回る1歳児は、膝の上に抱いておく必要がある。乗車時間のほとんどを、両親の片方は抱っこで、もう片方は窮屈な姿勢で過ごすとなると、目的地に着く前に疲れ果ててしまう。

そこで、ベビーカーを置く場所を親の席とは別に確保しておくといくぶん気が楽になる。今回、行きは子供の分の指定席を取る方法で、帰りは車両の最後列の席を取る方法で、それぞれベビーカー置き場を確保した。

未就学児が新幹線の指定席を利用するには、小児料金の乗車券・指定席特急券が必要になるが、それでもベビーカーを置く場所が作れるのはありがたい。ABCの並びで取れないと、ベビーカーを置いた席の隣の人の出入りがベビーカーで塞がれる形になってしまうが、そのような場合は事情を説明して理解してもらうほかない。ベビーカーのほかに座席に荷物を置いてもいいし、隣の人の荷物置き場として使ってもらってもいい。

また、各車両の最後列の座席を取ることができたら、背もたれと壁の隙間にベビーカーを置いておくことができる。これなら席は親の分だけで済むのでお財布に優しい。指定席を取る際には、最後列の座席をまず狙っていきたい。

その3 11号車とその前後はおむつ交換台が近くて安心

東海道新幹線の車内には、おむつ交換台を備えた多機能トイレや授乳に使える多目的室がある。しかしそれらの設備は11号車にしか存在しない。したがって、おむつの交換や授乳が必要になる乳幼児を連れている場合は、11号車やその前後に席を確保できると安心できる。

多目的室の利用には乗務員への声掛けが必要で、乗務員室は8号車にあるということを覚えておくと利用がスムーズになる。近くに乗務員が見当たらないからといって、間違っても緊急通報装置を利用してはいけない。

総評

車内で見ているとうちの子供より大きい子はもちろん、もっと月齢の小さそうな子も新幹線で移動していたし、子連れでも結構遠くに行けるんだという自信になった。

coとthunkifyで書いていた非同期処理のフローをasync/awaitで書き換える

要約

タイトルの通りasync/awaitで書き換え可能だしAsync Functionはアロー関数でも定義できるしいい感じです。

coとthunkifyではどうだったか

Node.jsアプリケーションを書いていて、非同期処理の逐次実行が必要なとき、今まではcoとthunkifyを使って書いていた。 具体的にどんな場面だったかというと、requestモジュールを使ってAPIを叩き、その結果を使って別のAPIを叩き……みたいな状況だ。 従来は、Node.jsでの非同期処理を、coとthunkifyを使って幸せに書こうを参考に、以下のようなコードを書いていた。

const co = require('co');
const thunkify = require('thunkify');
const request = thunkify(require('request'));

function doSomething() {
    const headers = { 'Content-Type': 'Application/json' }
    co(function* (){
        const option1 = { headers, url: 'http://example.com/api/first' };
        const reqponse1 = yield request(option1);
        
        const option2 = {
            headers,
            url: 'http://example.com/api/second',
            method: 'POST',
            body: JSON.stringify({ state: response1[1].state })
        };
        const response2 = yield request(option2);
    }).catch((err) => console.log(err));
}

thunkifyによってthunkに変換されたrequestをcoがPromiseに変換し、ジェネレータとの組み合わせによってAPIリクエストのレスポンスを待つことができるようになっている。 このように言語化するとthunkifyやcoのやっていることが余計に感じられ、素のgeneratorとPromiseでもいいじゃんと思われた。そこで、せっかくなのでES2017で追加されたasync/awaitを使って書き直してみた。

async/awaitによる書き換え

const request = require('request-promise-native');

async function doSomething() {
    const headers = { 'Content-Type': 'Application/json' };
    try {
        const option1 = { headers, url: 'http://example.com/api/first' };
        const responseBody1 = await request(option1);
        
        const option2 = {
            headers,
            url: 'http://example.com/api/second',
            method: 'post',
            body: JSON.stringify({ state: responseBody1.state })
        };
        const responseBody2 = await request(option2);
    } catch (err) {
        console.log(err);
    }
}

requestの代わりにrequest-promise-nativeを使う。request-promise-nativeのrequest()はPromiseを返し、await式によってPromiseがresolveされるまでdoSomething()の実行は停止される。Promiseがrejectされたら外のtry-catchで捕捉できる。 多少見通しがよくなったぞと思って改めてMDNのAsync Function の解説を見ると、

async/await 関数の目的は、 promise を同期的に使用する動作を簡素化し、 Promise のグループに対して何らかの動作を実行することです。 Promise が構造化コールバックに似ているのと同様に、 async/await はジェネレータと promise を組み合わせたものに似ています。

とあり、あっハイその通りですといった記載があった。

Async FunctionをExpressのルーティングに使う

Async FunctionをExpressのルーティングのハンドラーに使うと、リクエストを起点に非同期処理を順番に実行するといったコードがシンプルになる。 これは上記のdoSomething()のようにAPIを順番に叩く例。

const express = require('express');
const router = express.Router();
const request = require('request-promise-native');

router.get('/something', async (req, res) => {
    const headers = { 'Content-Type': 'Application/json' }
    try {
        const option1 = { headers, url: 'http://example.com/api/first' };
        const responseBody1 = await request(option1);
        
        const option2 = {
            headers,
            url: 'http://example.com/api/second',
            method: 'post',
            body: JSON.stringify({ state: responseBody1.state })
        };
        const responseBody2 = await request(option2);
        res.send();
    } catch (err) {
        console.log(err);
        res.status(500).send();
    }
});

アロー関数を使ってasync () => {}とも書けるのがいい。

東上野三丁目「シスター」のベーコンと刻み高菜のスパ

下を向いてばかり歩いていたら虹を見逃してしまうよ、と朝ドラの主題歌でミスチルが唄っているが、昼メシを探すのもどこか似ている。路面店ばかり見ていては、地下や空中階にあるいい感じの店に気づけなくなってしまう。まあこれは個人的な経験則で、好みの店がそんなロケーションにあることが多いのと、路面店の様子を見るのも下ばかり見ていたらできない。やっぱりあんまり似ていなかった、ごめん。

f:id:azmin:20170316131017j:plain

「シスター」は永寿総合病院の斜め向かいのビルの3階にある。上野駅からこの病院の前を通る道は頻繁に通るのだが、この店の存在に気づいたのはごく最近のことだ。1階は病院の近くにはよくある調剤薬局だし、店の入口は脇の路地の方に開いているしで、ただ歩いているだけではまったく気に留めることがなかった。きっかけはよく覚えていないけれど、病院の前でふと目線を上げたら、通りに面した窓に「コーヒー&ダイニング」と書かれているのが目に入ってきたのだった。 f:id:azmin:20170316130952j:plain 立て看板が日焼けしていていい味出している。ホワイトボードに書いてある今週のお弁当(とは言いながら重箱で出されるイートインメニューだ)がいい感じだ。鶏むね肉のごまだれっていわゆる棒々鶏? それにアジフライ、なんだか不思議な組み合わせだけどいいじゃない。これにしよう。「エレベータをご利用ください」との案内に従ってエレベータを呼んでみると、なんとホームエレベータだ。 f:id:azmin:20170316131108j:plain なかなか見ることのない操作盤にアガる。閉めるボタンがない。 f:id:azmin:20170316131117j:plain

3階に着いてドアが開くと、エントランスなどはなくいきなり店内である。窓が南向きなので店内はとても明るい。エレベータは厨房からは死角になっている上、出入りするときにチャイムが鳴ったりとかはなさそうなので、一応店主に一声かけてから席についた。今週のお弁当を頼むつもりでいたが、メニューも目を通しておこう。 f:id:azmin:20170316131310j:plain ベーコンと刻み高菜のスパ。いや、こっちの方が断然気になる。確かに高菜ってラーメンに乗せたりするし(博多のアレは辛子高菜だけど)チャーハンにもするからいけるかもしれないけど、高菜をスパゲティに、か。ちょっと想像つかないしこっちにしよう。

注文して待つこと数分、果たしてベーコンと刻み高菜のスパゲティは目の前にやってきた。

ベーコンと高菜がちゃんと麺に絡むようにして口に運ぶ。これは……確かにベーコンと高菜だ……。ベーコンと炒めてちょっと出てくるラード、高菜、スパゲティ、なんというかそれぞれに飾りがない。醤油はたぶん入ってないし、ニンニクも入っていない。これだけで成立している。温めた高菜の野菜らしい甘みがある。なんだこれ、すごいぞ。うまい。 スパゲティは喫茶店メシでよくあるもっちりしたものではなく、標準茹で時間で上げたばかりという感じの硬さ。店主が「中で固まってるかもしれないんでよく振ってくださいね〜」とパルメザンチーズとタバスコを置いていったが、「これチーズ要るか……? いらなくない……?」と考えているうちに、結局チーズを使わないまま食べ終わってしまった。

せっかくなので、プラス200円のコーヒーもいただいていくことにした。コーヒーは一杯ずつハンドドリップで淹れてくれる。カップの脇に、ミルク、砂糖、そしてコアラのマーチが1つ添えられているのが心憎い。

店内を見渡すと、自分含め近所で働いている風の人と病院帰りのばあちゃんでおよそ半々である。目の前に座ったスーツの男性二人組の片方がiQOSを取り出して吸っているそばで、その隣のテーブルの短く刈り込んだ白髪にピンクのメッシュが鮮やかなばあちゃんが、セブンスターの煙をうまそうに吐き出している。おのおのがその人生に満足しているかは外からは分からないけど、その対比を見ていると、安直だけど人生楽しんだもん勝ちだよな、としみじみ思われた。時刻は14時前。壁にかかったテレビから「上沼恵美子のおしゃべりクッキング」のジングルが聞こえてきてすぐ、店主がチャンネルを日テレに変えた。大学生の頃、学校に行こうか行くまいかぐずぐずして迎えた午後、おれもまったく同じ視聴行動だった。その気持ちはよくわかる。

台東四丁目「山海楼」の生馬麺と半チャーハン

昼時、春日通りから竹町幼稚園の前を通る道に入ってすぐの角に、ランチメニューの看板だけが唐突に現れる。この日は風が強くて、看板を畳んで建物に立てかけてあるだけにしている。それが路地の陰から頭だけ出しているようで心を惹かれる。

f:id:azmin:20170223124702j:plain

f:id:azmin:20170223124729j:plain

「ボ」がくっついてしまって「ぎ」と読めなくもないのが目を引くが、リストを眺めて「なまうま麺……? 何マー麺……?」と立ち止まってしまったのでDセットの生馬麺と半チャーハンに決めた(後述するがこれをサンマーメンと読むことは後で調べてわかった)。

f:id:azmin:20170223124747j:plain

店はランチメニューの看板の角を曲がって2棟先にある。とても文字情報の多い外観だ。「横浜名店」「美味しく・楽しく・健康である」「翁さんのお店」……一つ一つ目で追っていくと、説明過剰でそれだけで満足した気になってしまいそうだ(実際初めて入るまでに何度かスルーしている)。

こういう怪しい日本語めいた雰囲気が好きな向きもあるだろう。その時の昼飯の気分に合うかどうかは別にして、自分も好きな方だ。外壁に二列に取り付けられた室外機もそんなムードを高めてくれる。ドレン排水管が一本に束ねられていくさまが美しい。屋上から植木の蔓が垂れてきているのもポイントが高い。

f:id:azmin:20170223125111j:plain

外観から受ける印象と比べると意外なほど、店内は真面目な?中華料理屋風だ。4つくらい円卓があるし、椅子のカバーも金の刺繍入り。壁の張り紙を見るとWi-Fiが使えるらしい。Wordで作ったのか、A4一枚に「当店使えるWi-Fi」という見出しの下にSSIDとパスワードが書いてある。

前回この店に入ったのは一月の終わりだった。ちょうど春節に入る頃で、ホールのお姉さんが「みんな中国帰っちゃって私一人で大変だよ」と言って慌ただしそうにしていた。その時もDセットにしようと思い、「『ディー』セットで」と伝えたら、「Bですか?」と聞き返されたのだった。周りの席を見ると中高年が多い。だからここは「ディー」ではなく「デー」と発声するのが正解だったのかもしれないな、と考えて、今日はそのお姉さんに「『デー』セットで」と言ってみた。

すると、「Aですか?」と聞き返された。慌てて「あ、すみません、『ディー』です」と言い直すと、お姉さんは照れたように笑って「すみません、Dですね」と伝票を書き直した。

変な日本語でWi-Fiパスワードが貼ってあったり、オーダーが一発で通らなかったり、なんだかブレードランナーっぽいな、と思った。

壁に掛かったTVに映る「ひるおび!」で金正男暗殺事件のニュースを眺めていたら生馬麺はすぐに出てきた。

f:id:azmin:20170223125703j:plain

醤油スープのラーメンにもやし炒めのあんが乗っている。半チャーハン、サラダ、杏仁豆腐付き。もやしそばからそんなに日が空いてないのにまたあんかけ麺にしてしまった。この手の麺の出来たては熱いことをもやしそばで学んだので慎重に行こう。もやし炒めだけを取って食べる。やっぱり熱い。ここまではいい。もやしに芯が残っているので、もやしが口の端に当たって熱い。これは想定外だった。でもシャキシャキしててうまい。

もやしの他には、ニラ、人参、細切りの豚肉。豚肉は細切りだけど厚みがあっていい。家でやるなら生姜焼き用の豚肉を使えばいいのかなあ。チャーハンは卵が細かくなっているのがプロの技を感じさせる。ミックスベジタブルがお茶目。

食後のコーヒーまでが定食のセットだ。ホットかアイスかを選べる(ホットコーヒーは切れているときもある)。一息ついて周りを見ると、同じ職場ですという風なスーツの男性のグループが多い。大体がタバコを片手に何か喋っている。昼メシ食った後にコーヒー飲んで一服するのは職場の休憩室でもできるだろうけど、何かが決定的に違うんだよな。わかるよ。

店を出てから「生馬麺」とは何なのか調べてみたところ、「サンマーメン」だということがわかった。サンマーメンなら聞いたことがある。でも横浜ローカルのアレだということは知っていても食べたことがなかった。そうか、あれがサンマーメンだったのか。だとすると、看板に書いてあった「横浜名店」というのも全然信じてなかったけど本当なのかもしれない。

本当に横浜に本店があります

東上野二丁目「中国料理 天水」のもやしそば

 上野駅から永寿総合病院に行く道の、病院の少し先にその店はある。パッと見では薄暗くて営業しているかどうか分からないが、昼時に行くとちゃんと開いている。のぼりと店構えのテンションがまるでかみ合っていないのがとてもチャーミングだ。

f:id:azmin:20170217123101j:plain

 おすすめはハンチャンラーメンともやしそば。今日はもやしそばを食べることにする。

f:id:azmin:20170217125045j:plain

 この暖簾である。父親がこんな柄のトランクスをはいていたような気がする。

f:id:azmin:20170217125054j:plain

 中に入ると、一列のカウンターにスツールが8脚くらい並んでいる。カウンター背後の板張りの壁に窓はあるが、隣の建物が近すぎて外の光はほとんど入らない。先客は4人。みんなスーツ姿か会社の名前入りの作業着かで、この辺りで仕事しているのだろう。

 厨房にはおじいちゃんと呼ぶのがよさそうな店主が一人。椅子を引きながら「もやしそばお願いします」と言うと、「はいもやしそば一丁」と声をかけた。厨房に他に誰がいるわけでもないが、これがルーチンなのだろう。

 厨房の奥の角に置かれた液晶テレビに映るNHK総合を見ながら待つこと数分、もやしそばが出てきた。 f:id:azmin:20170217123534j:plain

 醤油スープの上に炒め野菜のあんが乗っている。うまそう! いただきます! と勢いづいて麺をすすると、あんがとても熱い。慎重にいかないと火傷する。ここでお水がセルフであることに気づく。

 もやしそばに肉は入っていない。もやし、キャベツ、人参、きくらげ、あとは細めの麺ばかりである。鶏ガラのクラシックな醤油スープと合わさって優しい味になる。しかも野菜炒めにとろみがついているせいか冷めにくいので、食べているうちにだんだん汗ばんでくる。

 食べ終わる頃にはすっかり体が温まり、「上着は着なくていいか」とコートを抱えて席を立った。ごちそうさま、と店主にお代を渡すと、「すいませんね、どうもね!」と店主は応じた。すいません、なんて言われるようなことは無かったと思うんだけど、言わずにはいられないんだろうなあ。

本棚を作った話

床から天井までフルに使える本棚が欲しいと思い既製品をいろいろ探してみたが、いい感じのものが見つからなかったので自分で作ることにした。清く正しい本棚の作り方を一通り読んでみたら、自分にも出来そうな気がしたのだ。製作に着手したのが2015年6月、組み立てたものの塗装が面倒で放置期間を挟み、2016年6月にすべての工程を終えた。

もしこれから本棚を作ろうという人があれば、まずは清く正しい本棚の作り方を熟読してほしい。そのうえでこの記事の内容が参考になれば幸いである。

構想

基本的な考え方は、清く正しい本棚の作り方の第2章「設計編」に詳しいのでそちらを参照されたい。 今回は所持している本の傾向や設置スペースから、収容する本の基本サイズをA5判に決定した。床から天井までの高さと勘案して、本棚全体の高さをA5判9段分とし、上4段、下5段に分割することにした。間口は600mm、使用する板厚は18mmとし、全体でH約2200xW600xD約180mmの本棚を2本作ることに決めた。 棚板の支持は後から各段の高さを変更できるように、ダボを使うことにした。

資材調達

清く正しい本棚の作り方の第3章「材料編」には、材料はホームセンターではなく材木屋で買うべしと書かれているが、作業にあてられるのが土日ということもあり、ホームセンターで調達することにした。本体構造用に1800x900のラワンランバーコア合板を3枚、背板用に同寸のシナベニヤを4枚購入し、木取り図を渡してカットしてもらった。カットの精度はといえば、必要十分な範囲だったと言っていいだろう。組み立て時にあまり困った記憶がない。

組み立て

f:id:azmin:20150615223111j:plain

ダボ穴と木ネジの下穴の位置を罫書きして、ドリルドライバーでダボ穴を開けたり木ネジを締めたりして組み立てた。材料を買いに行ったのが土曜日で、翌日曜日の夜にはここまでの形になった。

続きを読む

奈良の鹿寄せに行ってきました

ナチュラルホルンを吹くとその音色に誘われて愛らしい鹿が集まってきます。

鹿のイベント情報 | 一般財団法人奈良の鹿愛護会

奈良の鹿寄せ。ホルンを吹くと鹿が地平線の向うにぽつぽつと現れ、数を増やしながらだんだんとその姿が大きくなってくると聞いてから、ずっと見てみたいと思っていた。2年前の2月にも鹿寄せを目当てに奈良を訪れたが、生憎と鹿寄せが休みの日でたいへん悔しい思いをした。先月の終わりに関西旅行を企て、ようやく鹿寄せを見に行くことができた。

奈良公園

奈良の鹿愛護会の方の説明によれば、鹿寄せはホルンの音色を聞いて集まってきた鹿に、どんぐりを振る舞うイベントであるそうだ。鹿もただでは動かないし、人間もドライに食べ物で釣りにいく距離感がいい。今年の鹿寄せは2/11に始まっていて、2月の終わりにもなると鹿のほうもどんぐりがもらえると分かり、あらかじめ集まっているという。

奈良公園

愛護会の方がホルンを吹いているそばでたむろしているのは、フライングしている鹿たちだ。ほかの鹿は奥の森の中から出てくるということで目を凝らしていると、1分も経たないうちに鹿が現れた。

奈良公園

けっこう勢いよく走って飛び出してくる。「だんだんとその姿が大きくなってくる」というイメージは間違いだった。

奈良公園

みんな走ってくる。

奈良公園

どんどん出てくる。

奈良公園

鹿が集まったら、どんぐりタイムが始まる。ホルンを籠に持ち替えて、畑に肥料でも撒くようにどんぐりを振る舞う。鹿の頭にどんぐりが当たろうがもはや気にしていないようだ。鹿たちも思い思いに近くの地面に落ちたどんぐりを食べている。

奈良公園

鹿は賢いので、中には直接籠を狙うヤツも現れる。

奈良公園

ここまで正味10分ぐらいのイベントだが、当初のイメージも裏切られて、はるばる東京から見に行った甲斐があったと思っている。今年の冬の鹿寄せは残念ながらもう終わってしまったが、夏の鹿寄せもあるそうなので、気になる向きはぜひともチェックされたい。夏は子鹿も集まってくるそうですよ。

一般財団法人奈良の鹿愛護会