読者です 読者をやめる 読者になる 読者になる

婚活とMastodon

5/2は婚活の日だったらしい。

www.konkatsu52.com

「結婚したい」とかカジュアルに言うくせにまったく行動しないやつ、10割クズなので気をつけてほしい(ヒュンヒュンヒュン(ブーメランの音))。

概要

国立社会保障・人口問題研究所が平成27(2015)年に実施した「第15回出生動向基本調査(結婚と出産に関する全国調査)」には、結婚しない理由として、以下の記述がある。

25~34 歳 の年齢層では、「適当な相手にまだめぐり会わない」などの結婚の条件が整わないことへ重心が移る。

以上の状況を鑑みて、恋愛・婚活用のMastodonインスタンスをたてた。

paors.lv

登録はお気軽にどうぞ。

Mastodon

説明不要かと思ったが、一部のソフトウェアエンジニア界隈以外ではゴミカスほども話題になっていないっぽいので補足する。Mastodon(マストドン)は、ポストTwitterとして各所で話題になったSNS。特徴は以下のとおり。

  • a free, open-source social network
  • A decentralized alternative to commercial platforms

Twitterと比較して説明する。Twitterはサービス自体のコードはTwitter社が保有していて非公開であり、またサービスを提供するサーバはTwitter社が保有している。それに対してMastodonは、コードがOSSであり、まただれでも自身の保有するサーバからサービスを提供できる。各自の提供するサービスはインスタンスという単位で呼ばれ、ユーザはいずれかのインスタンスに所属する。自身の所属するインスタンスから他のインスタンスのユーザをフォローすることもできる。

みたいな。詳しくて正しい説明はインターネットの各所に転がっているのでググりましょう。

ぼくは戸愚呂兄と同等かそれ以上にひねくれた性格をしているので、こういう話題になるやつはだいたい総スルーするんだけど、インターネットで「こんなもん流行らんぞ!」とか言われば言われるほど可能性を感じてしまうクソみたいな性格でもある。なので、ちょうど直近で出席予定だった社内の技術勉強会のネタにするべくたててみたという運び。Mastodon自体はまったく流行らないと思うがそんなことはどうでもいい。

国内のインスタンスこことかこことかここにまとまっている。ユーザ登録はインスタンスごとにできる。

作りかた

ぜんぶAWSで構築した。mastodon自体はまるっとEC2でDockerで動かしているだけ。メールの送受信にはSES。SESで受信もできるの知らんかった。AWSだとSSL証明書が無料で使えるの良い。

webfood.info

バチクソ簡単。自分の場合はDockerを使うのが初めてだったし、AWSでもCertification ManagerとかSESを自分で設定して使い始めるのは初だった。できるだけ理解して進めるよう努めたので、よいhands onになった気がする。 SESの制限解除ができておらず、verifyしていないメールアドレスにメールが飛ばなくてちょっとハマった。

ドメイン

paors.lvというドメインにした。.lvというのは、ラトビアという国のドメイン。お名前.comでは取扱いがなく、ゴンベイドメインで。申請から取得まで4日待ち、DNSの設定反映に1日待った。

累計会員数500万人突破のFacebookを利用した恋愛・婚活サービスと偶然とはいえドメイン名・サービス名が酷似しているため、万が一怒られるようなことがあれば即座に閉鎖する構え。社会不適合者の内輪ノリ悪ふざけだと思って見逃してくださると信じている。

このドメインダジャレで1笑いをとるためだけに8,640円を消費した。まったく後悔はない。ウケればいい。

運用

ルール等は特にない。公序良俗に違反するようなトゥートだけ謹んでいただければ。清く正しくパオっていきましょう。

開発に関しては、上記のとおり技術力皆無でもっというとLinuxとかRubyに関する知識が0の極みみたいなかんじなので、どうなるかわからん。仮にユーザが増えたら構成含め再考*1*2していくかもしれんが、まあないだろうと思っている。現時点でユーザ数6名でサクサク動いている。

婚活仕様に改造していきたい気持ちはあるのでRubyできる人たちPRください。

GitHub - kbth/mastodon: A GNU Social-compatible microblogging server

展望

承認欲求に駆られたどうしようもないアカウントが幅を利かせ、出会い厨が湧きたち、ネカマが蠢き、LINE IDの取得合戦が繰り広げられるディストピアインスタンスに育ってくれることを願ってやまない。

*1:DBとか外出しするついでにAuroraを試したい

*2:terraform化してみたい

SQLにおける存在仮定の原理

またもやSQLで??????ってなったのちに納得したので書く。

混乱したこと

要素が全てNULLのテーブル

user_id user_name
NULL NULL
NULL NULL
NULL NULL

ここで、「NullTableにuser_id=1のレコードが1つでも存在するか?」を確認する以下のSQL

SELECT (1 = ANY(SELECT user_id FROM NullTable)) AS any_null_result;
any_null_result
UNKNOWN

また、「NullTableのすべてのuser_idは1であるか?」を確認するSQLとその結果は以下になる。

SELECT (1 = ALL(SELECT user_id FROM NullTable)) AS all_null_result;
all_null_result
UNKNOWN

all_null_resultもany_null_resultもUNKNOWNとなる。SQLにおけるNULLは、「将来的に値が決まるかもしれないけど現時点では不明」を表すので、直感的にも正しい。

空のテーブル

では次は、要素が空のテーブルを考える。

user_id user_name

ここで、さきほどと同様に、まずは、「EmptyTableにuser_id=1のレコードが1つでも存在するか?」を確認するSQLとその結果は以下のようになる。

SELECT (1 = ANY(SELECT user_id FROM EmptyTable)) AS any_empty_result;
any_empty_result
FALSE

EmptyTableにレコードが存在しないので、当然user_id=1のレコードも存在しないので、これは当たり前。

問題は次。「EmptyTableのすべてのuser_idは1であるか?」を確認するSQLとその結果。

SELECT (1 = ALL(SELECT user_id FROM EmptyTable)) AS all_empty_result;
all_empty_result
TRUE

???

SQL「すべてのユーザのIDは1です!(ユーザがいるとは言っていない)」

みたいなね。きっつー。でもこれは正しい。

なんでこうなるか

SQLは存在仮定の原理に従うから。

例えば、ぼくは好きな人と付き合えるのかという命題を考えるときに、好きな人がいることを前提としていいのか?でも命題でちゃんと言ってないやん?空気読めってこと?厳密性皆無やん?ということで、古く論理学において議論の種だったらしい。

現代ではそれは「前提としない」ということになっている。好きな人が存在しない場合というのは、単に部分命題にすぎないという整理。

例えば、「ぼくは好きな人と付き合える」という文がTRUEだとすると、以下のように帰納的に理解できる。

  • 好きな人が3人いる場合: 3人と付き合える => TRUE
  • 好きな人が2人いる場合: 2人と付き合える => TRUE
  • 好きな人が1人いる場合: 1人と付き合える => TRUE
  • 好きな人が0人いる場合: 0人と付き合える => TRUE (好きな人が存在しない場合)

3人と付き合えるなら2人とも当然付き合えるし、それなら1人と付き合えるってことだし、じゃあ0人とも付き合える!みたいなね。

これを前段での例に当てはめると以下になる。

  • ユーザが0人いる場合: 0人のuser_idが1 => TRUE

そういうかんじ。

スマブラ強いやつが偉い

ニンテンドウオールスター! 大乱闘 スマッシュブラザーズ

ニンテンドウオールスター! 大乱闘 スマッシュブラザーズ

同世代の共通認識だと思うけど、スマブラ強いやつが一番偉い。なんだかんだで。スマブラ弱いやつが何を言っても説得力がない。スマブラ弱いくせに、ってなる。

ガーリィレコードという芸人コンビの、スマブラのワンシーンを再現した動画がTwitterで流れてきた。爆笑した。で、昨日無限大ホールで生のネタをみた。ファルコンとマリオの漫才。爆笑した。

参考

サブクエリ中のNULL比較

だれにも気づかれないレベルでさりげなくブログのタイトルを変えた。

それはどうでもいいとして、サブクエリにNULL比較を含むときの挙動で混乱したので書く。たぶんみんな知ってること。ぼくは知らなかった。なぜならポンコツだから。

続きを読む

ORDER BY句におけるNULLの同値性

アホすぎてSQLにおけるNULLの扱いが???ってなったので書く。

続きを読む

次に買うキーボード

いま使ってるキーボードはThinkPad USB Tracepoint Keyboardの旧型。Altキーが外れてカパカパしてて使いにくい。キーボード自体は気に入っているので同じのを買いたいけど、もう絶版で買えない。新型は微妙らしくて、次に何を買おうか悩みどころ。

続きを読む

プログラミング言語『Menhera(メンヘラ)』

土日の予定が清々しいほどにスカスカなので、クソみたいなプログラミング言語を作りました。
言語処理系に対する理解度がヤドカリのそれと同等なことに危機感をおぼえ、なんとなくお勉強しようと思ってやってみました。

続きを読む

2016年に買ってよかったもの(暗号化済)

セキュリティ意識が抜群なので、AES(256bit)で暗号化しました。

続きを読む