bitterharvest’s diary

A Bitter Harvestは小説の題名。作者は豪州のPeter Yeldham。苦闘の末に勝ちえた偏見からの解放は命との引換になったという悲しい物語

日本100名城の八王子城跡を訪ねる

八王子に立派なお城の跡があるという話を、発掘調査と整備に関わった方から教えて頂いた。年初に大分県の岡城を訪問し、戦国時代の山城に興味を抱いていたので、是非訪問したいと思っていた。しかし春先で気候が不安定なため、なかなかその日が巡ってこなかったが、たまたま快晴になった3月5日(火)を逃してはいけないと判断し、午前中の用事を済ませ出かけた。

多くの遺跡は不便なところが多いが、ここも御多分に漏れずだ。バス利用ではとても大変そうなので、自家用車を利用した。圏央道を高尾山インターチェンジでおり、甲州街道を新宿方面に、そして高尾駅の前で左折、高尾街道を北に向かった。天気が良かったためだろう、京王線高尾山口駅とJR線の高尾駅の周辺には、火曜日にもかかわらず、多くのハイキング客が出ていた。人気の高い高尾山を目指しているものと思われた。

高尾街道は交通量も少なかったので、あたりの景色を楽しみながらの運転だ。側道にそって大きな街路樹が植えられ、さらに周囲は林に囲まれていて、自然に富んだ山中を思わせる風景だ。天皇陵に近いので整備されているのだろうなどと思いを巡らしているうちに、左折すべき城山大橋に至った。曲がってまっすぐ進み八王子霊園手前の城跡入り口でさらに左折した。インターチェンジを出てからずっと左折の連続で、ちょうどカタカナのコの字を下から書いたように移動してきた。コの字の上を描くかのように、最後の角を曲がった。景色も一変し、霊園が近いためだろう、石材屋さんが目立ち、過去の世界へと誘ってくれた。途中から、道は石畳となり狭くなったが、迷うことなく駐車場に到着した。土日はここまでバスが来ているようだ。
f:id:bitterharvest:20190307110521p:plain
車を降りると近くにガイダンス施設があったので立ち寄った。ベネチア製のレースガラス器の破片が城跡から見つかったという話を聞いていたが、復元したものが飾られていた。
f:id:bitterharvest:20190307110707j:plain

現地の状況を得るものが有ればと思って立ち寄ったのだが、ツアーマップは見つからず八王子城の概略を示した一枚のパンフレットを手に入れただけで、あまり有効な情報も得られないまま施設を出て、本丸方面という表示板を見て、取り敢えずそちらに向かって歩き出した。途中の広場には八王子城跡の地形の模型があった。下の方が城主の館があったところ、上の方が本丸などがある山城だ。我々は本丸を目指すこととした。
f:id:bitterharvest:20190307110631j:plain

ここが山城へ入る入り口だ。下山してくる人たちに出会ったが、どの人も登山靴を履き、杖をもち、リュックを背負ったいた。我々は、セーターの上に冬物のコートそしてジーパンといういでたちなので、間違ったところに来てしまったかなと不安を感じた。右側の看板にも滑落事故が多いので十分な装備で登山をするようにという注意書きがあった。本丸がある地点の標高は460メートル、歩いて40分くらいだ。気後れしたが、運動靴を履いてきたので、それなりの準備ができているので大丈夫だろうと気を強く持って、山城への道を登り始めた。
f:id:bitterharvest:20190307110739j:plain

少し歩きはじめると、道はすぐに山道となった。予想に反してなだらかなハイキングコースではないようだ。
f:id:bitterharvest:20190307110819j:plain
相当に登ったと思ったとき、4合目という標識に出くわし、ちょっとがっかりしたが、天気にも恵まれ、空気も澄んでいるので、気持ちを切り替えてさらに進んだ。
f:id:bitterharvest:20190307110854j:plain
しばらく進むと梅林が見えてきた。山道でののどかな景色は心を和ませてくれる。
f:id:bitterharvest:20190307110935j:plain
山頂に近くなったのだろう。展望が開けてきた。眺望を楽しみながら休憩をしている人に、方向を教えてもらった。中央に見える高い建物が八王子駅周辺、左側に見える白い円形の建物が西武ドームとのことだった。また筑波山東京スカイツリーが見えることもあるそうだ。
f:id:bitterharvest:20190307111011j:plain
そうこうするうちに八王子神社に着いた。
f:id:bitterharvest:20190307111049j:plain
この地点より20メートル程度高いところが本丸跡だ。
f:id:bitterharvest:20190307111126j:plain
f:id:bitterharvest:20190307111154j:plain
また本丸を散り囲んでいるのが松本曲輪・小宮曲輪だ。きっと凄惨な戦いの場になった場所だろう。
f:id:bitterharvest:20190307111228j:plain
毎日のようにここを訪れているという方から付近の情報を得た。1.2Km先には富士見台があり、富士山が見えることもあるということだった。また、登ってきた道の麓には御主殿跡があるので見学するとよいとのことだった。富士見台はまたの機会に譲ることにし、訪ねたいと思っていた御主殿跡へ向かうことにした。

滑りやすい山道に足を取られそうになりながら、来た道を引き返した。

御主殿跡に近づくと訪問客が目立つようになってきたが、彼らは我々と同じ服装だ。自然と彼らの中に溶け込んで、遺跡を楽しむことができた。最初に現れたのが曳橋だ。竪に立て籠もるときにはこの橋を落とそうとしたのだろう。
f:id:bitterharvest:20190307111320j:plain
f:id:bitterharvest:20190307111352j:plain

曳橋を渡ると櫓(やぐら)門跡だ。発掘調査をした方に是非見て欲しいと勧められた場所だ。石垣がきれいだ。殆どの石は当時のものだそうだ。
f:id:bitterharvest:20190307111421j:plain
f:id:bitterharvest:20190307111450j:plain
f:id:bitterharvest:20190307111520j:plain
石段の先は広場になっていた。
f:id:bitterharvest:20190307111558j:plain
礎石があちらこちらにあり、それぞれがどのような建物のものであったかが示されていた。政務が執り行われた主殿の礎石だ。
f:id:bitterharvest:20190307111631j:plain
来客者の饗応を行う会所は、礎石の上に床面が造られ、間取りが分かるようになっていた。
f:id:bitterharvest:20190307111656j:plain

最後になったが、八王子城の沿革を記しておこう。築城は戦国時代。築城したのは北条氏照だ。この当時の北条家の領地は関八州に及ぶ広大なもので、領主は兄の氏政であった。北条家の本拠地はもちろん小田原だが、広大な領地を支配するために、関東一円に出城を構築し、小田原に近い城は兄弟に守らせていた。八王子城は北関東から攻め組んでくる敵を防ぐための重要な拠点で、ウィキペディアには1571年ごろに築城、1581年ごろに氏照が本拠にしたと書かれているが、発掘調査に携わった方は、1582年(天正10年)と思われる史料に「普請」という文字があり、1587年(天正15年)と推定される史料には氏照は小田原におり、狩野一庵が「八王子ニ令留守居候間」とあると書かれていると教えてくれた。また氏照は八王子城が築城される前は滝山城の城主で、1587年ころには居城を八王子城に移したものと推察されているとのことだった。

八王子城は石垣で固められた山城で、城を象徴する天守閣は存在しない。急峻な山を切り拓いき、山全体を守りを主体にした構造物にしている。豊臣秀吉は天下統一を目指して小田原征伐を行うが、その一環として八王子城の攻撃を行う。攻撃したのは、上杉景勝前田利家真田昌幸だ。総勢15,000人の部隊に攻め込まれ、一日で勝敗は決してしまう。1590年(天正18年)7月24日(旧暦6月23日)のことだ。城主の氏照以下家臣は小田原に駆けつけており、城代以下のわずかな将兵と領国内の農民と婦女子で戦った。このときの守備側の総勢は3,000人だが、ひとたまりもなかったようだ。御主殿の近くにある滝の上流で北条方の武将や婦女子は自刃し、身を投じたとのことだ。

御主殿跡や櫓門跡などの詳しい説明はボランティアの方がしてくれるということなので、いつか再び訪れて、今回見逃した御主殿の滝なども含めて、とっておきの話を伺いたいと思っている。

鎌倉歴史文化交流館と扇ガ谷の寺々を訪ねる

「鎌倉Disaster 災害と復興」という企画展の招待券を頂いたので、その会場である鎌倉歴史文化交流館と近辺の寺々を2月16日(土)に訪ねた。

所在地は鎌倉の扇ガ谷(おうぎがやつ)だ。扇ガ谷という地名からは室町時代扇谷上杉家を思い出す。そこの家宰の太田道灌は、江戸城を築いたことで有名だ。

鎌倉歴史文化交流館の建物は、イギリスの著名な建築家ノーマン・フォスターさんが設計したもので、これだけでも見る価値がある。

交流館は無量寺跡と呼ばれているところにあり、2002年の発掘調査で建物の礎石や庭園の跡が発掘され、本当に無量寺の跡ではと期待が高まったが、残念ながら確定されるにはまだ至っていない。鎌倉時代の歴史を記載した『吾妻鏡』には、安達義景(霜月騒動で有名な泰盛の父)の13回忌に触れて、「無量寺は安達氏の菩提寺で甘縄にあった」となっている。しかし、甘縄という場所は長谷や由比ガ浜に近く、扇ガ谷からは随分と離れている。このため無量寺跡と確定するには、さらなる調査が必要とされている。

鎌倉時代に栄華を誇った鎌倉は、室町時代の1455年に鎌倉公方から古河公方へと移転したあとは、すっかりさびれてしまい、江戸時代には一漁村に過ぎなかったそうだ。しかし江戸時代の末頃ともなると、物見遊山の客が増えだして少しずつ活気を取り戻し、さらに明治時代になると、別荘地として利用されるようになったそうだ。大正時代には、この無量寺跡にも三菱財閥の岩崎小弥太の別荘が、また隣には番頭だった荘清次郎の別荘が建てられた。

岩崎弥太郎の別荘跡地には2004年にセンチュリー文化財団(旺文社創業者の赤尾好夫によって設立)によって、ノーマン・フォスターさん設計の個人住宅が建築され、2013年に土地と建物が鎌倉市に寄贈された。2017年5月より、鎌倉歴史文化交流館として利用されている。

扇ガ谷は鎌倉駅からは北西の方向で、横須賀線の西側だ。この日に訪れたのは、鎌倉歴史文化交流館、寿福寺、英勝寺だ。寿福寺には源実朝北条政子の墓もある。
f:id:bitterharvest:20190218143909p:plain

鎌倉歴史文化交流館は二つの建物からなっている。向かって左側にあるのが別館、
f:id:bitterharvest:20190218143953j:plain
右側が本館だ。壁は輸入品の人工大理石、ところどころに青みがかった灰色の塊があるがこの部分は本当の大理石だ。
f:id:bitterharvest:20190218144024j:plain
f:id:bitterharvest:20190218144057j:plain
門を入ってすぐのところでは、春の訪れが近いことを梅花が教えてくれた。
f:id:bitterharvest:20190218144136j:plain
本館には、通史展示室、中世展示室、近世・近現代展示室がある。通史展示室には、鎌倉時代の法令である御成敗式目のレプリカと
f:id:bitterharvest:20190218144207j:plain
鎌倉時代の歴史を綴った『吾妻鏡』が並べて展示されていた。吾妻鏡には漢文訓読のためのルビや返り点がつけられていることに興味を持った。
f:id:bitterharvest:20190218144237j:plain
縄文・弥生時代の展示品もあった。
f:id:bitterharvest:20190218144310j:plain
中世展示室はこの館のメインだ。源頼朝は鎌倉に鶴岡八幡宮勝長寿院永福寺(ようふくじ)と3つの寺院を建立した。その中で、永福寺は奥州平泉の中尊寺を模した寺院と考えられており、その遺跡から発掘された遺物が展示されていた。経典を納めるための銅製経筒(きょうづつ)
f:id:bitterharvest:20190218144348j:plain
復元された瓦屋根などが展示されていた。
f:id:bitterharvest:20190218144423j:plain
また、永福寺を復元した絵画も。さぞかし荘厳な寺院だったのだろうと想像させてくれた。
f:id:bitterharvest:20190218144451j:plain
また狭い土地に幕府がつくられた鎌倉では、山の岩肌を掘ってやぐらと呼ばれる穴を造り、そこを墓所とし、やぐらの入り口近くには板碑や五輪塔が立てられた。
f:id:bitterharvest:20190218144525j:plain
また南宋との貿易も盛んにおこなわれ、多量の宋銭が持ち込まれた。国内の貨幣として使われたばかりではなく、同製品の材料としても使われた。鎌倉の大仏にも使われたようである。

今日の貨幣はもちろん日本政府が発行したものを利用しているが、当時は隣の国の銭貨を利用していた。これは宋が滅んで元になったあとも続いた。元が紙幣を用いたために、不要になった宋銭がさらに大量に入ってきたようだ。

為政者が製造したものではなく、世間の信用だけで中国の宋銭が国内の貨幣と流通したことに、貨幣とは何かという秘密が隠されているようだ。ビットコインなどもこれと同じ原理で流通していると考えることができるだろう。

さらにはこのころの為政者はまだ世間の信用に足るだけの力がなかったともいえる。富本銭・和同開珎など古代には銭貨は存在したが、本格的には使われなかったようで、為政者が発行した貨幣が本当に使われるようになるまでには、江戸時代の到来を待たなければならない。
f:id:bitterharvest:20190218144557j:plain
わき道にそれてしまったので、鎌倉歴史文化交流館の中世室の展示場に戻ろう。ここからは庭の様子も見ることができた。山が傍まで迫り、削られた山肌を見せてくれた。鎌倉の特徴ともなっている石の肌だ。鎌倉石とも呼ばれる砂岩で、加工しやすいことから建材として長いこと利用された。今日では鎌倉の景観を保つために掘削することを禁じられている。
f:id:bitterharvest:20190218144633j:plain
f:id:bitterharvest:20190218144709j:plain
近世・近現代展示室には、第二次世界大戦のときに多数のユダヤ人にビザを発給して助けた杉原千畝さんに関する資料も置かれていた。

この後、別館で学芸員の方から、鎌倉時代地震と火事、関東大震災による建物の倒壊についての説明を受けた。鎌倉時代は災害がとても多かったようで、この時代の建物はほとんど残っていないとのことであった。また関東大震災ではかやぶき屋根の建物は殆ど倒壊してしまったそうだ。大震災の3日ぐらい前に来た台風が大量の雨を降らせたため、かやぶき屋根が大量の水分を含んでいたことも一因のようだが、当時のかやぶき屋根の建物は脆かったようだ。

鎌倉歴史文化交流館の隣には、三菱財閥の番頭であった荘さんの別荘があった。古我邸と呼ばれているが、鎌倉三大洋館の一つで、現在はフレンチレストランとして利用されている。この日は結婚式が行われていて、中に入ることはできなかった。
f:id:bitterharvest:20190218144737j:plain
このあと、源実朝北条政子の墓を訪れるために寿福寺へと向かう。道の途中には山を切り抜いたトンネルがあった。
f:id:bitterharvest:20190218144808j:plain
寿福寺の墓地の山沿いには北条政子の墓が
f:id:bitterharvest:20190218144845j:plain
そばには実朝の墓が
f:id:bitterharvest:20190218144921j:plain
いずれもやぐらの中にあり、五輪塔が置かれていた。周りにもたくさんのやぐらがあった。
f:id:bitterharvest:20190218144953j:plain
そして寿福寺だ。このお寺は、源頼朝が没した翌年(1200年)に北条政子が明菴栄西(みょうあんえいさい)を開山に招いて建立したものだ。本堂は
f:id:bitterharvest:20190218145032j:plain
本堂の方から山門を見ると、
f:id:bitterharvest:20190218145104j:plain
そして山門
f:id:bitterharvest:20190218145215j:plain
次は鎌倉唯一の尼寺の英勝寺へ向かった。ここは江戸城築城前の太田道灌の邸があったところと伝えられている。太田道灌と英勝寺には深いつながりがあるが、由来は次の通り。

江戸時代、太田道灌から数えて4代目の太田康資(やすすけ)の息女とされるお勝が、徳川家康の側女となった。家康との間に生まれた市姫が幼くして亡くなったあと、お勝は家康の命により初代の水戸藩主となる徳川頼房の養母となる。家康の死後、仏門に入って英勝院と称し、三代将軍家光より父祖の地の扇ガ谷を下賜され、英勝寺を創建した。道路沿いには大正10年に建てられた由来を示す碑があった。
f:id:bitterharvest:20190218145250j:plain
英勝寺の仏殿だ。
f:id:bitterharvest:20190218145320j:plain
山門と仏殿
f:id:bitterharvest:20190218145355j:plain
本堂には運慶の作と伝えられている阿弥陀三尊が安置されていた。
f:id:bitterharvest:20190218145426j:plain
最後に涅槃図。
f:id:bitterharvest:20190218145501j:plain

扇ガ谷は、源氏山公園から銭洗弁天へ抜けようとするハイキング客を除けば、観光客がはまり入ってこない静かなところだ。鎌倉歴史文化交流館も民家の中に立地していることに配慮して日曜日は休館にしている。訪れた日は土曜日の午前中だったが、ときどき人と行きかう程度で静かな鎌倉を楽しむことができた。

新しく得た情報もあった。鎌倉の災害について説明してくれた学芸員の方から、明応地震(1495年)による津波で、鎌倉大仏を囲っていた建物、いわゆる大仏殿が流されたという言い伝えがあるが、それは誤りだと教えて頂いた。

南北朝時代に書かれた『鎌倉大日記』によれば、「明応四乙卯八月十五日(1495年9月3日)、大地震、洪水、鎌倉由比浜海水到千度檀、水勢大仏殿破堂舎屋、溺死人二百余」」となっている。これからは津波が大仏殿に達して被害を与えたと読むことができる。また江戸時代の文献の『続本朝通鑑』など複数の文献には「大仏殿破壊」と記されている。江戸時代の資料から、この時代には大仏殿が流されたという俗説がはびこっていたと推定される。

しかし万里集九が書いた『梅花無尽蔵』によれば、大仏殿はそもそも存在しなかったとのことである。万里集九は、明応地震の9年前の文明18年10月24日(1486年11月20日)に、大仏を訪れて、「遂見長谷観音之古道場、相去数百歩、而両山之間、逢銅大仏仏長七八丈、腹中空洞、応容数百人背後有穴、脱鞋入腹、僉云、此中往々博奕者白昼呼五白之処也。無堂宇而露坐突兀」と記してある。すなわち二つの山の間から銅でできている大仏に逢ったとなっているので、歴史のプロの間では、大仏殿が流されたというのは間違いだと考えられていると教えて頂いた。

これらの説明をまとめると、大仏堂は1283年に浄光の勧進によって建立が始まり、1243年には開眼供養が行われた(吾妻鑑)。また、その1年前には大仏殿も2/3ほど完成していたようだが、大仏は銅製ではなく木製だったようだ(東関紀行)。そして現存する大仏は1252年から造られたものとされている。大仏殿は1235年(太平記)と1369年(鎌倉大日記)に台風の大風で倒壊した。大仏の右肩には凹みがあるそうで、倒壊のときに生じたものと考えられている。これ以降は大仏殿は再建されることはなかったと見なされている。

そして後年になって明応地震の恐ろしさを強調するために、大仏殿が津波により倒壊されたという俗説が生まれたようだ。善意に考えれば、大きな被害に襲われる可能性もないわけではないので、十分に備えておく必要があるということを俗説は伝えたかったのであろう。

なお、関東大震災では大仏は前に45㎝動き、次の日の余震では30㎝後ろに移動したそうだ。鎌倉の建造物が多く倒れる中で、壊れなかったのは堅牢に造られていたためだろうと学芸員の方から伺った。

駅前に戻ると、そこは人で埋め尽くされていたので、昼食をとることをやめて、早々と帰路についた。寒い日が続いたあとの穏やかな日で、短い時間だったが、新しい情報も得ることができ、満足して横須賀線の車中に身をおいた。

冬の「よこはま動物園ズーラシア」を見学する

冬の動物園を訪れてみたいと思う人はそれほど多くないだろう。木枯らしが吹く中を、何時間も歩いて回るのはモノ好きの部類に属すだろう。動物たちも、暑い地域出身が多いだろうから、屋外で観客を迎えるよりも、室内で暖を取りながら休んでいる方が快適に違いない。我々も、木曜日(2月7日)が4月並みの暖かさになるという天気予報が出るまでは、動物園を訪れてみようなどとは考えもしなかった。思いがけず、外出日和の日が訪れるというニュースをきいて、近くにありながら訪れる機会のなかった「よこはま動物園ズーラシア」に行くことにした。

ズーラシアは都市型の動物園としては大きい方だ。上野動物園が14ha、多摩動物公園が60ha、東武動物公園が61ha、野毛山動物園が3.3haだ。そしてズーラシアは50haだ。ここは7つのゾーンに分けてあり、地域・気候帯別に生育環境を再現しているとのことだった。

訪れた日は17度まで気温が上がることが予想されていたので、我々と同じように動物園に行こうと考えた人もいたのだろう、思いのほか幼児連れの家族が多かった。幼稚園に入園する前の幼児と、その母親、さらにおじいさん・おばあさんというグループが圧倒的な比率だった。そして、わずかな比率で大学生のカップルが混じっていた。大学入試のために早々と春休みに入った私立大学の学生だろう。一組のカップルは、我々と行動パターンが似ていたのだろう。最初から最後まで我々の前後を見学していた。そして我々と同じ定年後の老夫婦がわずかに見かけられた。

正面の入り口から入場すると、最初のゾーンは「アジアの熱帯林」だ。最初にお出まししてくれたのは動物園の象徴ともいうべき象だ。ズーラシアはゆったりと造られているので、動物たちの動きが自然だ。ここの象はインド象だ。インド北東部や南部の草原に住んでいて、長老のメスを中心に母系家族群をつくり、オスは単独か数頭で行動するそうだ。
f:id:bitterharvest:20190212093519j:plain
象の次はフランソワルトンだ。ベトナム北東部や中国南部の鉱山の森林に生息するオナガザルの仲間だ。群れは1頭のオスと複数のメスとその子供からなり、メスが優勢な母系家族だ。
f:id:bitterharvest:20190212093556j:plain
ライオンと言うとアフリカと思われがちだが、ズーラシアにはインドライオンがいた。
f:id:bitterharvest:20190212093632j:plain
「アジアの熱帯林」にお別れをして、これからは「亜寒帯の森」のゾーンだ。最初はカモシカの仲間のゴールデンターキンだ。中国の中央山岳地帯に生息し、群れは家族群で1頭のオスが複数のメスを率いている。
f:id:bitterharvest:20190212093715j:plain
レッサーパンダアムールヒョウをみて、ユーラシアカワウソへと歩を進めた。水中での動きが速すぎて、写真に収めるのが難しかった。
f:id:bitterharvest:20190212093753j:plain
フンボルトペンギンもひょうきんに我々を出迎えてくれた。ペルーからチリの沿岸部で生息する彼らにとってこの日は暑すぎたのではと感じられた。
f:id:bitterharvest:20190212093832j:plain
f:id:bitterharvest:20190212093910j:plain
ミナミアフリカオットセイも水の中を楽しんでいた。
f:id:bitterharvest:20190212093945j:plain
ホッキョクグマだ。
f:id:bitterharvest:20190212094018j:plain
さらに進んで、「オセアニアの草原」だ。ニューギニア島の中央から東部に生息するセスジキノボリカンガルーだ。珍しいことに樹の上で生活している。
f:id:bitterharvest:20190212094058j:plain
さらに進むと「中央アジアの高地」だ。テングザル、チベットモンキーを見て、ドールだ。ここではタイミングよく職員の方が説明してくれた。かつては30頭もいたが、繁殖が難しかったため、今では3頭になっているそうだ。動物園を維持することの難しさを教えてもらった。
f:id:bitterharvest:20190212094142j:plain
隣にはモウコノロバ。馬科の中では一番小型だそうだが、力が強く記憶力もよいことから古くから家畜として使用されていたそうだ。体高は117~142cm、体重は260kgだそうだ。
f:id:bitterharvest:20190212100300j:plain
ここで「中央アジアの高地」にお別れをして、次は「日本の山里」だ。最初はコウノトリ。江戸時代までは何処にでもいて普通に見られたそうだが、戦後絶滅し、そのあと人工繁殖によって増加し、最近では200羽を超えているそうだ。
f:id:bitterharvest:20190212100335j:plain
コウノトリはタンチョウと間違われることが多かったそうであるが、その横には、やはり紛らわしいクロズル・マナヅルが生活していた。

ツシマヤマネコは夢を見ていた。
f:id:bitterharvest:20190212100404j:plain
アナグマ、タヌキ、キツネ、ニホンザルをみたあと(ツキノワグマは本日は休養日とのこと、見ることはかなわなかった)、「アマゾンの密林」に入る。ここでの目玉はカピバラだろう。但し、日本の冬は彼らには向かないのだろう。暖を取って静かに寝ていた。
f:id:bitterharvest:20190212100451j:plain
イヌやサルなど数種類の動物を見た後、「アフリカの熱帯雨林」へと向かう。ここの見どころはキリン科のオカピだ。残念ながらいいポーズをしてくれなかった。
f:id:bitterharvest:20190212100533j:plain
こちらは、アカカワイノシシだ。
f:id:bitterharvest:20190212100651j:plain
類人猿のチンパンジーだ。人類に最も近い種だ。
f:id:bitterharvest:20190212100721j:plain
そして、最後のゾーンである「アフリカのサバンナ」へと向かった。疲れも出てきたし、お腹もすいてきたので、まずはレストランに入って一休みした。隣の席を見ると、老夫婦が孫と一緒にいた。しかし何となく孫との接し方がしっくりといってないように感じられた。そうこうするうちに、お母さんと思われる人がトイレから戻ってきた。化粧の仕方がユニークだなと感じた。老夫婦とは笑顔を交わすことはあるが、言葉を交わさない。赤ちゃんには話しかけているのだが、その言葉は老夫婦には伝わっていないようだ。国際化が進んだこの頃では、このようなことは日常的に見る光景だが、身近で実感することはそれほどで多くはない。帰り道では、タイからと思われるグループにすれ違った。冬の動物園も外国人の観光コースの一つになったのかと強く印象づけられた瞬間でもあった。
食事をとった後、「アフリカのサバンナ」のゾーンを見学した。サイ、ミーアキャット、ライオン、キリンなど見慣れた動物たちに会った。
f:id:bitterharvest:20190212102654j:plain
f:id:bitterharvest:20190212102734j:plain
f:id:bitterharvest:20190212102805j:plain
f:id:bitterharvest:20190212102840j:plain

そして14時半に退園した。10時近くに入園したので、休憩を含めて4時間半の見学であった。待ち時間もなく、十分に時間をかけてゆっくりと見ることができ、大いに楽しんだ一日であった。オフシーズンの小春日和の日には、このような場所を訪問するのがよいと改めて納得し、ズーラシアを後にした。

コモナドを攻略する

2.コモナド

今回の記事はコモナド(余モンドとも言われる)だ。モナドはあちらこちらで出会うことが多いが、コモナドについての説明はそれほど多くない。今回の記事でも示すが、実はコモナドの概念はとても面白く、現実の世界の中でこれはコモナドではと思うことが多々ある。同窓会などで、久しぶりにかつてのクラスメイトに会って、昔話に話を咲かせているときに、思い出が違っていることにビックリすることが往々にしてある。事実は変わらないはずなのだが、年月がたつにつれてそれぞれの記憶が変容し、異なってしまったのだろう。これなどコモナドのよい例だと思うのだが、正しいかどうかは記事を読んでから確認して欲しい。

2.1 コモナドの定義

モナドモナドは双対概念だ。コモナドは、モナドを定義したときの射の矢印の方向を反対にするだけなのだが、その概念から受け取る感覚は、随分と異なるものになる。圏論でのモナドは哲学からの借用語だが、元々の意味は、単純な実体(elementary particle)であった。そしてそれを表現したものを、表象(representation)と呼んでいた。

これを利用して、圏論での基本的な概念は次のようになっている。
1)単純な実体\(A\)をカプセル化して表象\(T(A)\)を得るための
\begin{eqnarray}
return:A \rightarrow T(A)
\end{eqnarray}
と、
2)カプセル化したものをさらにカプセル化してもそれは変わらないとするための
\begin{eqnarray}
join:T(T(A)) \rightarrow T(A)
\end{eqnarray}
という射を導入して、モナドを定義した。

モナドはこれとは反対の概念になるので、表象から単純な実体を得ることと、表象からさらに表象化されたものを作るということになる。圏論でコモナドを定義するときは、
1)カプセルをはずして対象を得る、即ち、
\begin{eqnarray}
extract:W(A) \rightarrow A
\end{eqnarray}
と、
2)カプセル化したものをさらにカプセル化する
\begin{eqnarray}
duplicate:W(A) \rightarrow W(W(A))
\end{eqnarray}
という射を導入すればよい。

2.2 コモナドライフゲームに生かされている

それでは、コモナドはどのような場面に現れるのであろう。Bartosz Milewskiさんが動画の中で教えてくれたのがライフゲーム(Conway’s Game of Life)だ。ライフゲームを簡単に説明しよう。

ライフゲームは、1970年にイギリスの数学者ジョン・ホートン・コンウェイ(John Horton Conway)により生み出された。これは、生物集団の動的な変化の一端を示してくれるなかなか面白いシミュレーションゲームだ。集団内の各生物の生死はそれを取り囲む環境によって決まるという簡単なルールを導入しただけで、生物集団が消滅したり、成長したり、循環するなどのダイナミックな動きを示してくれる。ルールは次の4個だけだ。
誕生:死んでいるセルに隣接する生きたセルが丁度三つあれば、次の世代は誕生する。
生存:生きているセルに隣接するセルが二つか三つならば、次の世代は生存する。
過疎:生きているセルに隣接する生きたセルが一つ以下ならば、過疎により死滅する。
過密:生きているセルに隣接するセルが四つ以上ならば、過密により死滅する。

例を下図に示そう。

f:id:bitterharvest:20190202141254p:plain
図1:ライフゲームはコモナドのよい例だ。各セルの生死はそれを取り囲む8個のセルの状態によって定まる

このルールから次のことが言える。中心のセルが、誕生してくるか、生き残るか、死滅するかは、その周りの8つのセルの状態によって定まる。次世代の中心のセルの状態\(A\)は、現世代での中心のセルを取り巻いている環境\(W(A)\)によって定まると考えることができる。即ち、\( W(A) \rightarrow A\)と考えることができる。

中心のセル\(A\)を取り巻く周辺のセルの状態\(W(A)\)は環境を与えたが、このときの周辺セルの状態\(W(A)\)から、これらのセルを取り巻く前世代の環境\( W ( W(A)\)へと(あるいはこれを作り出す候補の一つへと)立ち返ることができるであろう。これは、\( W(A) \rightarrow W(W(A))\)と考えることができるだろう。

このように考えると、ライフゲームはコモナドの概念に即したものと言える。ライフゲームで検索するとYouTubeにたくさんの例が載っているので、興味のある読者は参考にされるとよいと思う。

2.3 コモナドは信号処理でも生かされている

Bartosz Milewskiさんは、ライフゲームのほかにもう一つの例を挙げてくれた。それは信号処理だ。我々がコンサートホールで聴く音は、楽器の音そのものではない。直接伝わってくる音だけではなく、壁に跳ね返って入ってくる音もあるし、さらには壁で跳ね返った音が別の壁で跳ね返って入ってくる音もある。一般には、楽器から出た音がコンサートホールというフィルタを通った後の音を聴いていると考えてよい。

これを工学的に扱うのが信号処理だ。コンサートホールでのオーケストラと聴衆の関係をモデル化すると下図のようになる。オーケストラが出す音は入力信号で、聴衆が聞く音は出力信号だ。オーケストラの音はホールという音響装置を伝わって聴衆の耳に入るが、入力信号を変化させて異なる信号を出力するものをフィルタと呼ぶ。この例ではフィルタの役割をしているのはホールだ。

f:id:bitterharvest:20190203083910p:plain
図2:オーケストラホールもコモナドのよい例だ。オーケストラが奏でる曲はホールというフィルタを通して聴衆の耳に入るが、フィルタはコモナドを定義する重要な射の役割を果たしている
信号処理の理論は、入力信号が分かったときに、出力信号がどのようになるかを教えてくれる。この理論は、線形で時不変であることを前提にしている。即ち、下記の式が成り立つ理想的な状況だ。
\begin{eqnarray}
L(C_1 f_1(t)+ C_2 f_2(t)) &=& C_1 L(f_1(t))+ C_2 L(f_2(t)) \\
L(f(t-τ)) &=& g(t-τ)
\end{eqnarray}
最初の式は線形であることを表している。すなわち入力信号が\(C_1 f_1(t)\)と\(C_2 f_2(t)\)とを加えたものであるとき、出力信号は、やはり、それぞれの出力信号\(C_1 L(f_1(t))\)と\(C_2 L(f_2(t))\)との和になるというものだ。最後の式は、時不変を表すもので、時間を変えて入力信号を与えたとしても、出力信号の形は同じになるというものだ。即ち、時間に依らないというものだ。

これらの条件を前提にして、入力信号に対する出力信号を得るためには、基本演算として畳み込みを利用する。これを用いるためにはインパルス応答を理解しておかないといけない。

インパルスは、時間幅が無限小で高さが無限大のパルスをいう(数学的なモデルなので、実感としてつかみにくいが、時間\(t=0\)のときだけ高さが1になる信号と理解しておけばよい)。このインパルスを入力信号としてフィルタに入力したとき、そこから出力された出力信号をインパルス応答という。

f:id:bitterharvest:20190204084256p:plain
図3:インパルス応答は、無限大の高さと無限小の幅の入力信号が与えられたときのフィルタからの出力でこれをインパルス応答と呼ぶ。しかし、この定義ではインパルスのイメージがつかみにくいので、\(t=0\)のときにだけ高さ1になる信号と考え、これを入力信号とし、フィルタを通ったあとの出力信号をインパルス応答という
フィルタのインパルス応答\(h(t)\)が分かっている場合には、線形で時不変であるならば、どのような入力信号を与えたとしても、それに対応した出力信号を得ることができる。
f:id:bitterharvest:20190202142151p:plain
図4:入力信号が与えられたとき、それぞれの時点である高さのパルスが与えられたと見なし、それへの応答を畳み込むことで出力信号を求めることができる

その原理を示したのが下図である。入力信号が始まるとき、即ち\(τ=0\)のときの出力信号を求める(橙色)。これは、入力信号の高さ分だけインパルス応答を高めてあげればよい。同じように、時不変であることを利用して、1単位時間だけ経過したときに受けた入力信号、即ち\(τ=1\)、のときの出力信号を求める(薄茶色)。同じように、\(τ=2,3,4…\)に対しても出力信号を求める(薄緑、肌色、茶…)。
f:id:bitterharvest:20190202142629p:plain
図5:畳み込みの原理は、線形で時不変であるという条件を用いて、応答の遅延に合わせてく足し合わせることで得られる。

それでは、時間が\(m\)のときの出力信号がどのようになるかを考えてみよう。これは、線形であることを利用して、時間\(n\)(但し\(n \le m\))の出力の和となる。例えば、\(m=4\)であれば、\(n=0,1,2,3,4\)の出力信号の和となる。入力信号を\(f(t)\)としインパルス応答を\(h(t)\)として、式で表すと、
\begin{eqnarray}
g(m) = \sum^m_{n=0}f(n) h(m-n)
\end{eqnarray}
となる。ところで、\(f(n)\)は、時間\(n\)から\(n+1\)までを代表した値であるので、それを明示すると上の式は次のようになる。
\begin{eqnarray}
g(m) = \sum^m_{n=0}f(n) h(m-n) \times ( (n+1) –n)
\end{eqnarray}
そこで、刻み幅を1ではなく、微小な間隔\(dτ\)としよう。そして、\(m,n\)を\(mdτ,ndτ\)で置き換えると上式は、
\begin{eqnarray}
g(mdτ) = \sum^{mdτ}_{ndτ=0}f(ndτ) h(mdτ-ndτ) dτ
\end{eqnarray}
となる。さらに、\(t=mdτ, τ=ndτ\)とすると上式は、
\begin{eqnarray}
g(t) = \sum^t_{τ=0}f(τ) h(t -τ) dτ
\end{eqnarray}

\(h(t-τ)\)の値は、\(τ\)が\(-\infty\)から0までと、\(t\)から\(\infty\)まででは0であることに注意して、上式を積分の形にすると次の式が得られる。
\begin{eqnarray}
g(t) = \int^{-\infty}_{\infty}f(τ) h(t-τ)dτ
\end{eqnarray}

このように信号処理での畳み込みは、これまでに入力された信号毎に、その大きさに合わせてインパルス応答を求め、それらを重ね合わせたものである。このため、出力信号は、入力信号をフィルタ\(L\)によってカプセル化されたものと見なすことができる。もし入力信号も同じようにカプセル化されたものであるとするならば、\(g:L(A) \rightarrow L(L(A))\)となり、コモナドの\(duplicate\)を想起させる。これについては、後半でもう一度触れることにしよう。

2.4 Haskellモナドを利用してコモナドを定義する

モナドを攻略するという記事の中で、Haskellでのモナドの定義は以下のように記した。

class Applicative m => Monad m where
  (>>=) :: forall a b. m a -> (a -> m b) -> m b

  (>>) :: forall a b. m a -> m b -> m b
  m >> k = m >>= \_ - > k

  return :: a -> m a
  return = pure

  fail :: String -> m a
  fail s = errorWithoutStackTrace s

さらに、これらのメソッドは単位律と結合律を満足する。

上の定義で、\((>>=)\)は次のように書き換えることも可能である。2,4番目のメソッドを省いてモナドを定義すると次のようになる。

class Applicative m => Monad m where
  (>=>) :: forall a b c. (a -> m b) -> (b -> m c) -> (a -> m c)
  return :: a -> m a

これより\((>=>)\)が、関数の合成に似ていることに気がつくと思う。即ち、次のように類似している。

(.) :: (a -> b) -> (b -> c) -> (a -> c)
(>=>) :: Monad m => (a -> m b) -> (b -> m c) -> (a -> m c)

一般にモナドへの射をクライスリ射と呼ぶ(上記の\(a \rightarrow m \ b, b \rightarrow m \ c\)はクライスリ射)ので、この合成は左から右へのクライスリ射の合成と呼ばれる。

さらに、恒等射についても次のように類似する。

id : a -> a
return :: Monad m => a -> m a

それでは、コモナド定義してみよう。矢印の向きを変えればよいので、次のようになる。なお、モナドの場合には、\(Functor\)と\(M onad\)の間に\(Applicative\)というクラスが存在したが、コモナドの場合にはそのようなものがないので、\(Functor\)から継承することにする。

class Functor w => Comonad w where
  (=>=) :: forall a b c. (w a -> b) -> (w b -> c) -> (w a -> c)
  extract :: w a -> a

なお、これらのメソッドは単位律、結合律は満たすものとする。また\((>=>)\)の場合と同様に、\((=>=)\)を左から右へのコクライスリ射の合成という。

Haskellではインスタンスを作り出してメソッドを使えるようにすることが重要だ。そこで、データ型を用意して、メソッドを実装することを考えてみよう。コモナドはカプセルをはずして中身を取り出すようになっているので、(任意の)データ型\(a\)が環境としての(任意の)データ型\(e\)でカプセル化されており、関数\(f\)によって、(任意の)データ型\(b\)が取り出されると考えよう。即ち、Haskellで記述すると、

f :: (a,e) -> b 

と考える。即ち、\(a\)と\(e\)の積と考えて、次のようなデータ型を用意しよう。

data Prod e a = Prod e a

それではデータ型\(Prod \ e \ a\)をコモナドインスタンスとして定義しよう。これは次のようになる。

instance Functor (Prod e) where
  fmap f (Prod e a) = Prod e (f a)

instance Comonad (Prod e) where
  f =>= g = \(Prod e a) -> let b = f (Prod e a)
                               c = g (Prod e b)
                           in c
  extract (Prod e a) = a 

それではプログラムを使った例を示そう。

f:id:bitterharvest:20190202143001p:plain
図6:環境でカプセル化したデータ型\(P( e \ a)\)の実行例

プログラムのコードは次のようになっている。
f:id:bitterharvest:20190202143224p:plain
図7:環境でカプセル化したデータ型\(P( e \ a)\)のコード

2.5 Haskellのコモナドから圏論でのコモナド

圏論でのコモナドは、\(extract\)と\(duplicate\)を用いて定義していた。そこで、Haskellの定義から導き出すことにしよう。

\((=>=)\)の定義の中では二つの関数を入力にしている。即ち\(f : w \ a \rightarrow b\)と\(g: w \ b \rightarrow c\)である。\(g\)は入力として\(w \ b\)を必要とするので、\(f\)を利用して\(w \ b\)を出力するような関数\(extend\)を定義しよう。これは次のようになる。

extend :: (w a -> b) -> w a -> w b

このようにすると、

 (=>=) f g = g . extend f

となる。

プログラムは下記のようになる。

f:id:bitterharvest:20190202143415p:plain
図8:コモナドのクラスを\(extract,duplicate\)で定義する

それでは\(duplicate\)から\(extend\)が得られることを示そう。そのために\(duplicate\)を次のように定義しておこう。

duplicate :: w a -> w (w a)

一方\(extend\)は

extend :: (w a -> b) -> w a -> w  b

であり、射\( (w \ a \rightarrow b)\)を利用している。そこで、この射を関手\(w\)で持ち上げることを考えよう。\(fmap\)は次のように次のように定義されていた(なお、下での\(f\)は、紛らわしいのだが、関手であり、これまでの\(f\)とは別物だ)。

fmap :: (a -> b) -> f a -> f b

従って、

fmap :: (w a -> b) -> w (w a) -> w b

である。
これより、

extend f (w a) = fmap f (duplicate (w a))

となる。\( w \ a \)は任意なので、上の式は、

extend f = fmap f . duplicate

となり、さらに、

extend id = fmap id . duplicate

即ち、

extend id = duplicate

となる。
従って、コモナドは以下のように\(duplicate\)と\(extract\)を用いて表すことができる。

class Functor w => Comonad w where
  duplicate :: w a -> w (w a)
  extract :: w a -> a

extend f = fmap f . duplicate
(=>=) f g = g . extend f

もちろん、これらのメソッドは単位律と結合律を満足しなければならない。

2.6 信号処理をコモナドで実現する

信号処理の原理について説明したが、コモナドの概念が分かってきたところで、これを実際に使ってみよう。

f:id:bitterharvest:20190205095543p:plain
図9:入力信号をスムーズ化して出力する。\(n\)の時間内に入ってきた入力信号の平均を出力する
ここでのフィルタはスムーズな信号を得ることとし、\(n\)時間前までの入力信号の平均をとるものとしよう。

式で表すと次のようになる。
\begin{eqnarray}
g(n) =\frac{1}{n} \sum^n_{m=0}f(m)
\end{eqnarray}
極めて簡単な式だ。そこで、入力信号をストリームで表すことにし、データ型\(Stream\)を用意しよう。

data Stream a = Cons a (Stream a) | Null deriving Show

上の定義で、\(Cons \ a\)の\(a\)が現時点の入力信号だ。そして、\(Stream \ a\)はそれ以前の入力信号の列で新しいものほど左側にある。

これをコモナドインスタンスにしよう。

instance Functor Stream where
  fmap f Null = Null
  fmap f (Cons a as) = Cons (f a) (fmap f as)

instance Comonad Stream where
  extract (Cons a _) = a
  duplicate Null = Null
  duplicate (Cons a as) = (Cons (Cons a as) (duplicate as))

上の定義で、duplicateはストリームのストリームを作っている。そして、最初のストリームは、現時点までの入力信号の列である。そして、次のストリームは、一つ前の時点までに受けた入力信号の列である。

それでは、ある時点までの入力信号の列をストリームの形で受けたときの、その時点での出力信号を求めてみよう。先の式で示したように、ストリームの最初から\(n\)個までの入力信号を足し合わせ(以下のプログラムでは\(sumN\)である)、それらを\(n\)で割ればよい(以下のプログラムでは\(aveN\)である)ので、次のようになる。

sumN :: Num a => Int -> (Stream a) -> a
sumN n Null = 0
sumN n (Cons a as) = if n <= 0 then 0 else a + (sumN (n-1) as)

aveN :: Fractional a => Int -> Stream a -> a
aveN n Null = 0
aveN n stm = (sumN n stm) / (fromIntegral n)

これを、現時点までの入力信号の列、一つ前までの入力信号の列、二つ前までの入力信号の列、…からそれぞれ出力信号を得れば、現時点までの出力信号の列を得ることができる。従って、

outN :: Fractional a => Int -> (Stream a) -> (Stream a)
outN n Null = Null
outN n stm = fmap (aveN n) (duplicate stm)

となる。
この式は以下のようにしてもよい。

outN :: Fractional a => Int -> (Stream a) -> (Stream a)
outN n Null = Null
outN n stm = extend (aveN n) stm

少し簡単すぎたので、もう少し一般的な信号処理を扱ってみよう。

インパルス応答は、現在の時間での応答、次の時間が来たときの応答、その次の時間が来たときの応答というように、入力信号列と同様に、ストリームで表すことができる。そこで、ある時点までの入力信号の列が与えられているときに、そのときの出力は次のように表すことができる。

以下のプログラムで、\(zipstream\)はある時点での出力信号を求めるためのものである。これはストリームになっていて、この時点に入ってきた入力信号に対するこの時点の出力信号、その一つ前の時点で入ってきた入力信号に対するこの時点の出力信号、さらに一つ前の入力信号に対するこの時点の出力信号となっている。即ち、この時点までに入ってきた入力信号からの子の時点での出力信号の列である。\(zipstream\)は三つの入力を受ける。それらは \( f \ inp \ stm\)で、\(inp\)はインパルス応答、\(stm\)は入力信号である。なお、\(f\)はインパルス応答と入力信号のそれぞれに対する演算で、この場合は常に乗算である。

また、\(conv\)はある時点での出力信号の総和をとる。

zipstream :: Num a => (a -> a -> a) -> (Stream a) -> (Stream a) -> (Stream a)
zipstream f Null _ = Null
zipstream f _ Null = Null
zipstream f (Cons a as) (Cons b bs) = Cons (f a b) (zipstream f as bs)

conv :: Num a => (Stream a) -> a
conv Null = 0
conv (Cons a as) = a + (conv as)

\(out\)は現時点までの出力信号の列である。

outC :: Num a => (Stream a) -> (Stream a) -> (Stream a)
outC inp stm = fmap conv (extend (zipstream (*) inp) stm)
--outC inp stm = fmap conv (fmap (zipstream (*) inp) (duplicate stm))

それでは利用してみよう。例として用いるのは信号処理の原理を説明したときの例だ。もう一度図を表示しよう。

f:id:bitterharvest:20190202142151p:plain
図10:上記の信号処理と同じ結果をプログラムが出力するかを確認する
入力信号のストリームは、新しい信号ほどストリームの左側に来るので、入力信号の図で左側からストリームに詰め込んでいく。従って、最も奥に詰め込まれる入力は、図で時間\(0\)のときの\(1\)という値だ。そこで一番奥を\(Cons 1 Null\)として、入力の値を詰めていくと次のようになる。

stm = Cons 0 (Cons 0 (Cons 0 (Cons 0 (Cons 0 (Cons 0 (Cons 0 (Cons 0 (Cons 0 (Cons 0 (Cons 0 (Cons (-2.5) (Cons 0.8 (Cons 2.8 (Cons 1.4 (Cons 1 Null)))))))))))))))

インパルス応答の図は、左側に行くほどより以前に来た入力に応答するようになっているので、左側がストリームの先頭になるようにする。従って次のようになる。

inp = Cons 0 (Cons 0.53 (Cons 0.42 (Cons 0.13 (Cons (-0.05) (Cons (-0.09) (Cons (-0.05) (Cons (-0.01) (Cons 0.01 (Cons 0.01 (Cons 0.01 (Cons 0 Null)))))))))))

全体のプログラムを示しておこう。

f:id:bitterharvest:20190202144228p:plain
図11:信号処理のプログラム

これを実行してみよう。結果は次のようになる。ストリームの左側の方が新しい出力である。プログラムの実行結果を見ると、図の値と同じであることが分かり、プログラムが適切に機能していることが分かる。

f:id:bitterharvest:20190202144344p:plain
図12:信号処理のプログラムの実行結果

信号処理での畳み込みのプログラムが、このようにすっきりと短いコードで書き表せるのはHaskellの特徴だ。C言語で書いていた時のわずらわしさは、ここにはない。

2.7 圏論でのコモナド

それではHaskellから圏論へと場面を変えることにしよう。Haskellで用いた関数\(duplicate,extract\)は、圏論では自然変換と考えるのがよい。このようにすると、

extract:: w a -> a

は下図のように考えることができる。

f:id:bitterharvest:20190204205357p:plain
図13:Haskellで定義されている関数\(extract\)を、圏論でのコモナドの圏の射として定義するときは、自然変換と見なして行う

すなわち\(w \ a\)は関手\(W:A \rightarrow W(A)\)と見なすことができ、\(a\)は関手\(I:A \rightarrow A\)と見なすことが可能である。この結果、\(extract\)は自然変換\(ε:W \rightarrow I \)とすることができる。

同様に、\(duplicate\)は下図に示すように\(δ:W \rightarrow W \circ W\)とすることができる。

f:id:bitterharvest:20190204205814p:plain
図14:\(duplicate\)についても自然変換と見なして定義する

また、単位律、結合律が守られることから、これを可換図式で表すと下図が得られる。右側の二つの図は、コモナドの三角恒等式と呼ばれるものだ。
f:id:bitterharvest:20190204205940p:plain
図15:コモナドの圏での単位律、結合律に相当するものを可換図式で表す

それでは、コモナドの圏を定義しておこう。
モナドの圏の構成
対象:\(I_C,W,W \circ W, W \circ W circ W,…\)
射:\(ε:I_C \rightarrow W, δ:W \rightarrow W \circ W\)
恒等射:\(I_W\)
合成:\( \circ \)
結合律:\( δ \circ (I_W \circ δ) = δ \circ (δ \circ W) \)
単位律:\(( ε \circ I_W) \circ δ = I_W = (I_W \circ ε) \circ δ \)
図で表すと以下のようになる。
f:id:bitterharvest:20190204210056p:plain
図16:コモナドの圏:関手が対象となり、自然変換が射となる

2.8 コモナドと随伴との関係

それではコモナドと随伴との関係を見てみよう。随伴には、内容は同じだが複数の定義がある。余単位(counit)・単位(unit)随伴はその中の一つで、それは次のようになっている。
圏\(\mathcal{C}\)と\(\mathcal{D}\)の余単位・単位随伴は二つの関手
\begin{eqnarray}
L: \mathcal{D} \rightarrow \mathcal{C} \\
R: \mathcal{C} \rightarrow \mathcal{D}
\end{eqnarray}
および二つの自然変換
\begin{eqnarray}
η: I_\mathcal{D} \rightarrow R \circ L \\
ε: L \circ R \rightarrow I_\mathcal{C}
\end{eqnarray}
であって(ηは単位、εは余単位と呼ばれる)、これらの合成
\begin{eqnarray}
L =L \circ I_\mathcal{D} \xrightarrow{L \circ η} L \circ R \circ L \xrightarrow{ε\circ L} L \\
R = I_\mathcal{D} \circ R \xrightarrow{η\circ R} R \circ L \circ R \xrightarrow{R \circ ε} R
\end{eqnarray}
がそれぞれ\(L\)と\(R\)上の恒等変換\(I_L,I_R\)となることである。これは三角恒等式(triangle identities)と呼ばれる。

図で表してみよう。随伴の定義に関する図は次のようになっている。

f:id:bitterharvest:20181222203140p:plain
図17:随伴の定義にはいくつかあるが、単位(\(unit:I_\mathcal{D} \rightarrow R \circ L\))・余単位(\(counit:L \circ R \rightarrow I_\mathcal{C}\))を用いての定義も良く用いられる

また、三角恒等式を関図式で表すと次の通りだ。

f:id:bitterharvest:20181223065614p:plain
図18:余単位・単位による随伴の定義の一部である三角恒等式の可換図式
それではこの定義からコモナドを導くこととしよう。コモナドでの射\(δ,ε\)が、随伴を定めている\(η,ε\)から得られることを示せばよい。そこで、
\begin{eqnarray}
W=L \circ R
\end{eqnarray}
としてみよう。コモナド側の\(ε\)を得ることは簡単だ。
\begin{eqnarray}
ε : I_\mathcal{D} \xrightarrow{ε} L \circ R = W
\end{eqnarray}

それでは\(δ\)について考えよう。次のようにすればよい。
\begin{eqnarray}
δ : W = L \circ R = L \circ I_D \circ R \xrightarrow{L \circ η \circ R} L \circ R \circ L \circ R = W \circ W
\end{eqnarray}

モナドの圏での単位律、結合律も同じように得られるので試みて欲しい。

北部九州を旅行する(4日目午後)-大宰府から鴻臚館へ

筑紫君磐井の岩戸山古墳を見学したあとの午後も、福岡県の歴史的な遺産を訪ねた。最初の目的地は、古代においては九州の中心地であった大宰府だ。

岩戸山古墳からバスで久留米に戻ったが、さらに久留米駅から西鉄の電車を利用して大宰府に行くためには、西鉄二日市西鉄大宰府線に乗り換える必要がある。二日市駅から大宰府駅まではわずか二駅だが、これまでに利用した電車やバスと違って、やけに混んでいることに気がついた。しかも、日本語以外の言葉があちらこちらから聞こえてきた。

駅舎を出てさらにビックリ。太宰府天満宮までの道は人で埋め尽くされていた。人波が切れたときに参道の風景を写真に収めたがこの通り。
f:id:bitterharvest:20190124100531j:plain
1月12日の土曜日ということがあったのかもしれないが、閑散とした遺跡に馴染んできた身には、この人ごみはこたえた。太宰府天満宮の写真を撮って、早々に退散することとした。
f:id:bitterharvest:20190124100613j:plain
当初はやはり大宰府にある九州国立博物館をゆっくり見学しようと思っていたが、これも断念し、板付遺跡へと向かうことにした。ここは、西鉄天神大牟田線では井尻駅が最も近い。ここから歩くと25分程度だが、幸いにも駅を出たときにタクシーが来たのでこれを利用した。
f:id:bitterharvest:20190124100459p:plain
板付遺跡は、日本最古の稲作集落として知られ、その集落は弥生時代の特徴である環濠によって囲まれている。しかも環濠は二重だ。集落を外敵から守るために強固な構えにする必要があったのだろう。集落の周囲からは水田跡が発見された。この水田は、土砂が堆積してできた沖積地に築かれた。次の写真は板付遺跡の外観だ。左側が二重の環濠で囲まれた集落。真ん中が水田だ。
f:id:bitterharvest:20190124100644j:plain
最初に環濠集落を訪れた。環濠は幅約6m深さが3~3.5mだ。
f:id:bitterharvest:20190124100717j:plain
住居跡は発見されなかったそうだが、板付集落と同時期の福岡県粕屋町江尻遺跡の発掘例をもとに、竪穴住居が復元されていた。このような竪穴住居は、大韓民国忠清南道の松菊里(ソングンニ)遺跡から発見されたことから、松菊里(しょうぎくり)型住宅とも呼ばれている。
f:id:bitterharvest:20190124100749j:plain
f:id:bitterharvest:20190124100821j:plain
水田跡は、
f:id:bitterharvest:20190124100857j:plain
板付遺跡の周囲の地形だ。谷の出口に近いところに築かれたことが分かる
f:id:bitterharvest:20190124101033j:plain
板付遺跡の模型だ。集落が少し小高いところに位置していることが分かる。
f:id:bitterharvest:20190124100931j:plain
また板付遺跡弥生館には土器も展示されていた。
f:id:bitterharvest:20190124101101j:plain

この後バスと地下鉄を利用して、鴻臚館へと向かう。この場所はかつて平和台球場があった場所だ。

鴻臚館は、現在の迎賓館に相当する施設だ。磐井の乱(527~528年)の後の536年に、那津のほとりに那津官家(なのつのみやけ)が設けられ、九州支配と外交を担った。白村江の戦い(663年)の翌年、行政機能は太宰府に移され、那津のほとりには海外交流と国防の拠点施設が残され、この施設は筑紫館と呼ばれ、唐、新羅渤海使節を迎えた。鴻臚館という名称は、駐豪唐王朝の鴻臚寺に由来し、9世紀前半頃から用いられるようになった。菅原道真遣唐使の中止(894年)の後も貿易は続けられ、中国・朝鮮からの商人たちは鴻臚館に滞在した。貿易は10世紀初めごろ官営から民営へと移行するが、鴻臚館は商人たちの滞在場所として維持された。しかし、11世紀半ばごろにはその役割を終えた。

鴻臚館の場所が確定されたのは最近で、1987年に平和台球場外野席改修の際に遺構が確認され、その翌年から発掘調査が始まった。

鴻臚館の外観、
f:id:bitterharvest:20190124101136j:plain
復元された鴻臚館、
f:id:bitterharvest:20190124101205j:plain
f:id:bitterharvest:20190124101234j:plain
鴻臚館については、奈良時代に編纂された万葉集の中にも出てくる。新羅に遣わされた使節の一行が763年に詠った「筑紫の舘(たち)に至りて遥(はるか)に本郷(もとつくに)を望みて、悽愴(いた)みて作れる歌四首」がそれである。

志賀の海人(あま)の一日もおちず焼く塩のからき恋をも吾(あ)れはするかも
志賀の浦に漁(いざり)する海人(あま)家人(いへひと)の待ち恋ふらむに明(あ)かし釣る魚(うを)
可之布江(かしふえ)に鶴(たづ)鳴き渡る志賀の浦に沖つ白波立ちし来(く)らしも
今よりは秋づきぬらしあしひきの山(やま)松蔭(まつかげ)にひぐらし鳴きぬ

鴻臚館跡からは、当時の貿易によって輸入された白磁器や青磁器が発掘されている。
f:id:bitterharvest:20190124101303j:plain
f:id:bitterharvest:20190124101335j:plain
また遣唐使船の模型もあった。
f:id:bitterharvest:20190124101403j:plain
トイレも発見されていて、以下の写真は、その時に使われた籌木(ちゅうぎ)、当時のトイレットペーパーだ。ケガしそうで嫌だが、このようなものが使われていた。
f:id:bitterharvest:20190124101433j:plain

鴻臚館を出るときに、窓口の方が地図を参照にしながら、福岡城の見学場所を教えてくれた。
f:id:bitterharvest:20190124105114j:plain
福岡城むかし探訪館」で紹介のビデオを流しているので、それを見てから見学するといいということだったので、まずは探訪館を訪れた。そこには、福岡城の模型もあった。
f:id:bitterharvest:20190124101526j:plain
また、ビデオによれば、福岡城は戦国時代の武将黒田長政により築かれた城で、関ケ原の戦いでの功績により、豊前国中津16万石から筑前一国52.3万石に転封され、博多を望む福崎の丘陵地に城を築き、明治になるまで、黒田氏が藩主としてこの地に居城したとのことだ。

ビデオを見た後、窓口の方が教えてくれた順路に従って、福岡城を見学した。

三の丸、二の丸、本丸、天守台へと続く城内へと導く主要な門であった東御門跡、
f:id:bitterharvest:20190124101644j:plain
そして、本丸の北東隅にある祈念櫓(やぐら)だ。
f:id:bitterharvest:20190124101714j:plain
f:id:bitterharvest:20190124101738j:plain
近くの梅林では梅が咲き始め、香ばしいにおいがした。
f:id:bitterharvest:20190124101822j:plain
本丸から福岡の市街地を望んだ。
f:id:bitterharvest:20190124101853j:plain
裏御門跡、
f:id:bitterharvest:20190124101940j:plain
江戸時代から場内に残る唯一の櫓の多聞櫓、国指定重要文化財になっている。
f:id:bitterharvest:20190124102021j:plain
f:id:bitterharvest:20190124102052j:plain
西側にあり、日常の通用門として利用された下之橋御門、
f:id:bitterharvest:20190124102144j:plain

福岡城を抜けたころには、日もだいぶ傾き、寒くもなってきたので、帰路に着くこととした。

これまで北部九州については全く土地勘がなかったので、歴史の書物の中で、これらの地名が出てきたとしても、具体的なイメージを抱くことができず、概念的にしか理解できないでいた。今回、訪問することによって、それぞれの土地の地形も分かり、さらには、それぞれの地域がどのように結びついているのかも、感覚的にも分かるようになった。「百聞は一見に如かず」という諺があるけれども、その通りだと改めて認識し、とても良い旅だったと、旅行から二週間たった今でも思っている。

北部九州を旅行する(4日目午前)ー筑紫君磐井の遺跡を訪ねる

北部九州の旅行を始めてから4日目、最終日だ。夜7時の飛行機で東京に戻ることにしているので、見学の時間はたっぷりだ。前日、吉野ケ里遺跡を見学しているときに、北部九州の古代国家について、ボランティアガイドの人と意見の食い違いはあったが、楽しく談笑している中で、磐井の乱が話題に上った。そのとき、ボランティアガイドの人が、その地は向こう側の八女だと教えてくれた。吉野ケ里遺跡からこんなにも近いところに磐井が残した遺跡があろうとは思ってもいなかったので、当初の予定を変更して、磐井の墓と思われている岩戸山古墳へと向かうことにした。
f:id:bitterharvest:20190121160204p:plain
ホテルはJRの駅から遠いので交通の便が良いとは言えないのだが、都合のよいことにホテルの近くから久留米駅行のバスが出ていることが分かった。さらに良いことに、久留米駅で乗り換えて八女方面に向かえば、岩戸山古墳にたどり着けることも分かった。ホテルのフロントでバスの時刻を教えてもらい、8時14分のバスに乗る。携帯電話で確認したらこの時刻にはバスは走っていないので少し心配になったが、ホテルからの情報を信用して、無事に岩戸山古墳へと向かうことができた。

久留米駅に近づいたころ、バスの窓から趣のある教会が目に入ってきた。由緒ある建物ではと写真を撮った。後で調べたところ、毛利秀包(ひでかね)が久留米領主であった時代(1587~1600)に始まるそうだ。黒田如水の仲介もあって秀包は、キリシタン大名大友宗麟の七女マセンチア引地を妻にし、宗麟や妻の勧めによって洗礼を受け、宣教師を保護し、城のそばに教会堂を建立したそうだ(イエズス会年報1600年)。写真の聖堂は1955年に建てられたものだ。
f:id:bitterharvest:20190121160247j:plain
久留米駅でバスを乗り換え、最寄りのバス停の福島高校前で降車した。岩戸山古墳の近くには八女市岩手山歴史文化交流館があり、まずはここに立ち寄った。ここでは、岩手山古墳の石像を中心にした展示があった。

展示室を入るとすぐに、「リーダーの誕生」という説明があり、2000年前ごろの北部九州で大集落が発生したことを教えてくれた。春日市の須玖(すく)・岡本遺跡群(奴国)、糸島氏の三雲・井原遺跡群(伊都国)などとともに、八女市にも大規模な環濠を伴う室岡遺跡群がうまれたそうだ(ここでは説明されていなかったが、前日に訪問した吉野ケ里遺跡も含まれるが、室岡遺跡とともにクニの名前は残っていない)。次の写真は室岡遺跡群の西山ノ上遺跡から発見された遺物だ。鉄片が展示されていて、この当時、先進的な場所であったことが分かる。
f:id:bitterharvest:20190121160341j:plain
同じように先進性を示す茶ノ木ノ本遺跡から出土された銅鉾(どうほこ)・同鏡などもあった。
f:id:bitterharvest:20190121160424j:plain
f:id:bitterharvest:20190121160502j:plain
古墳時代になると円墳や前方後円墳が現れる。
f:id:bitterharvest:20190121160543j:plain
5世紀初めの立山山24号墳からは銅鏡・勾玉・製鉄武器が副葬されていることから、この地方に有力者が出現したことがわかる。
f:id:bitterharvest:20190121160616j:plain
f:id:bitterharvest:20190121160655j:plain
同じころ前方後円墳も現れる。これは有力者が統合され、「磐井」一族が生み出されたとも考えられている。前方後円墳は系列をなし、5世紀には、石人山古墳、岩櫃山古墳、そして6世紀になるとこの地域では最大規模の岩戸山古墳が現れ、その後に磐井の乱で滅ぼされた影響を受けたのだろう、小型化した乗場古墳・善蔵塚古墳・鶴見山古墳を経て、7世紀には円墳の童男山古墳へとなる。

岩戸山古墳からは沢山の石像が出現している。しばらく見ていこう。「刀を帯び鞘を負う石人」
f:id:bitterharvest:20190121160743j:plain
「鞘を負う石人」
f:id:bitterharvest:20190121160826j:plain
石刀
f:id:bitterharvest:20190121160907j:plain
武装石人頭部」
f:id:bitterharvest:20190121161003j:plain
武装石人」
f:id:bitterharvest:20190121161049j:plain
「石鞘」
f:id:bitterharvest:20190121161127j:plain
「石盾」
f:id:bitterharvest:20190121161212j:plain
f:id:bitterharvest:20190121161243j:plain
その他にもたくさんの石像があった。
f:id:bitterharvest:20190121161329j:plain
f:id:bitterharvest:20190121161502j:plain
f:id:bitterharvest:20190121161538j:plain
f:id:bitterharvest:20190121161609j:plain
f:id:bitterharvest:20190121161642j:plain

磐井の乱とは継体天皇の時代の北部九州でのヤマトと磐井との争いであった。527年にヤマト王権は、近江毛野が率いる軍を朝鮮半島へ出兵させようとしたが、筑紫君磐井にはばまれたので、ヤマト王権は北部九州に物部麁鹿火(あらかい)と大友金村を北部九州を派遣した。そして、磐井はヤマト王権軍によって鎮圧された。

磐井の乱終結した後、ヤマト王権から罰せられることを恐れた磐井の息子の葛子(くずこ)は、糟屋の地を差し出した。ヤマト王権はこの地を屯倉とし、このあと北部九州に次々に屯倉を設置していき、ヤマト王権による中央集権化が進んでいった。そのような中にあって、磐井の後継者たちは、90m規模の岩手山古墳には劣るものの、乗場古墳・鶴見山古墳などの大型前方後円墳を次々に築造し、一族再生の機会をうかがったようだ。

ヤマト王権により設置された北部九州の屯倉が下の写真の赤い丸の部分だ。。
f:id:bitterharvest:20190121161747j:plain

磐井の側近たちの墓とも考えられている6世紀の釘崎古墳から発掘された武具だ。
f:id:bitterharvest:20190121161852j:plain
f:id:bitterharvest:20190121161926j:plain
f:id:bitterharvest:20190121162000j:plain

交流館を抜けて岩戸山古墳へと行った。模造だが石像が展示されていた。ここは筑紫国風土記に記載されている別区と呼ばれる場所だ。
f:id:bitterharvest:20190121162044j:plain
岩戸山古墳の入り口、
f:id:bitterharvest:20190121162118j:plain
古墳は鬱蒼たる樹木で覆われていた。
f:id:bitterharvest:20190121162214j:plain
f:id:bitterharvest:20190121162244j:plain
近くには岩戸山4号古墳があり、石室が見られるようになっていた。
f:id:bitterharvest:20190121162323j:plain
f:id:bitterharvest:20190121162353j:plain

岩戸山古墳をたっぷりと見学したので、古代時代の九州の中心地である大宰府へと向かう。
f:id:bitterharvest:20190121162723p:plain
久留米に近づいたころ車窓に何とも変わった大仏と塔が現れた。後でインターネットで調べたところ、成田山久留米分院の救世慈母大観音様とインドのブッタガヤ大仏塔と同型の塔ということが分かった。
f:id:bitterharvest:20190121162436j:plain
久留米駅西鉄天神大牟田線に乗り換えて大宰府へと向かった。この続きは次のブログで紹介しよう。

北部九州を旅行する(3日目)ー吉野ケ里歴史公園を訪れる

三日目は吉野ケ里遺跡だ。日本史を勉強し始めてから、弥生時代の最大集落であるこの遺跡を訪ねてみたいと思っていた。また、卑弥呼邪馬台国だったと信じている人もいるので、確認してみたいとも考えていた。

由布院温泉から吉野ケ里遺跡までは列車だ。由布院駅9時7分発の特急ゆふ2号で鳥栖駅に向かい、そのあと長崎本線に乗り換えて吉野ヶ里公園駅で下車すればよい。北部九州を横断して、乗り換え時間も含めて約2時間半の列車の旅だ。
f:id:bitterharvest:20190119144228p:plain
吉野ヶ里公園駅で降り、歴史公園の方に向かうのは、私一人だ。のんびりとそしてゆっくりと見学できそうで期待が高まる。駅から公園までの直線道路は沢山のお客さんが来る時期に備えてなのだろう、舗装工事を行っていた。このため、迂回路が用意されていて、たんぼを巡りながら目的地へと向かった。
f:id:bitterharvest:20190119144304p:plain
吉野ケ里歴史公園は地図からも分かるように広い。まずは腹ごしらえということで、東口の歴史公園センターへと歩を進めた。食堂で食べている人は、殆どが公園の関係者で、見学客はやはり私一人のようだ。ちゃんぽんを食べて一息ついたところで、背中の荷物をロッカーに預けて身軽にし、公園へと向かった。

吉野ケ里遺跡は、水田稲作が始まった弥生時代の遺跡だ。ここの歴史は、弥生時代前期(紀元前3~2世紀)、中期(紀元前2~紀元1世紀)、後期(紀元1~3世紀)に分けられる。

前期には丘陵一帯に分散的に「ムラ」が誕生し、南側一帯には環濠を掘った集落が出現し「ムラ」から「クニ」へと発展する兆しを見せた。集落の規模は2.5haだ。

中期には、南の丘陵を一周する大きな環濠が掘られ、首長を葬る「墳丘墓」やたくさんの「甕壺墓地」が作られた。集落の防御が厳重になっていることから争いが激化したと考えられている。集落の規模は20haだ。

後期には、集落は北の方へと拡大し、40haを超える国内最大規模の環濠集落となる。北部には、首長が居住し祭祀の場であったと考えられる北内郭と、高位階層の人々の居住区と推定される南内郭とがある。西方にはクニの物資を集積し、市の可能性もある高床倉庫群がある。また、南部には一般の人々が居住していた集落がある。

吉野ケ里歴史公園は、弥生時代後期の集落を復元したものだ。後期(紀元1~3世紀)は、中国では後漢の時代だ。57年には光武帝が倭の奴国の使者に対して金印を授け、107年には倭国帥升(すいしょう)が後漢朝貢し、239年には卑弥呼が難升米(なしめ)らを魏に派遣しており、中国との交流が活発な時期だ。

吉野ケ里歴史公園では、1800年ぐらい前の時代を垣間見れることを楽しみに、意気揚々と入り口へと向かった。
f:id:bitterharvest:20190119144400j:plain

公園内は20分ごとにバスが巡回していた。中の様子を知るために、南端から北端へと向かっているバスに乗った。最初にたどり着いたのは古代植物館だ。

最近とみに温暖化をもたらす環境破壊が大きな問題となっているが、この問題は今に始まったことではない。実は人間が定住生活を始めるようになってから、森林破壊が始まったと言われている。古代植物館では、弥生時代の推移とともに森林がどのように変化したかの説明があった。

人が住み着く前までは、吉野ケ里丘陵は、カシ・シイなどの照葉樹林を中心に、コナラ・クリなどの落葉樹が生息していたと考えられている。

弥生時代が始まると、集落を作るために樹木が伐採され、落葉樹が急激に減少し、ススキなどでの草地が広がった。そして、弥生時代の終わりごろになると、低地では稲の花粉が増えて水田稲作が本格したことが分かり、森では原生林の伐採が行われ、その後に成長するエノキ・ムクノキが増えて二次林へと変化したことが分かっている。

古代植物館の周りでは、縄文時代から弥生時代前期の常緑樹林と、弥生時代の終わりごろの落葉樹林が混ざったススキなどが広がる草地の植栽を再生しようとしている。人間の営みが自然にどのような影響を及ぼしたかを体験できる意欲的な試みだ。

古代植物館には、弥生時代の道具類も展示されていた。その中でも驚かされたのが、甕棺墓に使われた甕の大きさだ。人間一人を入れるのだからかなりの大きさが必要なのは分かるが、それにしてもどのようにして作ったのだろうか。
f:id:bitterharvest:20190119144443j:plain
土器類も展示されていた。横浜市歴史博物館に展示されている土器と比較するとすっきりしている。
f:id:bitterharvest:20190119144516j:plain
道具類も展示されていた。鉄製品が多いのにびっくり。北部九州がこの時代の先進地域であったことを改めて認識させてくれた。
f:id:bitterharvest:20190119144606j:plain
またバスに乗って、北墳丘墓へと向かう。バスを降りたところは弥生時代の集落を特徴づける環濠の近くだ。
f:id:bitterharvest:20190119152849j:plain
北墳丘墓の全景だ。
f:id:bitterharvest:20190119144648j:plain
この墳丘墓は、弥生時代後期のものではなく、中期(紀元前2世紀~紀元1世紀)のものだ。南北40m、東西27m、盛土の高さ4.5mだ。ここからは成人用の甕棺14基が発掘され、その多くから銅剣や管玉が発見された。歴代の王または首長と考えられる人が葬られたと考えられ、弥生時代の「クニ」社会を裏付ける有用な遺跡だ。

建物の中は、甕棺が発掘されたときの状態に保たれている。
f:id:bitterharvest:20190119144729j:plain
銅剣が納められている甕棺もある。
f:id:bitterharvest:20190119144811j:plain
f:id:bitterharvest:20190119144840j:plain
この後、北内郭へと向かう。途中に甕棺墓列がある。これはやはり弥生時代中期の墓だが、王ではなく一般の人の墓だ。
f:id:bitterharvest:20190119144926j:plain
f:id:bitterharvest:20190119145007j:plain
北内郭は、祭祀のための主祭殿や物見櫓があり、まつりごとの場所だ。
f:id:bitterharvest:20190119145050j:plain
主祭殿は2,3階に上ることができ、神がかりの様子を示す展示などがあった。
f:id:bitterharvest:20190119145131j:plain
南内閣は高位者層の居住地だ。
f:id:bitterharvest:20190119145209j:plain
f:id:bitterharvest:20190119145245j:plain
南内閣の近くには展示室があり、そこにもたくさんの甕棺と
f:id:bitterharvest:20190119145322j:plain
銅剣と、
f:id:bitterharvest:20190119145401j:plain
さらには、頭部のない遺骨が甕棺の中に入った状態で展示されていた。
f:id:bitterharvest:20190119145438j:plain
南のムラに移動すると、そこは一般の人のための集落だった。
f:id:bitterharvest:20190119145520j:plain
f:id:bitterharvest:20190119145555j:plain
f:id:bitterharvest:20190119145647j:plain
最後に訪れたのは、倉と市だ。ここには、高床式の倉がたくさん復元されていた。
f:id:bitterharvest:20190119145939j:plain
4時間半もたっぷりと吉野ケ里歴史公園を見学し、その大きさに圧倒されて、今日の宿泊場所の吉野ケ里温泉ホテルへと向かった。復元された史跡ではあるが実物に近いものを通して、実感として、古代でのムラからクニへの変化を理解することができ、有意義な訪問であった。

北部九州を旅行する(2日目)ー臼杵の街を訪れる

二日目からは勝手気ままな一人旅だ。レンタカーを利用しようかとも思ったが、移動時間よりも見学時間の方がずっと多そうなので、移動には公共の交通機関を用いることにした。その方が、地元の人たちと触れ合う機会も増えて楽しめるだろうとも考えた。

この日は、臼杵の石仏と街見学をした後、由布院温泉で宿泊だ。大分駅から臼杵石仏まではバスを利用。8時40分発9時44分着だ。
f:id:bitterharvest:20190117100128p:plain
バスは石仏の入り口で停車してくれた。降りた客は私一人。受付で入場料を払い、荷物を預けていると、ボランティアガイドの方が近寄ってきて、一緒に行きましょうと誘ってくれた。あまり知識を持たずに訪れてしまったので、お願いして一緒に歩きだした。ここの石仏は平安時代の後期に作られたと推定されていて、国宝に指定されている。

入り口近くのホキ石仏2群は改修工事が行われていて、見学することはできなかった。この分だけ、入場料は減額されているとのことだった。最初に訪れたのは、古園石仏だ。
f:id:bitterharvest:20190117100159j:plain
古園石仏は建屋の中に保存されていた。
f:id:bitterharvest:20190117100242j:plain
ここには全部で13躯あり、真ん中の大きな石仏が大日如来坐像。左右に6躯あるが、それぞれ如来坐像の隣の2躯が如来像、さらにその横の2躯が菩薩像、続いて、明王像、天部像だそうだ。

次に訪れたのが、山王山石仏だ。片側が崖になっている小道を少し登りながら進んでいく。ガイドさんが崖のくぼみから灰のような土を取り出して、これは何だかわかりますかと尋ねてきた。仏さんのゴミとふざけて答えると、阿蘇山が爆発したときの灰と教えてくれた。石仏の石は、阿蘇山から噴出した火山流が溶結してできた凝灰岩だそうだ。
f:id:bitterharvest:20190117100319j:plain
山王山石仏には3躯の如来座像があり、中央が中尊、両脇が脇尊だ。

そして、最後のホキ石仏一群へと向かった。
f:id:bitterharvest:20190117100358j:plain
ガイドさんによれば、ホキは崖險(がけ)という意味の地名だそうだ。ここは四龕(がん)に分かれている。左側の第一龕には、如来座像3躯とさらにその両横に菩薩立像2躯が配されている。
f:id:bitterharvest:20190117100440j:plain
その右の第二龕には、如来座像3躯が配されている。
f:id:bitterharvest:20190117100517j:plain

なお、第一龕の青年期と第二龕の壮年期の仏像の間にある愛染明王は、結婚の仲立ちをする弓と矢を持つキューピットだそうだ。ガイドさんから説明を受けたとき、仏さんは結婚しても良かったのかと疑問に感じたが、野暮なので質問をぶつけることはやめた。
f:id:bitterharvest:20190117100555j:plain
さらに右の第三龕には、中央の大日如来坐像を中心にして、その両脇に如来座像が、さらにその両脇に菩提立像を配している。
f:id:bitterharvest:20190117100632j:plain
最も右側の第四龕には、左足を踏み下げている地蔵菩薩像を中心に、左右に十王像が配置されている。
f:id:bitterharvest:20190117100707j:plain
石仏の見学が終わった時、ガイドさんがまだ時間があるでしょうといい、散策をしましょうと誘ってくれた。石仏の付近にはいくつかの見どころが用意されている。
f:id:bitterharvest:20190117144450p:plain
化粧の井戸、蓮池、満月寺などを回りながら、ガイドさんとの会話を楽しんだ。奥さんは看護婦さんだったそうで、奥さんとの適当な距離を保つためにガイドをしているということであった。

その後、バスで臼杵の市内へと向かった。
f:id:bitterharvest:20190117143520p:plain
まずは城巡りだ。臼杵市には臼杵城跡がある。この城はいまでは陸続きになっているが、築城されたころは島の上に造られ、西端の大手門口だけが陸に繋がる海城であった。地図を示そう。真ん中の緑色の部分が臼杵城跡だ。大手門口は左端にある。ここが唯一の出入り口だ。本丸は右奥にある。

臼杵城キリシタン大名である大友宗麟により、1562年(永禄5年)により丹生島に築造され、徳川時代になると稲葉氏が城主となり、5万石の藩となる。国立公文書館デジタルアーカイブには、1644年(正保元年)の臼杵城の絵図が残されている。その一部を掲載すると以下の様である。真ん中の垂れさがっているのが城域だ。
f:id:bitterharvest:20190117144904p:plain
それでは大手門の方から入っていこう(実際は駅の方から来たため逆方向に歩いた。即ち、大手門で外に出た)。
f:id:bitterharvest:20190117110506j:plain
しばらく石段を上ると大門櫓(やぐら)に、
f:id:bitterharvest:20190117110541j:plain
さらに進むと、明和年間(1764~1772)に再建されたとする畳櫓に、
f:id:bitterharvest:20190117110615j:plain
櫓をくぐると二の丸、本丸へと続く。現在は公園になっている。本丸の近くには、1854年に立てられた卯寅口門脇櫓があり、
f:id:bitterharvest:20190117110651j:plain
卯寅稲荷神社もある。
f:id:bitterharvest:20190117110723j:plain

城を出た後、稲葉家の下屋敷に向かった。廃藩置県により東京に住居を構えることになった稲葉家の里帰りの屋敷として、明治35年(1902年)に建築された。立派な門構えだ。
f:id:bitterharvest:20190117110758j:plain
玄関は、
f:id:bitterharvest:20190117110832j:plain
さらに進むと書院造りの書斎があり、
f:id:bitterharvest:20190117110903j:plain
庭園も清楚だ。
f:id:bitterharvest:20190117110937j:plain

敷地の中には、江戸時代後期の上級武家屋敷の平井家住宅がある。玄関は、
f:id:bitterharvest:20190117111013j:plain
台所は、
f:id:bitterharvest:20190117111046j:plain
建物の全景は、
f:id:bitterharvest:20190117111119j:plain

この後は、街を散策した。寺町に入り込んだようで、立派な寺々が現れた。浄土真宗としては九州最古の寺院の一つである善宝寺、1334年(建武元年)の創建だ
f:id:bitterharvest:20190117111150j:plain
1602年(慶長7年)創建の浄土真宗の善正寺
f:id:bitterharvest:20190117111227j:plain

駅に戻り、今日の宿泊地の由布院温泉に向かう。
f:id:bitterharvest:20190117110437p:plain

臼杵から大分まで特急で、さらに大分から由布院まではリゾート特急を利用した。リゾート特急はゆふいんの森と呼ばれ、全席指定だ。
f:id:bitterharvest:20190117111304j:plain
駅員さんが親切にも一番前の席を取ってくれた。
f:id:bitterharvest:20190117111342j:plain
由布院温泉では『楓の小舎』に泊まった。ここは全ての部屋が別棟になっていて、それぞれには内湯と露天風呂がついているとても豪華なホテルだ。ミシェランガイド熊本・大分2018年特別版の宿泊施設に掲載されたそうだ。私が泊まったのは一人部屋。居間は、セミダブルのベッドとこたつ付き。別荘に来たようだ。これとは別に、洗面所と岩盤浴のできる内風呂がある。露天風呂は少し離れているがやはり利用できる。夕飯も朝食も部屋で食べるようになっていた。料理は上品で優雅でそして美味しかった。
f:id:bitterharvest:20190117111422j:plain

のんびりと旅の疲れをとることができ、幸せな気分を満喫できた。機会があればもう一度訪ねたいと思っている。

北部九州を旅行する(1日目)ー久住高原をドライブする

北部九州は縄文時代から奈良時代にかけての歴史の宝庫だ。吉野ケ里遺跡が発見されたころは卑弥呼がいた邪馬台国ではと騒がれたこともあった。日本史を勉強し始めてから、一度は訪れて、現場を確認してみようと思っていた。幸いにも大分の知人から誘いを受けたので、温泉も一つの楽しみにして、北部九州の遺跡を見学することとした。

旅行は3泊4日、1月9日(水曜日)からだ。旅行の準備をしているときに、大きな荷物を持ちながら、混雑することで有名な田園都市線の朝の電車に乗るのは嫌だなと思って、インターネットを検索したところ、南町田駅から羽田空港に向かうバスを発見した。下り方向のため危険なラッシュは避けることができるので、初めての経路だが、これを用いて旅行を始めることにした。

さて出発だ。幸いなことに東京は快晴、大分も悪くはなさそうだ。羽田空港からは富士山がきれいに見えた(見つけにくいが、写真の左の方)。
f:id:bitterharvest:20190114144408j:plain
いよいよ大分に近づいた。瀬戸内海は曇っていたが、陸に近づくにしたがって、雲が少なくなり、穏やかになってきた。大分空港のある国東半島には明るい冬の光がさしていた。下の写真で、中央の右側にある茶色い部分が空港だ。飛行機は通り過ぎるようにして別府の方に向かい、その後、Uターンして空港へと降りる。
f:id:bitterharvest:20190114144438j:plain
空港には夫妻が出迎えてくれ、早速、久住高原一周へのドライブへと出発した。Googleマップによれば、ドライブの時間は4時間となっているが、途中で昼食や見学をしたため、6時間の所要時間だった。
f:id:bitterharvest:20190114145107p:plain
大分空港から湯布院ICを過ぎて九重ICまでは高速道路だ。車の数も少なく、ほぼ快適に進んだ(大分道に入るところで反対方向の福岡へ入ってしまった。地元の人でもは違えるようだ)。大分の地名は、由布院と湯布院、久住と九重のように何とも紛らわしい。ICを出た後、車2台がやっとすれ違える程度の狭い県道40号線に沿って、紅葉百選に選ばれている九酔渓へと向かった。紅葉の時期は身動きできないほどに込み合うのだろうが、冬場のこの時期は閑散としていた。お店も閉店で、渓谷の景色も寂しい。
f:id:bitterharvest:20190114144528j:plain
この後、近くにある九重夢大吊橋へと向かった。長さ390m・高さ173mで、歩道専用としては日本一の高さを誇る吊橋だそうだ。総工費200億円をかけ、過疎化と少子化で衰退しつつある九重町の再生を目指して建築され、平成18年に完成。この11月には累積入場者数で1100万人を達成したそうだ。九重町の夢をかなえるために頑張っている吊橋だ。
f:id:bitterharvest:20190114144609j:plain
橋の入り口には、まだ松飾りが残っていた。また、橋からは、日本の滝百選に選ばれた九酔渓の振動の滝を見ることができた。
f:id:bitterharvest:20190114144638j:plain
県道40号線をさらに南に向かい、くじゅう連山の南に出たところで国道442号線にぶつかったところで、竹田市の方へと西に向かった。車窓からは阿蘇山が一望でき、景色を楽しむことができた。真ん中左側が根子岳、右側が阿蘇山阿蘇山の右側からは噴煙も見えた。
f:id:bitterharvest:20190114144707j:plain
竹田市の町に入るためには、どこから入るにしても、必ずトンネルをくぐる必要があるそうだ。山で囲われた盆地なのだろう。ちなみに、同行してくれた奥さんの母方は岡藩(竹田藩)の家老の血筋だそうだ。そこで、奥さんに所縁のある国指定史跡である岡城を見学した。

竹田市滝廉太郎が少年時代を過ごした地で、そのときに遊んだ岡城は荒れ果てていて、その印象をベースに哀調を帯びた「荒城の月」(1900年明治34年)を作曲したとされている。なお、作詞は仙台出身の土井晩翠。こちらは仙台市青葉城をベースに作詞されたとされている。

入り口でもらった案内には岡城の歴史が記載されていた。それによれば、1185年大野郡緒方荘の部将緒方三郎惟栄(これよし)が源義経を迎えるために築城したと伝えられているそうだ。

南北朝時代からは志賀氏が居城としていたが、大友義統(よしむね)が豊臣秀吉の逆鱗に触れ1593年に領地を没収されると、志賀氏も城を去ることになった。

1594年播磨国三木城から織田信長豊臣秀吉に仕えた中川秀成が入封し、急いで城郭の形を整えた。1559年の検地では約7万石。1600年の関ケ原の戦いでは東軍に属し、徳川家康より領地を安堵された。このあと明治になるまで、中川秀成の子孫が城主となった。城の建物は1874年(明治7年)大分県による入札・払い下げで全てが取り壊された。滝廉太郎が遊んだころには荒れ果てていたのだろう。

駐車場から城を望んで写真を撮る。
f:id:bitterharvest:20190114144812j:plain
大手門近くには、城跡を示す石がたっていた。
f:id:bitterharvest:20190114144837j:plain
中に進んで三の丸の近くまで行った。城は急峻な崖の上に立っていた。現在は整備されていて、荒れ果てた城というイメージはなかった。
f:id:bitterharvest:20190114144904j:plain
滝廉太郎銅像も近くに建てられていた。
f:id:bitterharvest:20190114144939j:plain
この後は、大分市に戻り、ふぐ良別館でフグ料理をご馳走になった。ふぐの胆を食べることができる唯一のお店だそうだ。胆をふぐ刺しのたれにして食べたが、薬味とマッチして、とても美味しい料理で、この日一日の旅の疲れを忘れさせてくれた。

ホテルは法華クラブ大分を利用した。シングルで予約したのだが、なぜかダブルの部屋を用意してくれ、一人で広々と利用することができ、幸先の良い旅行の始まりとなった。

モナドを攻略する

1.モナド

クリスマスパーティーは大きくなった孫たちが集まりとても賑やかだった。今年は、ターキーを2羽焼いた。例によって、ブライン液につけ、ジューシーな味を楽しんだ。

f:id:bitterharvest:20181224132757j:plain
今年のターキー。焦げ具合が違うのは、250度で10分焼いた後、左側を170度、右を180度で焼いたため。両方ともおよそ1時間半焼いた。
クリスマスに掲載する記事もなかなかの大作になった。何回か説明してきたモナドだが、新しいアプローチで迫ることにした。これまでは、先人たちが築き上げてきた定義や定理を説明するという方法をとった。今回は、どのように発明・発見されたのかを知る手がかりを得るために、足場を築きながらモナドの定義を作り出すことにした。このようなアプローチをとれば、先人たちが到達するに至った深遠な意味を知ることができるだろう。さらには、格段に深いレベルでの理解も得られることにもなるだろう。それでは、始めることにしよう。

1.1 モナドの本来の意味

モナドって何ですかと問われたとき、何と答えるであろうか。数学やプログラミングに馴染みのある人は、この分野での専門用語の一つと答えることだろう。ウィキペディアで調べると、哲学でも使われていることが分かる。実はこちらの方が古くて、数学やプログラミングの分野で使われているモナドは、哲学の分野からの借用語だ。

モナドは、ギリシャ語のモナス(monas)に由来する。モナスは単子と訳されるが、それは単位としての1が原義だ。ピタゴラス(Pythagoreans)によって用いられ、ライプニッツ(Leibniz)によって発展させられた概念である。

モナドの概念を『ブリタニカ国際大百科事典』から引用すると「モナドは部分をもたない単純な実体で,物質的ではなく霊的である。生成消滅することはなく,そこに起る一切の変化は内的原理に由来し、表象によって全世界と全歴史を表現する。表象を変化させる通時的原理は欲求である。モナドは外からの影響を受けないから,モナド間に因果関係はなく、相互間の関係は予定調和の原理で説明される。世界は低級な物体から神にいたるモナドによって構成されており,この位階はそれぞれのモナドの含む表象の明瞭度による」となる。

今日の視点で見ると、ライプニッツの説明は宗教的で神秘的な雰囲気だが、モナドという概念を記述するためのキーワードは、単純な実体と表象のように見える。そして、表象は単純な実体を外に見せるための表現と捉えてよさそうだ。さらに、表象は時間的な変化により明瞭度での濃淡もあるようだ。図で示すと次のようになるだろうか。

f:id:bitterharvest:20181221202052p:plain
図1:哲学の分野で使われるモナドの概念を図示すると単純な実体と表象の列として表される。表象には明瞭度があり、実体に近いほど高い
この記事を書いているときに、若尾政希著『百姓一揆』の本をたまたま並行して読んいた。しばらく読み進むと、表象という言葉に出くわす。あまり使われない言葉なので、特別な関心を払って読んでいくうちに、表象という言葉はこのように使われるのだと改めて認識させてくれる。

歴史研究においては、歴史史料が重要な役割をなす。歴史史料は、事件の様子を伝えてくれる表象だと若尾さんは述べ、史料の扱い方について説明する。百姓一揆を研究するために使われる歴史史料には、百姓たちが幕府や藩に対して訴えた願書や、逆に百姓たちに命じる触書や、あるいは一揆の様子を叙述的に記述した物語などがある。願書や触書は事件の内容を直接伝えてくれるので一次史料と呼ばれ、物語などはエンターテインメント性をもたらせるために脚色されていて、当てにならないことが含まれているので、二次史料と言われる。モナドの説明に従えば、一次史料は明瞭度の高い表象であり、二次史料は明瞭度で劣る表象ということになる。そして、一揆という事件そのものは単純な実体だ。

話はモナドの説明とは少しずれるが、著者は、本の中で、一次史料だけ扱っていればよいのかと問いかける。歴史家たちが拠り所にしていた一次資料を精査すると、願書や触書には、前の事件を真似て書いたものが多いことに気がつくそうだ。現在の言葉で言うならばコピペが満ち溢れているということだろう。このため歴史研究をする上で、一次史料は必ずしも重宝に使っていればよいというものではないと言う。一次史料、二次史料を上手に利用して、そこから飾られた部分を除いて、真実の部分を探求することが重要だと教えてくれる。話は外れたが、事件を説明する歴史史料を表象という言葉で説明していることが、モナドの概念を深めてくれ、有意義な説明であった。

1.2 モナドの定義を試みる

話を元に戻そう。数学やプログラミングで用いるモナドは、哲学の分野で使われている概念を引き継いでいると言われている。高校数学の範囲の中で探すと、冪集合がそうだろう。ある集合の冪集合とは、その部分集合の全てを要素とする集合である。例えば集合\(A\)が3要素\( \{a,b,c\} \)からなるとする。それでは、この冪集合を求めてみよう。1)部分集合の中に複数の同じ要素が入っているものは一つにまとめられること、2)要素の出現順序は変えても構わないことに注意すると、求める冪集合は
\begin{eqnarray}
P(A)&=\{& \{\}, \{a\}, \{b\}, \{c\}, \\
&&\{a,a\}, \{a,b\}, \{a,c\}, \\
&&\{b,a\}, \{b,b\}, \{b,c\}, \\
&&\{c,a\}, \{c,b\}, \{c,c\}, \\
&&\{a,b,c\}\} \\
&=\{& \{\}, \{a\}, \{b\}, \{c\}, \{a,b\}, \{a,c\}, \{b,c\}, \{a,b,c\}\}
\end{eqnarray}
となる。今得られた冪集合に対して、さらに冪集合を作ることができる。これを下図に示そう。なお煩雑になることを避けるため2要素\( \{1,2\} \)にした。

f:id:bitterharvest:20181221202123p:plain
図2:冪集合はモナドの概念を表現していると考えられ、単純な実体は集合の構成要素、表象は集合と冪集合、さらには冪集合の冪集合となる
新たな冪集合の作成は、その構造の変化だけを観察すると、カッコが一つずつ増えていくことに気がつく。また、冪集合に対して部分集合の和集合をとると、この冪集合を作る前の冪集合が得られることが分かる。これを下図に示そう。
f:id:bitterharvest:20181221202148p:plain
図3:冪集合の構造を見ると、右に進むにつれてカッコが一つ増える。逆に、部分集合の和集合を取るとカッコが一つ減る。また、単純な実体から集合が作られるところにも特徴がある
それではこれを一般化してみよう。\(n\)重のカッコを\(n+1\)重のカッコにする操作をカプセル化と呼び、名前\(T\)を与える。また、単純な実体から表象を作り出す操作を表象の創出と呼び、\(return\)という名前を与える。そして、部分集合の和集合を取る操作をカプセル統合と呼び、\(join\)という名前を与えることにしよう。

\(return\)は最も明瞭度の高い表象を作り出し、\(join\)は操作を繰り返しているうちに最も明瞭度の高い表象に至ることに気がつく。\(return\)も\(join\)も最も明瞭度の高い表象に向かうということに特徴がありそうだ。モナドを構成するときに、この性質を取り入れることが重要に思える。それ以上に重要なことは、カプセル化をしている\(T\)だろう。

そこでこれらを用いて、圏を試しに構成してみよう。圏の名前は、\(\mathcal{C}\)としよう。そして、対象は、単純な実体と表象たちだ。即ち、\( A,T(A),T(T(A)),…\)だ。射は、先ほど定義した\( return\)と\( join \)だ。また、恒等射は、\( I_{A},I_{T(A)},I_{T(T(A))},… \)だ。射の合成は\(\circ\)とし、また単位律、結合律は成り立っているとする。そして、\(T\)は、\(\mathcal{C}\)から\(\mathcal{C}\)への関手としよう。即ち、自己関手だ。まとめると試案の圏は以下のようになる。
圏\(\mathcal{C}\)の構成 (試案)
対象:\( A,T(A),T(T(A)),…\)
射:\( return : A \rightarrow T(A), join : T(T(A)) \rightarrow T(A) \)
恒等射:\( I_{A},I_{T(A)},I_{T(T(A))},… \)
合成:\(\circ\)
単位律:省略
結合律:省略

図で示すと下図のようになる。

f:id:bitterharvest:20181221202408p:plain
図4:冪集合の構造的な特徴を捉えて、カッコを増やす操作を\(T\)、単純な実体から表象を創出する操作を\(return\)、和集合によってカッコを一つ減らす操作を\(join\)と名付け、これらを、モナドを圏として定義するときの、構成要素にしよう
このように定義すると、関手\(T\)によって、\(A\)から\(T(A)\)に、\(T(A)\)から\(T(T(A))\)に、さらに\( T(T(A)),T(T(T(A))),...\)も同じようによって移される。一般に関手は圏の間の射なので、\( A,T(A),T(T(A)),… \)は、それぞれを圏と見なすことにしよう。そこで、圏であることを明確にするために、\(A\)を\(\mathcal{A} \)と表すことにしよう。試案の圏は次のように書き直される。改めてということになるが、\(\mathcal{A}\)は圏である。
圏\(\mathcal{C}\)の構成
対象:\( \mathcal{A},T(\mathcal{A}),T(T(\mathcal{A})),…\)
射:\( return : \mathcal{A} \rightarrow T(\mathcal{A}), join : T(T(\mathcal{A})) \rightarrow T(\mathcal{A}) \)
恒等射:\( I_{\mathcal{A}},I_{T(\mathcal{A})},I_{T(T(\mathcal{A}))},… \)
合成:\(\circ\)
単位律:省略
結合律:省略

これで、圏\(\mathcal{C}\)が出来上がった。細部も加えて示したのが下図である。

f:id:bitterharvest:20181226093900p:plain
図5:冪集合を利用してモナドの候補を作り出した。\(T\)が圏\(\mathcal{C}\)を結ぶ関手、これがモナドと呼ばれるものになる。\(return,join\)は圏\(\mathcal{C}\)の射である
そして、これをモナド定義の候補としたい。

1.3 Haskellモナドで確認する

モナドを表すための候補が出てきたので、先に進める前に、本当にそうなのかを、Haskellでのモナドの定義を利用して確認してみよう。Control.Monadのパッケージを見ると次のようになっている。

class Applicative m => Monad m where
  (>>=) :: forall a b. m a -> (a -> m b) -> m b

  (>>) :: forall a b. m a -> m b -> m b
  m >> k = m >>= \_ - > k

  return :: a -> m a
  return = pure

  fail :: String -> m a
  fail s = errorWithoutStackTrace s

さらに、これらのメソッドは単位律と結合律を満たすものとする。

Haskellでのモナドのクラスで用意しなければならないメソッドは、\(return\)とバインド(bind)と呼ばれる\((>>=)\)だ。しかし\(return\)はモナドの上位クラスであるアプリカティブ(Applicative)で定義されるので、モナドのところで定義する必要があるメソッドは\((>>=)\)だけだ。2番目のメソッド\((>>)\)は、バインドを用いて定義されているので、定義する必要はないし、またそれほど重要なメソッドでもない。

繰り返しになるが、Haskellモナドで重要なメソッドは\( (>>=)\)と\(return\)である。そこで、冪集合がモナドであるという推察を確認するためには、冪集合のところで得た\( return\)と\(join\)が、Haskellでのメソッド\(return\)と\((>>=)\)に対応していることを示さなければならない。

冪集合 Haskell
1 \( return : A \rightarrow P(A) \) \(return :: a \rightarrow m \ a\)
2 \( join : P(P(A) \rightarrow P(A) \) \((>>=) :: forall \ a \ b. \ m \ a \rightarrow (a \rightarrow m \ b) \rightarrow m \ b\)

上の表で、式1は対応していることが分かる。しかし、式2、即ち\(join\)と\( (>>=)\)は対応しているとは即断しがたい。そこで、Haskellでの定義を変形してみよう。モナド\(m\)は関手なので、
\begin{eqnarray}
m \ a \rightarrow (a \rightarrow m \ b)
\end{eqnarray}
の部分は、下図のように表すことができる。

f:id:bitterharvest:20181221202432p:plain
図6:モナドの候補を確認する。Haskellの構造に変換し、Haskellで定義されているモナドの構造に対応しているかを観察する。そのためには、候補の\(join\)とHaskellの\(>>=\)が対応していることを示せばよい
上図で、左側の射\(f: a \rightarrow m \ b\)を関手\(m\)によって、右側に移される。そして、\(m \ a \rightarrow (a \rightarrow m \ b)\)は、右側に移った射の始点\(m \ a\)が与えられた時、その終点をあたえる。このとき右側に移った射は\(fmap \ f \ (m \ a)\)である。これより、
\begin{eqnarray}
m \ a \rightarrow (a \rightarrow m \ b) & = & (fmap \ f \ (m \ a)) \\
& = & m (f (a)) \\
& = & m (m \ b)
\end{eqnarray}
となる。まとめると、
\begin{eqnarray}
m \ a \rightarrow (a \rightarrow m \ b) \rightarrow m \ b \\
= m (m \ b) \rightarrow m \ b
\end{eqnarray}
である。\(b\)を\(a\)で置き換えると、
\begin{eqnarray}
m (m \ a) \rightarrow m \ a
\end{eqnarray}
となり、\(join\)同じであることが分かる。

これで、冪集合から得られた2関数がモナドを定義するのに必要な関数であるという裏付けを得たので、さらに議論を進めることにしよう。

1.4 汎用化する

一般的なモナドの定義に近づけるために、\( return,join\)を\(η,μ\)で置き換え、汎用化してみよう。

\begin{eqnarray}
η &:& A & \rightarrow & T(A) \\
μ &:& T(T(A) & \rightarrow & T(A)
\end{eqnarray}

さらに、\(T(A),T(T(A)),…\)は同じ薄茶色で表し、薄緑色の部分をなくすと、前に示した図は次のように表すことができる。

f:id:bitterharvest:20181221211917p:plain
図7:一般的なモナドの定義に近づけるために、\( return,join\)を\(η,μ\)で置き換える
上の式をもう少し変形してみよう。恒等射\(I:A \rightarrow A\)を用いると上記の式は次のようになる。
\begin{eqnarray}
η &:& I(A) & \rightarrow & T(A) \\
μ &:& T(T(A) & \rightarrow & T(A)
\end{eqnarray}
上記の式は任意の\(A\)について成り立つので、\(A\)を省くと
\begin{eqnarray}
η &:& I & \rightarrow & T \\
μ &:& T \circ T & \rightarrow & T
\end{eqnarray}
と記述することができる。そこで、圏\(\mathcal{C}\)を対象とし、関手\(T\)を射とし、モナドを表す圏\(\mathcal{D}\)をつぎのように定義できる。
圏\(\mathcal{D}\)の構成
対象:圏\(\mathcal{C}\)
射:\(T: \mathcal{C} \rightarrow \mathcal{C} \)
恒等射:\(I_\mathcal{C} \)
合成:\(\circ\)
そして、次のように、単位律、結合律を満たすものとする。
単位律:\(I_\mathcal{C} \circ T= I_\mathcal{C} = T \circ I_\mathcal{C} \)
結合律:\( (T \circ T) \circ T = T \circ (T \circ T) \)

圏\(\mathcal{D}\)は、さらに
\begin{eqnarray}
η&:& I_\mathcal{C} & \rightarrow & T \\
μ&:& T \circ T & \rightarrow & T
\end{eqnarray}
を満たすものとする。ここでは、\(η: I \rightarrow T \)から\(η: I_\mathcal{C} \rightarrow T \)に変えている。恒等射の定義域が単純な実体の領域から表層の領域まで含むようになったが、\(η: I_T \rightarrow T \circ T \rightarrow T \)であることから、矛盾なく拡張することが可能である。

圏\(\mathcal{D}\)を図で示すと以下のようになる。

f:id:bitterharvest:20181221202529p:plain
図8:モナドとしての関手\(T\)を射とした圏を構成する
ここで得たモナドの圏\(\mathcal{D}\)は、圏論の教科書で定義されているものと同一であることに気がつくことと思う。そしてこの圏の射、即ち関手\(T\)は、一般にモナドと言われる。ライプニッツモナドの概念から始めて、冪集合を用いてモナドの定義に必要とされるだろう関数\(return,join\)を求め、その関数がHaskellでのモナドの定義で用いられているものと同じであるという検証を得て、モナド\(T\)を射とする圏\(\mathcal{D}\)を定義することができた。

この圏をしばらく観察してみよう。対象\(\mathcal{C}\)を小さくし、射\(T\)、恒等射\(I_\mathcal{C}\)、そしてこれらから合成される射を描くと下図のようになる。

f:id:bitterharvest:20181221202557p:plain
図9:モナドは自己関手\(T\)を射としたモノイド圏であることが分かる
これは、その右側に描いたモノイド圏(単位律とかつ結合律を満たす二項演算子により構成された圏)と構造が同じであることが分かる。従って、モナドは、自己関手\(T\)を射としたモノイド圏であることが分かる。

1.5 精錬化する

これまでの議論でモナドの定義は出来上がったが、もう少し綺麗に纏めることにしよう。\(η, μ\)が関手から関手への射になっているので、自然変換と見なせる。

自然変換を復習しておこう。圏\(\mathcal{C}, \mathcal{D}\)があり、前者から後者へ関手\(F,G\)が存在したとする。このとき、\(F\)から\(G\)への射\(η\)が自然変換であるとは、\(\mathcal{C}\)の任意の対象\(A,B\)とその間のやはり任意の射\(f\)に対して、\(\mathcal{D}\)で\( G(f) \circ η_A = η_B \circ F(f)) \)が成り立つことである。この関係を下図に示す。

f:id:bitterharvest:20181222085042p:plain
図10:自然変換は関手から関手への射である。任意の対象\(A,B\)とその間のやはり任意の射\(f\)に対して、\( G(f) \circ η_A = η_B \circ F(f)) \)が成り立つ
それでは、自然変換\(η, μ\)を射とした圏\( \mathbf{End}_\mathcal{C} \)を構成してみよう。
圏\( \mathbf{End}_\mathcal{C} \)の構成
対象:\(I_\mathcal{C}, T, T \circ T \)
射:\( η: I_\mathcal{C} \rightarrow T, μ: T \circ T \rightarrow T \)
恒等射:\(I_ T : T \rightarrow T\) (注意:これは恒等変換である)
合成:\( \circ \)
単位律:\( μ \circ (I_T \circ η) = I_T = μ \circ (η \circ I_T) \)
結合律:\( μ \circ (I_T \circ μ) = μ \circ (μ \circ I_T) \)
となる。図で表すと以下のようになる。
f:id:bitterharvest:20181221202840p:plain
図11:モナドを最も抽象的に表した圏\( \mathbf{End}_\mathcal{C} \)で、自然変換\(η(return),μ(join)\)を射とし、モナドとしての関手\(T\)を対象とする
さらに、\(I_T\)は\(T\)と表すこともできるので、これを用いて、単位律、結合律を可換図式で表すと下図になる。
f:id:bitterharvest:20181223064508p:plain
図12:モナドとしての条件を示した可換図式。単位律、結合律に対応する

モナドの定義が出来上がったので、圏論での最も重要な概念である随伴との関係について述べておこう。ウィキペディアでは随伴は次のように定義されている。圏\(\mathcal{C}\)と\(\mathcal{D}\)との間の随伴とは、二つの関手
\begin{eqnarray}
L: \mathcal{D} \rightarrow \mathcal{C} \\
R: \mathcal{C} \rightarrow \mathcal{D}
\end{eqnarray}
の対であって、全単射の族
\begin{eqnarray}
{\rm Hom}_{\mathcal{C}}(L(Y),X) \cong {\rm Hom}_{\mathcal{D}}(Y,R(X))
\end{eqnarray}
が変数\(X,Y\)に対して自然となるものをいう。このとき、関手\(L\)を左随伴関手と呼び、\(R\)を右随伴関手と呼ぶとなっている。図で表すと、

f:id:bitterharvest:20181222203140p:plain
図13:同型な\({\rm Hom}\)集合を用いての随伴の定義

しかし、上記の定義からモナドとの関係を説明するのは煩雑になるので、もう一つの定義を使うことにしよう。それは、やはりウィキペディアで次のように定義されている。

圏\(\mathcal{C}\)と\(\mathcal{D}\)の余単位・単位随伴は二つの関手
\begin{eqnarray}
L: \mathcal{D} \rightarrow \mathcal{C} \\
R: \mathcal{C} \rightarrow \mathcal{D}
\end{eqnarray}
および二つの自然変換
\begin{eqnarray}
η: I_\mathcal{D} \rightarrow R \circ L \\
ε: L \circ R \rightarrow I_\mathcal{C}
\end{eqnarray}
であって(ηは単位、εは余単位と呼ばれる)、これらの合成
\begin{eqnarray}
L =L \circ I_\mathcal{D} \xrightarrow{L \circ η} L \circ R \circ L \xrightarrow{ε\circ L} L \\
R = I_\mathcal{D} \circ R \xrightarrow{η\circ R} R \circ L \circ R \xrightarrow{R \circ ε} R
\end{eqnarray}
がそれぞれ\(L\)と\(R\)上の恒等変換\(I_L,I_R\)となることをいうとなっている。これは三角恒等式(triangle identities)と呼ばれる。これを可換図式で示そう。

f:id:bitterharvest:20181223065614p:plain
図14:余単位・単位による随伴の定義の一部である三角恒等式の可換図式
それではこの定義からモナドを導くこととしよう。圏\( \mathbf{End}_\mathcal{C} \)での射\(η,μ\)が、随伴を定めている\(η,ε\)から得られることを示せばよい。そこで、
\begin{eqnarray}
T=R \circ L
\end{eqnarray}
としてみよう。モナド側の\(η\)を得ることは次に示すように簡単である。
\begin{eqnarray}
I_\mathcal{D} \xrightarrow{η} R \circ L = T
\end{eqnarray}

それでは\(μ\)について考えよう。次のように変換して求めることができる。
\begin{eqnarray}
T \circ T = R \circ L \circ R \circ L \xrightarrow{R \circ ε \circ L} R \circ I_\mathcal{C} \circ L = R \circ L = T
\end{eqnarray}

図示すると次のようになる。

f:id:bitterharvest:20181223064622p:plain
図15:圏\( \mathbf{End}_\mathcal{C} \)での射\(η,μ\)を随伴より得る

1.6 モナドと随伴の関係

圏\( \mathbf{End}_\mathcal{C} \)の単位律、結合律を随伴から得てみよう。まず単位律から始める。
\begin{eqnarray}
L \xrightarrow{L \circ η} L \circ R \circ L \xrightarrow{ε\circ L} L \\
R \xrightarrow{η\circ R} R \circ L \circ R \xrightarrow{R \circ ε} R
\end{eqnarray}
と、およびそれぞれで左辺と右辺は恒等変換になっていることを利用すると
\begin{eqnarray}
T \circ I_\mathcal{D} = R \circ L \circ I_\mathcal{D} \xrightarrow{R \circ L \circ η} R \circ L \circ R \circ L \xrightarrow{R \circ ε \circ L} R \circ L = T \\
I_\mathcal{D} \circ T = I_\mathcal{D} \circ R \circ L \xrightarrow{η \circ R \circ L} R \circ L \circ R \circ L \xrightarrow{R \circ ε \circ L} R \circ L = T
\end{eqnarray}
を得る。またそれぞれで左辺と右辺は恒等変換になっていることもわかる。可換図式で示すと下図のようになる。

f:id:bitterharvest:20181223075707p:plain
図16:随伴の定義からモナドの単位律を得る

次は結合律だ。単位律と同様に式を展開することで得ることができる。その過程を可換図式で示しておこう。

f:id:bitterharvest:20181223082421p:plain
図17:随伴の定義からモナドの結合律を得る

1.7 冪集合をHaskellで実装する

無事にモナドを定義することができたので、考える出発点であった冪集合に戻り、これをHaskellで実現することとしよう。

ここでは、集合をリストで表すこととしよう。例えば、要素\(a,b,c\)からなる集合は\([a,b,c]\)と表すことにする。冪集合は、それぞれの要素に対して、含むか含まないかの組合せを作ることだ。リストは\((x:xs)\)と表すことができるので、\(xs\)で作られる冪集合の部分集合のそれぞれに要素\(x\)をつけたものとつけないものとの和集合となる。

\(xs\)から作られた冪集合を\(rest\)とし、これに要素\(x\)をつける操作は

rest >>= (return . (x:))

である。
確認しておこう。

Prelude> import Control.Monad
*Main Control.Monad> [[2,3],[2],[3]] >>= (return . (1:))
[[1,2,3],[1,2],[1,3]]

従って、要素\(x\)をつけるかつけないかを、ブール値\(b\)で判断するプログラムは次のようになる。

\b -> if b then rest >>= (return . (x:)) else rest

これを用いてみよう。

*Main Control.Monad> f x rest = \b -> if b then rest >>= return . (x:) else rest 
*Main Control.Monad> [True, False] >>= f 1 [[2,3],[2],[3]]
[[1,2,3],[1,2],[1,3],[2,3],[2],[3]]

少し、工夫をして、\(x\)の値を外から与えられるようにしよう。

\x -> const [True, False] x >>= \b -> if b then rest >>= (return . (x:)) else rest

確認しよう。

*Main Control.Monad> g rest = \x -> const [True, False] x >>= \b -> if b then rest >>= (return . (x:)) else rest
*Main Control.Monad> g [[2,3],[2],[3]] 1 
[[1,2,3],[1,2],[1,3],[2,3],[2],[3]]

次に\(rest\)の部分を再帰的に構成できるようにしよう。次のようになる。そして関数名を\(power set\)としよう。

powerset [] = return []
powerset (x:xs) = const [True, False] x >>= (\b -> 
               if b 
                   then powerset xs >>= (return . (x:)) 
                   else powerset xs) 

確認しよう。

*Main Control.Monad> powerset [1,2,3]
[[1,2,3],[1,2],[1,3],[1],[2,3],[2],[3],[]]

今求めた関数\(power set\)の構造を圏論モナドを用いて描くと下図のようになる。

f:id:bitterharvest:20181224131956p:plain
図18:冪集合を求める関数\(power set\)をモナドを用いて記述する

Haskellでは、より汎用的な\(filterM\)が用意されているので、\(Power set\)はこれを用いて次のように定義すればよい。

powerset = filterM (const [True, False])

一応確認しておこう。

Prelude> import Control.Monad
*Main Control.Monad> powerset = filterM (const [True, False])
*Main Control.Monad> powerset [1,2,3]
[[1,2,3],[1,2],[1,3],[1],[2,3],[2],[3],[]]

出来上がりだ。モナドを定義するために、冪集合から初めて、最後はまた冪集合に戻ってきた。クリスマスプレゼントとはいえ、長い記事になってしまったが、モナドを様々な面から観察することができ、新たな発見もあって、楽しむことができた。読者の方はいかがでしたか。

クリスマスに、アップルクランブルタルト

駅前の街頭で、歳末に向けてのイルミネーションの準備が始まると、世の中が気ぜわしくなる。以前よりは格段に回数は減ったものの、忘年会の誘いもやはりやってくる。恒例になっているクリスマス料理の準備もそろそろ始めないといけないが、今年は新作をと思い立ち、ケーキの本をばらばらとめくってみる。ついでに、インターネットも調べてみると、料理のプロが作る簡単レシピのところに、アップルクランブルタルト(Apple Crumble Tart)が紹介されていた。なかなか手が込んでいて、簡単ではなさそうなのだが、本格的なレシピと感じられたので、これに挑戦することとした。

しかしその記事は、20cm径のタルト型を利用していた。家庭では、多くの場合18cm径を用いているのではないかと思い、Amazonを利用して、18cm径のフッ素加工のタルト型を入手した。タルトを作り出す段になって、台所の隅の方を探っていると、なんとタルト型が出てきたので、損をした気分になったが、新しいのはフッ素加工されているので焦げる心配がないだろうということで、自己納得して、作業を続けた。なお、タルトの型を20cmから18cmに変えたので、食材の量の方もそれに応じて変更した。
f:id:bitterharvest:20181128090358j:plain

アップルクランブルタルトの工程は、材料の作成と本体の作成に分かれている。材料の作成は三つの作業に分かれている。それらは
1)タルト:外側の枠
2)炒めリンゴ:中身
3)クランブル:上に乗る皮
の作成だ。

材料の作成が終わった後、全体の作成となる。これは、上記の三つの材料を一緒にしてオーブンで焼くことだ。それでは順番に説明していこう。

1 タルトの作成

タルトの作成に使う食材は以下の通り。薄力粉(90g)、グラニュー糖(小さじ1.5)、バター(50g)、水(30cc)、塩(少々)、アプリコットジャム(適量)だ。
f:id:bitterharvest:20181128091039j:plain

最初にバター(50g)を5㎜角に切る。
f:id:bitterharvest:20181128091652j:plain
薄力粉(90g)を加え、
f:id:bitterharvest:20181128091803j:plain
さらにグラニュー糖(小さじ1.5)を加える。
f:id:bitterharvest:20181128091826j:plain
良くかき混ぜる。
f:id:bitterharvest:20181128091927j:plain
さらに、冷水を少しずつ加える。指に粉がつかないようになったら完成だ。なお、水を入れ過ぎた場合は、薄力粉を加えて調整する。
f:id:bitterharvest:20181128092131j:plain
f:id:bitterharvest:20181128092156j:plain
サランラップの上において、手のひらサイズぐらいに四角く引き伸ばす。
f:id:bitterharvest:20181128092331j:plain
サランラップで包んで、冷蔵庫で30分程度休ませる。
f:id:bitterharvest:20181128092429j:plain
次はいよいよタルトづくりだ。まず、生地を置くための台と綿棒を用意する。また、台と綿棒に生地がくっつくのを防ぐために、薄力粉を利用する。
f:id:bitterharvest:20181128092607j:plain
生地を延ばす作業は、企業秘密なので写真がない。というのは冗談で、あまりにも夢中になって作業を観察したため、写真を撮るのを忘れてしまった。生地を延ばすことには自信がなかったので、やり方を妻に尋ねた。クレイ・フラワーを作成することに長けている妻は、任しておいてと言って、目の前で生地を延ばしてくれた。あまりにも見事なのですごいと思ってみていると、タルト型にはめるところまでしてくれた。
f:id:bitterharvest:20181128093319j:plain
焼いているときに生地が反り返らないようにするため、生地の上に重りを置くが、くっつかないようにするため、クッキングペーパーを敷く。
f:id:bitterharvest:20181128093408j:plain
そして重りを隙間がないように入れる。幸いなことに、我が家に長いこと眠っていた重りがあったので、これを用いた。
f:id:bitterharvest:20181128093545j:plain
220度で予熱したオーブンで10分焼き、重りを取り出して、さらに4分30秒焼く。
f:id:bitterharvest:20181128093909j:plain
タルトを取り出して、底面にアプリコットジャムを塗る。
f:id:bitterharvest:20181128094016j:plain
そして、タルトをオーブンに戻して余熱でアプリコットジャムを塗った表面を乾かす。乾いたら、取り出して冷ましておく。
f:id:bitterharvest:20181128094327j:plain

2 炒めリンゴの作成

炒めリンゴを作成するのに必要な食材は、リンゴ(3個)、バター(30g)、グラニュー糖(120g)、レモン(半個)、ラム酒入りレーズン(大さじ4杯)だ。
f:id:bitterharvest:20181129092508j:plain
リンゴは酸味があった方がおいしいと感じているので、紅玉を用いた。リンゴは8等分のくし切りにする。皮と種もこの時とる。
f:id:bitterharvest:20181129092751j:plain
バター(30g)をフライパンに入れて溶かし、その中にリンゴを加える。
f:id:bitterharvest:20181129092924j:plain
中火で透明感が出てくるまで炒める。
f:id:bitterharvest:20181129093033j:plain
ラニュー糖(120g)とレモン(半個)の絞り汁を加え、中火でさらに炒める。
f:id:bitterharvest:20181129093117j:plain
トロミが出てきたら炒めるのをやめ、ラム酒入りレーズン(大さじ4杯)を加えて冷ましておく。

3 クランブルの作成

クランブルは馴染みない単語だ。ロングマンの現代英英辞典で調べると、小麦粉、バター、砂糖の乾いた混合物を焼いたもので、果物を覆った甘い料理と書いてある。というわけで、クランブルに用いる材料は、薄力粉(25g)、アーモンドプードル(25g)、砂糖(25g)、ブラウンシュガー(25g)、シナモンパウダー(少々)、バター(25g)だ。
f:id:bitterharvest:20181129094339j:plain
まず、バターを小豆の粒ぐらいの大きさに切る。
f:id:bitterharvest:20181129094524j:plain
バター以外の、薄力粉(25g)、アーモンドプードル(25g)、砂糖(25g)、ブラウンシュガー(25g)、シナモンパウダー(少々)をボウルに入れてかき混ぜる。
f:id:bitterharvest:20181129094722j:plain
これにバターを加えて、手をこする合わせながらぼろぼろの状態にする。
f:id:bitterharvest:20181129094936j:plain
冷蔵庫に入れておく。今回は室温が低かったので、そのままにしておいたが、乾いた状態を作り出すためには、冷蔵庫にやはり入れておいた方が良かったように思う。

4 アップルクランブルタルトの作成

いよいよ、最終段階だ。タルト、炒めたリンゴ、クランブルは用意されている。
f:id:bitterharvest:20181129095409j:plain
タルトの中に、炒めたリンゴを入れる。そして、クランブルをまぶしていく。
f:id:bitterharvest:20181129095524j:plain
クランブルをまぶし終わると、
f:id:bitterharvest:20181129095651j:plain
オーブンを170度に温め、25分間焼く。
f:id:bitterharvest:20181129095809j:plain
皿の上に移動する。
f:id:bitterharvest:20181129095922j:plain
切り分けて食べられるようにする。
f:id:bitterharvest:20181129100049j:plain
f:id:bitterharvest:20181129100733j:plain

今回初めて、アップルクランブルタルトに挑戦した。リンゴは紅玉を選択したので、酸味のある美味しいアップルタルトを得ることができた。海外のサイトを見ると、クランブルの粒がもう少し小さいようなので、もう少し細かくちぎってまぶすか、もう少し乾いた状態にした方が良かったようだ。ただ、どのようにしたら乾いた状態のものが得られるのかは不明だ。

クリスマスには改良版で、孫たちを喜ばせたいと思っている。

銀杏入り茶わん蒸し

最近、散歩をしながらTEDトークを聴いている。広い範囲にわたって話題を紹介してくれる。その中で、最近、記憶についての話を聴いた。我々の仲間内での記憶についての話題といえば、人の名前がすぐに出てこないような、記憶力が悪くなった例の話になりがちだ。しかし、今回、TEDトークで聴いたのは、失われていく記憶ではなく、創られていく記憶だ。人々は経験したことを記憶として覚えるが、その記憶はその後のイベントによって変容するそうだ。その例として、殺人現場を見た人が、刑事の誘導により、無実の人を犯人と思い込み始め、さらには、断定するまでの状況を説明していた。

今回、銀杏の実を利用して茶わん蒸しを作ることになった。今日は茶わん蒸しを作ると言ったところ、妻が、結婚した頃に彼女の得意料理の茶わん蒸しを作ったところ、私からあまり好きではないと言われたので、そのあと余り作らなくなったと過去に感じた不満を漏らした。そのようなことを言った記憶はないが、しかし争っても仕方がない。わたしの、あるいは両方の記憶が変容したのだろうと解釈して、下ごしらえをしておいた銀杏の実を使って、茶わん蒸しを作ることにした。

茶わん蒸しは失敗することも多く、難しい料理の一つだそうだ。しかし、我が家のスチームオーブンレンジには、茶わん蒸しを自動で調理してくれる機能がついている。しかも、スチーム加熱を利用して。このため卵とだし汁の量を間違えさえしなければ失敗することはない。卵とだし汁は1:3にするのが原則。計量器を用いて、これをしっかりと守れば美味しい茶碗蒸しが完成する。

今日の食材だ(右端の砂糖は使わなかった)。今回は4人分だ。主役は、何と言っても、銀杏だ。脇役は、鶏肉(モモ肉40g)、干しシイタケ(2個分)、卵(M3個)、かまぼこ(薄切りにして4枚)、ウズラの卵(4個)、みつば、調味料だ。干しシイタケはあらかじめ、水に浸しておいた。
f:id:bitterharvest:20181126103405j:plain

まず、卵を計量した。160ccだ。従って、だし汁は3倍の480ccを必要とする。
f:id:bitterharvest:20181126103435j:plain

卵を大きめのおわんに移し、菜箸を底につけたままで卵をかき混ぜた。このとき、泡立てないようにした。卵の中に空気が混じりこんでしまうと、うまく固まらない。このため、菜箸を底につけたままかき混ぜるのが鉄則だ。
f:id:bitterharvest:20181126103459j:plain

次は、だし汁の作成だ。干しシイタケを浸しておいた水をカップに入れた。さらに、白だしを20cc加え(この瓶には40cc加えるようにと示されていたが、干しシイタケを浸した水を加えたため少なめにした)、さらに水を足して必要とされる480ccのだし汁を作った。
f:id:bitterharvest:20181126103520j:plain
次に卵液を作るために、ボールに卵とだし汁を入れ、かき混ぜた。かき混ぜ方は先ほどと同じで、菜箸を底につけたままだ。
f:id:bitterharvest:20181126103540j:plain

次に、これを濾すために、金属製ざると小鍋を用意した。
f:id:bitterharvest:20181126103603j:plain

ここに流し込む。ざるには卵白が残るので、これをスプーンで押してさらに流し込んだ。
f:id:bitterharvest:20181126103625j:plain

卵液ができたので、具を作った。鶏肉に、大匙半分の酒と塩少々をまぶして下味をつけた。
f:id:bitterharvest:20181126103648j:plain

かまぼこは薄切りで4枚を取り、さらに、半分に切った。
f:id:bitterharvest:20181126103711j:plain

具をうつわに入れた。今回は、それぞれに、銀杏の実3個、鶏肉10g、ウズラの卵1個、干しシイタケ3枚だ。
f:id:bitterharvest:20181126103735j:plain

さらに卵液をうつわの8分目まで入れた。
f:id:bitterharvest:20181126103801j:plain

うつわに蓋をして、スチームオーブンレンジに入れて、後は自動で(自動がない場合は、170度で15分程度)。
f:id:bitterharvest:20181126103825j:plain

スチームオーブンレンジでの調理が終わった後(34分かかった)、5分ほどそのまま蒸した。そして、みつばを入れて、出来上がり。
f:id:bitterharvest:20181126103852j:plain

地理の高級ワインを飲みながら、美味しくいただいた。
f:id:bitterharvest:20181126103923j:plain

主役の銀杏の実も、見事その役を果たしてくれた。

銀杏の下ごしらえ

中学時代の同級生から銀杏を頂いた。職場に銀杏の木があり、仲間たちと競って実をとることが楽しくなったということで、そのお裾分けをしてもらった。

木から落ちたばかりの、皮をかぶっている銀杏の実は、多くの人がひどいと感じる程の強い臭いを発する。悪臭と考える人の方が多いだろう。このため、街の中で沢山落ちていたとしても、食べてみたいという誘惑に駆られるものの、人込みの中を家までどのように運んだらよいのかという解決策を見出すことができず、イライラ感が積もる中、持ち帰ることができないストレス感を、臭い実を踏み潰すぐらいでしか解消できない。このような嫌な気分を味わうことなく、手に入れることができるのは幸運だ。銀杏採集という最も毛嫌いする工程をこなして、皮を取り、臭いを除去し、殻だけにして、送ってくれた同級生に感謝して、晩秋の旬である銀杏の実を楽しむこととした。

「少しだけ」と聞いていたのだが、送られてきた量は思っていたそれよりは多かったので、いろいろな料理の食材に使えるようにと、実を茹でて保存することとした。送られてきた銀杏はこれ。綺麗に皮が取り除かれ、悪臭もなかった。
f:id:bitterharvest:20181126082339j:plain

殻を取り除くために、開いた間隙が銀杏の大きさにマッチする水道工事用のペンチを道具箱から取り出した。銀杏の筋に沿って上半分を縦に割ってみようと考えた。
f:id:bitterharvest:20181126082501j:plain

うまくいく場合もあったが、真ん中のお腹のあたりに割れ目が入ってしまう場合も多かった。
この後、殻を取るのだが、そのときの爪にかかる負担を少なくするために、水に30分ほどつけて殻を柔らかくした。
f:id:bitterharvest:20181126082537j:plain

次は、殻を散り除き、実を取り出す作業だ。個数が多いので、爪を傷めないようにしたいが、これにはテクニックがいる。最初のうちは、技術が伴わないので、どうしても爪の力で殻を割ろうとした。
f:id:bitterharvest:20181126082734j:plain

段々に、爪への負担が重なり、わずかな痛みさえ覚えるようになった。このままでは、最後まで、爪が持ちそうにないので、負担がかからないように工夫した。殻の上下を指で挟んで若干の力を加え、割れた部分が広がるようにした。この部分に指を入れて、片方の殻を散り除き、さらにもう一方の残された殻も取り除き、底面の殻の中に残された実をてこの原理を利用して取り出した。このテクニックを利用してからは、スムーズに殻を取り除けるようになった。
f:id:bitterharvest:20181126082807j:plain

この後は、実の回りを覆っている薄い茶色の皮を取り除く必要がある。これには、鍋に水を沸騰させ、そのあとに銀杏の実を入れて、中火で煮た。実がもちっとした柔らかさになったところで止めた。おおよそ5分ほどであった。
f:id:bitterharvest:20181126082903j:plain

煮ている段階で、皮はかなり取り除かれた。
f:id:bitterharvest:20181126083019j:plain

皮がついているものの処理を行い、食材としての準備は終了だ。
f:id:bitterharvest:20181126083051j:plain

つまみ食いしたところ、もちもち感があって、なかなかおいしい。これを使って夕飯のおかずを作ることにした。

追:
残りは冷凍保存した。
f:id:bitterharvest:20181127090723j:plain

ハワイ旅行 帰国(十一日・十二日目)

ハワイ旅行十一日・十二日目は帰国だ。リフエ空港からの出発便は8時12分だ。コンドミニアムを6時半に出発だ。朝食を取っている暇はないので、空港で食べられるようにと、パウンドケーキを購入し、また、Gayeがパイナップルのカットを用意してくれた。運の悪いことに、前日の夜から激しい雨が降り始め、携帯電話には道路が冠水する恐れがあるという警報が届いていた。

激しく雨の降る中、コンドミニアムをGayeの運転で出発。恐れていた道路の冠水はなく、空が明るくなり始めたころにリフエ空港に到着。Gayeは運転席から離れられないので、座席からお別れを言い、Edとはスーツケースを車から降ろしたあとに、大きなハグをして別れた。

我々の便は国際線との接続なので、機械ではなく、ハワイアン航空のカウンターに向かった。リフエとホノルルの間は頻繁に飛んでおり、この日は1時間ほど早い便に空席があったので、それに振り替えてくれた。荷物の計量をして、ホノルルまでの国内線のチケットと、東京までの国際線のチケットを渡された。荷物を預かってくれるところまでスーツケースを運び、そして保安検査場へと向かった。朝早いせいかとても空いていて、手荷物の検査も簡単に済んだ。

ホノルルには8時に着いた。東京への便は12時15分発のJL781便だ。1時間早い便に振り替えてくれたので、ホノルル空港では時間がたっぷりあった。国際線あるいは米国本土への飛行機に乗り換えるためには、植物検査を受けなければならない。パイナップルのカットを持っていたので、引っかかるかなと思ったが、無事通過した。JAL便が出発するC区域は、殆どのお店がまだ閉まっていて、電燈も付いていないところが多かった。搭乗ゲートを確認したあと、唯一開店していたスターバックスでコーヒーを買い、持参してきたパウンドケーキとパイナップルのカットで、ゆっくりと朝食をとった。

朝食を済ませたのが9時ごろ、まだまだ、出発まで時間があった。子供たちから買ってきて欲しいと頼まれたパイナップルの形をしたクッキーを、ホノルル・クッキー・カンパニーのお店で購入した。
f:id:bitterharvest:20181112101612j:plain

1時間前に搭乗ゲートに向かった。しばらく待っていると、名前が呼ばれた。JALのカウンターへ来て欲しいというアナウンスだった。国際便への乗りつぎだったので、パスポートの確認が行われ、搭乗券もJALのものに代えられた。

飛行時間は9時間だ。昼食を食べたあとの暇つぶしに、映画を観ることとした。今年のカンヌ映画祭パルムドール賞を獲得した「万引き家族」を鑑賞することにした。映画が始まると、不思議な現象に襲われた。耳から入ってくる音を英語のリズムで聞き取ろうとしている。このため、何を話しているのかとても把握しづらい。さらに悪いことに、字幕は英語だ。耳からの音が聞き取りにくいので、字幕を一生懸命に読む。このため、耳から入ってくる音は日本語とは程遠いものとなり、バックグラウンドの音へと変わってしまう。映画を見るのにひどく疲れ、眠り込んでしまった。

今回の旅行では、GayeやEdがいる場所では、疎外感を味合わせてはいけないと配慮して、日本語は使わず、英語だけで通した。そのため、英語耳になってしまったようだ。さらに、このあと2本の日本映画を観ようとしたが、やはり同じ現象に見舞われ、10分も経たないうちに眠り込んでしまった。おかげで十分に睡眠をとった。

Gayeは小学校の先生をしていたこともあって、英語の発音には厳しい。今回も随分と直された。特に粘土を表すclayについては、10分間の特訓をさせられた。Lの音がRに聞こえるようだ。Lの音は、歯茎に舌を強く押し付けて、舌の両端から音を出す。しかし、私のLは、舌を押し付けるのに意識が行き過ぎて、息が強く吐き出され、Rの音に聞こえるようだ。「リラックスして」と指摘されるのだが、舌を押し付けることにより生じる緊張が除かれず、息を強く吐いてしまう。帰国後もGoogle Translateで確認しながら特訓を続けている。

成田には次の日の午後4時に到着した。エアポートバスでたまプラーザに戻り、そのあとはタクシーで自宅へと戻った。心配した交通事故もなく、病気にもならず、良い旅だった。かくして10月20日から31日まで続いたハワイ旅行は完了した。彼らと約束したようにオリンピックの年の2月に、カウアイ島をまた旅行できることを楽しみにしている。

ハワイ旅行 チョコレート・ガーデン(十日目)

ハワイ十日目、カウアイ島三日目は、チョコレートの庭園だ。Googleでの道案内によると下図のように出てくる。一番端にあるはずの目的地(赤い印)が道の途中にありなにか変だ。
f:id:bitterharvest:20181111113459p:plain

56号線を北上していくと左側に目的地のGarden Island Chocolateが出てくる。しかし、Googleの道案内によれば、ここを通り越して、はるか先のハナレイ国立野生棒物保護区のロータリーで引き返すようになっている。56号線は高速道路なので、Googleは左折することができないと認識している。このため、Uターンできる地点を探しているのだ。我々はこの道案内に従ったために損をした。危うく集合時間に間に合わないところだった。

参加者名簿に名前を記入した後、朝食代わりにおかれていたハワイ名物の果物を食べたあと、チョコレート農園のツアーへと向かった。最初に驚かされたのが、ハワイの植物に外来種が多いことだ。

綺麗な花を見せてくれるブーゲンビリアやプリメリアは中南米が原産、ハイビスカスも園芸用の多くは外来種。馴染みのある果実もほとんどが外来種だ。マカデミアナッツはオーストラリアが原産。パパイヤはオーストラリア東部から、バナナはマレー半島から、パイナップルはブラジルからの外来種だ。マンゴーはインド・ミャンマーから、スターフルーツはアジアからだ。さらに、ココヤシは東南アジア・インド洋の島々から、ライチは中国広東省福建省から、ザボンはアジア南部から、グアバ南アメリカからだ。コナ・コーヒーはエチオピアから、そして、これから見学するカカオは熱帯アメリカ原産だ。

チョコレートはカカオの実から作られる。カカオの木を見るのはおそらく初めてだったと思う。カカオの花は枝ではなく幹に咲く。下の写真で幹のところどころに白い花を咲かせている。実は赤く楕円形をしている。
f:id:bitterharvest:20181111113636j:plain

もう少し大きくしてみよう。5223
f:id:bitterharvest:20181111113713j:plain

熟した実を割って中を見せてくれた。そこにはカカオの豆が詰まっている。この豆を焙煎し、いくつかの複雑な工程を得てチョコレートが生まれる。
f:id:bitterharvest:20181111113742j:plain

その他の植物についても説明があり、1時間かけてのツアーが終わった。そのあとは、チョコレートの試食会。チョコレートの種類ごとに説明を受け、それを試食するというプロセスを繰り返す。いやというほどたくさんの種類のチョコレートを食べ、やっと終了した。ツアーと試食を合わせて3時間のコースだった。ここは農場だけなので、説明を受けたチョコレートを購入することはできなかった。

昼食は近くにあるキラウエア(Kilauea)の町でとる。
f:id:bitterharvest:20181111113553p:plain

この町はかつてはサトウキビで栄えた。日本やポルトガルから入植者を迎えた。ところどころに歴史を伝える写真がある。
f:id:bitterharvest:20181111113817j:plain

午後は、カウアイ島の北にあるハナレイの町を散策することにした。
f:id:bitterharvest:20181111113535p:plain

ハナレイの街に入るためには、狭い鉄橋を渡らなければならない。ここは一車線だ。橋の前は双方から来る車で渋滞していた。一台一台が交代に渡るということではなさそうだ。我々が渡ろうとしたときは、3台の車が続いて渡ってきて、4台目が停車して道を開けてくれた。町の人に聞いてもルールはないそうで、適当にということらしい。橋を渡って、ハナレイに入ると、一面に畑が広がっていた。後で調べると、タロイモ畑だ。

街の中に入り、賑やかになったところで車を駐車し、あたりを散策する。最初に入った建物には、Old Hanalei Schoolという看板があった。洋服屋さんを皆で覗いてみる。この建物を出ると、ハワイの歴史を教えてくれる展示があった。ハワイ島で訪れたヘイアウを描いたものだ。
f:id:bitterharvest:20181111113851j:plain

その右手にアート・ショップがあったので覗いてみた。ハワイのスタイルなのだろうか、腰巻だけをつけた大男が現れたのでのびっくり。ポリネシアの美術品を扱っている店だ。YouTubeで、彼が宣伝している。
www.youtube.com

ハナレイの南側は、急峻な山が迫っている。滝というよりは、川がまっすぐ真下に落ちていくような光景だ。
f:id:bitterharvest:20181111113919j:plain

夕飯は、宿舎の近くの武士道というお店で、米国味の海苔巻きや寿司を食べた。EdとGayeは週末までカウアイ島に残るが、我々はあす帰国する。旧交を温めることができとても良い旅だった。食事の前に、日本製のビールで乾杯した。