データマイグレーション関手は普通に使える!
スピヴァックのデータマイグレーション関手は、スキーマ発展に関して使おうと思っていたが、そんなたいそうなレベルではなくて、ものすごく普通に使える。「ものすごく普通」って日本語はドウナノ?だが、まー、とにかく多様に多用できるのだ(って、駄洒落)。
あるサイトのある時点のデータ状態は、なんらかのスキーマS上の適当な圏Cへのインスタンスと見てよい。グラフTとグラフ写像 x:T→T を考える。このようなxを抽出子(エクストラクター)と呼ぶことにする。抽出子は関手とみてもよいので、関手圏 [T, S] を抽出子と変換の圏と考えることができる。インスタンスFは、[T, S]→[T,C] を誘導する。これは抽出子ごとにT上のモデルを対応させる。
抽出子は問い合わせ式であり、抽出子xによりT上に引き戻したFは問い合わせの結果となる。問い合わせ結果はテンプレートのコンテキストとなる。コンテキスト上の代数的操作として多項式関手を考えることができ、これはFSスケッチ(finite sumスケッチ=任意の有限錐と直和余錐を持つスケッチ)でも表現可能だ。
多項式関手、スケッチ、問い合わせ式などが関手モデルで統一的に説明できそうだ。これに複階層的圏の手法を組み合わせれば、コンテンツ状態の一部から転送コンテナ(HTMLは典型的な転送コンテナ)を作り出す方法が柔軟に記述できるだろう。