SLOはカン拡張である

はじめに

こんにちは。SREの神谷です。

この記事は「2026年の抱負:圏論をSREに活用する」シリーズの #3 です。

今回は身近な例を通して圏論に親しみましょう。

「2026年の抱負:圏論をSREに活用する」シリーズの記事一覧

おにぎり

おにぎりを何個食べると満腹になるか、考えてみましょう。

ただし

  • おにぎりを1個食べたときは空腹
  • おにぎりを3個食べたときは空腹
  • おにぎりを5個食べたときは満腹
  • おにぎりを7個食べたときは満腹

とします。

このとき

  • おにぎりを2個食べたときは空腹でしょうか?それとも満腹でしょうか?
  • おにぎりを4個食べたときは空腹でしょうか?それとも満腹でしょうか?
  • おにぎりを6個食べたときは空腹でしょうか?それとも満腹でしょうか?

おそらく

  • おにぎりを2個食べたときは空腹
  • おにぎりを4個食べたときは不明
  • おにぎりを6個食べたときは満腹

と考えた方が多いでしょう。

これをカン拡張の観点から考えてみましょう。

ここでカン拡張は圏論の概念のひとつです。関数の定義域を拡張することができます。左カン拡張と右カン拡張の2つがあります。

詳しくは Kan Extensions in Data Science and Machine Learning の Proposition 3.1 をご覧ください。カン拡張を二値分類の教師あり学習に応用しています。なお Proposition 3.1 の表記を使うと、おにぎりの例は、このようになります。

今回の場合、左カン拡張は

  • 5個以上なら満腹
  • それ以外は空腹

となります。

また、右カン拡張は

  • 3個以下なら空腹
  • それ以外は満腹

となります。

左カン拡張と右カン拡張が一致する場合だけを抽出すると

  • 5個以上なら満腹
  • 3個以下なら空腹

となります。

また、左カン拡張と右カン拡張が一致しないのは3より大きく5より小さい場合です。

左カン拡張と右カン拡張が一致する部分を実線、一致しない部分を点線で描くとこのようになります。

つまり

  • おにぎりを2個食べたときは左カン拡張と右カン拡張がどちらも空腹で一致する。
  • おにぎりを4個食べたときは左カン拡張が空腹、右カン拡張が満腹で一致しない。
  • おにぎりを6個食べたときは左カン拡張と右カン拡張がどちらも満腹で一致する。

ということです。

よって左カン拡張と右カン拡張が一致する場合はその値を採用し、一致しない場合は不明とすれば

  • おにぎりを2個食べたときは空腹
  • おにぎりを4個食べたときは不明
  • おにぎりを6個食べたときは満腹

となります。

SLO

『SLO サービスレベル目標』4.1 信頼性の目標値(48ページ)には

基本的にSLOは目標値です。つまり、達成しようと努力する目標を表すために定義された一連の基準です。適切なSLOには、以下に示すように共通する2つの特徴が含まれます。

  1. 定義されたSLOの目標値を上回っている場合、ユーザーはサービスの状態に満足します。
  2. 定義されたSLOの目標値を下回っている場合、ユーザーはサービスの状態に満足しません。

と書かれています。つまりSLIがSLOの目標値を上回っているかどうかでユーザー満足/不満足を二値分類します。SLIをおにぎりの個数、ユーザー満足/不満足を満腹・空腹に対応させると、おにぎりの例と同じです。この意味で、SLOはおにぎりの例と同様にカン拡張とみなすことができ「SLOはカン拡張である」といえます。

まとめ

『順序集合で遊ぶKan拡張入門』は

Kan拡張は”正しい”方向性を教えてくれる

という文言で終わります。

また5章には

可能な限り広い定義域へ拡張したい

ときに

左右のKan拡張両方を利用することで可能な限り広い定義域を得ることも考えられる

との記載があります。これは、おにぎりの例の考え方と同じです。

よって左カン拡張と右カン拡張が一致する場合はその値を採用し、一致しない場合は不明とすれば

  • おにぎりを2個食べたときは空腹
  • おにぎりを4個食べたときは不明
  • おにぎりを6個食べたときは満腹

となります。

関連してThe Art of SLOsのスライド(40ページ)によると、良いSLIは

指標の悪化がサービスで起きる問題と相関

します。つまりノイズが少ないことが良いSLIの条件です。

左カン拡張と右カン拡張が一致しない部分は、そのSLIの値だけでは「ユーザーが満足している/していない」を判断しきれないグレーゾーンだと考えられます。

このグレーゾーンが広いSLIは、ユーザー満足との対応が曖昧です。 逆に、グレーゾーンが狭いSLIは、ユーザー満足との対応が明確です。

The Art of SLOsでいう「指標の悪化がサービスで起きる問題と相関する」という性質を、カン拡張の観点から見ると、左カン拡張と右カン拡張の不一致が小さいことだと捉えられます。

つまり、左カン拡張と右カン拡張の不一致が小さい方が良いSLIです。

このように、カン拡張は身近にあります。

参考文献

  • Kan Extensions in Data Science and Machine Learning
    • Proposition 3.1でカン拡張を二値分類の教師あり学習に応用しています。今回の記事の数学的な内容はこの命題に基づいています。
  • Using Kan Extensions to Motivate the Design of a Surprisingly Effective Unsupervised Linear SVM on the Occupancy Dataset
    • Figure 3で二値分類の教師あり学習におけるカン拡張を図示しています。今回の記事の図の参考にしました。
  • 順序集合で遊ぶKan拡張入門
    • Theorem 6.1 (順序集合におけるKan拡張の計算公式)で二値分類の教師あり学習におけるカン拡張を計算できます。日本語で読みやすいです。
  • SLO サービスレベル目標
    • SLOを導入する際に必要となる基礎概念、実装、文化が解説されています。
  • The Art of SLOs
    • The Art of SLOsは、GoogleのCustomer Reliability Engineeringチームによって開発されたワークショップです。

「2026年の抱負:圏論をSREに活用する」シリーズのおさらい

#1 2026年の抱負:圏論をSREに活用する

2026年の抱負は圏論をSREに活用すること、また、抱負の達成に向けて3ステップで進めることを宣言しました。

  1. 圏論の様々な概念を学ぶ
  2. SREに関連する様々な概念を圏論の概念と関連付ける
  3. 圏論をSREに活用する

また、キーワードが2つあり、積極的に活用することも述べました。

  • ソフトウェアエンジニアリング(Lean)
  • カン拡張

#2 圏を作ってみる

ステップ1「圏論の様々な概念を学ぶ」として対象が2つ、非恒等射が1つの簡単な圏(A→B)を作りました。Leanを使いました。

#3 SLOはカン拡張である

ステップ2「SREに関連する様々な概念を圏論の概念と関連付ける」として、SREの概念のひとつである「SLO」と圏論の概念のひとつである「カン拡張」を関連付けました。

ちなみに#2で作成した簡単な圏は二値分類の二値の部分(False → True)に相当します。