はじめに
あけましておめでとうございます。
SREの神谷です。
個人的な2026年の抱負は圏論をSREに活用することです。
このことをSRE部のメンバーに話したところ、2つの質問が出ました。
- 圏論未履修のメンバーから「圏論とは何か?」
- 圏論履修済のメンバーから「本当に圏論をSREに活用できるのか?」
圏論とは何か?
まず「圏論とは何か?」という質問について、私が分かる範囲で回答します。
書籍『はじめての圏論 ブンゲン先生の現代数学入門』の「はじめに」から引用すると
「圏論」の基本的なアイデアは、単に「モノとモノを矢印でつなぐ」というシンプルなものです。
nLabというwikiによると圏論(Category Theory)とは
Category theory is a toolset for describing the general abstract structures in mathematics.
意訳すると
圏論は数学における一般的な抽象構造を記述するためのツールセットです。
ということです。
つまり、圏論はモノ同士の関係(矢印)に注目して構造を捉える数学の考え方のようです。
現時点で「圏論とは何か?」という質問に回答できることは、これくらいです。圏論については学び始めたばかりで、ほとんど何も理解できていない状態です。
代わりになるかはわかりませんが「なぜ圏論をSREに活用しようと思ったのか?」という質問に回答します。
なぜ圏論をSREに活用しようと思ったのか?
「圏論は数学の理論である」と聞いて不安になった方がいらっしゃるかもしれません。
そんな方のために、書籍『はじめての圏論 ブンゲン先生の現代数学入門』「はじめに」から引用します。
しかし、圏論を勉強するには、本当に数学を知っておかなければならないのでしょうか?確かに、圏論の中にもさまざまな側面があって、その中にはとても高度な数学を必要とするものもあります。とはいえ、私がこの本で描こうとしている基本的な「圏論」像を掴もうとするなら、多くの場合、たとえ数学の知識がなくてもその基本的な考え方にアクセスできるはずです。
数学の知識がなくても大丈夫そうですね!
実際、『はじめての圏論 ブンゲン先生の現代数学入門』に登場する例は
- 最大公約数(2.2 そもそも最大公約数とは?)
- データベース(6.7 料理とワインのデータベース)
- 実数から整数への切り上げ、切り下げ(9.1 随伴)
など身近なものばかりです。
では、圏論の考え方を学ぶと、何が起こるのでしょうか?少し長いですが、さらに引用します。
圏論は社会のさまざまな諸相を、より精密に理解するための有用なツールを提供します。それは現代を生きる我々が現実を見る目を強化し、世界を高度に構造化された姿で表現するのです。ですから, 世界中の人々が圏論の基本的な言葉を使えるようになれば, きっと我々の社会は大きく変わるだろうと思います。
モノや, モノとモノとの関係, さらにモノとモノとの関係のあいだの関係⋯⋯といった関係性のレベルの違いを明らかにできて, しかもそれによって各々のモノや関係の役割を明確化できれば, 人間のコミュニケーション能力は格段に向上するはずです。
つまり、
- 圏論は現実世界の理解と表現に役立つ。
- 世界中の人々が圏論の基本的な言葉を使えるようになれば、人間のコミュニケーション能力は格段に向上する。
ということです。
ここで「世界中の人々が圏論の基本的な言葉を使えるようになれば」というところが重要だと思います。コミュニケーションするためには、同じ言葉を使える必要があります。
だからこそ、世界中の人々が圏論の基本的な言葉を使えるようになってほしいのです。
私が圏論をほとんど理解できていない段階でこの記事を公開したかった理由のひとつは、ここにあります。「圏論がこのように活用できる」という実例を見せられれば説得力があったのですが、現段階ではお見せすることができません。しかし、それを目指している姿を見せるだけでも、一定の効果はあると考えました。
この記事が皆様にとって圏論を学ぶきっかけになれば幸いです。
「なぜ圏論をSREに活用しようと思ったのか?」という質問への回答としては特に
- 生成AI
- ソフトウェアエンジニアの仕事
- SREの提唱
のいずれも、現実世界の「理解」と「表現」が必要だからです。
圏論は現実世界の理解と表現に役立つようなので、これらに活用できると考えました。
生成AI
2025年には生成AIが身近な存在となりました。生成AIを業務に活用されている方も多いと思います。
生成AIが望ましいアウトプットを生成するためのプロンプトエンジニアリングのベストプラクティスがAWSによって公開されています。
優れたプロンプトエンジニアリングを実現するには、コンテキスト、スコープ、期待される対応を含む指示を伝える必要があります。
AI による誤解を避けるため、希望する応答をプロンプトで明確に定義してください。
つまり、生成AIを活用するためには現実世界の「理解」と「表現」が必要です。
- 「理解」:コンテキスト、スコープ、期待される対応を明確に理解すること
- 「表現」:それをAIに説明すること
ソフトウェアエンジニアの仕事
また The Economic Times の記事によれば、ソフトウェアエンジニアの仕事は、コードを書くことから、適切な質問をし問題を定義することに移行しています。
“The job is shifting from just writing code to asking the right questions and defining the ‘what’ and ‘why’ of a problem,” said Narayanan. “AI can already handle much of the ‘how’.”
つまり、ソフトウェアエンジニアには現実世界の「理解」と「表現」が必要です。
- 「理解」:問題の理由(Why)を理解すること
- 「表現」:何をすべきか(What)を定義し、適切な質問をすること
SREの提唱
ブログ記事「SREの育休」で書籍『SREをはじめよう ― 個人と組織による信頼性獲得への第一歩』 4章 「SREについて語る(SREの提唱)」から引用しました。
SREとは何か、そしてなぜそれが重要なのかを周りの人に説明しなければならない時が必ず来ます。その時点は必ず、あなたが予想するよりもずっと早くやってきます。
SREの提唱には現実世界の「理解」と「表現」が必要です。
- 「理解」:SREとは何か、そしてなぜそれが重要なのかを理解すること
- 「表現」:それを周りの人に説明すること
本当に圏論をSREに活用できるのか?
これは圏論履修済のメンバーからの質問でした。こちらの質問についても、圏論についてほとんど何も理解できていない現段階では「わからない」としか回答できません。代わりに「どのように圏論をSREに活用するのか?」という質問に回答します。
どのように圏論をSREに活用するのか?
キーワード
キーワードは2つあります。
- ソフトウェアエンジニアリング
- カン拡張
ソフトウェアエンジニアリング
SREらしく、ソフトウェアエンジニアリングを積極的に活用します。具体的には数学的な主張を記述する際に、プログラミング言語かつ定理証明支援系であるLeanを使います。私やこのブログの読者の大部分であろうソフトウェアエンジニアにとってはプログラムのソースコードがわかりやすいと考えているからです。
カン拡張
「すべての概念はカン拡張である」という有名な言葉があります。かっこいいですね。「SREのすべての概念はカン拡張である」と言えるようになりたいです。そのために、積極的にカン拡張を活用します。カン拡張については、使いながら学んでいくつもりです。
ステップ
ステップは3段階で考えています。
- 圏論の様々な概念を学ぶ
- SREに関連する様々な概念を圏論の概念と関連付ける
- 圏論をSREに活用する
ステップ1は、圏、普遍性、カン拡張など圏論の様々な概念を学びます。
ステップ2は、SLOのようなSREの概念に加え、コンウェイの法則のようなSREと関連する概念を圏論の概念と関連付けます。
ステップ3は、いよいよ圏論をSREに活用します。ステップ2を進める過程で何か新しい知見が得られることを期待しています。そうすれば圏論をSREに活用できるかもしれません。
おわりに
この記事では、2026年の抱負が「圏論をSREに活用すること」であることを紹介しました。
世界中の人々が圏論の基本的な言葉を使えるようになれば、人間のコミュニケーション能力は格段に向上するはずです。
一緒に頑張りましょう!