データベース:: 論理の使い所は

2017年に「奥野幹也『理論から学ぶデータベース実践入門』はどこがダメなのか」という記事を書きました。そこで指摘した内容で、補足・敷衍したい事が幾つもありました(ピンク色になってます)。が、書き記す気力がなかなか湧かない。

ちゃんと書こうと思うと億劫になるので、ふと思い立ったときに、データベースと論理に関するラフなメモ書きを残すことにします。

内容:

データベースのどこに論理を使うか

奥野幹也『理論から学ぶデータベース実践入門』はどこがダメなのか // 消極的提案: 第2章を削除する」より:

僕が感じたこの本の問題点のひとつは「論理をほとんど使ってない」ことです。どうせ使わないのなら、第2章「述語論理とリレーショナルモデル」は不要です。奥野さんは、

  • 論理学に触れない正規化の解説は、でたらめだと言っても過言ではありません。

と思いっきり強調太字で書いてますが、過言です。実際に、第3章以降で、述語論理を実質的・本質的に使っている所はないです。

奥野本に限らず、「RDB集合論をベースにしている」「RDBは論理を使っている」と言うだけで、実際には集合論も論理もロクに使っていない説明をみうけます。

論理を使うのは、形式化のためです。何らかの形式体系〈formal system〉としての論理系〈logical system〉をセットアップして、その論理系の構文論と意味論により対象物や現象を記述・分析することになります。

データベースとその周辺の事物を記述・分析する場合に、どこにどのような論理を使うべきなのでしょうか? 話が発散しないように、

  • 何を論理式で記述すべきなのか?

という問題設定で考えましょう。

データベース関連で論理式〈formula〉で書きたいもの・ことは、大別すれば次のニ種類でしょう。

  1. 個体に対する条件を論理式で書きたい。
  2. 関係に対する制約を論理式で書きたい。

ここでは、二種類の使用場面を区別するために、

  1. 条件記述〈condition description/definition〉の論理式
  2. 制約記述〈constraint description/definition〉の論理式

と呼び分けることにします。

条件記述の論理式の復習

条件記述の論理式はお馴染みのものです。SQL SELECT文のWHERE句のなかに書くような論理式ですね。

これについては特段に述べることもないですが、念のためにザッと復習して、それと共に用語・記法の確認をしておきます。

集合Aに対して、Formula(A) は、Aの要素に関して記述する論理式〈formula〉の集合とします。論理式は、なんらかの言語Lで書かれるので、L-Formula(A) のように書いたほうが正確ですが、論理言語Lは前もって決っているとします。また、Aの要素を表す変数名を固定するなら、Formula(x:A) のように変数名(ここでは'x')も入れますが、変数名は何でもいいので、変数名を特定せずに、その場その場で適当な変数を使います。

例えば、Personが“世界中のあらゆる時点における人”の集合だとして、年齢20歳以上の女性を選び出すには、次のような論理式を書くことになります。

  • age(x) ≧ 20 ∧ gender(x) = FEMALE

この論理式には色々な記号が登場しました。

  • 集合Person上を走る変数記号 'x'
  • 整数値の定数記号 '20' と、性別値の定数記号 'FEMALE'
  • 関数記号 'age', 'gender'
  • 関係記号 '≧' と '='
  • 論理記号 '∧' 意味は「かつ」

これらの記号達は、事前に論理系の構文論の一部として定義され、記号が指す対象〈デノテーション〉も意味論で決めておきます。

構文論と意味論がハッキリしているのなら、{x∈Person | age(x) ≧ 20 ∧ gender(x) = FEMALE} のような集合が、集合Personの部分集合として(原理的に)確定します。もちろん、「Personとは何か?」「genderという関数はどういうアルゴリズムで与えられるか?」とかは、現実には完全決着が付かないのですが、理想化した状況で考えます。

条件記述の論理式は、古典一階述語論理をそのまま使えばいいでしょう。古典一階述語論理は、極めて安定した基盤です。素直に古典一階述語論理を使えば問題はありません。ただし、古典一階述語論理は計算の効率は芳しくないので、その点の考慮や工夫は別途必要です。

関係とは

データベースにおいて主題的に考えるべき論理式は、“関係の性質”や“関係のあいだの関係”を記述する制約記述の論理式です。制約記述の論理式に関しては色々と問題がありますが、最大の問題は、制約記述の論理式に意識が向けられてないことでしょう。ちゃんと考えないとダメだよ。

制約記述の論理式を考える上で困ったことがあります。制約記述の論理式における定数記号や変数記号は“関係”を表すのですが、「関係」という言葉の意味がクリアではないのです。

数学における(標準的な)関係概念はきわめてクリアです。が、RDBの世界の「関係〈リレーション〉」はそれとは別の意味で使われています。ここでは、「関係」は数学の標準的な意味で使い、RDBジャーゴンRDBコミュニティ特有の隠語)としての「関係」は「テーブル」と呼びます。「RDBにおける『関係』は、数学の『関係』と同じだ」といった主張は信じないほうがいいです*1

以上の方針で述べるとして; A, B を集合として、AからBへの関係〈relation from A to B〉とは、直積集合 A×B の部分集合のことです。

  • rがAからBへの関係 :⇔ r⊆A×B

AからBへの関係の全体を Rel(A, B) と書くことにします。

  • r∈Rel(A, B) :⇔ rがAからBへの関係 ⇔ r⊆A×B

集合Xのベキ集合(部分集合全体からなる集合)を Pow(X) と書くことにすると:

  • Rel(A, B) = Pow(A×B)

次の点に注意してください。

  1. A, B に何の制限もない。任意の集合でよい。
  2. r⊆A×B にも何の制限もない。任意の部分集合でよい。
  3. 関係には向きがある。AからBへの関係とBからAへの関係は違う。
  4. ここでいう関係は、二項関係であり、単項関係や三項関係は含まれない。

二項関係しか考えないことが気になる人がいるかも知れませんが、二項関係があれば、任意のn項関係や高階関係(関係のあいだの関係)をシミュレートできるので心配ありません。常に二項関係で考えることが重要です。

rがAからBへの関係(r⊆A×B)のとき、Aをrの〈domain〉、Bをrの余域〈codomain〉と呼びます。また、rがAからBへの関係であることを r:A→B rel と書くことにします。'rel'を付けているのは、関数と誤解されないようにです。

  • r:A→B rel :⇔ rがAからBへの関係 ⇔ r∈Rel(A, B) ⇔ r⊆A×B

次の書き方も使います。

  • dom(r) = A :⇔ rの域はA
  • cod(r) = B :⇔ rの余域はB

制約記述の論理式とは

AとBを集合として、AからBへの関係の全体は Rel(A, B) と書くのでした。Rel(A, B) も集合なので、Rel(A, B) に関する論理式の集合 Formula2(Rel(A, B)) を考えることができます。'Formula'2と'2'を付けたのは、先程の論理式の集合とは別な言語を使うことになるからです。

Formula2の論理式、つまり制約記述の論理式は、二階の論理式と呼ばれたりもしますが、一階、二階と分類するより、互いに関連するが使用目的が違う二つの論理言語/論理式がある状況を理解することが重要です。

例として、A = B = Person = (人の集合) として、r:Person→Person rel を「結婚している」という関係だとします。

  • (x, y)∈r :⇔ x と y は結婚している

rに含まれるペア (x, y) を「夫婦」と呼び、一番目の要素xの役割名を「夫」、二番目の要素yの役割名を「妻」とすると、

  • (x, y)∈r :⇔ (x, y) は夫婦であり、x は夫、y は妻である

rは、戸籍を管理するデータベースの一部であるテーブルとみなせます。rが持っている情報は、世界全体の情報のごく一部でもかまいません。例えば、特定の市町村の夫婦だけを記録しているとか。

制約記述とは、rのような関係が満たすべき条件を明確に書き下すことです。rとして、Person×Person の勝手な部分集合を取っていいわけではありません。

現時点(2019年6月)日本において、結婚が可能な年齢は男女で差があり(改正される予定だが)、同性婚は認められていません。

  1. 夫婦の夫は18歳以上の男性である必要がある。
  2. 夫婦の妻は16歳以上の女性である必要がある。

これは、「結婚している」あるいは「夫婦である」を表す関係 r に課せられる条件です。関係が満たすべき性質とも言えます。条件を課せられる対象が関係なので、制約という言い方で区別しのたのでした。

データベースにおいて、関係(テーブル)が「異常」だとか「矛盾している」とか言いますが、それは制約を満たしてないことです。基準となる制約を明確にしない限り、「異常」「矛盾している」は無意味です。

関係と部分集合

先に進む前に、関係についてもう少し補足しておきます。

Rel(A, B) = Pow(A×B) なので、関係は部分集合の特殊な形と言えます。しかし一方、部分集合を関係の特殊な形とみなすこともできます。この相互の言い換えはとても重要です。

1 = {0} を単元集合〈singleton set〉(要素をひとつだけ持つ集合)とします*2。集合Aのベキ集合 Pow(A) は、次のように書けます。

  • Pow(A) \stackrel{\sim}{=} Pow(1×A) = Rel(1, A)

Pow(A) と Rel(1, A) のあいだの同型(1:1の対応)は、S⊆X ←→ s⊆1×A で与えられますが、要素のレベルで書けば:

  • x∈S ⇔ (0, x)∈s

Pow(A) と Rel(1, A) は完全に同じわけではありませんが、標準的な同型があります。今後は、Pow(A) の代理に Rel(1, A) を使うことがあります。なんなら同一視する(Pow(A) = Rel(1, A) とみなす)こともあります。

さて、関係 r:A→B rel に対して、im(r), coim(r) という集合を定義します。

  • im(r) := {y∈B | (x, y)∈r となる x∈A が存在する}
  • coim(r) := {x∈X | (x, y)∈r となる y∈B が存在する}

im(r) を関係rの〈image〉、coim(r) を関係rの余像〈coimage〉と呼びます*3。定義から、im(r)⊆B, coim(r)⊆A 、つまり、im(r)∈Pow(B), coim(r)∈Pow(A) です。すぐ前に言った事情で、im(r)∈Rel(1, B), coim(r)∈Rel(1, A) ともみなします。

r:A→B rel に対して、その転置〈transpose〉rT:B→A rel を次のように定義します。

  • rT := {(y, x)∈B×A | (x, y)∈r}

転置 rT は、r の向きを逆にしたものです。像・余像は転置で入れ替わります。

  • im(rT) = coim(r)
  • coim(rT) = im(r)

coim(r)⊆dom(r), im(r)⊆cod(r) ですが、域・余域と像・余像は別物です -- 区別しましょう。

制約記述の論理式の実際

制約記述の論理式は、例えば、「結婚している」を表す関係 r:Person→Person rel が、現状の日本の法律と照らし合わせて妥当かどうかを判断する基準を与えます。この例では、法律が制約として記述されますが、学校のデータベースならば、学校の規則が制約として記述されるでしょう。例えば、「データベース基礎」を受講してない学生は「データベース実践演習」を履修登録できない、とかです。また、企業のデータベースならば、ビジネスルールが制約として記述されるでしょう。

個体(例えば人)に対する条件記述と、関係に対する制約記述を、単一の論理言語で済ませることもできるし、それが便利なこともあります。しかし、互いに関連するふたつの論理言語を準備したほうが使い勝手は良さそうです。

制約記述言語で使われる記号は次のようになります。

  • 関係の集合 Rle(A, B) 上を走る変数記号 例: 'r', 's'
  • 特定の関係を表す定数記号 例: 空な関係を表す ∅, 恒等関係を表す 'idA'
  • 関係を受け取り関係を返す演算記号/関数記号 例: '∪', '∩', 'im', 'coim', 'T'
  • 関係の性質や、関係のあいだの関係を表す記号 例: '=', '⊆'
  • 論理記号 これは条件記述言語と共通

定数記号として、条件記述の論理式を使って定義された部分集合が使えます。例えば、{x∈Person | age(x) ≧ 20 ∧ gender(x) = FEMALE} は、Rel(1, Person) に値を取る関係とみなします。前節で述べた「部分集合を関係とみなす」方法を使います。

im, coim も、関係から関係への一引数関数とみなします。集合(を表す記号)A, B に対して、

  • im:Rel(A, B)→Rel(1, B) func
  • coim:Rel(A, B)→Rel(1, A) func

というプロファイル(関数の域・余域指定)を持ちます。'func'は関数であることを明示する符丁(マーカー)です。

「結婚している」を表す関係が、法的に妥当であることを記述する制約論理式の話に戻りましょう。制約論理式を書く準備に、まずは関係定数を定義します。

  • maleOver18 := {x∈Person | age(x) ≧ 18 ∧ gender(x) = MALE}
  • femaleOver16 := {x∈Person | age(x) ≧ 16 ∧ gender(x) = FEMALE}

これは特定の集合を表しますが、Pow(Person) = Rel(1, Person) とみなせば、maleOver18, femaleOver16∈Rel(1, Person) なので、maleOver18, femaleOver16 は関係定数です。より正確に言えば、'maleOver18', 'femaleOver16' という記号が表す意味〈デノテーション〉が 1→Preson rel というプロファイルを持つ関係です。

関係定数記号 'maleOver18', 'femaleOver16'、関係を受け取り関係を返す関数記号 'im', 'coim'、関係のあいだの関係を表す記号 '⊆'、論理記号 '∧' を使って、関数変数 'r' に関する制約論理式を書けます。

  • coim(r)⊆maleOver18 ∧ im(r)⊆femaleOver16

この論理式は、「結婚している」を表す関係rに対する法的な制約を表します。

データベースのための論理系の枠組み

一階述語論理+集合論とか高階述語論理とか、強力な論理言語/論理系がありますが、データベースの話をするには強力過ぎると思います。値や個体の集合を議論領域〈domain of discourse〉とする一階述語論理、関係の集合を議論領域とする一階述語論理の組み合わせで十分でしょう。前者が条件記述の論理、後者が制約記述の論理です。

条件記述の論理式 p∈Formula(A) は、{x∈A | p} という形で Rel(1, A) の定数(特定の関係)を定義できます。この定数は、制約記述の論理式内で使えます。この意味で、条件記述の論理と制約記述の論理は無関係ではありません。

もし、制約記述の論理式を高階述語論理で解釈したいなら、α∈Formula2(Rel(A, B)) に対応する、集合 A×B 上の2階述語論理式(または集合論の論理式)も構成できます。必要があるなら、強力な論理系に埋め込んで考えてもかまいません。

論理式に出てくる記号(名前)の型(プロファイル)と、定数記号か変数記号かの区別はとても大事です。集合を表す'Person'、関係(部分集合と同一視)を表す'maleOver18', 'femaleOver18' などは定数記号です。それに対して、「結婚している」を表す関係記号'r'(もっとそれらしく'married'とかにしてもよい)は変数記号です。なぜなら、時間の流れに沿って追加・削除されるからです。

変更される関係を指す記号〈名前〉が関係変数記号であり、プログラミングにおけるプログラム変数(破壊的代入を許す変数)に相当します。関係変数記号の値を勝手気ままに換えることが出来ないことを宣言するために、制約記述の論理式が使われるのです。

関係変数rと、rに関する制約論理式α、そして変更操作mがあるとき、次のことが要求されます。

  • 変更操作mの前に、rは制約αを満たしていたならば、変更操作mの後でも、rは制約αを満たしている。

例えば、「25歳の男性と30歳の男性の婚姻届を受理する」と、「coim(r)⊆maleOver18 ∧ im(r)⊆femaleOver16」という制約論理式を満たせなくなります。

制約論理式と変更操作について明確な定式化をしないままで、「異常だ」「矛盾だ」と言ってみても曖昧で雑なことしか言えません。現状のRDBシステム実装や、純粋主義リレーショナル理論は、制約論理式と変更操作について語る枠組みとして相応しくはありません。かといって、新しい枠組みを作る必要もありません(劣化した車輪の再発明をするだけ)。既存の枠組み(論理、集合、圏など)を、歪めたり矮小化しないで、普通に使えばいいのです。

普通に使う方法や例については、次に思い立ったときに。

*1:まったくの間違いではありませんが、断り書きを付けないと正確な主張にはなりません。

*2:単元集合の要素は何でもかまいません。

*3:像を余域、余像を域と呼ぶ人もいますが、そうすると、先に定義した域・余域と区別ができなくなります。それはとても困るので、像・余像を使います。

インスティチューションと忘却関手

昨日(2019-06-06(日曜))、インスティチューション理論についてほんの少しだけ説明しました(チアガールズの説明のほうが長かった気がする)。インスティチューションについては、「キマイラ飼育記」の初期の頃からチョコチョコ触れています。

インスティチューションに関する資料として、僕が最初に思い浮かべるのはゴグエン〈Joseph Goguen〉による次のページです。

Maintained by Joseph Goguen
Last modified: Fri Jan 6 07:46:59 PST 2006

ゴグエン先生は2006年7月3日に亡くなられているので、それ以降はメンテナンスされていません。このページに目ぼしい論文へのリンクがあります。外部サイト(arXivとか)へのリンクではなくて、ローカルリンクですね。PostScript形式が多いです。

インスティチューション理論では、指標の圏Signと、指標Σに対するモデルの圏 Model[Σ] は公理的に与えられるのですが、Sign, Model[Σ] を具体的に作りたいことが多いので、作り方(の一例)を述べます。

まず、指標Σはコンピュータッド(nLab項目 computad)だとします。(適当な条件を付けた)コンピュータッドとコンピュータッド準同型からなる圏が Sign = (指標の圏) ですね。コンピュータッドΣから生成されるn-圏をΣとしましょう。モデル(指標の意味となる実体)が棲むn-圏をCとして、Model[Σ] を次のように定義します。

  • Model[Σ] = C-Model[Σ] := [Σ, C]

, C] は関手圏です。n = 2 、つまりΣは2-コンピュータッドであり、CSetを自明に2-圏とみなしたもの*1であるケースが一番よく使われる設定です。

例えば、有向グラフ(ここでは単に「グラフ」と呼ぶ)の指標は次だとします。

signature Graph :=
begin
  sorts
    V /* 頂点集合 */
    E /* 辺集合 */
  operations
    src:E→V  /* 辺の始点 */
    trg:E→V  /* 辺の終点 */
  laws
    /* 特になし */
end

指標Graphから、ソートEとオペレーション src, trg を落としてしまえば、集合の指標になります。

signature Set :=
begin
  sorts
    V
  operations

  laws

end

Set⊆Graph という包含を表す指標射を j:Set→Graph in Sign として、Model[j]:Model[Graph]→Model[Set] in CAT が対応する忘却関手です。

*1:写像のあいだのイコール関係を2-射とします。

拡張された係数を持つ微分形式の空間の書き方

共変外微分の系列」で登場したド・ラーム複体や共変外微分の系列は、i = 0, 1, 2, ... で番号付けられた*1微分形式の空間と、隣り合う番号の微分形式の空間のあいだの外微分作用素からなる系列です。微分形式の空間を大文字オメガで表すのは、割と安定した習慣です。番号は上付き添字です。つまり、Ωi ですね。Ωi の後に括弧が付くことが多いです。

  • Ωi(ナニカ)

括弧内のナニカの種類により解釈が変わるので、ややこしい。

  1. Ωi(M) -- Mは多様体
  2. Ωi(U) -- Uは開集合
  3. Ωi(V) -- Vはベクトル空間
  4. Ωi(ξ) -- ξはベクトルバンドル
  5. Ωi(F) -- Fは加群

これらはどれも略記です。では、略記じゃなくてチャンと書いたらどうなるのでしょうか?

準備

次の記事に書いてあることを手短かにまとめます。

Mはなめらかな多様体として、CM(U, R) を、Mの開集合U上で定義された、なめらかな実数値関数の集合とします。マリオス〈Anastasios Mallios〉に従って、次の書き方も使います。

  • AM(U) := CM(U, R)

AM(U) はR-ベクトル空間であり、可換環でもあるとみなします。また、開集合Uを動かすことによりM上の層を定義できます。層は特別な前層ですが、前層 AM が値をとる圏は、CRngR = (R-ベクトル空間でもある可換環の圏) です。「R-ベクトル空間でもある可換環」は短くR-可換環と呼ぶことにします。M上のR-可換環層 AM 上の加群層の圏を AM-Mod-Sh[M] と書きます。

ξはM上のベクトルバンドルだとします。ξの大域セクションの全体を ΓM(ξ) と書き、局所セクションの空間は次のように定義します。

  • ΓM(U, ξ) := ΓU(ξ|U)

ΓM(U, ξ) はRベクトル空間として扱い、R-可換環 AM(U) 上の加群とみなします。Uを動かした ΓM(-, ξ) はM上の層となり、圏 AM-Mod-Sh[M] の対象になります。

M上のベクトルバンドルの圏を Vect-Bdl[X] とすると、ΓM は、ξ \mapsto ΓM(-, ξ) という対応になり、ベクトルバンドル射を加群層の射に対応付けるので、ΓM:Vect-Bdl[X]→AM-Mod-Sh[M] という関手になります。

記号'\otimesM'は、2つのベクトルバンドルの“M上のテンソル積”の意味で使います。'\otimesM'は、圏 Vect-Bdl[X] における演算です。一方、記号'\otimesAM'は、2つの加群層の“可換環層 AM に対するテンソル積”の意味で使います。'\otimesAM'は、圏 AM-Mod-Sh[M] における演算です。

略記の解釈

任意のベクトル空間Vに対して、Triv(M, V) は、M上のVをファイバーとする自明ベクトルバンドルのことだとします。

  • Triv(M, V) = (M×V, M, V, π1)

T*M は、Mの余接ベクトルバンドル、Λiξ は、ベクトルバンドルξを外積の意味でi乗したベクトルバンドルです。

さて、略記を解釈しましょう。

  1. Ωi(M) は、ΓM(M, ΛiT*M) の略記。
  2. Ωi(U) は、ΓM(U, ΛiT*M) の略記。
  3. Ωi(V) は、ΓM(M, Triv(M, V) \otimesM ΛiT*M) の略記。
  4. Ωi(ξ) は、ΓM(M, ξ \otimesM ΛiT*M) の略記。
  5. Ωi(F) は、ΓM(M, ΛiT*M) \otimesAM F の略記。

このなかで、1番と2番は通常の微分形式の空間ですが、3, 4, 5番はそれぞれ、ベクトル空間、ベクトルバンドル加群層へと係数域が拡張されています。拡張された係数を持つ微分形式は、接続〈共変微分〉の議論などで出てきます。

ΩiM(U) := ΓM(U, ΛiT*M) とするならば:

  1. Ωi(M) は、ΩiM(M) の略記。
  2. Ωi(U) は、ΩiM(U) の略記。
  3. Ωi(V) は、ΩiM(M) \otimesAM ΓM(M, Triv(M, V)) の略記。
  4. Ωi(ξ) は、ΩiM(M) \otimesAM ΓM(M, ξ) の略記。
  5. Ωi(F) は、 ΩiM(M) \otimesAM F の略記。

他にも、略記の仕方はいくらでもあるでしょうが、ΓM(開集合, ベクトルバンドル) と \otimesM, \otimesAN で書き下してみると、意味がハッキリするでしょう。

*1:ときに、負の番号も使うことがあります。

ゲージ変換の解釈

主バンドルの基本的なこと (1/2)」で述べたように、マーシュ〈Adam Marsh〉の論説・書籍を読み始めました。

障害というか、困難を感じる点は、物理と微分幾何の概念・用語の対応関係がよく分からないことです。物理的概念そのものは「どうせ分からんからいいや」とハナから諦めているのですが、物理起源の言葉がよく出現するので、それを微分幾何的に解釈する必要はあります。

この記事では、「ゲージ変換」という言葉の解釈を試みてみます。

内容:

バンドルの圏

主バンドルの基本的なこと (1/2) // 特定の空間上のファイバーバンドルの圏」、「主バンドルの基本的なこと (1/2) // 底空間を特定しないファイバーバンドルの圏」の復習をしましょう。Man = Man(∞) = (なめらかな多様体となめらかな写像の圏) をベースに考えます。ファイバーバンドルの全空間、底空間、典型ファイバーはすべてManの対象であり、射影はManの射です。ファイバーバンドルを単にバンドルともいいます。

ファイバーバンドルに、構造群〈structure group〉と呼ばれる群を一緒に考えることが多いのですが、ここでは構造群を考えません。ちなみに、構造群とゲージ群〈gauge group〉は完全に同義語なので、今言ったことを言い換えると「ゲージ群を考えません」なので、ゲージ群は一切出てきません

すべてのバンドルとバンドル射(ファイバーバンドルの準同型写像)の全体からなる圏をBundleとします。Bundleの対象は、ξ = (Eξ, Bξ, Fξ, πξ) のように書きます。ξからηへのBundleの射は、f:Eξ→Eη, φ:Bξ→Bη in Man のペア (f, φ) で、f;πη = πξ;φ を満たすものでした。これを、(f, φ):ξ→η in Bundle と書きます。

ξ, η∈|Bundle| に対して、ホムセット Bundle(ξ, η) は、バンドル射 (f, φ) からなりますが、底空間の写像φを特定の写像 ψ:Bξ→Bη に固定したバンドル射の全体を Bundle(ξ, η)[ψ] と書きます。

  • Bundle(ξ, η)[ψ] := {(f, φ)∈Bundle(ξ, η) | φ = ψ : Bξ→Bη in Man}

多様体X(Manの対象)をひとつ選んで、圏Bdl[X]を次のように定義します。

  • |Bdl[X]| := {ξ∈|Bundle| | Bξ = X}
  • Bdl[X](ξ, η) := Bundle(ξ, η)[idX]

多様体Xごとに圏Bdl[X]を作ることができます。各Bdl[X]はBundleの部分圏になります。

自明バンドルの圏

前節で、すべてのバンドルからなる圏Bundleと、X∈|Man|ごとの圏Bdl[X]を定義しました。バンドルのなかでも特に簡単なバンドルとして自明バンドルがあります。自明バンドルだけからなる圏を定義しましょう。

X, F∈|Man| に対して、バンドル (X×F, X, F, π1) を定義できます。ここで、π1は直積の第一射影です。この形のバンドルを、自明バンドル〈trivial {fiber}? bundle〉、直積バンドル〈{direct}? product {fiber}? bundle〉などと呼びます。

自明バンドルもバンドルなので、自明バンドルからの/自明バンドルへのバンドル射は普通に考えることができます。したがって、自明バンドルを対象とするBundleの充満部分圏TrivBundleを考えることができます。

同様に、Bdl[X]内の自明バンドルとバンドル射(底空間では恒等射)だけからなるBdl[X]の充満部分圏TrivBdl[X]も考えることができます。

これで、以下のような圏を定義できました。

  • Bundle
  • Xごとに Bdl[X]
  • TrivBundle
  • Xごとに TrivBdl[X]

同型射の圏と自己同型射の圏

この節は、圏の一般論です。Cを任意の圏とします。

Cの同型射〈可逆射 | isomorphism〉だけからなる部分圏を IsoC 、または Iso_C と書きます。念のため、Iso_C の対象類とホムセットを書くと:

  • |Iso_C| := |C|
  • Iso_C(A, B) := {f∈C(A, B) | fは同型射}

A, B が対象として同型でないときは、Iso_C(A, B) = 空集合 となることに注意してください。

Cの自己同型射〈automorphism〉だけからなる部分圏を AutC 、または Aut_C と書きます。念のため、Aut_C の対象類とホムセットを書くと:

  • |Aut_C| := |C|
  • Aut_C(A, B) := (A = B ならば {f∈C(A, A) | fは同型射}、そうでないなら空集合)

ホムセット Aut_C(A, B) は、A = B のときしか実質的な意味がないので、Aut_C(A) と書きます。

すべての射が可逆である圏を亜群〈groupoind〉と呼びます。Iso_C も Aut_C も亜群となります。対象Aに対して、Iso_C(A, A) 、 Aut_C(A, A) = Aut_C(A) は群になります。亜群 Aut_C は、対象ごとにひとつの群 Aut_C(A) があるだけなので、単に群の寄せ集めです。

ゲージ変換とゲージ変換群

「ゲージ変換」という言葉の語源やら物理的解釈やらは一切無視して、単に「どんな意味で使われているのか」だけに注目すると、

  • バンドルの圏の同型射または自己同型射をゲージ変換と呼ぶ

だと思われます。

「バンドルの圏」は何種類かあるので、表にまとめてみると:

バンドルの圏 同型射の圏 自己同型射の圏
Bundle Iso_Bundle Aut_Bundle
Bdl{X] Iso_Bdl[X] Aut_Bdl[X]
TrivBundle Iso_TrivBundle Aut_TrivBundle
TrivBdl{X] Iso_TrivBdl[X] Aut_TrivBdl[X]

この表で、同型射/自己同型射の圏が8種類出てきますが、これらの圏(亜群になっている)の射をゲージ変換〈gauge {transform | transformation}〉と呼んでいるようです。どの圏の射なのかは文脈によります。いずれの場合でも、ゲージ変換は可逆です。

ゲージ変換の集まりで群になっているものを、たぶんゲージ群と呼ぶのでしょうが、どうも次の2つのケースがありそうです。

1. ゲージ変換からなる亜群(群ではない)をゲージ変換群と呼ぶ。
2. ゲージ変換からなる群(ほんとに群)をゲージ変換群と呼ぶ。

同型射の圏 Iso_Bdl[X] をゲージ変換群と呼ぶことは、一番目の用法の例になります。ホムセットは Aut_TrivBdl[X](ξ) をゲージ変換群と呼ぶことは、ニ番目の用法の例になります。

混乱を避けるには、ゲージ変換からなる亜群はゲージ変換亜群〈gauge transformation groupoid〉と呼び、ほんとに群のときだけゲージ変換群〈gauge transformation group〉と呼ぶほうがいいでしょう。

最初に注意したように、今までの話でゲージ群=構造群は一切出てきてません。ということは、ゲージ群とゲージ変換群は別物だと分かります。ゲージ群を考えるならば、それはゲージ変換群と関係しますが、ゲージ群なしでもゲージ変換/ゲージ変換亜群/ゲージ変換群を定義できます。

共変外微分の系列

主バンドルの基本的なこと (1/2)」で、ファイバーバンドルとそのセクションの定義をしたので、それを使って共変外微分の系列を導入できますね。

  •  \nabla^i_U : \Omega^i_M(U, \xi) \rightarrow \Omega^{i+1}_M(U, \xi)

という記法の意味を説明します。

内容:

ファイバーバンドルのセクションの復習

この節は「主バンドルの基本的なこと (1/2)」の要約です。なめらかな多様体の圏 Man = Man(∞) で話をします。

ξ = (E, B, F, π) をファイバーバンドルとします。s:B→E という(なめらかな)写像で、s;π = idB を満たすものが、ξの大域セクション〈global section〉でした。ξの大域セクションの全体を Γ(ξ) と書きます。開集合 U⊆B の上で定義されたセクションは、ξをUに制限したファイバーバンドル ξ|U = (E|U, U, F, π|U) の大域セクションになります。

  • Γ(U, ξ) := Γ(ξ|U)

Γ(U, ξ) の要素は、ξの局所セクション〈local section〉と呼びます。

セクションの集合に、ファイバーバンドルの底空間を添えて、ΓB(ξ), ΓB(U, ξ) とも書きます。開集合Uを動かした対応 U  \mapsto ΓB(U, ξ) は、B上の層になります。

今回使うわけではありませんが; ファイバーバンドルξも動かすと、ξ  \mapsto ΓB(-, ξ) という対応は、“B上のファイバーバンドルの圏”から“B上の層の圏”への関手 Bdl[B]→Sh[B] になります(「層に関してちょっと」を参照)。

ド・ラーム複体

なめらかな多様体Mに対して、そのド・ラーム複体は次の系列です。

  • Ω0M -(d0)→ Ω1M -(d1)→ Ω2M -(d2)→ ...

この系列が複体〈complex〉だとは、di;di+1 = di+1\circdi = 0 が成立することです。

各ΩiM は次のように定義されます。

  • Ω0M := C(M) = C(M, R) = (M上で定義されたなめらかな実数値関数の可換環)
  • Ω1M := ΓM(T*M) = (M上の1次微分形式のベクトル空間)
  • Ω2M := ΓM(T*M ∧M T*M) = (M上の2次微分形式のベクトル空間)
  • 以下同様

T*M はMの余接バンドルで、T*M ∧M T*M は、余接バンドルを(自分自身と)外積したベクトルバンドルです。'∧M'は、ファイバーごとに外積を作って、それらを寄せ集めることを意味します。

すべての ΩiMR上のベクトル空間ですが、Ω0M可換環で、ΩiM 達は可換環 Ω0M 上の加群と考えます。

開集合 U⊆M に対して、関数や微分形式をU上に制限して考えることにより、ΩiM(U) を定義できます。そして、U上に制限したド・ラーム複体も定義できます。

  • Ω0M(U) -(d0U)→ Ω1M(U) -(d1U)→ Ω2M(U) -(d2U)→ ...

Ω0M(-) はM上の可換環の層、ΩiM(-) はΩ0M(-)上の加群の層になります。ド・ラーム複体は、加群の層の圏のなかの複体とも、複体の圏に値をとる層(複体の層)ともみなせます。

ド・ラーム複体は、ド・ラーム・コホモロジーを定義する手段であるだけではなくて、それ自身で(コホモロジーを取らなくても)多様体Mに備わった計算システムと捉えることができます。ド・ラーム複体をベースに、より複雑な計算システムを構成することができます。後で述べる共変外微分系列がその例です。

共変微分の復習

共変微分については、次の記事で触れています。

が、ザッと復習しておきます。

ξを多様体M上のベクトルバンドルとします。セクションの空間 ΓM(ξ) はR-ベクトル空間であり、可換環 Ω0M 上の加群にもなっています。これらの構造を前提に、ξの共変微分と呼ばれる作用素を定義できます。

共変微分〈covariant derivative〉∇は、次の形の作用素です。

  • ∇ : ΓM(ξ) → ΓM(ξ)\otimesΩ1M

ここで、テンソル積の記号'\otimes'は、可換環Ω0M上の加群に対するテンソル積です。ベクトルバンドルのファイバーごとのテンソル積を'\otimesM'と書くなら、次の同型があります。

  • ΓM(ξ)\otimesΩ1M = ΓM(ξ)\otimesΓM(T*M) \stackrel{\sim}{=} ΓM\otimesM T*M)

これは、セクションをとる関手が、ベクトルバンドルテンソル積を加群テンソル積に写すことを意味しています。

共変微分∇が満たすべき法則は:

  1. ∇は、R-線形写像である。
  2. ∇は、ライプニッツの法則を満たす。
    ∇(sf) = (∇s)f + s\otimesdf

関数fは右から掛けていますが、ちゃんと統一性があれば、左右どっちでもいいです。

共変微分を備えたベクトルバンドルvector bundle with covariant derivative〉は、M上の微積分の舞台を提供します。さらに、局所的計算を可能とするために、層を導入しておきます。

開集合 U⊆M ごとに、次の共変微分を考えます。

  • U : ΓM(U, ξ) → ΓM(U, ξ)\otimesΩ1M(U)

Mのすべての開集合に渡ってこれらを総合すると、ベクトル空間かつ加群の層のあいだのライプニッツ射ができ上がります。これもまたξの共変微分と呼びます。

共変外微分とその系列

多様体M上のベクトルバンドルξの共変微分∇に基づいて、ド・ラーム複体と類似の系列を構成します。ただし、∇ベースの系列が複体になるとは限りません。むしろ、複体にならないことに意味があったりします。

最初から層の形で ΩiM(U, ξ) (i = 0, 1, 2, ...)を導入します。UはMの開集合です。

  • Ω0M(U, ξ) := ΓM(U, ξ)
  • Ω1M(U, ξ) := Ω0M(U, ξ)\otimesΩ1M(U)
  • Ω2M(U, ξ) := Ω0M(U, ξ)\otimesΩ2M(U)
  • 以下同様

'\otimes'は、可換環Ω0M(U)に関する加群テンソル積です。ベクトルバンドルテンソル積(と外積)を使うなら:

  • Ω0M(U, ξ) := ΓM(U, ξ)
  • Ω1M(U, ξ) := ΓM(U, ξ \otimesM T*M)
  • Ω2M(U, ξ) := ΓM(U, ξ \otimesM (T*M ∧M T*M))
  • 以下同様

ベクトルバンドルで見ると、余接バンドル T*M のk重の外積 ΛkMT*M に、ξをテンソル積したバンドルを作ることになります。セクションを取ると、微分形式の値を実数からξに拡張したものになります。

ΩiM(U, ξ) (i = 0, 1, 2, ...)のあいだを繋ぐ微分作用素共変外微分〈covariant exterior derivative〉 ∇iU です。まず、∇0U : Ω0M(U, ξ) → Ω1M(U, ξ) は、∇U そのものだとします。その他の ∇iU : ΩiM(U, ξ) → Ωi+1M(U, ξ) は、次の基本的な定義を拡張して計算できます。

  • iU(s\otimesω) = (∇Us)\otimesω + (-1)is\otimes(diUω)

ここで、diU は通常の外微分(ド・ラーム複体に現れる外微分)です。

以上で、ベクトルバンドルξと共変微分∇に伴う共変外微分〈外共変微分〉の系列が作れました。座標(チャート/アトラス)を使わないで定義したので、計算の労力はかかりませんでしたが、具体的な座標により表示するとなるとだいぶゴチャゴチャした感じになります。

バンドルの共変微分とバンドルの接続は、同じ概念の違った表現方法です。共変外微分の系列が複体にならない度合い、つまり ∇0;∇1 = ∇1\circ0 は、バンドルの曲率(物理ではフィールドストレングス)と呼ばれる重要な量になります。共変外微分系列を導入したので、曲率の議論をする準備は出来ました。

主バンドルの基本的なこと (1/2)

次の記事で触れたマーシュの論説を、何人かでゆるゆると読んでいこうかと思ってます。

必要に応じて、他の資料も参照します。

なお、マーシュの2つの論説は、次の書籍のハイライト部分(9章と10章)を切り取ったものです*1

Mathematics for Physics: An Illustrated Handbook (Computational Mathematical and)

Mathematics for Physics: An Illustrated Handbook (Computational Mathematical and)

とりあえず、主バンドルに関して基本的な事項をメモしておきます。2回に分けます。この記事が1回目です。

内容:

はじめに

物理の言葉と微分幾何の言葉のあいだの翻訳には、次の対応表が使えます*2

物理 微分幾何
ゲージ場 ファイバーバンドル
ゲージ (ファイバーバンドルの)局所自明化
ゲージ群 (ファイバーバンドルの)構造群

この表から、ゲージ理論=ゲージ場の理論とは、ファイバーバンドルの理論だと分かります。ファイバーバンドルのなかで典型的で重要なものに、ベクトルバンドルと主バンドルがあります。ゲージ理論では、主バンドルを扱うことが多いようです(ベクトルバンドルも扱いますけどね)。

ここでは、主バンドルの記述方法について述べます。実例がないのが説明としては問題有りですが、定義の整理を目的にします。ベクトルバンドルのフレームバンドル(をご存知なら、それ)が主バンドルの例になります。ベクトルバンドルとしては、多様体の接バンドル、余接バンドル、埋め込みの法バンドルなど、そして、それらからテンソル積や外積で構成されるベクトルバンドルがあります。関連する絵は、マーシュの論説にたくさんあります。

概要

この節では、後で定義する用語(太字にしている)を遠慮なく使います。よく分からない言葉が出てきても気にしないか、飛ばすかして、必要に応じてまた読み返してください。

主バンドルの特徴は、バンドルの局所自明化*3とバンドルの局所セクションが1:1に対応することです。局所自明化はバンドルの局所座標なので、バンドルのチャートとも呼びます*4。つまり、主バンドルにおいては「バンドルのチャート←→バンドルの局所セクション」という1:1対応があります。

底空間の“良い”開被覆があれば、各開集合ごとにチャートを作れます。このようなチャートの集まりはバンドルのアトラスと呼びます。ファイバーバンドルの定義から、“良い”開被覆の存在は保証されるので、アトラスの存在も保証されます。主バンドルにおける「チャート←→局所セクション」の対応から、アトラス(=チャートの集まり)は局所セクションの集まりと対応します。

Gを構造群とする主バンドルの局所セクションの集まり〈族〉が与えられると、開集合の重なり部分でセクションの変換が生じます。これらの変換の集まり〈族〉は、(開被覆に載った)G係数1-コサイクルというものを定義します。

主バンドルのアトラスからG係数1-コサイクルを構成できますが、逆に、G係数1-コサイクルが与えられると、もとの主バンドルを再現できます。つまり、G係数1-コサイクルは、主バンドルの情報を(up-to-isoで)持っていることになります。

アトラスによる主バンドルの記述と、G係数1-コサイクルによる主バンドルの記述のあいだの対応を確立することが当面の目標です。

特定の空間上のファイバーバンドルの圏

最初に幾つかの記法を導入します。

なめらかな多様体となめらかな写像の圏を Man(∞) とします。右肩の (∞) は何回(何階)でも微分可能なことを示しますが、なめらかな多様体しか考えないので、Man = Man(∞) と略記します*5

一般に、圏Cの対象Xの自己同型射の集合を AutC(X) と書きますが、下付きを使わずに Aut_C(X) とも書き、混乱の恐れがなければ単に Aut(X) とします。

p:M→N in Man があり、pに注目している状況で、B⊆N に対する逆像 p-1(B) を、M|B と書くことにします。pを M|B に制限した写像は、p|B:M|B→B と書きます。これは便利な書き方ですが、f:M→N に対する通常の制限 f|A, A⊆M とは違うので混乱しないように注意してください。B = {y} のときは、p-1(y) = p-1({y}) = M|{y} = My と書きます。

さて、(E, B, F, π) がファイバーバンドル〈fiber bundle〉だとは、E, B, F はManの対象で、π:E→B はManの射であり*6、次を満たすことです。

  • [局所自明性] Bの任意の点xに対して、x∈U となるBの開集合Uと、同型 φ:E|U→U×F in Man が存在し、π|U = φ;π1 が成立する。ここで、π1:U×F→U は第一射影。

この条件を満たすには、次のようなことが必要なので、前もってファイバーバンドルの条件に入れておいてもいいです。

  1. π:E→B は全射
  2. x∈B に対して、π-1(x) は F と同型。

ファイバーバンドルを構成する各構成素は次のように呼びます。

  1. Eを、ファイバーバンドルの全空間〈{total | entrire} space〉と呼ぶ。
  2. Bを、ファイバーバンドルの底空間〈base space〉と呼ぶ。
  3. Fを、ファイバーバンドルの典型ファイバー〈{typical | standard} fiber〉と呼ぶ。
  4. πを、ファイバーバンドルの射影〈projection〉と呼ぶ。

π-1(x) = Ex を、x上のファイバー〈fiber | fibre〉といいます。底空間Bの各点ごとのファイバーを寄せ集めた〈束ねた〉空間が全空間Eになります。局所自明性から、Bの各点の周りの小さな範囲では E(の一部)は直積に見えます。

記号の乱用で、E = (E, B, F, π) のようにも書きます。ファイバーバンドル自体とその全空間をちゃんと区別したいなら ξ = (Eξ, Bξ, Fξ, πξ) のようにします。折衷案として、2つのファイバーバンドルを E = (E, B, F, π), E' = (E', B', F', π') のように書くこともあります。

底空間Bは固定して、2つのファイバーバンドル ξ = (Eξ, B, Fξ, πξ), η = (Eη, B, Fξ, πη) を考えます。ξからηへのファイバーバンドルの準同型写像〈homomorphism of fiber bundles〉は f:Eξ→Eη in Man であり、次を満たすものです。

  • f;πη = πξ

Bを固定したファイバーバンドルの全体とファイバーバンドルの準同型写像は圏をなすのは容易にわかります。この圏を Bld[B] とします。ホムセットは Bdl[B](ξ, η) のように書けます。自己同型射の集合は Aut_Bdl[B](ξ) ですね。

底空間を特定しないファイバーバンドルの圏

底空間を固定しないでファイバーバンドルの圏を定義します。E = (E, B, F, π) と E' = (E', B', F', π') を2つのファイバーバンドルとします。底空間が異なる(正確には、同じとは限らない)ファイバーバンドルのあいだの準同型写像〈homomorphism〉は次のように定義します。

  • φ:B→B', f:E→E' in Man の組 (φ, f) であって、f;π' = π;φ を満たすもの。

Eのファイバー Ex は、fにより、E'のファイバー E'φ(x) に写ります。これは、典型ファイバーの写像 F→F' を誘導します(一意ではないけど)。

任意の底空間(ただし、Manの対象)を持つファイバーバンドルを対象として、そのあいだの準同型写像を射とする圏を Bundle とします。そのホムセットは Bundle(ξ, η) です。φ:B→B' を固定して、(f, φ) と書けるような準同型写像の全体を Bundle(ξ, η)[φ] と書くことにします。すると:

  • Bdl[B](ξ, η) = Bundle(ξ, η)[idB]

Bdl[B] は、Bundle のなかに埋め込めます。

Bdl[-] をインデックス付き圏と考えて Bundle を構成する方法(グロタンディーク構成)もありますが、今は触れません。

バンドルチャートとバンドルアトラス

ファイバーバンドル (E, B, F, π) の定義には局所自明性が含まれます。局所自明性で述べられている同型 E|U→U×F を局所自明化〈local trivialization〉と呼びます。(E|U, U, F, π|U) はファイバーバンドルになり、(U×F, U, F, π1) もファイバーバンドルなので、局所自明化は、(E|U, U, F, π|U)→(U×F, U, F, π1) という形の、ファイバーバンドルのあいだの同型写像になります。

局所自明化 φ:E|U→U×F をバンドルチャート〈bundle chart〉とも呼びます。混乱の恐れがなければ、バンドルチャートを単にチャートとも呼びます。局所自明化〈バンドルチャート〉を持つような開集合Uを、局所自明化近傍〈local trivialization neighbourhood〉、バンドルチャート近傍〈bundle chart neighbourhood〉と呼びます。

Iを添字集合〈{index | indexing} set〉として、バンドルチャートの集まり (φα:E|Uα→Uα×F | α∈I) があり、(Uα | α∈I) が底空間Bを覆うとき、バンドルチャートの集まりをバンドルアトラス〈bundle atlas〉(あるいは単にアトラス)と呼びます。ファイバーバンドルは、必ずバンドルアトラスを持ちます。

バンドルアトラス、あるいは(被覆するとは限らない)バンドルチャートの族のあいだには、細分〈refinement | 詳細化〉という関係を定義できます。細分の話題はなかなかに面白いのですが、今日は割愛します。

ファイバーバンドルのセクション

ファイバーバンドルは、セクションを定義するためにあると言えます。多様体上の関数、ベクトル場、微分形式、テンソル場などはベクトルバンドル(ファイバーがベクトル空間であるファイバーバンドル)のセクションです。内積ベクトル空間がファイバーであるベクトル空間に対して、各点での単位球を取ると球バンドルになります。球バンドルのセクションは方向の場になります。

では、ファイバーバンドルのセクションを定義しましょう。(E, B, F, π) がファイバーバンドルのとき、s:B→E という写像が、s;π = idB を満たすとき大域セクション〈global section〉と呼びます。開集合 U⊆B に対して、s:U→E|U が s;π|U = idU を満たすなら、sを(U上で定義された)局所セクション〈local section〉と呼びます。局所セクションの定義域であるUは、局所自明化近傍である必要はありません。

ξ = (E, B, F, π) のとき、開集合 U⊆B 上で定義された局所セクションの集合を ΓB(U, ξ) と書きます。B自身もBの開集合なので、大域セクションの集合は ΓB(B, ξ) です。記号の乱用で E = ξ としているなら、ΓB(U, E) になります。層をご存知なら、ΓB(-, ξ) をB上の層にできることを確認してみてください。

α:E|Uα→Uα×F | α∈I) が ξ = (E, B, F, π) のバンドルアトラスのとき、大域セクション (s:B→E)∈ΓB(B, ξ) から、局所セクション (sα:Uα→E|Uα)∈ΓB(Uα, ξ) の集まりを構成できます。勝手な局所セクションの集まりから大域セクションを構成することはできません。どういう条件を付ければ大域セクションを構成できるかは、次回(2/2)話題にします。

多様体M上の微積分は、M上のベクトルバンドルξに対するセクションの層 ΓM(-, ξ) において行います。ΓM(U, ξ) は単なる集合ではなくて、それなりの構造を備えたベクトル空間や加群になります(そうでないと微積分ができないので)。


一般的なファイバーバンドルの話はしたので、次回(2/2)で主バンドルを定義します。

*1:そのことを僕は知りませんでした。Kさんに教えていただきました。

*2:ゲージポテンシャルやフィールドストレングスをゲージ場と呼ぶこともあります。そのときは、ファイバーバンドル(特に主バンドル)をゲージタイプと呼ぶようです。「場」については「微分幾何からゲージ理論へ // 「場」という言葉」を参照。

*3:構造群の群構造を忘れた空間を典型ファイバーにした場合。

*4:方向を区別するなら、チャートと反チャートの二種類があります。

*5:今回の話では、多様体の性質を特に使っていません。が、現実に使う場合は多様体であることが多いです。

*6:この定義は、Man内のファイバーバンドルの定義です。Man以外の圏でもファイバーバンドルは定義できます。

デジタルな情報をインクの染みに人手で変換する意味?

今朝、コーヒーを飲んでいる隣の席、若い男性がノートPCの画面を見ながら何か書きものをしていた。今どき珍しい万年筆で。

万年筆 -- なんか“イヤな予感”がする。紙に印刷されているタイトルは「自己紹介書」。タイトルや罫線は印刷された定形書式で、本文をペンの手書きで埋めるものらしい。

およその事情を理解して、僕はため息が出た。以前もよく似た状況に遭遇したことがあり、ブログ(ダイアリー)に書いたことがある。

そんな無駄でバカなことを誠意や熱意だと解釈するようなメンタリティが僕は耐えられない。[...snip...] なんつーかね、理屈と効果を頭で理解できても「ムカついて気持ち悪い」んですよ。生理的嫌悪感に近い。

青年は、ノートPCをいじりだした。PCにある原稿のほうを編集している。そして … 途中までペンで書いた紙を捨てて、別な(同じ書式の)紙にまた最初から書き始めた。おそらく、また文面を編集したり書き損じたら、三枚目の紙に書き直すのだろう。

青年はたいして苦にしてない可能性もあるが、それにしても、僕は痛ましい気分になる。どうせまた、「無駄でバカなことでもやる誠意や熱意」とか「筆跡に人格が出る」とかのリクツだろうが、こういう行為(をさせること)はほんっとーーっに、イヤだ。

YouTubeの「あなたへのおすすめ」にハマる

今更ながらですが、ログイン状態でYouTubeのトップページにアクセスすると、「あなたへのおすすめ」が出ることを知りました。これは罠ですね、沼ですね。

ついついおすすめ動画を見てしまう? いえ、違います。おすすめ動画のリストに見たいものがないんですよ。おすすめの精度が良くない。

こういうのは、閲覧履歴をもとに計算しているはずなので、YouTubeに僕の嗜好を伝えるために、自分好みの動画を5,6本立て続けに見ます。その後、「おすすめ」のリストを確認します。多少改善されているようです。もっと精度をあげるために、特定分野/特定トピックの動画をさらに見ます。効果があったか? 「おすすめ」リストを確認します。

というように、「おすすめ」リストの精度を上げるために、ついつい“おすすめ動画に出てない(が出て欲しい)動画”を自分で探して見てしまうのですよ。

はてなTeX記法が表示されないのはバグではなく、表示されるのがバグ

2019年4月10日に、「はてな」に2つの問い合わせをしました。問い合わせ内容を簡潔に言えば:

  1. TeX記法がうまく表示されなくて困ってます。
  2. アンパサンド・エスケープ(文字実体参照)が効かなくて困ってます。

一番目の問い合わせに対する回答が昨日(2019年5月23日)届きました。その間、“ナシのつぶて”というわけではなくて、何度か連絡とやり取りがありましたので、十分に誠意ある対応だったと思います。でも …

内容:

非サポート機能として決着

回答までに随分と時間がかかっています。おそらく、「はてな」としての公式見解をまとめるのに苦慮していたのでしょう。

僕が遭遇した現象に関しては次の記事に書いてあります。

これは、TeX数式を \(TeXコード\) と書いたときに起きる現象です。結論を言えば(「はてな」からの回答を引用):

はてなブログの開発にあたって、はてなダイアリーTeX記法に対応した際に偶発的に今回の記述方法がご利用いただけるようになっていたものであり、
意図して機能提供を行ったわけではございませんので、何卒ご理解いただけますようお願いいたします。

つまり、\(TeXコード\) と書いて表示されたのが偶然であり、
[tex:TeXコード] しかサポートしないよ、ってことです。非サポートなので、

二回目以降が \(TeXコード\) で動作する点につきましては、今後はご利用いただけなくなる可能性はございます。

とのことです。後で修正するハメになるのが嫌なら、\(TeXコード\) は使わないほうが無難です。

僕が \(TeXコード\) に気付いたのは、「はてなダイアリー」との非互換性による不具合がキッカケでした。「不具合の原因となる非サポート機能って、それ何だよ?」という気持ちから、次の質問をしました。

もし、\(…\) が非推奨だとするなら、はてなダイアリーとの互換性を壊してまで \(…\) を導入した理由は何だったのですか?

これに対する回答はありませんでした。余計な事を言うと墓穴を掘る危険性がありそうだから、触れないのが得策ではあります -- まっ、致し方ないですね。

発見とぬか喜び

経緯を少し補足しておきます。

はてなダイアリー」と「はてなブログ」は完全互換ではないので、「はてなダイアリー」からインポートした記事の表示が崩れてしまう現象は起きました。そのひとつに、TeX記法内で \(…\) を使っていると数式が表示されなくなる不具合があります。

はてなダイアリー」では、次のように書くと丸括弧が小さく表示されて、数式としてはバランスが悪くなります。

[tex: \int_{y=c}^d ( \int_{x=a}^b f(x, y)dx ) dy ]

括弧のサイズを大きくするためには、\()\を使って次のようにします。

[tex: \int_{y=c}^d \( \int_{x=a}^b f(x, y)dx \) dy ]

この書き方が「はてなブログ」ではエラーとなります。表示を壊す非互換な変更がなされたのです。

「なぜ \(…\) を禁止したのだ?」と考えてみると、「\(…\) が新機能に割り当てられた」と推測できます。で、実験してみたら、\(…\) で数式が書けたのです。

手書きする場合は、\(…\)[tex:…] よりはるかに書きやすく、「はてなさん、TeX記法を改善したんだ。いいな、これは。非互換でもお釣りが来る便利さだ」と大変に喜んでました。

でも、新TeX記法(と僕は信じていた)がうまく表示されないことがあり、バグと思い問い合わせをしたのですが …
“偶発的に今回の記述方法がご利用いただけるようになっていたものであり、意図して機能提供を行ったわけではございません” とな。
“今後はご利用いただけなくなる可能性はございます” とな。

これは言わせて: 結局、過去記事の修正をする労力を払っただけで得るものはなかったんかい。

たぶん若い人には通じない言葉: 「ネットニュース」

昔話をしていて、「… というポストをネットニュースで読んでね、それで ……」みたいなことを言ってしまったのだけど、これはたぶん、若い人には伝わらない。

今、「ネットニュース」といえば、Yahoo!ニュース、Googleニュース、スマートニュースなどを意味するでしょう。昔のネットニュースについては:

最初の一文だけ引用すると:

ネットニュースは、電子メールと並んで、コンピュータネットワークの初期につくられた情報交換システムの1つである。いずれもインターネットが一般に普及する以前から存在しており、当時はUUCPで配送されていた。

ここで出てくる「UUCP」もあまりにレトロで、知っている人はだんだん少なくなっているでしょうね。UUCPの設定や管理は大変だったけど、けっこう面白かったな。今でも参考書が残ってます。

左から4冊目、5冊目がUUCP本です*1。この写真に並んでいるような話題は昔は必要だったんだけど、今ではノスタルジックに語られるネタだね。

*1:手前の茶色いカタマリは、イルカの形をした置物(ペーパーウェイトかな?)