1400字制限

最近の記事のほとんどが1400字を超えているのでタイトル無視も甚だしいが1400字「以下」に制限するとは言っていない

学校制服について:名前のない少数派を尊重する方法は自由しかない

職場におけるパンプス着用強制の反対運動が起きているらしい。僕はパンプスとハイヒールの違いが分からないほど無知だが、服装強制を撤廃することは大いに賛成だ。履きたい人間は履けばいいが、そうでない人間にまで強制することはない。

日本の中学高校を卒業したのであれば、服装や頭髪の規定を受けた人は多いと思う。なにやら世の中には、下着の色を強制したり、地毛が茶髪の生徒を黒く染めさせるところもあるらしい。

ところが、こういう仕打ちを理不尽に感じる人も、学校制服の存在には概ね肯定的だ。僕はこれが不思議でならない。下着の色を指定する教師(学校)が変態であるのならば、上着の色も同様に変態なのではないだろうか? 見える部分を指定するほうが変態度が高い気がするのだが。

Twitter でもしばしば書いているが、僕は学校制服というものを嫌悪している。これは僕の個人的な経験にもとづく。

 

僕が通っていたのは田舎の公立中学で、いわゆる学ランが制服に指定されていた。僕はもともと首が太いほうなので、襟ホックを閉めると呼吸がかなり苦しい。袖口に飾りボタンがついていて、これが筆記のとき邪魔になる。衣替えの時期が決まっているので、5月末まで長袖を着せられる(教室に冷房はまだなかった)。勉学を妨害するデザインとしか思えないような服だった。

何より嫌だったのは、校名のついた制服を着ることで学校への所属意識を強制させられることだった。僕はこの中学がまったく好きではなかった。教師は服装指導しかしないし、生徒は煙草を吸ったり教師の車に火をつけたりして、NHKの「荒れた公教育の実態」みたいな番組で紹介されるようなところだった。

というわけで、入学式の宿題で作文を出せと言われたとき「学校制服は廃止するべき」ということを書いた。特に何も言われなかった。その後も「服装指導に時間を取りすぎて授業がおろそかになっている」という文章を何度か提出したのだが何も反応されなかった。

仕方がないので「この学校の授業には意味がないので宿題をやりません」ということを宣言して実行した。おかげで通知表はだいぶ悪くなり、「内申書に悪影響があるからちゃんと宿題をやりなさい」てなことを言われた。なるほど中学というのはこうやって生徒を支配するのだな、と思ったが無視した。

今から考えてみると「勝手に私服を着てくる」というボイコットのやり方があった気がするが、そういうことはなぜか思いつかなかった。荒れてる中学だから目立ちたくなかったのかもしれない。

結局内申書にどういう事を書かれたのかは分からないが、志望校には無事に合格した。高校には制服がなかったが、生徒の半分ほどが学ランやブレザーを勝手に着てきていた。こういう選択の自由こそが僕の求めていたものだったのだ。おかげで高校三年間は概ね楽しく過ごした。

 

さて、最近よく「ジェンダーレス制服」というものが話題になる。これまで男女別だった制服を、個々人で選択可能にしたものらしい。素晴らしいことだ。しかし、世の中の多様性というものはジェンダー以外にも幅広いし、中には男女どちらの制服にも違和感を持つ人もいるだろう。単純に僕のように制服の不合理性や所属意識に耐えられない生徒がいるかもしれない。それならば、いっそ制服を廃止したほうが「多様性の配慮」という観点からすると合理的ではないだろうか?

といったことを Twitter に書き込むと、

「制服は生徒の所得格差を隠せるからいいんですよ」

といったコメントがたくさん書かれる。なるほど、僕が中学時代にあの理不尽な仕打ちを受けたのは「格差を隠すため」なのか。僕は何万円もする不合理な学生服を捨ててユニクロしまむらの2000円のシャツを着て行きたかっただけなので、経済格差などまったく関係ないはずだが。

「制服を苦痛に感じる生徒」というのは名前のついていない少数派だ。こういう名前のない少数派は他にもいっぱいいるだろう。そういう人間はジェンダーや経済の多様性に比べて配慮に値しないのだろうか?

僕が中学生のころはトランスジェンダーという言葉を知らなかったし、これからも新しい少数派概念がどんどん出てくることだろう。そういう「まだ名前のない少数派」を事前に想定して特別の配慮をすることは難しい。だから余計な規定を作らずに放っておいてほしい。服装を自由にすると見た目が不統一になり「荒れている」と映るかもしれないが、その背後で名前のない少数派が救われているかもしれない。

 

1対1ゲームとランキングの決め方についての小考

トーナメントで準決勝に残ったやつを「ベスト4」というけど、あれって主に組み合わせの問題であって実力順のベスト4じゃないよな〜というのが昔からずっと気になっていた。FIFAランキングとかどうやって決めてんだろと思って調べたら「試合に勝つと3点、引き分けなら1点、ただしPKなら2点で……」とか細かく決まっていていまいち一般性がなさそう。というわけで、

「1対1で戦うゲームの戦績をもとに、各プレイヤーの実力ランキングを決めるアルゴリズム

を考えることにする。多分もう定番のがあるんだろうけど、最近読書ばかりで能動的に頭動かしてない気がするので自分で考える。

手っ取り早いモデルとして、各プレイヤーに1変数の実力があると仮定して、実力差 d に対し (1+tanh(d))/2 の確率で勝利することにする。実力差が3もあればほぼ勝負は揺るがない。

f:id:yubais:20190206172004p:plain

各プレイヤーの実力値は0〜5の乱数にする。名前は日本人の名字ランキングからとってくる。ABC……とか振るよりも覚えやすい。

f:id:yubais:20190206171716p:plain

各プレイヤーの実力値

ずいぶん極端なツートップ体制になってしまったが別にいい。

あとはこの8人にトーナメント戦を100回(700試合)やらせる。当然ながら優勝はほぼ佐藤か渡辺で、1〜2回くらいは高橋が優勝する。とはいえ重要なのは優勝者ではなく戦績。

{'佐藤': 39, '鈴木': 1}
{'佐藤': 51, '高橋': 2}
{'佐藤': 19, '田中': 0}
{'佐藤': 27, '伊藤': 0}
{'佐藤': 58, '渡辺': 38}
{'佐藤': 16, '山本': 0}
{'佐藤': 23, '中村': 0}
{'鈴木': 4, '高橋': 21}
{'鈴木': 19, '田中': 1}
{'鈴木': 16, '伊藤': 0}
{'鈴木': 0, '渡辺': 37}
{'鈴木': 13, '山本': 0}
{'鈴木': 20, '中村': 2}
{'高橋': 19, '田中': 2}
{'高橋': 18, '伊藤': 1}
{'高橋': 2, '渡辺': 41}
{'高橋': 16, '山本': 0}
{'高橋': 20, '中村': 0}
{'田中': 8, '伊藤': 5}
{'田中': 0, '渡辺': 22}
{'田中': 10, '山本': 2}
{'田中': 3, '中村': 14}
{'伊藤': 0, '渡辺': 16}
{'伊藤': 8, '山本': 6}
{'伊藤': 3, '中村': 9}
{'渡辺': 23, '山本': 0}
{'渡辺': 29, '中村': 0}
{'山本': 2, '中村': 14}

こんな具合になる。トーナメントは勝つほど試合数が増えるので佐藤vs渡辺がいちばん対戦数が多く、伊藤vs山本がいちばん少ない……と思ったらもっと少ないのもある。

あとは、この戦績をもとに(もとの実力値をカンニングせずに)「推定実力値」を出して、それをもとに順位を決めることにする。かっこいいアルゴリズムが思いつかなかったので、

  1. まず全員の推定実力値を0と仮定する。
  2. それに基づいて2人の戦績を予測する。
  3. 実際の戦績がより勝っている方の推定実力値を0.01上げて、負けてる方を0.01下げる。
  4. これを100回繰り返す。

という安直極まりない方法でやってみた。能動的に頭を動かすという話はどうなった。

f:id:yubais:20190206173627p:plain

意外ときれいに相関していて、戦績から本来の実力を推測することができた。ただ縦横でスケールが合っていない。同じシグモイド関数を使っているのに、推定実力値は実力差を過大に評価している。

これは試合数が少ないせいで全勝・全敗が発生していることが原因である模様(このアルゴリズムは全勝ならば実力差が無限大であると推定する)。あとでトーナメントの回数を10倍にしたらもっと綺麗な正方形になった。とはいえ今回知りたいのは実力値の絶対値ではなく順位なのでこれで十分だ。

方針がついたので今日はこれで満足。

 

(2019-03-05:時間が経ったので調べてみたら、イロレーティングとかいったものがあるらしい)

白いキャンバスに鎖を描かないという行為

「最近良いニュースを聞かない」とあなたは思っているかもしれないが、そもそも世界に「良いニュース」がそうそうある訳がない。たいていの人間にとって「良さ」とは「平穏」のことであり、そして平穏はニュースではない。「良いニュース」が少ないのは、世界が悪い方向に向かっているからではなく、「良いニュース」という概念に若干の矛盾があるからだ。

もちろん革命を起こして世界を変革することが「良い」と思っているのであれば、世界のどこかで変革の火の手が挙がったことは「良いニュース」だろう。ただ、そういう人は世界にとって少数派だ。人間はおおむね保守的であり、幸福というのは慣れの問題である。もし良い知らせを見たければTVのニュースではなく道端に咲く花でも見ていたほうがいい。TVで開花予報を見るのもいい。

さて、このブログのトップが「首都大学東京女子医科歯科」のまま止まっているのも妙ので何か書こうと思うが、よく考えると僕はブログに書いて主張するべきことを何も持っていない。もちろん僕なりの政治思想というものはあるのだが、それを主張しようと思ったら何をすればいいのかが分からない。

たとえば「自由」を主張してみよう。ニューヨークの自由の女神像にはちぎれた鎖と足枷がついている。鎖は不自由の象徴であるから、ちぎれた鎖は自由の象徴になる。しかし本来の自由とは「鎖の不在」であるはずではないか?ちぎれた鎖をわざわざ描くのは、「不自由であった過去」に束縛されているのではないか?てなことを考えてしまう。

もし僕が画家で「自由を表現しよう」と思ったら、白いキャンバスをそのまま作品と称して「これは自由を描いているのです。自由とはつまり、鎖を描かないことなんです」とか言い出すだろう。ひねくれた前衛芸術愛好家にはウケるかもしれない。彼らは美術館にメガネを置くだけでも称賛するだろうけれど。

 

f:id:yubais:20190130151405p:plain

「自由」(Yuba Isukari, 2019)

しかし何かしらの塩梅で、僕の死後にこの作品が後代に残ってしまったとしよう。「これは鎖の不在を描いたのだ」などという僕の言い訳は忘れられ、「自由」というタイトルだけが残ったとしてみる。鑑賞者はこんなことを言い出すかもしれない。「これは表現規制によって何も描けなくなった世界を描写しているのだ!」と。逆である。そういう事にならないうちに出来れば作品をサクッと忘れてほしい。

「主張する」という行為に関して、僕は万事こんなかんじである。他人に何かを伝達したいと思ったら、「自由は鎖をちぎることで表現するものですよ」といった世間の不自由なルールにある程度擦り寄らねばならない。めんどっちい! 鎖のない白紙を自分の頭の中にもっておけば十分である。

ところで僕はフィクション作家である。あれは何をしているのかと言えば、主張ではなく描写である。そこにあるものを描いているだけである。もちろんSF作品なので現実世界に存在しているわけではないのだが、それは僕の考える「そこにあるもの」と世間の考える「実在のもの」が違うだけである。鎖の不在みたいなものなので深く考えないでほしい。

もし僕の絵に「鎖につながれた犬」の描写があったとしたら、それは「犬の不自由」を表現したのではなく、単にそこに鎖があっただけである。意味は飼い主に聞いてくれ。

 

首都大学東京女子医科歯科

似たような大学名が多いので、Graphviz でこういう図(なんという図なのかは知らない)を作ってみた。首都大学東京のせいでこの有向グラフにはサイクルが存在する。

「東京」とつく大学全部で試してみることにした。

#!/usr/bin/env python3

from more_itertools import chunked
from graphviz import Digraph

# 「東京」を含む大学
univs = """
東京大学
東京有明医療大学
東京医科大学
東京医科歯科大学
東京医療学院大学
東京医療保健大学
東京音楽大学
東京海洋大学
東京学芸大学
東京家政大学
東京家政学院大学
東京経済大学
東京芸術大学
東京工科大学
東京工業大学
東京工芸大学
東京国際大学
東京歯科大学
東京純心大学
東京聖栄大学
東京情報大学
東京女子大学
東京女子医科大学
東京女子体育大学
東京神学大学
東京成徳大学
東京造形大学
東京通信大学
東京電機大学
東京都市大学
東京農業大学
東京農工大学
東京福祉大学
東京富士大学
東京未来大学
東京薬科大学
東京理科大学
首都大学東京
山口東京理科大学
諏訪東京理科大学
"""
univs = univs.strip().split('\n')

# 2文字ごとに区切る
def twogram(name):
    return list(map(lambda x: ''.join(x), chunked(name, 2)))
univs = list(map(twogram, univs))

# 3文字は面倒なので手動
univs.append( ["東京", "基督教", "大学"] )
univs.append( ["東京", "外国語", "大学"] )
univs.append( ["東京", "慈恵会", "医科", "大学"] )

# 区切ったものを格納する集合
word = set( [ e for ilist in univs for e in ilist ] )

# グラフの生成
G = Digraph(format='png', engine='dot')
G.attr('node', shape='circle')
[ G.node(w) for w in word ]

edges = []
for univ in univs:
    edges += [ ( univ[i], univ[i+1] ) for i in range(len(univ)-1) ]
edges = set(edges)

[ G.edge(*e) for e in edges ]

print(G)
G.render(view=True)

ポイントは右端のこの部分で、ここだけ線が二重になっている。これは「東京→大学」と「大学→東京」の両方のエッジが存在するためである。

f:id:yubais:20180805115644p:plain

暑さのあまりブラウン運動をする

import numpy as np 
import matplotlib.pyplot as plt
import matplotlib.animation as animation

series = np.array([[0,0]])

fig = plt.figure()
def plot(data):
        global series
        plt.cla()
        plt.axis('equal')
        step = np.random.randn(1,2)
        nextpos = series[-1] + step
        series = np.vstack((series, nextpos))
        im = plt.plot(series.T[0], series.T[1])

ani = animation.FuncAnimation(fig, plot, interval=100, frames=500)
#plt.show()
ani.save("output.gif", writer="imagemagick")

時速60キロで車が離れていく

◆人間はみんな巨大ロボに乗り込んで操縦したいという願望を持っている。「私はそんな事を思っていない」という人はまだ内なる声を自覚していないだけである。一度インターネットを切断し、素直な気持ちで本当の自分と向き合ってみてほしい。

◆とはいえこの不景気日本で巨大ロボを所有し操るのは少々難しい。ある程度の妥協はやむを得ない。巨大ロボに必要な要件がなにかと言えば、過去のロボットアニメを総合すると「飛ぶこと」「戦うこと」「人型であること」は必須ではなさそうだから省く。あとは当然ながら「巨大であること」という点があるが、日本語における巨大とはどの程度のサイズを指すのか。

◆『進撃の巨人』には確か3メートル級巨人というのがいた。単行本9巻で、まだ意識のある人間をそれより一回り大きいだけの巨人がクッチャクッチャと食っているシーンは超大型巨人よりも恐怖感があった。それはともかく、つまり日本の漫画・アニメファンには3メートルが巨大であるというコンセンサスが得られている事になる。これによって大抵の自動車は巨大ロボであるという結論が得られた。

◆2年前に小型二輪(125ccのバイク)を買ったのだが今は四輪車がほしい。高速道路に乗れない事にイライラしはじめた。人間の欲望は果てしない。小型二輪は自動車税が年額2400円であるが、自動車(軽ではない)は3万円するらしい。駐車場代その他の経費も小型二輪よりずっと高い。そんなものを所有してしまったら真面目に働かなくてはいけない。働きたくない。

◆「巨大ロボを操縦したい」と「働きたくない」は人間の二大欲求と言っても反論はそう多くあるまい。しかし現代社会において巨大ロボたる自動車の所有には、労働によって発生する金銭が必要となる。つまり二大欲求は相反する。なんてことだ。人間はその根本的欲求において既に矛盾を抱えているのか。

◆と思ったけど「トイレ行きたいけど布団出たくない」とかいう事もあるし、我々の欲求はわりとカジュアルに衝突する。 

◆ここで視点を変えてみよう。トイレに行きたいという人間の本当の望みは排泄であり、それは必ずしも施設としてのトイレを必要とするものではない。つまり布団のなかにそれなりの道具を用意すれば済む話である。同様に、巨大ロボに必要なのは労働ではなく金銭であるのだから、働かずに金が入ってくればそれで事足りるではないか。人類の抱える致命的な矛盾と思われていた事に、いま突破口が見えた。

◆だらだら書いたが本題に戻る。本題はなんだっけ。そうだ、4冊目の小説が出るという話をしていたんだった。していないか。今した。

未来職安

未来職安

 

◆少々まじめに内容を紹介する。

◆数年前に「東京都交通安全責任課」という短編小説を書いた。これは「未来の東京都庁で、自動運転車の事故が起きたときに、責任をとって辞めるためだけの人員を雇っている」という、いわゆる不条理お役所小説である。人間の労働が機械に代替されても、責任をとることは人間にしかできないだろう、というアイデアに基づいている。

◆「未来職安」はこのアイデアを拡張したもので、機械が発達した社会で、それでも人間にしかできない仕事を見つけ出してそれを紹介する「職安」の物語です。よろしく。

整数のない数学体系について

テッド・チャンの「あなたの人生の物語」は、物理認識が人間とまるで異なる宇宙人とのファースト・コンタクトを描いたSFである。我々が物理を各時刻に起きる相互作用として微分的に認識しているのに対し、本作に出てくるヘプタポッドなる生物は変分原理をベースとして積分的に(と言うべきだろうか)世界を認識している。

あなたの人生の物語 (ハヤカワ文庫SF)

あなたの人生の物語 (ハヤカワ文庫SF)

 

(ちなみに映画化もされたが、こっちは物理認識のエッセンスが出てこないのでこの話とは関係ない。) 

というわけで僕も数学認識が人類とまったく違う生物を描いたSFを書いてみたいと思う。二番煎じもはなはだしいが、二番煎じでも十分に味があるのがテッド・チャンだ。

さしあたって思いついたのは、整数の認識が人類とまったく異なる生物についてのSFである。

 

たぶん我々人類はが最初の数として発見したのは整数である。棍棒持ってウホウホやっている原始人が「おれ、おまえ、みんな」くらいのプリミティブな認識を持ち、そこから「ひとつ、ふたつ、たくさん」という対象によらない抽象的な整数の概念を獲得する。

さらに、拾い集めた5個のリンゴを2人で分けるといった状況が生じて、分数と有理数を発見する。正方形や円形の建物を作ろうとして、平方根や円周率などの無理数を獲得する。ここまでは紀元前のうちに終わっていたらしい。

このあとインド人やアラビア人がゼロや負の数の概念を発見するわけだが、このあたりになってくると、「目の前にあるものの量を描写するためもの」というコンセプトが失われて抽象の世界に入ってくる。負の数はもともと負債を記述するために導入されたというが、負債という概念が既にかなり高度な抽象思考を必要とする。さらに代数方程式の解として虚数が導入されるわけだが、もはや名前からして虚構という感触が強い。

 

しかし、このような数の構築手順はどうも、われわれの住む地球の、もっと言えば地上世界の物理的な形態に依存しているような気がする。

たとえば深海の熱水噴出口で硫黄臭いガスがボコボコ出ている中で、それを酸化してエネルギーを得ている細菌たちが寄り集まって、群知能的なものを形成したとしてみよう。人間の脳も細胞の集まりなので似たようなものであるが、彼らは「個」の概念が人類よりもずっと曖昧で、勝手に融合したり分離したりする不定形な知性である。

彼らには数を数えるためのリンゴが存在しない。細菌なのでいちおう個数はあるのだが、群体のサイズに比べて個体が小さすぎて認識できない。人間が自分の細胞を数えられないのと同じだ。したがって相手のことを「何人」ではなく「何グラム」で認識する。こうして整数よりも先に実数が生まれる。

彼らには個数の概念が存在しないため、足し算や割り算のような二項演算を知らない。なにしろ「二項」の意味がわからないのだ。したがって、実数を変換する関数をベースにして数の認識を拡張していくと思われる。たとえば我々の考える足し算  x+y を彼らの言語に翻訳すると、「実数 x を関数 f_x(y)=x+y に対応付ける操作」といった、かなりめんどくさい形状になる。

そんな彼らが、周期的運動を考える段になって、つまりフーリエ変換的なものを使って、いよいよ虚構的存在としての整数を認識する。というストーリーを考えているわけだが今日は一旦ここまで。

 

追記

はてなブックマークのコメントに「自然数と整数の区別」というのがあったが、僕はいわゆる0は自然数派なので、ゼロの発見以前の話をするときに自然数という言葉は使わない。