この記事は、圏論(けんろん、category theory) という、現代数学の中で最も抽象的・最も統一的な理論を取り上げます。
高校数学と大学数学の知識を、一切前提に置かずに、家族・近隣関係という、もっとも日常的な構造を通じて、高校数学の復習から始める入門者向けの記事 です。
この記事について
最初に 3点だけ お伝えします。
第1に、本記事は 数学的な厳密性よりも、イメージのつかみやすさを優先しています。
圏論の正確な定義や、各概念の数学的な精密化は、本記事の射程の外です。
専門書を開く前段階で、圏論の輪郭を直感的につかむことを、目的としています。
第2に、本記事に登場する家族・人物・街は、すべて完全に架空です。
実在の人物・家族と類似点があった場合は、まったくの偶然です。
第3に、家族の形は、世界中で多様です。
本記事に登場する4つの家族は、その多様性のごく一部の例であり、すべての家族の形を網羅するものではありません。
免責事項(TL;DR の前に)
本記事は、比喩を用いた分かりやすい解説を試みたため、圏論の数学的な定義や成立要件について、厳密な議論にはそのまま対応しない部分が多々あることを、ご寛恕(かんじょ)ください。
数学的な厳密性と、入門記事としての届きやすさの間には、本質的なトレードオフがあります。
本記事は、後者を優先しました。
厳密な議論と対応しない部分は、本記事の末尾「専門書に進む方へ」に、すべて整理してあります。
本記事の比喩で圏論の世界に興味を持たれた方は、ぜひ最後まで読み、そして専門書への橋を渡ってください。
TL;DR(記事全体像)
- 数学の中に、圏論(category theory) という分野がある
- 圏論の核心概念は 対象・射・関手・自然変換 ── これらは、抽象的に見えて、実は家族と近隣関係という日常的な構造に、自然に対応する
-
家族の中の関係(親子、夫婦、兄弟)が射(矢印)
-
家族全体が、関係の集まりとしての一つの圏
-
ご近所同士の家族構造の対応関係が関手(functor)
- 2つの関手の間の関係性が自然変換(natural transformation)
- これらの概念は、抽象的な数学だけでなく、プログラミング、AI、物理学、言語学、生物学にも応用される
- 本記事の比喩は、「圏論を理解した」ことの代わりにはならない。しかし、圏論の世界の入口に立つための、最初のヒントになる
【再掲】本記事の比喩には、厳密には数学的定義からずれる部分があります。詳しくは記事末尾「専門書に進む方へ」を必ずお読みください。
想定読者
本記事は、以下の方々を想定しています。
- 高校数学を忘れた、または苦手だった方
- 「圏論」という言葉を聞いたことはあるが、内容を知らない方
-
【特にこの記事が向いている方】 プログラミングで Haskell・Rust・関数型言語 を始めたいが、「圏論」や「モナド」という言葉が壁に見えて、一歩踏み出せずにいる方
- 家族・人間関係・社会構造の数学的な側面に、漠然と興味のある方
- 哲学・自然科学・芸術の中の構造を、数学的に眼差してみたい方
この記事を読んで得られるもの ── とくに、エンジニアの方へ
「家族の話としては面白そうだけど、仕事に関係ある?」
── そう思われたエンジニアの方に、先にお伝えします。
この記事を読むと、次のような、エンジニアの皆様の実務に直結する「根っこの直感」 が手に入ります。
-
モナドの「気持ち」が、腹に落ちる。
Maybe・Result・Promise・List── 言語を問わず現れるこのパターンが、なぜ「同じ仲間」なのか?。 「箱に包んで、均す」というたった1つの骨格で、一気に見通せる ようになります。
- アーキテクチャ設計の根本が、言語化される。 「部品に分けて、組み立てる」「構造を保ったまま翻訳する」── 普段、感覚でやっているモジュール化や間接参照の設計が、関手・合成・自然変換という言葉で、明確に語れるようになります。
- 「なぜこの設計が気持ちいいのか」の、言語が手に入る。 コードレビューで「なんとなく美しい」と感じる設計には、しばしば 「構造を保っている」という裏付け があります。 その「美しさ」の正体 を、言葉にできるようになります。
- 関数型言語への、心理的なハードルが下がる。 Haskell や Rust で壁に見えていた 「圏論」「モナド」 が、日常のイメージと地続きだと分かると、その後の専門書やドキュメントが、ぐっと読みやすくなります。
-
代数的データ型の「なぜ」が、圏論の言葉で腑に落ちる。 Haskell や OCaml で日々書く代数的データ型(algebraic data types)には、圏論がそのまま流れています。
複数の値を同時に持つ直積型(レコードやタプル)は圏論の積に、「どちらか一方」を表す直和型(Eitherやバリアント、列挙)は余積に、ちょうど対応します。本記事の第6章「積と余積」で見た「と(両方)」と「か(どちらか)」の対比が、そのまま型システムの骨格だったのです。
さらに、ListやTreeのような再帰的なデータ型は、積と余積で組み立てた関手の「始代数(initial algebra)」── かみくだいて言えば、その関手を満たすいちばん素直な不動点 ── として正確に捉えられます。
そして、再帰データを畳み込むfold(catamorphism)が、なぜあれほど自然に書けるのか。その理由が、「始代数からの一意な射」という圏論の言葉で、はっきり説明できるようになります。
- シリーズ「圏論×現実」への、いちばんやさしい入口になる。 この記事で直感をつかんだあと、末尾のリンクから、ゲーム理論・最適化・機械学習という、より実践的な応用記事へ、そのまま進めます。
もちろん、エンジニア以外の方にも、この記事は開かれています。
ただ、 「普段コードを書いているけれど、その裏側の数学は雰囲気で流している」
── そんな方にこそ、この記事は、もっとも強く届くはず です。
序章 ── ある日のご近所散歩
土曜日の朝、ある街を、ゆっくり歩いてみましょう。
道の両側には、いくつかの家が並んでいます。煉瓦造りの古い家、白い壁の新しい家、庭に大きな木のある家、小さなアパートの一階の小さな住居。
ある家からは、子供の笑い声が聞こえます。別の家からは、お味噌汁の香りが漂ってきます。さらに別の家からは、ピアノの音が、窓越しに小さく流れています。
ふと、考えます。
それぞれの家の中には、何があるのだろう?
家の中には、家族がいます。お父さんとお母さん、子供たち。あるいは、おじいちゃんおばあちゃんと、孫。あるいは、一人で暮らす方。あるいは、共働きの夫婦。あるいは、シェアハウスで暮らす友人同士。
そして、家族の中には、関係があります。お母さんが子供を見守る関係。父と娘が散歩に出かける関係。兄が弟に算数を教える関係。妻が夫に「おかえり」と言う関係。
これらの関係は、それぞれ方向を持っています。お母さんから子供へ、父から娘へ、兄から弟へ、妻から夫へ。
関係には、向きがある。
これは、当たり前のようで、しかし数学的にも重要な性質です。
そして、家の外を見渡せば、別の家があります。隣の家、お向かいの家、少し離れた家。それぞれの家にも、別の家族が住み、別の関係があります。
ご近所さん同士で、関係は流れます。隣の家の子供と、こちらの家の子供が、一緒に学校に通う。お向かいの家のおじいちゃんと、こちらの家の祖母が、朝の挨拶を交わす。
街全体は、家族たちの集まりであり、家族同士の関係の集まりでもあります。
実は、こうした日常の風景の中に、圏論の核心が、すべて含まれています。
本記事では、4つの架空の家族
──「林家(はやしけ)」「森家(もりけ)」「川島家(かわしまけ)」「佐々木家(ささきけ)」
── を通じて、圏論の世界への扉を、ゆっくり開いていきましょう。
第1章 ── 対象と射:家族の中の「矢印」
まず、最初の家、**林家(はやしけ)**を訪ねてみましょう。
林家は、4人家族です。
- 林 健一(けんいち):53歳、銀行員
- 林 美和子(みわこ):51歳、図書館司書
- 林 大樹(だいき):18歳、高校3年生
- 林 さくら:14歳、中学2年生
この4人を、紙に書き出してみます。
健一
美和子
大樹
さくら
これらの4人を、数学的には 「対象」(object) と呼びます。対象とは、注目している『もの』 のこと。
林家には、4つの対象(4人の家族)があります。
そして、4人の間には、関係があります。
- 健一 → 大樹:父から息子へ。「仕事の苦労を、息子に静かに語る」
- 健一 → さくら:父から娘へ。「朝の食卓で、娘の話を聞く」
- 美和子 → 大樹:母から息子へ。「進路の相談に乗る」
- 美和子 → さくら:母から娘へ。「料理を一緒に作る」
- 健一 → 美和子:夫から妻へ。「結婚記念日にお花を贈る」
- 美和子 → 健一:妻から夫へ。「疲れている夫に温かいお茶を出す」
- 大樹 → さくら:兄から妹へ。「数学を教える」
- さくら → 大樹:妹から兄へ。「漫画を貸す」
これらの関係を、数学的には 「射」(morphism) と呼びます。「矢印」と訳されることもあります。射とは、ある対象から、別の対象への何らかの繋がりのこと。
林家には、たくさんの射があります。
ここで、大切なポイントが3つあります。
ポイント1:射には、向きがある
「健一 → 大樹」と「大樹 → 健一」は、別の射です。父から息子への関係(仕事の苦労を静かに語る)と、息子から父への関係(進路を相談する)は、内容が違います。
数学的にも、向きの違う矢印は、別の矢印として扱います。
ポイント2:同じ二人の間に、複数の射がありうる
健一と美和子の間には、いろんな関係があります。「お花を贈る」「お茶を出す」「朝の挨拶」「休日の散歩」── すべて別々の射です。
数学的にも、同じ対象の間に、複数の射が存在することは、許されます。
ポイント3:射は『何かをすること』とは限らない
射は、動詞だけではありません。「信頼している」「心配している」「懐かしく思っている」── これら感情の関係も、射です。
数学的に言えば、対象同士のつながりであれば、何でも射として扱える。
林家の中だけで、もうこれだけの構造があります。
「対象」と「射」── この2つの言葉だけで、家族の中の関係を、ほぼすべて表現できる。
これが、圏論の最初の発見です。
「世界は、対象と射でできている」
家族だけではありません。学校のクラス、職場の部署、街の商店街、国の組織、すべて、対象と射の集まりとして捉えられます。
今日の話を、図にまとめておきましょう。林家の4人(対象)と、その間の関わり(射)を、矢印でつないだものです。同じ二人の間にも、向きの違う矢印が、別々に引けることに注目してください。
矢印の1本いっぽんが射です。
たくさんの矢印が、林家という1つの世界を、編み上げています。
※上の図は、林家にある射のうち、代表的なものだけを描いています。
射の全体は、本文中の図も合わせてご覧ください。
第2章 ── 恒等射と合成:自分から自分、関係の連鎖
林家の家族構造を、もう少し深く見てみましょう。
実は、圏論には、2つの大切なルールがあります。
ルール1:恒等射(こうとうしゃ、identity morphism)
すべての対象には、自分自身への射が必ず存在する、というルール。
林家で言えば ──
-
健一 → 健一:「健一が自分自身を意識する」
-
美和子 → 美和子:「美和子が自分の在り方を考える」
-
大樹 → 大樹:「大樹が自分について悩む」
-
さくら → さくら:「さくらが自分らしさを探す」
このような、自分から自分への射を、「恒等射」 と呼びます。
「ええっ、自分から自分への矢印って、ただ留まっているだけじゃない?」と思うかもしれません。
しかし、ここに圏論の深い洞察があります。「何もしない」という変化も、変化の一種である。
数学的には、恒等射 $\text{id}_A$(対象 $A$ の恒等射)は、$A$ を $A$ に「そのまま運ぶ」操作です。
これがあるおかげで、後で出てくる「合成」のルールが、綺麗に成り立ちます。
哲学的にも、家族の中の各メンバーは、まず自分自身であることから、他者との関係が始まります。
自分が自分であるという事実が、家族の中の他のすべての関係の、土台になっている。
ルール2:合成(ごうせい、composition)
2つの射がつながるときに、新しい射が生まれる、というルール。
林家で考えてみましょう。
-
健一 → 美和子: 夫から妻へ「家計を相談する」
- 美和子 → 大樹: 母から息子へ「今月の出費について話す」
この2つの射を、続けて辿ると ──
- 健一 → 大樹:父から息子へ「家計の話を、母を経由して、息子に届ける」
これが、「合成された射」 です。
数学的に書けば、$f: A \to B$ と $g: B \to C$ という2つの射があるとき、合成 $g \circ f: A \to C$ という新しい射が必ず存在する、というルール。
林家の中で、こうした合成の連鎖は、日常的に起きています。
- 健一が美和子に話す → 美和子が大樹に伝える → 大樹がさくらに教える
- ( $健一 → 美和子 → 大樹 → さくら の連鎖$ )
これら長い射の連鎖も、すべて「健一 → さくら」という、一つの合成された射として扱える。
そして、ここに大切な性質があります。
結合律(associativity):
3つの射 $f, g, h$ があるとき、合成の括弧の付け方は、結果に影響しない。
- $(h \circ g) \circ f = h \circ (g \circ f)$
家族の言葉で言えば ──「$父 → 母 → 兄 → 妹$ 」の連鎖を、「 $(父 → 母 → 兄) → 妹$ 」と理解しても、「 $父 → (母 → 兄 → 妹)$ 」と理解しても、最終的に「父から妹への、母と兄を経由した間接的な関係」は、同じ。
これは、家族の中で「伝言ゲーム」を考えてみればわかります。
父が母に「今度の日曜、みんなで出かけよう」と言い、母が兄に伝え、兄が妹に伝える。
途中でどこを「ひとまとまり」と見ても、最終的な「父から妹への話の流れ」は、同じ内容になる。
ここまでで、圏論の最初の2つの要素を、家族の中で見てきました。
-
対象(object): 家族のメンバー
-
射(morphism): メンバー間の関係
-
恒等射:自分自身への関係
-
合成: 射と射の繋がりから生まれる新しい射
 
今日の2つのルールを、1枚の図にしておきましょう。
上が、恒等射(自分から自分への矢印)、
下が、合成(矢印をつなぐと、新しい矢印が生まれる)です。
恒等射と合成。この2つが、対象と射の世界を「圏」にしている、屋台骨です。
これら4つを満たす構造を、数学的には 「圏」(category) と呼びます。
つまり、林家は、ひとつの圏である。
これが、本記事のタイトルの意味です。
第3章 ── 圏:家族全体が「ひとつの単位」
ここまで、林家の内部を見てきました。
- 林家は、4人のメンバー(対象)と、その間の多数の関係(射)から成る。
- 各メンバーには自分自身への恒等射があり、関係は合成できる。
これらの条件を満たす構造を、数学者は**「圏」**と呼びます。
ここで、視点を切り替えます。
林家を外から眺めると、それはひとつの全体として見えます。
「林家」という一つの単位。
これは、街の他の家族にとって、林家を意識するときの自然な感覚です。
「今度の日曜、林家がみんなでお出かけだって」
「林家のさくらちゃんが、うちの子と仲良くしてくれてる」
── 街の人は、林家の内部の複雑さを知らなくても、「林家」という一つの単位として、認識 しています。
これが、圏論の重要な視点の一つ です。
「圏」は、内部の複雑な構造を持ちながらも、外から眺めると、ひとつの全体として扱える。
数学では、これを 「圏 $\mathbf{C}$」 のように、太字の記号 で書きます。
この記事では、家族の場合、シンプルに「林家」「森家」のように呼ぶことにします。
街には、林家の他に、3つの家族がいます。
森家(もりけ)
- 森 直子(なおこ): 38歳、IT エンジニア(共働き)
- 森 修(おさむ): 40歳、デザイナー(在宅勤務)
- 森 葉月(はづき): 7歳、小学2年生
3人家族の現代的な共働き世帯。直子と修は、家事を半々で分担している。
川島家(かわしまけ)
- 川島 信夫(のぶお): 74歳、元教師、現在は地域ボランティア
- 川島 房子(ふさこ): 71歳、家庭菜園と地域の合唱団
夫婦二人暮らしの老夫婦。息子家族(別の街に住む)が、週末に時々訪れる。
佐々木家(ささきけ)
- 佐々木 ユウキ: 31歳、フリーランスのライター。一人暮らし。
- (近所に住む両親と、月1回程度の交流)
一人暮らしの若い世帯。家族の形は様々で、佐々木家の場合、家には一人しか住んでいない。
これら4つの家族は、それぞれがひとつの圏です。
- 林家は、ひとつの圏。
- 森家は、ひとつの圏。
- 川島家は、ひとつの圏。
- 佐々木家は、ひとつの圏。
それぞれの家族 には、内部の構造(対象と射)があり、独自の「文化」があります。
そして、これら4つの圏 は、ご近所同士として、互いに関係している。
次の章では、家族同士の関係 ──「関手( functor )」── について見ていきます。
第4章 ── 関手: お隣さんの家族構造への翻訳
ある日、林家のさくらちゃん(14歳)が、森家の葉月ちゃん(7歳)の宿題を見てあげることになりました。
さくらは、自分の家族の中で、お母さんから自分への関わり方(やさしく見守りつつ、自分の力を信じる、というスタイル)を、自然に身につけていました。
そして、葉月ちゃんに宿題を教えるときも、さくらは無意識のうちに、自分が母親から受けたその接し方を、葉月ちゃんに対して再現しました。
これは、何が起きているのでしょうか?
この情況を数学的の圏論の言葉に置き換えると、
林家の構造の一部が、森家へと『翻訳された』 のです。
「林家の中の『母から娘への接し方』」という関係(射)が、
「森家の中の『さくらから葉月への接し方』」という関係(射)に、対応している。
このような、一つの圏から別の圏への構造の翻訳を、数学では 「関手(かんしゅ。functor )」 と呼びます。
「関手」── 漢字の見た目はちょっと難しいですが、英語の functor (関数のような働きをするもの)から来ています。
なお、ここでは話を分かりやすくするため、さくらが、林家と森家の両方に登場しました。
しかし厳密には、関手は「別々の2つの圏のあいだの対応」であり、同じ人物が両方の圏に属している情況は一般的ではありません。
さくらの体験は、あくまで関手を発見するきっかけです。
大切なのは、人そのものではなく、「関わり方(射)の形が、まるごと翻訳される」という点にあります。
もう一つの例: 登場人物が、まったく違っても
関手のもう一つの例を見てみましょう。
今度は、登場人物がまったく重ならない、2つの家族です。
林家 と、お向かいさんの 川島家(かわしまけ) を考えます。
川島家 は、母ひとり子ひとりの2人家族です。
- 川島 律子(りつこ): 42歳、看護師
- 川島 駿(しゅん): 10歳、小学4年生
ここで、林家から川島家への、こんな対応 を考えます。
- 林家の「健一(父)」 に、川島家の「律子(母)」 を対応させる ( その家で、いちばん上の世代 )
- 林家の「大樹(兄)」 に、川島家の「駿(子)」 を対応させる ( その家の、子ども世代 )
このとき、林家の中の射(関係)も、川島家の射へと翻訳されます。
- 林家:健一 → 大樹「仕事の苦労を、静かに語る」
- 川島家:律子 → 駿「夜勤の話を、ぽつりと語る」
登場する人物は、まったくの別人です。
健一と律子は別人、大樹と駿も別人。
それでも、「いちばん上の世代から、子ども世代へ、自分の苦労を静かに語る」という関係の形は、林家から川島家へ、きれいに対応 しています。
これが、関手の本質 です。
関手 が 翻訳する のは、人そのものではなく、関係の形(構造)。
だからこそ、登場人物がまったく違う家族のあいだでも、関手は成り立つのです。
「構造を保ったまま、別の世界へ翻訳する」
── この発想が、関手 です。
関手のルールは、2つ あります。
関手のルール1: 対象を対象に運ぶ
林家の「お母さん」を、森家の「さくら」に対応させる。
林家の「さくら」を、森家の「葉月」に対応させる。
このように、ひとつの圏の 対象 を、別の圏の 対象 に 対応させる。
関手のルール2: 射を射に運ぶ、しかも構造を保つ
林家の「お母さん → さくら」(やさしく見守る)という 射 を、
森家の「さくら → 葉月」(やさしく見守る)という 射 に 対応 させる。
つまり、射の向き、つながり方、合成の関係を、すべて 保つように、翻訳 する。
関手によって表現されるような情況は、街のあちこちで、毎日起きています。
例えば ──
関手の例1: 教え方が、となりの家へ
林家では、兄の大樹が、妹のさくらに勉強を教えます。
お向かいの川島家では、母の律子が、息子の駿に勉強を教えます。
林家の中の「大樹 → さくら:根気よく教える」という射が、
川島家の中の「律子 → 駿:根気よく教える」という射に、対応している。
教える人も、教わる子も、まったくの別人です。
それでも、「その家の中で、年上の者が年下の子に、根気よく教える」という関係の形は、
林家から川島家へ、そのまま翻訳されています。
S
関手の例2: 町内会の付き合い
川島家の信夫さんが、月に一度、林家の健一さんと、地域の活動について相談します。
川島家の中での「先輩から後輩への助言」という射が、林家の中の「健一が後輩の同僚に助言する」という射として、再生産されることがあります。
関手の例3: 出かける前の声かけ
林家では、母の美和子が、出かける子どもたちに「気をつけてね」と声をかけます。
お向かいの川島家でも、母の律子が、家を出る駿に「忘れ物ない?」と声をかけます。
林家の「美和子 → 大樹・さくら:送り出すときの声かけ」という射が、
川島家の「律子 → 駿:送り出すときの声かけ」という射に、対応している。
言葉も子どもも別ですが、「送り出す側が、出ていく子に、気づかいの一言をかける」
という関係の形は、ふたつの家族で同じです。
ここで、大切なポイントがあります。
関手は、完璧な翻訳ではない。
林家の「お母さんからさくらへの接し方」と、森家の「さくらから葉月への接し方」は、似てはいますが、完全に同じではありません。さくらは、母親そのものではないし、葉月はさくら自身ではない。
それでも、構造としての類似性は、明らかに存在する。
これが、関手の本質です。
「2つの圏の間に、構造を保つ対応がある」
完全に同じである必要はない。ただ、構造的に対応している。これだけで、2つの世界を繋ぐ橋になります。
関手のはたらきを、図にしておきましょう。左が林家、右が森家。対象は対象へ、矢印は矢印へ、向きと組み立て方を保ったまま、まるごと翻訳されます。
大事なのは、点線の対応(対象どうし)だけでなく、「見守る」という矢印そのものが、左から右へ翻訳されていること。これが、関手の心臓部 です。
第5章 ── 自然変換: 翻訳のしかたから、翻訳のしかたへ
関手の話を、もう一段、深めましょう。
第4章で、林家から川島家への翻訳(関手)を見ました。
実は、同じ「林家を川島家へ翻訳する」のにも、時期によって、別の翻訳の仕方 があり得ます。
川島家には、去年の川島家と、今年の川島家があります。
この一年間のあいだに、子の駿はひとつ年をとり、母の律子の働き方も少し変わりました。
同じ川島家でも、中身は移ろっています。
そこで、林家から川島家への翻訳(関手)を、2つ考えます。
-
関手 $F$(去年へ訳す):
林家を、去年の川島家へ翻訳する。
健一を「去年の律子」へ、大樹を「去年の駿」へ。
-
関手 $G$(今年へ訳す):
林家を、今年の川島家へ翻訳する。
健一を「今年の律子」へ、大樹を「今年の駿」へ。
どちらも、林家ぜんたいを川島家へ、構造を保って翻訳しています。
ただ、訳す先が「去年」か「今年」かという、行き先が違う。
ここで、自然変換が登場します。
林家の各メンバーについて、「$F$ が選んだ去年の翻訳先から、$G$ が選んだ今年の翻訳先へ」と、橋を架けることができます。
- 健一について:
去年の律子 → 今年の律子(働き方が変わった、一年分の移ろい)
- 大樹について:
去年の駿 → 今年の駿(背がのびた、一年分の成長)
この橋は、林家のどのメンバーについても、いっせいに架かります。
しかも、林家の中のどの関係(射)とも、足並みがそろっている。
たとえば、「 $健一 → 大樹$ 」という関係を、先に去年へ訳してから今年へ渡しても、先に今年へ渡してから関係をたどっても、行き着く先は同じになる。
これが「足並みがそろう」ということです。
この「関手 $F$ から関手 $G$ へ、すべての対象でいっせいに架かる橋」が、自然変換( natural transformation ) です。
関手が 「翻訳」 なら、自然変換は「翻訳のしかたから、別の翻訳のしかたへの、滑らかな乗り換え」。
世代が移り、季節がめぐっても、家族の関係の形はたもたれたまま、まるごと 次の年へ渡っていく。
その移ろい全体 が、ひとつの自然変換 なのです。
これは、家族の暮らしの中でも、毎日起きていることです。
-
担当の交代:
お母さんが忙しいので、今日はお父さんが葉月の保育園のお迎えに行く。
「林家から森家への面倒見」という関手が、お母さん経由から、お父さん経由へ、自然に移行する。
-
世代交代:
長年、川島家の信夫さんが地域の自治会長を務めていたが、引退して、林家の健一さんに引き継ぐ。
「地域のためのリーダーシップ」という関手が、信夫さんから健一さんへ、自然に変換される。
-
役割の継承:
森家で、両親が忙しい朝は、葉月ちゃんが自分で身支度をする。
「身の回りの世話」という関手が、両親から葉月自身へ、自然に変換される。
自然変換の本質は、**「いろいろな翻訳のしかたの、間にある滑らかな移行」**です。
家族の中、ご近所同士の関係、世代を超えた継承
── すべて、自然変換の構造を持っています。
そして、ここに圏論の最も美しい発見があります。
**「自然」**という言葉が、数学的に厳密な意味を持つ。
サミュエル・アイレンベルグ( Samuel Eilenberg )とサウンダース・マックレーン( Saunders Mac Lane )が、1945年に圏論を生み出したとき、その出発点にあったのが、まさにこの「自然変換」という考えでした。
彼ら自身が、こう振り返っています。
「自然変換を、きちんと定義したかった。そのために、関手を定義した。そして、関手を定義するために、圏を定義した」。
「ある変換が『自然である』とは、どういうことか?」
── この素朴な問いに、数学のことばで答えたい。その願いから、圏・関手・自然変換が、まとめて生まれたのです。
なぜ、2人は「自然さ」を定義したかったのか?
では、なぜアイレンベルグとマックレーンは、わざわざ「自然変換」という言葉を、厳密に定義したかったのでしょうか?
じつは、2人は、ある具体的な学術的課題に取り組んでいました。
その問題とは、代数的位相幾何学(トポロジー)、とくにホモロジー論 に属する問題でした。
きっかけは、2人が1942年に書いた論文「群の拡大とホモロジー」でした。
そこで彼らは、図形の性質を調べる中で現れる、ある群と別の群が「同型になる」関係に、くりかえし出会います。このとき、2人は、ある違和感に気づきました。
数学には、**2種類の「同型」**があるのです。
1つは、「自然な同型」。
たとえば、ベクトル空間 $L$ と、その「二重の双対 $L^{**}$」は、基底をどう選ぼうと、いつも同じやり方で対応がつきます。
誰がやっても、同じ橋が架かる。
もう1つは、「たまたま成立する同型」。
ベクトル空間 $L$ と、その「双対 $L^{*}$」も、次元が同じならば、同型になります。
けれども、その対応をつけるには、基底を1つ選ばなければならない。
選び方を変えれば、橋も変わってしまう。
数学者たちは、この2つの違い を、感覚では分かっていました。
前者を「自然」、後者を「不自然」と呼んでいた。
けれども、「自然とは、厳密にはどういうことか」を、誰も言葉にできずにいたのです。
そこで2人は、こう考えました。
「この『自然さ』を、厳密に定義しよう」。
そして、その定義のために必要だった のが、「関手から関手への、すべての対象でそろって架かる橋」という概念
── すなわち、自然変換だったのです。
さらに、自然変換 を定義するには、その土台として「関手」が要る。
関手 を定義するには、その土台として「圏」が要る。
こうして、「自然さを厳密にとらえたい」という、たった1つの願いから、圏・関手・自然変換が、まとめて生み出されました。
圏論は、抽象のための抽象として生まれたのではありません。
トポロジーの具体的な計算の中で出会った「自然さ」の正体を、見極めたいという、切実な動機から生まれたのです。
ここで、関手 $A$ と関手 $B$ 、そして、その間の 自然変換 を、図にするとこうなります。
2つの翻訳のしかた( $A$ と $B$ )があり、その間を、滑らかにつなぐ移行が、自然変換* です。
関手が「翻訳」なら、自然変換は「翻訳のしかたから、別の翻訳のしかたへの、滑らかな乗り換え」。
担当の交代も、世代交代も、この形をしています。
第6章 ── 積と余積:家族の「合体」と「分裂」
家族の形は、時とともに変わります。
新しい家族が生まれる。
家族が分かれる。
2つの家族が、ひとつの大きな家族になる。
これらの 家族の合体・分裂という出来事 を的確に表現するための 圏論の言葉 があります。
積(せき、product): 「2つの家族を、一緒に考える」
ある日、林家と森家が、合同で家族旅行に出かけることになりました。
林家の4人、森家の3人、合計7人が、一緒に山に登ります。
このとき、林家の中の出来事(健一が大樹に山道を教える)と、森家の中の出来事(直子が葉月の手を引く)は、同時に、独立に起きています。
数学的には、これを 「積 $\text{林家} \times \text{森家}$」 と呼びます。
「2つの圏の積」は、両方の圏のメンバーを同時に持つ、より大きな圏。
両方の家族の関係を、同時に追跡できる構造 です。
身近な例を挙げると、例えば以下の例があります。
-
合同イベント(家族旅行、合同誕生日会、近所のお祭り)
-
共有の話題(同じテレビ番組を、複数の家族が、それぞれ別の家で同時に見る)
-
同時並行の生活(朝、林家のさくらが学校へ向かう間に、森家の葉月も学校へ向かう)
複数の家族が「並行して動いている」状態を、数学的に扱う道具。それが、積 です。
余積(よせき、coproduct): 「2つの家族を、別々のままで、ひとつのまとまりとして扱う」
積が「両方を同時に」だとすれば、余積は「両方をそのまま並べて」です。
例えば、ご近所4家族の連絡網。
林家のお父さん、森家のお母さん、川島家のおばあさん、佐々木家のユウキさん
── 4人それぞれが連絡先リストに並んでいます。
各家族の中身は、それぞれ独立して います。
けれども、「ご近所」という ひとつのまとまりとして、ひとまとめに 扱われます。
これが、余積 $\text{林家} + \text{森家} + \text{川島家} + \text{佐々木家}$ の構造です。
街全体の連絡網、地域の防災ネットワーク、町内会の名簿
── すべて、余積の構造を持っています。
なぜ、積と余積という、2つの概念が必要なのか
ここで、ひとつ疑問を抱かれるかもしれません。
「家族を組み合わせる」だけなら、概念は1つで足りそうなのに、なぜ積と余積という、2つが必要なのでしょうか。
その理由は、一言で 「組み合わせる」 と言っても、まったく違う2通りのまとめ方があるからです。
そして、その2通りは、向き合っている問いがそもそも違う のです。
積が答えるのは、「両方について、同時に言えることは何か」という問いです。
林家と森家が合同で山に登るとき、ある瞬間を切り取ると、「林家のさくらは尾根にいて、同時に、森家の葉月は沢にいる」というように、両家の状態を、ワンセットで指し示すことができます。
積 の世界の住人は、いつも、「(林家側の誰か、森家側の誰か)」という、2つで1組のペアです。
だから 積 では、片方を動かしても、もう片方は独立に追える。
「両方を同時に持つ」ための道具、それが 積 です。
身近に言えば、カレンダーの1つのマスを思い浮かべてください。
「日曜の朝9時」というマスには、「林家は朝ごはん」「森家は散歩」と、両家の予定が同時に書き込まれています。
1つの時間を指せば、両方の様子が同時に分かる。
これが積の感覚 です。
さて。今度は、余積 を見てみましょう。
余積が答えるのは、「どちらか一方を、選んで取り出すには」という問いです。
町内会の名簿を思い浮かべてください。
そこには林家のページと森家のページが、混ざらずに、別々のまま、一冊に綴じられています。
名簿をめくる人は、ある瞬間には「林家のページか、森家のページか、どちらか一方」を見ています。
両家が溶け合うことはなく、それぞれが自分のまま、ただ並んで共存している。
「どちらか一方を選び取る」ための道具、それが 余積 です。
この違いを、ひとことで言うと、こうなります。
-
積:
「林家」と「森家」を、かけ合わせて、両方を同時に持つ。
住人は (林家の誰か, 森家の誰か) というペア。
-
余積:
「林家」か「森家」を、横に並べて、どちらか一方を選び取れるようにする。
住人は 林家の誰か または 森家の誰か。
「と(同時に)」と「か(どちらか)」。
たったこの違いが、積と余積という、別々の概念を必要とさせます。
日常では何気なく混ぜて使っている「組み合わせる」という言葉が、じつはまったく逆向きの2つの操作を含んでいた。
それを、はっきり2つに分けて捉える。
これが、圏論の見通しのよさです。
イメージを具体的につかんでいただくために、もう1つ例を挙げます。
朝ごはんの献立の例です。
朝ごはんで、「ごはん と みそ汁」。これは両方出てきます。
お盆の上に、ごはんもみそ汁も、2つそろって乗っている。
1つでも欠けたら「両方」になりません。これが積です。
さて。今度は、余積 を取り上げます。
「ごはん か パン」。これは、どちらか一方 です。
今日はごはん、明日はパン。
両方同時に主食にはしない。出てくるのは、そのつど1つだけ。これが余積です。
ここで、いちばん大事な感覚を1つだけ。
積(と) は、出てくるものが増える方向です。
赤 と 青で2つ、ごはんとみそ汁で 2品。両方 をいただく。
余積(か) は、出てくるものが 1つに絞られる方向です。
赤 か 青で1つ、ごはんかパンで1品。 どちらか に決まる。
「と=両方抱える=増える」
「か=どちらかに絞る=1つ」。
この対比 が腹に落ちれば、積 と 余積 は、もう半分わかったようなものです。
じつは、この対比の感覚は、そのまま、もっと専門的な言葉につながっています。
いまは、「へえ、そういう名前がつくんだ」と眺めるだけで構いません。
積 のほうで出てきた「(林家の誰か, 森家の誰か) という、2つで1組のペア」
── これは数学では、順序対(じゅんじょつい) と呼ばれます。
積の世界の住人 は、つねにこの 順序対の形 をしています。
余積 のほうで出てきた「林家の誰か、または、森家の誰かという、どちらか一方」
── これは数学では、直和(ちょくわ)の片側 と呼ばれます。
余積の世界の住人 は、つねに 「どちらの出身か」という札を持った、片側の住人 です。
そして、いちばん面白いのはここから。この積と余積は、じつは互いに鏡のように対応しているのです。
専門的には、直積と直和、さらに一般には**極限(きょくげん)と余極限(よきょくげん)* *と呼ばれる、互いに対になった概念 に育っていきます。
そして、その 「対になっている」という関係そのもの が、第8章で登場する 随伴(ずいはん) という、現代数学でいちばん大切と言われる考え方の、ひとつの姿 なのです。
ここで挙げた言葉 ── 順序対、直和、極限と余極限、随伴 ── は、いまは覚えなくて大丈夫です。
**この記事を読み進めるうちに、ひとつずつ、ご近所の風景の中で紐解いていきます。
いまは、「積と余積という、何気ない2つのまとめ方の奥に、現代数学の背骨が通っている」
── そのことだけ、心の隅に置いておいてください。
「同時に持つ」と「選び取る」は、世界の裏と表だったのです。
先ほどお伝えさせていただいたことを、もう一度繰り返させていただきます。
積 と 余積 は、双子のような概念 です。
- 積:「同時並行的な視点」 (両方を、同時に追う)
- 余積:「並列共存的な視点」 (両方を、別々のまま並べる)
家族関係でも、ビジネス関係でも、データベース設計でも、プログラミングでも
── この2つの構造は、至るところで現れます。
積 と 余積 を、1枚の図で見くらべておきましょう。
積は「両方を、同時に追いかける」、余積は「両方を、別々のまま並べる」。双子のような2つの見方です。
旅行のように「いっしょに動く」のが、積。
連絡網のように「別々のまま、ひとまとめにする」のが、余積 です。
第7章 ── 「もし〜だったら」の箱:モナド
はじめに、ひとつだけ正直に。 この章で扱う「もし〜だったら」という話は、厳密にはモナドそのものの定義ではなく、モナドが扱う『世界』のほうの直感です。
とくに、
List(複数の可能性)やMaybe(あるか・ないか)に近い感覚です。モナドの本体 は、この記事の末尾「専門書に進む方へ」で、きちんと定義に触れます。
ここでは、その手前にある「気分」を、つかんでください。
ある日、森家の葉月ちゃん(7歳)が、林家のさくらお姉ちゃんに、不思議な質問をしました。
「さくらお姉ちゃん、もし、葉月のお母さんが、3人いたら、どうなるの?」
さくらは、ちょっと考えてから、答えました。
「3人もいたら、葉月ちゃんは、誰の言うことを聞けばいいか、わからなくなっちゃうかも。でも、それぞれのお母さんが、それぞれ違うことを教えてくれて、葉月ちゃんはもっと豊かに育つかもしれない」
これは、子供らしい無邪気な質問ですが、実は、現代のプログラミングで大活躍する概念 ──「モナド(monad)」── が扱う世界の入口に立っています。
モナドは、「箱」と、それを扱う2つの操作
モナドは、ひとことで言えば、「ものを『箱』に入れる仕組み」と、その箱を扱う2つの約束から成ります。
ここで 「箱」 というのは、たとえば、「可能性」「不確実さ」「複数の選択肢」 といった、中身をくるむ何かのこと です。
正確に言うと、モナドの正体 は、次の 3点セット です。
数学者が定義するときも、この3つを挙げます。
-
1つ目。箱に入れる仕組み(箱そのもの)。 ふつうの値を、ある種の「箱」に入れて扱えるようにする。たとえば「葉月ちゃん」を「もしかしたら3人のお母さんがいる世界の、葉月ちゃん」という箱に入れる。
-
2つ目。素のものを、そのまま箱に入れる操作(unit と呼ばれます)。 ただ値を、いちばん素直に、ひと包みするだけの操作。「ふつうの葉月ちゃん」を「箱に入っただけの葉月ちゃん(まだ何も足していない)」にする。
- 3つ目。二重の箱を、一重に均す操作(flatten。join とも呼ばれます)。 箱の中に、さらに箱が入っている状態を、ぺたんと1つの箱に平らにする。
この3つ目が、モナドの心臓部です。葉月ちゃんの質問は、まさにここを突いています。
「二重の箱を、一重に均す」とは
葉月ちゃんの空想を、続けてみましょう。
「もし、お母さんが3人いる世界の葉月ちゃんが、さらに、お父さんが2人いる世界にも住んでいたとしたら?」
これは、箱の中に箱がある、二重の包みです。
けれども、最終的には「お母さんが3人、お父さんが2人いる世界の、葉月ちゃん」という、ひと包みの可能性に、平らに均せます。
この「二重を一重に均す」操作が、モナドの本質です。
プログラミングの言葉では flatten(平坦化)や join と呼びます。
身近な例で言えば、こうです。
買い物リストが何枚もあって、それぞれにいくつか品物が書いてある。
これを「全部まとめた、1枚のリスト」にする
── これが、まさに「箱の中の箱を、ひとつに均す」操作です。
プログラミングの List(リスト)モナドは、文字どおりこれをやっています。
2つの「お約束」── ここが、数学的に効くところ
この「箱・unit・flatten」がモナドとして正しく働くためには、2つのお約束(法則)を満たす必要 があります。
難しくありません。どちらも、「当たり前に、そうあってほしい」性質です。
-
お約束1:
均す順番は、結果を変えない(結合律)。 三重の箱を均すとき、「外側2つを先に均してから」でも、「内側2つを先に均してから」でも、最後にできる一重の箱は、同じになる。リストで言えば、入れ子のリストをどこから連結しても、できあがる1本のリストは同じ、ということです。
-
お約束2:
いちど包んでから均すと、元に戻る(単位律)。
すでに箱に入っているものに、unit をもう一度使うと、箱が二重になります
(もとの箱の上から、もう1枚かぶせるだけだからです)。
この二重を、flatten で均してみます。すると、あとからかぶせた1枚がちょうど取れて、もとの箱に、そっくり戻る。
これは、当たり前であってほしい性質です。
unit は「ただ箱を1枚かぶせるだけ(中身には何も足さない)」操作なので、箱をかぶせた後に、fllatenで、2重になった箱を1重の箱に均せば、箱は1つという最初の状況に戻る。
この約束は、unit がほんとうに「ただ包むだけ」の、おとなしい操作であることを保証しています。
これは、当たり前に成立していてほしい性質です。
「箱を2つ入れ子に重ねて、二重に包んだだけ」 ならば、flatten で一重に均したとき、もとの「箱が一重だった状態」に戻ってくれないと困ります。
unit が、ほんとうに「ただ包むだけ(よけいなことをしない)」操作であることを、この約束が保証しているのです。
「お約束1」と「お約束2」の 2つの約束事 を満たすとき、その「箱」は、晴れてモナドと呼べます。
逆に言えば、モナドとは「箱と、unit と、flatten(均す操作)があって、上の2つのお約束を守るもの」
── ただ、それだけです。
モナドの実用:プログラミングでの大活躍
モナドは、現代のプログラミングで、極めて広く使われています。どれも「値を、何らかの『箱』で包む」仕組みです。
-
Maybe(Haskell)・Option(Scala)・Optional(Swift): 「値があるかもしれないし、ないかもしれない」を包む箱。
-
List: 「複数の値の可能性」を包む箱。入れ子のリストを均す(連結する)のが、この箱の flatten です。
-
Result(Rust)・Either: 「成功か、失敗か」を包む箱。
-
Promise/Future(JavaScript ほか): 「いつか結果が来る」を包む箱。
これらが「同じ仲間(モナド)」だと分かるのは、すべてが「箱・unit・flatten」という、まったく同じ骨格を持っているからです。見た目はバラバラでも、骨格は1つ。これこそ、圏論の見方です。
葉月ちゃんの「もしお母さんが3人いたら」── その無邪気な空想の中の「可能性を重ねて、また1つに均す」という感覚が、現代のプログラミングの中核に、まっすぐ繋がっている。
これが、圏論の面白さです。
モナドの心臓部、「二重の箱を、一重に均す(flatten)」を、図にしておきましょう。
List で言えば、flatten は「リストのリストを1本に連結する」操作そのもの。Maybe なら「入れ子の Maybe をひと包みに均す」操作です。
第8章 ── 随伴: 2つの家族をつなぐ「最も無駄のない橋」
第6章までの道具(対象・射・関手・自然変換)に、もう1つだけ、現代数学でいちばん大切と言われる概念を、そっと添えておきます。
随伴(adjunction) です。
正直に最初に言っておきます。
随伴 は、この記事に出てくる中で、いちばん抽象的です。
ここは「雰囲気だけ」で構いません。
けれども、その雰囲気が、実はとても美しい のです。
まず、よくある誤解を、1つ消しておく
随伴 を、「2つの家族が、おたがいをぴったり逆向きに翻訳しあう関係」だと思うと、実はずれます。
この関係が成立するのは、「完全に対応する(専門用語で、圏同値)」という、もっと強い関係の場合であり、随伴では、この関係は成立しないからです。
ただし、ここは正確に言い添えておきます。
厳密には、随伴でも、たまたま圏同値になっている場合(随伴のうち、特に強いもの)はあります。
あくまで、「随伴だからといって、いつも圏同値とは限らない」という意味で、先ほど「成立しない」と記載させていただいたのです。
さて、随伴は、もっと控えめで、もっと現実的な関係です。
ひとことで言えば、「一方の家族での『いちばん素直なやり方』が、もう一方の家族での答えと、ぴったり過不足なく噛み合う」という関係です。
いまはピンとこなくて大丈夫。
この『いちばん素直』『ぴったり噛み合う』が何を指すのかを、これから順に見ていきます。
「自由に作る」と「忘れて素材に戻す」── いちばん素直な例
随伴には、数学者が必ず最初に挙げる、定番の例があります。
「自由に組み立てる」操作と、「もとの素材に戻す」操作の、ペアです。
森家の葉月ちゃんが、積み木で遊んでいるとしましょう。
-
操作 $F$(自由に組み立てる):
葉月ちゃんに、積み木のバラ(素材)をひと山わたします。すると葉月ちゃんは、それを使って作品を組み立てます。ここでの $F$ は、「わたされた積み木だけを使って、すなおに組み立てる」操作です。よけいなパーツを足したりはしません。$バラの積み木 → 組み立てた作品$、という向き です。
-
操作 $G$(素材だけを見る):
反対に、すでに組み上がった作品を見て、「これは、どんな積み木でできているか」という、使われているパーツの顔ぶれだけを取り出します。どう組み立てたか(積み方や形)は気にせず、材料の集まりだけを見る。だから「組み立て方を忘れて、材料だけを見る」操作と呼びます。$作品 → 使われている積み木、という向き$ です。
ここで大事なのは、$G$ は作品をバラバラに分解するのではないということ。あくまで「組み立て方を見ないことにして、土台の素材だけに目を向ける」操作です。だからこそ、$F$ と $G$ は、おたがいの逆ではありません。
ここで大事なのは、$G$ は作品をバラバラに分解するのではないということ。
あくまで「組み立て方を見ないことにして、使われている材料だけに目を向ける」操作です。
だからこそ、$F$ と $G$ は、互いに逆の関係にあるのではありません。
この2つは、おたがいの逆ではありません。
自由に組み立ててから材料に戻すと、使った積み木の顔ぶれは戻ってきますが、「どう組み立てたか」という情報は、材料だけ見た時点で捨てられ、消えてしまいます。
だから、行って来ても、ぴったり元どおりにはならないのです。
くどくなりますが、もう少し冗長に言い表すと、以下になります。
何が起きているかを、積み木の言葉で正確に言うとこうです。
$F$ で「バラの積み木」から「作品」を組み立て、その作品を $G$ で「使われている材料」に戻すと、確かにバラの積み木の顔ぶれには戻ります。
でも、いったん作った「作品(組み立て方・形)」の情報は、$G$ で材料だけ見た時点で、捨てられて消えています。
だから、「$材料 → 作品 → 材料$」と往復すると、材料そのものには戻ってきますが、途中で生まれた「組み立て方」という情報が失われる。往復は、行って来てプラスマイナスゼロにはならない。これが「逆ではない」情況です。
それでも、両者のあいだには、とても整った関係があります。
随伴の心臓部:「どちらの世界で考えても、答えは一対一で対応する」
随伴がいちばん面白いのは、ここからです。
葉月ちゃんは、手元に「素材の集まり $A$」を持っています。そして、目指したい「目標の作品 $B$」があるとします。$A$ は持っている積み木、$B$ は作りたい完成形、と思ってください。
このとき登場するものを、先に4つ、整理しておきます。
- $A$:手元の素材(葉月ちゃんが持っている積み木)
- $F(A)$:その素材 $A$ から、葉月ちゃんが自由に組み立てた作品
- $B$:目標の作品(葉月ちゃんが目指している完成形)
- $G(B)$:その目標 $B$ を、材料だけ見て素材に戻したもの
ここで大事な前提が、ひとつあります。
葉月ちゃんが自由に作った作品 $F(A)$ と、目標の作品 $B$ は、別物です。
だからこそ、「葉月ちゃんが作った $F(A)$ を、目標の $B$ に、どう合わせるか・どう近づけるか」という話が生まれます。
もし最初から同じなら、合わせる必要などないのですから。
この4つを使うと、「手元の素材 $A$ を、目標 $B$ にどう結びつけるか」には、道筋が2通り あります。
-
作品の世界で考える道:
葉月ちゃんが素材 $A$ から組み立てた作品 $F(A)$ を、目標の作品 $B$ に合わせていく道です。見比べていのは「作品どうし」、つまり $F(A)$ と $B$ です。
-
素材の世界で考える道:
手元の素材 $A$ を、目標を素材に戻した $G(B)$ に合わせていく道です。見くらべているのは「素材どうし」、つまり $A$ と $G(B)$ です。
随伴とは、この2つの道のあいだに、ぴったりした一対一の対応がある、という関係です。
作品の世界 で、組み立てた作品 $F(A)$ を目標 $B$ へと対応づける方法を一つ定めれば、それに呼応して、素材の世界 で素材 $A$ を $G(B)$ へと対応づける方法が、ただ一つに定まります。
逆もまた然り で、素材の世界での対応づけ を一つ定めれば、作品の世界での対応づけが、ただ一つに決まります。
つまり、いずれの世界を出発点に選んでも、もう一方の世界における対応が、過不足なく一意に定まる。
これが、随伴の神髄です。
これを、橋にたとえてみましょう。
「作品の世界」と「素材の世界」という、2つの岸 があります。
随伴 とは、その2つの岸 のあいだに、どちらの岸から渡っても、向こう岸のただ1点に行き着く橋が架かっている、という情況です。
渡り方に迷いがなく、いつでも一対一。これが、随伴の心臓部です。
記号で書くと、こうなります(読み飛ばして構いません)。
\text{Hom}(F(A),\, B) \;\cong\; \text{Hom}(A,\, G(B))
左辺が「作品どうし($F(A)$ と $B$)の合わせ方の全体」、
右辺が「素材どうし($A$ と $G(B)$)の合わせ方の全体」
です。
この2つが、$A$ と $B$ をどう取り替えても破れない形で、いつも同じだけ・同じように対応している。
これが、随伴 $F \dashv G$(エフ・ダッシュ・ジー)の意味 です。
「自由に作る」操作 $F$ を左随伴、
「材料だけを見る」操作 $G$ を右随伴
と呼びます。
ずれることなく釣り合う。これが「最も無駄のない橋」という表現の意味です。
なぜ、随伴がそんなに大切なのか
随伴 は、数学のあちこちに、驚くほど広く顔を出します。
これを見抜いたのが、数学者ウィリアム・ロウヴェア(William Lawvere)でした。
彼は、数学の数多くの概念が、随伴という同じ形をしていることを明らかにしました。
実際、この記事でこれまで見てきた概念のいくつかも、随伴の例です。
-
「自由に組み立てる」と「素材だけを見る」。 この章で見た $F$ と $G$ のペアが、そのまま随伴の一例です。一般に、「構造を自由に付け足す」操作と、「その構造を忘れる」操作は、いつも随伴の関係になります。
- 「積」と「余積」。 第6章で見た、「両方を同時に持つ」(積)と「どちらか一方を選び取る」(余積)。この対も、根っこには随伴の関係が横たわっています。
ほかにも、数えあげればきりがありません。
数学の基本的な構成のほとんどが、「自由に作る側」と「忘れて戻す側」という、向きの違う1組の操作として、随伴の形に収まっていきます。
ところで、上に書いた文章は抽象的で、雲をつかむようなわかりづらさがあります。
本稿は、高校数学も大学数学も前提にしない記事ですが、ここだけ、随伴が姿を現す数学の各場面を、数学用語をそのまま、説明抜きに列挙します。
以下の数学用語がわからなくても、本稿をお読みいただく上で支障はありません。
ここでは、難しい数学用語で名づけられた複数の領域で、随伴関係が数学者によって見出されてきた、という事実を感じ取っていただければと思います。
-
自由と忘却。 自由群・自由モノイド・自由ベクトル空間などを作る「自由関手」と、構造を忘れる「忘却関手」。前者が左随伴、後者が右随伴になります。
-
積と余積、極限と余極限。 直積・直和、より一般の極限・余極限は、「対角関手」に対する右随伴・左随伴として特徴づけられます。
-
テンソル積と Hom。 加群のテンソル積 $(-) \otimes M$ と、Hom 関手 $\text{Hom}(M, -)$ が随伴の対をなします(テンソル・ホム随伴)。
-
論理の量化子。 述語論理の「すべての(全称量化 $\forall$)」と「ある(存在量化 $\exists$)」は、変数を代入する操作(代入関手)に対する右随伴・左随伴として現れます。これはロウヴェアが見出した、論理と圏論の深い接点 です。
-
離散と連結成分。 位相空間に対し、「離散空間を作る」操作と「連結成分をとる」操作が、忘却操作をはさんで随伴の関係に並びます。
-
幾何と代数の往復。 代数幾何で、空間から関数環をとる操作と、環から空間(スペクトル)を作る操作が、随伴(双対随伴)として対応します。
- 束論のガロア接続。 順序集合のあいだの「ガロア接続」は、随伴のもっとも素朴な姿です。方程式論のガロア理論も、その源流にあります。
これらに共通しているのは、どれも「向きの違う1組の操作が、過不足なく対応している」という、随伴の同じ骨格 です。
分野はばらばらでも、骨格は1つ。これこそ、圏論の見方です。
家族の中の小さな段取り、ご近所どうしの「ちょうどいい」助け合い。
その奥にある「いちばん無駄のない対応」という発想が、現代数学のもっとも深いところまで、まっすぐ通じている。
それだけ頭の隅に置いていただけましたら、この記事は皆様にとってお役立ていただけ事になると思います。
ところで、なぜ、随伴関係 は、これほど広く多くの領域に姿を現わすのでしょうか。
それは、随伴が、「ある操作にとって、いちばん無駄のない相棒は何か」という、ごく自然な問い に答えるものだからです。
何かを自由に作れば、それを忘れて戻す操作が、過不足なく対になって現れる。
この「過不足のない対」という発想が、数学のいたるところで、同じ形で働いている のです。
家族の中の小さな段取り、
ご近所どうしの「ちょうどいい」助け合い。
その奥にある「いちばん無駄のない対応」という発想が、現代数学のもっとも深いところまで、まっすぐ通じている。
それだけ頭の隅に置いていただければ、この章は十分です。
第9章 ── 米田の補題:「あなたは、あなたの関係の集まりで決まる」
この章の読み方。 ここで眺めるのは、米田の補題の厳密な数学的内容そのものではなく、その背後にある思想です。
「ものの本質は、それが結ぶ関係の全体に宿る」
── この見方を、日常の言葉で味わってみます。正確な定理の姿は、末尾「専門書に進む方へ」に置いておきます。
最後に、圏論の中で最も有名で、最も美しい定理 ──「米田の補題(Yoneda lemma)」── について、家族の言葉で語ってみましょう。
林家のさくら(14歳)を、ある日、ぼくたちは「さくらってどんな人?」と問います。
答えるとき、私たちはこう言うでしょう。
「さくらは、母にとっては大切な娘」
「さくらは、父にとっては優しい娘」
「さくらは、大樹にとっては愛らしい妹」
「さくらは、葉月ちゃんにとっては頼れるお姉さん」
「さくらは、川島家の信夫さんにとっては、明るい近所の子」
「さくらは、佐々木家のユウキさんにとっては、たまに挨拶を交わす子」
これらすべてを集めると、「さくら」という人物の輪郭が、浮かび上がってきます。
ここに、米田の補題の核心があります。
米田の補題:「対象は、それに向かう関係(射)の集まりだけで、見分けられるところまで決まる」
つまり、
「さくらに向けられた、街じゅうの人たちの『さくらとの関わり方』── その集まりだけで、さくらという人を、ほかの誰とも見分けられる」
ということ。
これは、何でしょうか?
ある人を理解しようとするとき、私たちは、その人の「内側」を覗き込むことはできません。
心の中、感じていること、考えていること
── これらは、外から直接見えない。*
けれども、その人と、世界のさまざまな人・物との関わり方は、外から観察することができます。
母親にどう接しているか、
友達にどう話しかけるか、
本に何を求めているか、
料理にどう向き合うか
── これら関係の集まりを見ることで、その人を理解できる。
こういうことです。
そして、米田の補題が言っているのは、
「その人らしさは、その人に向けられた関係の集まりの中に、すっかり映し出されている」
ということです。
「内なる自己」と「外なる関係」の二項対立ではなく、「関係の集まりこそが、その対象の本質である」 という、深い世界観。
米田の補題の日常的な意味
- 林家のさくらを理解するには、彼女がほかの誰とどう関わっているかを見ればよい。
- 森家を理解するには、その家族と他の家族との関わり方を見ればよい。
- 街を理解するには、街の中の関係の集まりを見ればよい。
これは、**「孤立した『そのもの』ではなく、関係の集まりこそが世界の本質である」**という、現代数学・現代物理学・現代哲学に共通する視座です。
仏教の「縁起」(すべては縁によって生じる)とも、深く響きあう。
米田の補題の数学的な意味
数学的には、米田の補題は、この定理に名を残した日本人数学者 米田信夫(よねだ のぶお、1930-1996) に由来します。
圏論そのものを生み出したのはアイレンベルグとマックレーンですが、この美しい定理には、米田の名がついています。
数学的な厳密な記述では:
「ある対象 $A$ は、$A$ に向かう射の集まり(他のすべての対象から $A$ への矢印)によって、同型を除いて決まる」
ここで「同型を除いて」というのは、「ぴったり同じ、とまでは言わないけれど、本質的に見分けがつかないところまで」という意味です。
これにより、すべての数学的な対象は、「外からの関係」の集まりだけで完全に表現できることが、示されました。
これは、圏論の中で最も基本的で、最も深い結果です。
代数幾何学、表現論、ホモトピー論、トポス論 ── すべての分野で、米田の補題が骨格として効いています。
そして、Étale Cohomology(エタール・コホモロジー)── 本記事執筆者のペンネームの元になっている、グロタンディーク(Alexander Grothendieck)が構築した数学の中核 ── も、米田の補題の精神 の上に立っています。
米田の補題が、現代数学をどう変えたか
米田の補題は、ただの技術的な道具ではありませんでした。
それは、現代数学の「ものの見方」そのものを、塗り替えていきました。
とりわけ大きな転換を起こしたのが、代数幾何学という分野です。
歴史を、駆け足でたどってみましょう。
**転換の主役は、アレクサンドル・グロタンディーク(Alexander Grothendieck)でした。
** 20世紀後半、彼は代数幾何学の土台を、根本から作り直します。
その中心にあったのが、「スキーム」という、図形を表す新しい対象でした。
ここで、米田の補題が決定的な役割を果たします。
米田の補題は、「対象は、それへ向かう射の集まりによって、同型を除いて完全に決まる」と保証する定理でした。
つまり、図形そのものを直接いじらなくても、「その図形へ向かう射の集まり」さえ分かれば、図形を完全に取り戻せる。
グロタンディークは、この保証を逆手に取りました。
彼は、スキームを「点の関手(functor of points)」、すなわち「その図形へ向かう射の集まり」として定義したのです。
ふつうなら、これは乱暴な発想に見えます。
「図形を、関係の集まりにすり替えてしまって、本当に元の図形の情報は失われないのか」と。
その懸念を払しょくさせたのが、米田の補題でした。
「射の集まりから、図形は同型を除いて一意に復元できる」
── この保証があるからこそ、グロタンディークは安心して、図形を関手として扱う土台を築けた のです。
米田の補題は、いわば、この新しい代数幾何全体の安全装置でした。
この見方には、実利もありました。
スキームを「点の関手」として扱うと、直接、定義しにくかった構成(たとえば、図形どうしの積 )が、ずっと素直に書けるようになった のです。
素イデアル や スペクトル空間 といった、重い道具立ても要らなくなったのです。
1973年、グロタンディークは、さらに踏み込みます。
バッファロー大学での有名な講演で、彼は、「自分が以前に与えたスキームの定義を捨て、関手による見方 に置きかえるべきだ」とまで主張しました。
図形を「関係の集まり」として見る発想を、分野の中心そのものに据えたのです。
その土台の正当性を、底で支え続けていたのが、米田の補題でした。
この見方は、モジュライ空間という、現代数学の最前線を切り拓きました。
「ある性質をもつ図形を、すべて集めると、それ自体がひとつの図形になるか」
── この問いは、まず「そういう図形を集める関手」を書き下し、「その関手が、図形で表現できるか(representable か)」を問う、という形に翻訳されます。
そして、関手が表現できたとき、その図形がただ一つに定まることを保証するのも、これまた、米田の補題 でした。
グロタンディークが導入した ヒルベルト関手(Hilbert functor) や **ピカール関手(Picard functor)**は、まさにこの方法で、新しい図形を生み出しました。
米田の補題は、ここでも「表現する図形は、あったとしてもただ一つに定まる」という一意性を支える、骨格として働いていたのです。
代数幾何 だけではありません。
表現論では、「対象を、その表現の全体で捉える」発想 として、
ホモトピー論では、 空間を関手として扱う流儀 として、
トポス論では、「層」という、関手の精密化を通じて、
米田の補題の思想 が、それぞれの分野の背骨に組み込まれていきました。
どの場面でも、米田の補題は同じ仕事をしています。
**「関係の集まりさえ押さえれば、もとの対象は取り逃がさない」**という、その一点を保証し続けている のです。
共通しているのは、たったひとつの転換です。「そのものを、直接つかもうとするのをやめ、それが世界と結ぶ関係の全体を通して捉える」。
さくらを、彼女の関わりの集まりで理解したのと、まったく同じ見方が、現代数学のもっとも深いところで、世界を動かしてきたのです。
そして、その見方が成り立つことを、根の部分で保証しているのが、米田の補題なのです。
米田の見方を、図にしておきましょう。さくら本人を、直接見つめる(まなざす)のではなく、さくらに向けられた、まわりの人たちの「関わり方」の集まりで、さくらを描き出します。
さくらに向かう矢印の集まり。それだけで、さくらという人が、ほかの誰とも見分けられる。これが米田の補題の眺めです。
補章 ── なぜ今、圏論なのか
ここまで読まれて、こう思われた方も多いかもしれません。
「家族の話として面白いのは分かった。でも、これは、ただの数学の遊びなのでは?」と。
そうではありません。
圏論は、いま、思いがけず広い場所で「実用の言葉」になりつつあります。
理由は、ひとことで言えば、圏論が 「構造の翻訳」を扱う共通言語 だからです。
この記事で見てきた「関手 = 構造を保つ翻訳」という発想は、分野をまたいで、同じ形で現れます。
-
関数型プログラミング。 Haskell・Scala・Rust などでは、本記事のモナドが、そのまま実用的な道具になります。 「箱で包んで、均す」という発想で、エラー処理・非同期・状態を、見通しよく書きます。
- AI・機械学習。 ニューラルネットの学習(誤差逆伝播)を、「部品から組み立てる」という圏論の言葉で捉え直す研究が進んでいます(本シリーズの「機械学習×圏論」の記事で扱いました)。
-
データベースと知識表現。 データの構造を圏として表し、別の構造へ「関手で翻訳する」という発想が、データ統合の理論に使われています。
-
物理・量子計算。 量子力学のプロセスを、圏論の「双方向の部品」として描く流儀があり、量子計算や、自然言語の意味の計算にまで応用されています。
- 論理学。 「1つのトポスを選ぶと、その上で成り立つ論理が決まる」という、論理と幾何の深い対応が、圏論の言葉で語られます。(本連載シリーズの以下の記事で取り上げさせていただいております)
圏論が、いまどれだけ広い場所に効いているか。1枚の地図にしておきましょう。
中心にあるのは、本記事で見てきた「構造を保つ翻訳(関手)」という、たった1つの発想です。
どれも、「ばらばらに見えるものを、構造を保ったまま、別の世界へ翻訳する」という、同じ営みです。
家族を「関係の集まり」として見た、あの視点が、こんなにも遠くまで届いています。
共通しているのは、どれも「ばらばらに見える対象を、構造を保ったまま、別の世界へ翻訳する」という営みだということです。
家族を「関係の集まり」として見る視点は、人間社会だけの話ではありません。
ソフトウェアにも、科学理論そのものにも、同じ形で効いてくる。だからこそ、いま、これだけ多くの分野が、圏論という共通言語に注目しているのです。
結章 ── 街を歩きながら見える数学
土曜日の朝に始まった、街の散歩。
私たちは、4つの家族 ──林家、森家、川島家、佐々木家── を訪ねました。
それぞれの家族の中の関係を見て、ご近所同士の関係を見て、家族の合体・分裂を見て、可能性の世界を考え、最も自然な対応を探し、そして最後に、「私たちは、関係の集まりとして存在している」という、深い洞察に至りました。
これら全てが、圏論という、現代数学の一つの中核分野の中で、厳密に展開されている世界です。
圏論は、抽象数学の最深部にある分野です。
代数幾何学、ホモトピー論、表現論、トポス論、量子場の理論、関数型プログラミング
── 現代数学・計算機科学・物理学の最前線で、圏論が骨格として効いています。
しかし、その本質的な構造は、私たちの日常生活の中にも、すべて含まれています。
- 対象と射 = 家族のメンバーと、その間の関係
- 圏 = 一つの家族
- 関手 = 別の家族への構造の翻訳
- 自然変換 = 翻訳のしかたの間の、滑らかな移行
- 積と余積 = 家族の合体と並列
- モナド = 「もし〜だったら」の箱(包んで、均す)
- 随伴 = 「自由に作る」と「素材に戻す」をつなぐ、最も無駄のない橋
- 米田の補題 = 「私は、私の関係の集まりで決まる」
本記事は、圏論の入門記事です。本記事を読んだ後、もし読者の皆様が「もっと深く知りたい」と感じられたら、こちらの専門書や記事に進んでみてください。
- Saunders Mac Lane, “Categories for the Working Mathematician”(数学者向け定番教科書)
- Emily Riehl, “Category Theory in Context”(オンライン無料版あり)
- Bartosz Milewski, “Category Theory for Programmers”(プログラマ向け)
- Étale Cohomology「論理はひとつではない」「トポスと論理の関係」「論理公理系の産業応用 全地図」(本記事と関連する圏論的視座のシリーズ記事)
次に読む ── 「圏論×現実」シリーズ
本記事は、圏論の世界の 入口 として書きました。
同じ「部品から組み立てる」という圏論の発想を、より具体的な題材で展開した、姉妹記事があります。
日常から一歩進んで、「圏論が、現実の何に効くのか」を見たい方は、こちらへ。
- 圏論はゲーム理論を書き換える ── Compositional Game Theory 入門
- 圏論で OR を組み立て直す ── Compositional Optimization 入門
- 圏論で学習を組み立て直す ── Compositional Learning 入門(Backprop as Functor)
この記事(家族と街の風景)が「圏論とは何か」という素朴な疑問をきっかけにした圏論への入口論だとすれば、上記の3部作は、「圏論を、ゲーム・最適化・機械学習という現実の問題に、どう使うか」を紹介した物語になります。
本記事を読んでくださった皆様、本当にありがとうございました。
土曜日の朝の散歩から、現代数学の最深部の風景まで
── 一本の道で、本当につながっていることを、お伝えできたなら、嬉しく思います。
そして、ご近所散歩の中、家族の食卓の中、子供との会話の中、すべての日常に、数学的な構造の美しさが、静かに息づいていることを、知っていただけましたら、この記事がわずかなりとも皆様にとって役立つものになれたのだと思います。
街の風景は、ただの風景ではない。それは、圏と関手と自然変換の織りなす、生きた数学の風景です。
専門書に進む方へ ── 本記事の比喩の限界と、その先の風景
本記事の比喩で圏論の世界に興味を持たれた方は、ぜひ専門書へと進んでください。
ここでは、本記事の比喩が、専門書の厳密な定義と、どこで・どのようにずれているかを、誠実に整理しておきます。
これは、読者の皆様が次に専門書を開かれたとき、**「あ、あの家族の話は、本当はこういう数学的構造のことだったのか」**と、橋を渡れるようにするための、地図です。
「本記事で○○と喩えた部分は、専門書では●●という言葉で書いてあります」
── そんな対応表として、お読みください。
第1〜2章「対象・射・合成」について
本記事の比喩:
家族のメンバーを対象、その間の関係を射として扱い、「$ 父 → 母 → 兄$」という伝言ゲーム的な連鎖を合成と説明しました。
専門書での厳密な定義:
圏 $\mathbf{C}$ は、対象の類、各対象の対 $(A, B)$ に対して射の集合 $ ext{Hom}(A, B)$、そして合成演算 $\circ: ext{Hom}(B, C) imes ext{Hom}(A, B) o ext{Hom}(A, C)$ から成り、以下の公理を満たします:
- 結合律:$(h \circ g) \circ f = h \circ (g \circ f)$
- 恒等律:各対象 $A$ に対して $ ext{id}_A: A o A$ が存在し、$f \circ ext{id}_A = f = ext{id}_B \circ f$
ずれている部分:
現実の家族の関係を射として扱うとき、「この経路と、あの経路は、同じ関係になる」という同値性が、数学的にちゃんと定義されません。
例えば「$父 → 母 → 兄$ 」と「$父 → 兄$ 」(直接)が、合成として一致するかは、家族の比喩では曖昧です。
圏論の公理では、合成は一意に定まることが要求されます。
家族関係を圏として扱うには、本当は「何を同じ射とみなすか」を、明示的に定義する必要があります。
第3章「圏」について
本記事の比喩:
「林家はひとつの圏である」と語りました。
専門書での厳密な定義:
圏には、サイズの問題(集合論的な階層の問題)があります。
小さい圏(small category、対象も射も集合)、
大きい圏(対象が真クラス)、
局所小圏(各 Hom が集合)
などの区別が、数学的には重要です。
ずれている部分:
家族の比喩では、こうしたサイズの問題が触れられません。
専門書を開くと、ZFC集合論やグロタンディーク宇宙の話が出てきて驚くかもしれませんが、それは家族の比喩の射程の範囲外です。
第4章「関手」について
本記事の比喩:
「さくらが母から受けた接し方を、葉月ちゃんに対して再現する」を、林家から森家への関手の例としました。
専門書での厳密な定義:関手 $F: \mathbf{C} o \mathbf{D}$ は、
- 対象の対応:$\mathbf{C}$ の各対象 $A$ に、$\mathbf{D}$ の対象 $F(A)$ を割り当てる
- 射の対応:$\mathbf{C}$ の各射 $f: A o B$ に、$\mathbf{D}$ の射 $F(f): F(A) o F(B)$ を割り当てる
- 関手の法則: $$F(\mathrm{id}A) = \mathrm{id}{F(A)} \quad \text{かつ} \quad F(g \circ f) = F(g) \circ F(f)$$
ずれている部分:
「さくらの中に内面化された母のスタイル」が、「森家での葉月への接し方」になる過程は、関手というより、もっと複雑な構造に対応します。
例えばプロファンクター(profunctor、2つの圏の間の関係を表す)、
自然変換の集まり、
コエンドによる構成(coend)
などです。
家族・社会の中の「文化伝達」を圏論的に厳密に扱うには、単純な関手では足りません。
第5章「自然変換」について
本記事の比喩:
「さくらの担当から、大樹の担当への交代」を自然変換としました。
専門書での厳密な定義:2つの関手 $F, G: \mathbf{C} o \mathbf{D}$ の間の自然変換 $\eta: F \Rightarrow G$ は、
- 各対象 $A \in \mathbf{C}$ に対して、$\mathbf{D}$ の射 $\eta_A: F(A) o G(A)$ を割り当てる
- 自然性条件:任意の射 $f: A o B$ に対して、$\eta_B \circ F(f) = G(f) \circ \eta_A$
ずれている部分:
「担当の交代」が、この自然性条件(可換図式の成立)を満たすかは、現実の例では検証できません。専門書では、自然変換は可換図式が成立することが、本質的な要件です。
第6章「積と余積」について
本記事の比喩:「合同家族旅行」を積、「連絡網」を余積としました。
専門書での厳密な定義:積と余積は、普遍性(universal property)によって定義されます。
-
積 $A imes B$: 任意の対象 $X$ と射 $f: X o A$, $g: X o B$ に対して、ただ一つの射 $\langle f, g
angle: X o A imes B$ が存在し、適切な可換図式が成立する - 余積 $A + B$:任意の対象 $Y$ と射 $f: A o Y$, $g: B o Y$ に対して、ただ一つの射 $[f, g]: A + B o Y$ が存在する
ずれている部分:本記事では「普遍性」を表現していません。家族の比喩で「ただ一つの射が存在する」という最も本質的な要件を、捉えきれていません。
第7章「モナド」について
本記事の比喩:
「もし、お母さんが3人いたら」をモナドの例にしました。
専門書での厳密な定義:
モナドは、3つのデータと3つの法則から成る代数構造:
- 自己関手 $T: \mathbf{C} o \mathbf{C}$
- 単位(unit)$\eta: ext{id} \Rightarrow T$
- 乗法(multiplication)$\mu: T \circ T \Rightarrow T$
3つの法則:
- 結合律:$\mu \circ T\mu = \mu \circ \mu T$
- 左単位律:$\mu \circ T\eta = ext{id}$
- 右単位律:$\mu \circ \eta T = ext{id}$
ずれている部分:「もし〜だったら」という空想は、リストモナドや Maybe モナドの直感を捉えていますが、モナドそのものの定義ではありません。モナドは、もっと精密な代数構造です。
専門書では、モナドはモノイダル圏の中のモノイド対象として、より一般的に定義されます(自己関手圏 $[\mathbf{C}, \mathbf{C}]$ における関手合成 $\circ$ をモノイダル積とするモノイド対象)。
第8章「随伴」について
本記事の比喩:
「素材から自由に作る操作 $F$ と、飾りを忘れて素材に戻す操作 $G$ のあいだに、過不足のない一対一の対応がある(最も無駄のない橋)」を随伴と表現しました。
専門書での厳密な定義:
関手 $F: \mathbf{C} o \mathbf{D}$ と $G: \mathbf{D} o \mathbf{C}$ の間の随伴 $F \dashv G$ は、
自然な一対一対応(自然同型):
$$ ext{Hom}{\mathbf{D}}(F(A), B) \cong ext{Hom}{\mathbf{C}}(A, G(B))$$
両辺は、$A$ と $B$ について自然な同型でなければなりません。
ずれている部分:「ぴったり整合する」が何を意味するのか、本記事では数学的には自然性条件で厳密化されています。家族の比喩でこれを正確に表現するのは、極めて困難です。
随伴は、現代数学の最も中心的な概念の一つで、ガロア接続、自由対象と忘却、極限と余極限、テンソル積と Hom 関手など、ありとあらゆる場面に現れます。
第9章「米田の補題」について
本記事の比喩:
「さくらに向けられた、街じゅうの人たちの『さくらとの関わり方』の集まりだけで、さくらという人を、ほかの誰とも見分けられる」と語りました。
専門書での厳密な定義: 米田の補題は、関手圏 $[\mathbf{C}^{op}, \mathbf{Set}]$ における自然変換と元の対象の同型を主張する、極めて精密な定理:
任意の対象 $A \in \mathbf{C}$ と任意の関手 $F: \mathbf{C}^{op} o \mathbf{Set}$ に対して、
$$ ext{Nat}( ext{Hom}(-, A), F) \cong F(A)$$
これは$A$ について自然な、両関手間の同型です。系として:
$$ ext{Hom}(-, A) \cong ext{Hom}(-, B) \implies A \cong B$$
(これが「対象は、それと他のすべての対象との関係の集まりで決まる」の正確な内容です。)
ずれている部分:
本記事の哲学的な解釈は、米田の補題の精神を捉えていますが、その数学的内容は、より精密です。
米田の補題は、反変関手 $ ext{Hom}(-, A)$ と任意の関手 $F$ の自然変換について語っており、ここに自然性の本質があります。
そして、最も深い構造的な問題
実は、家族関係を圏として扱うこと自体に、構造的な限界があります。
問題1: 射の合成の同値性
家族の関係を「経路」として扱うとき、「どの経路と、どの経路を同じとみなすか」が、暗黙のうちに前提されています。圏の公理では、この同値性は最初から所与として扱われますが、現実の家族関係では、この同値性が曖昧です。
問題2: 射の集合性
数学的な圏では、ふつう「任意の2つの対象 $A, B$ について、$ ext{Hom}(A, B)$ は集合である」と要求します(局所小圏、locally small category)。家族の関係の集まりが集合として扱えるかは、定義しないと曖昧です。
問題3: より豊かな構造の必要性
家族は、単なる圏というより、
- 2-圏(2-category): 射の間の射を持つ(関係の変化を、関係として捉える)
- ダブル圏(double category): 縦と横の射を持つ(時間的変化と、関係的変化を、別々に扱う)
- プロファンクター(profunctor): 2つの圏の間の関係(家族間の関係を扱う)
- コアルゲブラ(coalgebra。余代数): 時間発展のあるシステム(家族が時間とともに変化する)
これらの構造を持つことが多く、単純な圏として捉えるのは、過度に単純化しています。
では、なぜ家族の比喩を使ったのか
ここまで読まれた方は、「こんなに『ずれ』があるのに、なぜ家族の比喩を使ったのか?」と思われるかもしれません。
私の答えは、こうです。
入門記事の役目は、『正確に伝える』ことではなく、『専門書を開く動機を作る』ことだから。です。
専門書をいきなり開くと、$ ext{Hom}(A, B)$、$\circ$、自然変換、可換図式
── これらの記号と概念が、洪水のように、一気に押し寄せてきます。
多くの読者は、最初の数ページで諦めてしまいます。
家族の比喩は、その心理的な敷居を下げる役目を持ちます。
「ああ、関手って、お隣の家族との関係性の翻訳のようなものか」と直感を持ったくださった読者の皆様の中には、その直感を手がかりに、専門書の厳密な定義に向き合う方々も出てこられるのではないでしょうか。
そして、専門書を開いたとき、本記事の「ずれ」に気づくことが、実は最高の学びの瞬間です。
「本記事ではモナドを『もし〜だったら』と説明していたが、専門書では自己関手と単位と乗法と3つの法則で定義されている。なるほど、本記事は、モナドの結合律と単位律の話を省いていたのか」
── この気づきが、読者の皆様の理解を、本質的に深めることになると思います。
専門書への橋:推奨ルート
本記事をきっかけに、圏論を本格的に学ばれたい方への、推奨ルートを記します。
第1歩(プログラマ向け、最も柔らかい入口):
- Bartosz Milewski, “Category Theory for Programmers” ── 無料公開のオンライン版あり。プログラミングの直感から圏論に入る。
第2歩(数学的な入門、英語:
- Emily Riehl, “Category Theory in Context” ── 無料公開のPDF版あり。数学的に厳密だが、入門としても読める。
- Tom Leinster, “Basic Category Theory” ── 無料公開のPDF版あり。最初の一冊として推奨。
第3歩(古典的な定番教科書):
- Saunders Mac Lane, “Categories for the Working Mathematician” ── 圏論の聖典。米田の補題、随伴、モナドの定義が、最も精密な形で記述されている。圏論を学ぶすべての人が、いつかは開く本。
第4歩(より深く、現代的な視点):
- Steve Awodey, “Category Theory” ── 論理学・型理論への接続を強調。
- Mac Lane & Moerdijk, “Sheaves in Geometry and Logic” ── トポス論の入門。Étale Cohomology の Qiita 記事「トポスと論理の関係」と直接繋がる。
日本語の専門書:
- 西郷甲矢人・能美十三「圏論の地平線」 ── 日本語で読める入門書として、近年高い評価を得ている。
- 谷村省吾「圏論による物理・情報・倫理学」 ── 圏論の応用範囲の広さを示す入門書。
最後に
本記事を読まれた読者の皆様、ここまでお付き合いいただき、本当にありがとうございました。
家族の比喩は、圏論の世界への最初の一歩です。
けれども、これは、本当に最初の一歩に過ぎません。
皆様が専門書の世界に進まれたとき、本記事の比喩が、皆様の中で生きた地図として、新しい記号と概念の世界へと、一歩、踏み出して下さることを願います。
この圏論シリーズの記事は、読者の皆様方を、本物の数学・本物の論理学・本物の知の世界へ、橋渡しすることを目的としています。
本記事の比喩で開いた扉の向こうに、何百年もの数学者たちが築いた、深く広い世界が広がっています。
その扉を、ぜひ、開けてみてください。
あとがき
本記事は、圏論を、家族・近隣関係という、もっとも日常的な構造を通じて、語る試みでした。
数学的な厳密性よりも、イメージのつかみやすさを優先しています。プロの数学者から見れば、本記事の比喩には、いくつもの「ずれ」や「簡略化」があります。
例えば、
- 家族の中の射は、本当に「合成可能」なのか? (現実の人間関係は、もっと複雑)
- 恒等射は、本当に「何もしない射」なのか? (現実の「自分との対話」は、深い変化を含む)
- 関手は、本当に「構造を保つ」のか? (現実の翻訳は、必ず何かを失う)
これらの「ずれ」は、本記事の比喩の限界です。
圏論を本当に理解するには、最終的には、数学的な厳密性に向き合う必要があります。
それでも、本記事の比喩が、読者の皆様の中に、「圏論への扉」を、ほんの少しでも開けたなら
── それで、本記事は、その役割を十分に果たしたことができたのかもしれません。
参考文献
- Mac Lane, S. (1971). Categories for the Working Mathematician. Springer.
- Riehl, E. (2017). Category Theory in Context. Dover.
- Milewski, B. (2019). Category Theory for Programmers.
- Awodey, S. (2010). Category Theory. Oxford University Press.
- Eilenberg, S., Mac Lane, S. (1945). “General theory of natural equivalences.” Transactions of the AMS.
- 米田信夫 (Yoneda, N.) ── 米田の補題・米田埋め込みに名を残した数学者。ホモロジー代数・圏論の研究者。
- Lawvere, F. W. (1969). “Adjointness in foundations.” Dialectica.
Étale Cohomology による関連記事
- 「論理はひとつではない ── 圏論論理学がつなぐ量子論理・トポス・圏論的量子力学」
- 「トポスと論理の関係 ── ひとつのトポスを選ぶと、なぜ古典論理か直観主義論理が決まるのか」
- 「論理公理系の産業応用 全地図」
- 「【思考実験】法律は本当に二値論理なのか?」
- 「量子論理・トポス・圏論的量子力学は何に使うの?」
- 「圏峰読書会 ── 5人で語り合う 20の論理体系のクセと個性」(執筆予定。未公開)
著者について
Étale Cohomology(エタール・コホモロジー)
- note: https://note.com/etale_cohomology
- Qiita: https://qiita.com/etale_cohomology
- Zenn: https://zenn.dev/etalecohomology
Geometric Data Scienceの専門家。
多様体や Sheaf 理論を用いて、複雑な経営リスクを可視化する研究・実装を行っています。
Zenn Bookにて日・英語版の専門書を出版。
Qiitaでは、Zenn本を対話形式でわかりやすくした記事を公開中。
本記事は、圏論を、もっとも日常的な家族・近隣関係を通じて語る試みです。
読者の皆様の知の地平が、街角の風景と共に、少しでも広がりましたら、嬉しく思います。
誰かがこの記事を読んで、街の風景の中に数学の美しさを見つけて下さると嬉しいです。







































