Mastodonの新規構築 EPISODEⅡ メモリ不足の凱旋

先日、デレステのイベ曲のバカさにTwitterのTLが騒然としましたが、本日ついに今回のイベも後半戦モードに入ったので溜め込んだエンブレムを一気に消費してきました。

 

エンブレム4倍でぶん回すのじゃああ

 

だいたい二時間ぐらい前に6500程度あったんでしたかね。それをまあ10回程度4倍でぶん回して、一夜にして一気に7000点弱から20000点超えを達成。カタルシスがすごいです。これだから(後半戦モード実装後の)アタポンイベはやめられねえぜ!

 

f:id:haramAB:20170524225451p:image

ユッコ。

 

もうすでにユッコは一枚持っているので、MV的には何のプラスにもなりませんが、まあ雫さんも来たのでいいかな。最近はMVに凝って主要キャラのNを溜め込んでいるので所有枠が明らかに足りません。デフォで80とか埋まってる。

 

 

閑話休題。デレステイベも無事、僕の中では終了しましたのでMastodonの設定に移りましょう。めざせインフラエンジニア!

 

自宅。家はTelstra Velocityの利権による犠牲となった地域なので安定したインターネット接続はありませんが(!)、テザリングしなけなしの通信量を割いてサーバ管理します。

学校と違い上流ファイヤウォールによるブロックがないので端末からSSHできます。SSHできるとコピペができます。コピペができるとできないとでは実は雲泥の差です。ちゃんとUnix系が使える人ならばパイプとかwgetとかsedとかawkとかgrepとかを組み合わせ気持ち悪く長いシェルスクリプトを書いて魔法のように全てを解決するのでしょうが、僕はパイプは覚えたて、lessかgrepに渡すのが精一杯です。GUIの恩恵に預かってコピペさせてもらいます。

 

* .env.productionに鍵を入力

.env.productionには鍵が三つ必要ですが、前に何回も失敗しながら何回も使いまわしている鍵を今回も使います。(多分本当はダメ) テキストファイルからSSHによりテキストファイルへコピペする。

 

まずはlxc exec mastodon /bin/bashしてコンテナに入ります。

前回の記事で書いてなかった気がするけど、mastodonはrootの~/mastodonフォルダにクローンされてます。だからcd mastodonしてからvi .env.production。鍵をコピペ。

 

docker-compose.ymlの永続化設定もついでに確認しておきます。ここ失敗してる人いっぱいいるみたいだから怖い。

設定されてない。どうしてだ数時間前の僕。

 

でまあdocker-compose build。これが怖い。こいつすぐメモリ不足になるから。

でも今回はdockerがさらにまたコンテナの中で動いてるんで、壊れたり謎の謎のpostgresプロセスが大量に動いてメモリを圧迫してても、クリーンインストールしなくてもLXDをやり直せばいいだけ。これはいいかもしんない。

 

毎回毎回「fsevents1.0.14がインストールできないけど大丈夫!これどうせ要らねえから!」って言うのビビるからやめろ。本当に大丈夫なのかよ。てか時間を返せ。

 

 で成功する。でもまだbuildだけ、まだまだ油断はできません。

ここでもう一回元記事を確認しておきましょうかね。。。

 

言語設定を忘れた以外大丈夫そうなんで、DBを構築。成功。続いてフロントエンドのアセットを生成。成功。

インストールが終わったのでコンテナを起動します。docker-compose up -d。

curl -o /dev/null http://localhost:3000/してみる。エラーなく100%まで行くので、とりあえずインストールは成功です。

 

* ホストでnginxを設定

ホストでnginxにTCP80やら443やら3000やらを聴かせておいて、リクエスト来たらLXDコンテナ(の中のdockerコンテナ)を叩かせます(nginxをプロキシにする)。

 

今回の元記事によればsudo apt install nginx letsencryptをホストで実行だそうで。その通りにします。

ふたつパッケージあったのに一回プロンプトされただけで終了。不安だ。

 

次にsudo letsencrypt certonly --standalone --standalone-supported-challenges tls-sni-01 -d example.comします。Webを介したチャレンジアンドレスポンスによってSSL証明書を作ってるんでしょう。UFWが弾くと思いますがまずはやってみましょ。

案の定connect errorされたのでsudo ufw status。Webがやっぱり開いてないので80と443を開けておきましょう。

$ sudo ufw allow 443

$ sudo ufw allow 80

$ sudo ufw reload

$ suso ufw status

念のためwgetからもアクセスをチェック。wget http://example.com/は成功するがwget https://example.com:443/はダメ。つまりポートは開いている。

ダメ元で証明書をもう一回試すと成功する。やったぜ。

 

nginxにmastodon用の設定を流しましょう。/etc/nginx/conf.d/mastodon.confを新規作成します。sudoがいるよ。

そしてそこにhttps://github.com/tootsuite/documentation/blob/master/Running-Mastodon/Production-guide.md:マストドン公式のドキュメントにある設定をコピペ。

:%s/example.com/your.domain/しておく。

あとlocalhostとか127.0.0.1をLXDのアドレスに変えておく。

$ lxc listして出てくるeth0のやつね。

 

ここで元記事が「では、よいマストドンライフを!」とか言ってぶん投げます。おいもうちょっとお願いできませんか。

仕方がないのでここからは他の文献も参考にしつつ自前で行きましょう。まずはnginxのリロードです。sudo nginx -s reload。ここでnginxからdhparam.pemがないと怒られます。

 

ググる。

robmclarty.com

ここによると、$ openssl dhparam -out /etc/letsencrypt/certs/dhparam.pem 4096すればいいらしいです。やってみる。めちゃくちゃ時間かかる。

 

 dhparam.pem - no such file or directoryって言われる。は?

 

sudo つけて4096を2048に減らし再挑戦する。がダメ。

普通にディレクトリがなかった。sudo mkdir certsする。それからもっかい例のコマンド。成功。

改めてnginxをreload。こいつ、/etc/sslを読んでる。mastodon.confの中のdhparamのパスを変えてからやると成功した。

早速端末側のブラウザから確認する。動いた!

 

* Mastodonのサービス管理初期設定

ブラウザからユーザを作る。メールが来ることを期待して。。。たぶんこないけど

 

コンテナ内でユーザを追加しようとするとメモリが足りないとnodeに憤怒されたので、プランをアップグレードすることにします。月$10ぐらい払ってやらあ

アップグレードのためスナップショットを取って、それが60分かかるとか言われたところで今日はおしまいです。

 

と、思ったらスワップ領域を作ればいい話のようなのでそうする。

http://qlita.com/scleen_x_x/items/f3fc492bcbf0f6c2896cqlita.com

ここを参考に。

sudo cat /proc/swapsによるとswapは今の状態だとなし。

sudo mkdir /var/swap

sudo dd if=/dev/zero of=/var/swap/swap0 bs=2M count=2048

sudo chmod 600 /var/swap/swap0

sudo mkswap /var/swap/swap0

sudo vi /etc/fstab

/var/swap/swap0 swap swap defaults 0 0を最終行に追加。sudo cat /proc/swapsを見ると追加されてます。これで4GBものスワップ領域を作ったことになります。多すぎない?RAM1024MBだよ?

もう一回ユーザ追加してみましょう。できた!アップグレードなんて要らんかったんや!

 

管理者権限もつけておく。

 

otya.me

 

あとこれの最後の方のcrontabのやつをLXDコンテナで実行しておく。

 テキストエディタを選べって聞いてくるから3のVimBasicにする。他のは使い方がよくわからん。

 

 42 */12 * * * cd /root/mastodon/mastodon-1.1.2/ && docker-compose run --rm web rake mastodon:media:remove_remote

無事crontabには読み込まれたが、実際に実行してみるとエラーになる。mastodon:remove_remoteの部分がダメらしい。

そこを--tasksに置き換えてみる。mastodon:media:clearが一番それっぽいな。まあいいや放置で。

 

諦めて管理者権限でブラウザからログインする。何も表示されない。このパターンはまずいぞ。

とりあえずdbとassetsを再準備する。swapがあるから怖いものなしである。

 

 

まあ色々やったんですけど、全然ダメなんでLXDコンテナの作り直しからやってみましょう。

ログ書いててよかった。

lxc stop mastodon

lxc delete mastodon

lxc list

これで前回の最初の方からやり直しになりました。いえーい

Mastodonインスタンスの新規構築

問題発生時のためのログです。またしても自分用。。。

qiita.com

この記事に従ってやっていきます。環境はUbuntu 16.04 Server on vultr.com, RAM1024MB, 1 vCore.

LXD関係

明示的にAPTでインストールしてみると入ってました。当然。
$ sudo lxd initしてみる。ここで参考文献が追加。

gihyo.jp

前やってグジャグジャになったのも確かLXDだったので熟読しなければ。。。

続きを読む

Ubuntu 16.04 Serverの初期設定手順

自分用メモです。vultr.com (qemuベースのVPS)でnoVNCからrootログインでのスタートを想定。
vultr.comは安いし、探せば新規登録でプリペイド残高半額クーポンが見つかるのでそれなりにオススメです。ちゃんと割引になりそうなリンクを探してそこから登録しましょう。
仮想マシンのデプロイが他と比べて爆速なのとSSDなのと世界中にデータセンタがあるのが強みらしいです。
僕は他のやつ使ったことない元VPS童貞なのでわかりません。AWSなら12ヶ月無料だったらしいですね。クソが。

APT更新

# apt update

UFWのインスコと設定

# apt install ufw
# ufw default deny incoming
# ufw default allow outgoing
# ufw enable
# reboot

sudoユーザの作成と設定

# adduser boku
# gpasswd -a boku sudo

SSHを多少セキュアに

/etc/ssh/sshd_config

Port 0000
PermitRootLogin no
PermitEmptyPasswords no
Protocol 2
LoginGraceTime 30

# ufw allow 0000
# ufw reload

/etc/services

22/tcp -> 0000/tcp
22/udp -> 0000/udp

# reboot

After reboot, try SSH in instead of noVNC
otherPC$ ssh -p 0000 boku@server.net

What's Next

自動でセキュリティアップデートだけやるやつをやる。あとufwもうちょっといじる。

バス停の男

バス停の男

以下は全てフィクションであり、実際のものとは一切関係ありません。

 

バイトが終わった後は夕食だ。働いてる奴ら全員でその日の残り物を食べる。

「ノベくん辞めるのかあ。ウチの唯一のイケメンがなあ」

先輩がボヤいて、何か口に入れた。
ノベくんは、この店に最近バイトとして入ってきた中学生だ。店長の知り合いの息子ということで、洗い物をしてもらっていた。

「お母さんには言ったの?」

「ウン。今朝、言った」

ノベくんは特に悪びれもせずに答えた。
俺はノベくんの方を見ないようにする。

「せめて今週いっぱいぐらい働けば」

ノベくんは黙ってスマホの画面を見る。俺は天井をただひたすら見ている。

やがて、ノベくんの母親が迎えにやってくる。

「ノベくん、やめるって言ってますけど」

「エッ。初めて聞いた」

ノベくんは嘘をついていたのだ。母親に伝えてなどいなかった。

「どういうこと。やめるって。なんでよ」

「最近、具合が悪いんだよ」

ノベくんはスマホを見たまま答える。

「嘘だ。お母さん、辞めたい理由知ってるよ。彼女が出来たからでしょ。サッカーが忙しいからでしょ」

「でも本当に具合が悪いんだよ」

ノベくんは悪びれない。むしろ苛立って、そしてそれを隠そうとしない。

「へぇ。中学一年生で、もう彼女がいるんだ。すごいなあ。さっすがイケメンだなあ」

先輩はまるで楽しんでいるかのようだった。
俺はずっと黙り続けていた。

黙り続けるしかなかったんだ。それが俺にできる精一杯の最善手だった。
俺はその時のノベくんの何もかもが気に入らなかった。口を少しでも開いたら、途中でかんしゃくを起こして、(これは医学的にはパニック障害と呼ばれるべきものだ)、ひどく口汚く罵ってしまうだろうと思った。

まだ若く、蛹から羽化したばかりの俺には、幼さは、まだ皮膚の表面の痛々しさとして残っていた。それは実感できるものだし、常に俺に何かを思い出させようとするし、逃れられないものだった。

だからこそ俺は未熟さを許せないんだ。未熟なノベくんを許せないんだ。しかし、同時に、未熟さを許せないこと自体も未熟さそのものであろうことも知っている。未熟さに対して、感情的に喚き散らすことがどれだけ愚かか想像がつく。

俺はそういう痛々しい未熟さに、内側と外側から挟まれて、結果、とうとう耳を塞いで目をそらすことしかできなくなったんだ。


メシを食い終わったので帰る。ノベくんの母親は店長と話すようだ。
バスに30分ほど乗ったところに家はある。

バス停のベンチに、異人種の大男がうつ伏せて寝ていた。堂々としたものだ。
青いギターがそいつが寝ているベンチに立てかけてあって、ベンチの下に赤ワインのビンが転がっていた。

ずいぶんその様が見事だったので、ついちょっと見入ってしまったが、関わり合いになりたくない。目をそらす。

「おい、おまえ」

大男がどういうことか起き、かすれた声で話しかけてきた。バスはまだ来ない。

「元気か」

「まあまあだね。そっちは元気そうじゃないね」

「具合が悪い」

「そう見えるよ」

「まあ、座れや」

大男は起き上がり、俺に席を空けた。
関わり合ったら面倒なんだから、よせばいいのに、何故かこのワインとギターを従えてバス停で寝ている彼に興味が出て、隣に座ってしまった。

「人生はつらいね。でもつらいことがなきゃ成長なんかできないからね」

もうこうなってしまうと俺もすっかり気分に乗ったようで、

「まあそうだね」

などと調子を合わせて答えてしまうのだった。

「おいらはよ、兄弟も死んで、おっ母も死んで、婆ちゃんも死んでよ、ひとりぼっちだよ」

「人間は元から孤独なんじゃないかい。こうして話していても、君は俺じゃないから俺のことなんてわからない。俺が本当にいるのかどうかすら確かじゃないんだ。でも、君が俺になってしまえば、俺は俺じゃなくて君になってしまう」

「なぜならおいらたちは個だから」

驚いた。ちょっと茶化すつもりで言った俺の考えの、その芯の部分をとらえて、それが常識かのように答えた。

「びっくりした。話が分かるじゃないか」

「おいらはばかじゃないのさ」

突然ギターを手にとる大男。

「ギターは弾くかい?」

俺は音楽全てを苦手としている。そう伝えた。

「そうか」

大男だ慣れた手つきで何かカントリー調のフレーズを弾きだした。まさにその時、バスがやってきた。

「あれ、俺のバスだわ」

「そうか。なあ、ちょっと助けてくれよ。どうしても5ドルがいるんだ。おなかが空いて死にそうだから、パイをくわせてくれよ」

急にそこいらによくいる乞食に成り下がった賢人の大男であった。

「2ドルが精一杯だな」

いい気分にしてくれたお駄賃のつもりで、コインを一個やり、乗り遅れる寸前のところでバスに飛び乗った。
バスの運転手に運賃を払う。いつもは小銭で溢れかえっている財布は、いつになく軽かった。

論理少女ろじか【第1オクテット】

$

 

餃子チェーン店のテーブル席で、野暮ったい女がビールを飲みながらノートパソコンに何か打ち込んでいる。ひどいクマと死んだ魚のような目はまるで亡者だ。亡者がスウェットを着て餃子をつまんでキーボードを叩いている。

老紳士が現れる。ボウシを取り、くすんだ色のトレンチコートを脱ぎ、女の対面に当然のように座る。老紳士は老いているからか、挙動がぎこちない。

「やあ、赤坂くん」

女は答えず、画面を見ながらチャーハンをゆっくり口に入れ、咀嚼する。

「赤坂くん、赤坂ちとせくん。ワシじゃよ」

女、赤坂は無視し続ける。ポッケからイヤホンを取り出し、耳にはめ込む。無言の意思表示だ。老紳士はしばらく黙っておいて、それから何を思ったか、半分衝動的に赤坂のパソコンをパタンと閉じてしまう。

「おい」

乱暴に、短い抗議の意を示す赤坂。老紳士はとぼけて、それを意にも介さず用件を切り出した。

「ロシア上空に、GPS衛星と偽装されたアメリカ軍の偵察軍事衛星がある。それにちょっと侵入(はい)ってきてほしい」

手に折りたたまれたコートのポケットをさぐり、メモリードングルを取り出す老紳士。赤坂はそれをむしり取って、小さな機械に差し込み、それを有線でパソコンに繋いだ。

「あいかわらず厳重だな」

「パソコンに直接差し込むのは、信用できる機器だけにしてるんです。教授、あなたからそう習ったはずですけど」

呆れる老紳士に皮肉を返すと、赤坂はメモリードングルに入った資料を開いた。

「5ページ目にリストされているETN-G-129がそれだ。表向きは、商用オフザシェル化の一環として宇宙関連企業のパラジウム社が受託し打ち上げたBlockⅢ代替のGPS衛星だ。しかし、実態はちょいと違う」

ある資料には、膨大かつ一般人には意味不明な数列が延々列挙されていた。2桁の16進数が大量に連なっている。しかし、彼女にはこれらの意味が分かる。

「ロシア衛星への通信の傍受……」

「そうだ。しかも、暗号化されていたものをご丁寧に平文にして転送している。NSAも随分と腑抜けたものだよ」

注文を取りに来た店員にお冷を頼んで追い返す老紳士。彼がひどい下戸であることを赤坂は知っていた。

「こんなもの、私にどうしろと?」

「まあそうだな。依頼主はアメリカ側からのアクセスを止めさせろと言っているがな、それじゃあんまりつまらんだろ」

店員が会話を中断させ、水を置いていく。老紳士は一口、いかにも老人といったしぐさで飲む。

「赤坂くんの好きにしていい。おそらくコントロール系統はNORADに接続されている。君の腕ならば、衛星を踏み台に使うのも良かろう」

「それだったら、もう少しマシな手があるし、だいたい軍やら何やらに侵入するのはあなたの持ってくる依頼のせいじゃないですか」

「はて。ワシはバス接続の危険性以外にもこう教えたはずだがな。『君たちは楽しい楽しいオモチャを手に入れたのだ』とな」

ーーーーーーーーーーーーーーーーーーー

帰る途中。コンビニに立ち寄り、ソフトクリームを食べるための座席に座り、キーボード付き携帯端末を公衆無線ネットに繋ぐ。会員登録をしろとせがむ画面を消し、スクリプトをいくつか走らせると、すぐに管理者権限が手に入る。

いくつかプログラムを自動インストールさせ、オニオンルーティングとVPNで秘密の回線を作り出す。これで発信元の特定が困難になる。

そこから接続するのはとあるアメリカ軍人の個人端末だ。以前とあるショッピングサイトから流出した情報を使って、たやすく乗っ取る。今、アメリカはだいたい朝の10時。運が良ければ、軍人は軍施設内にいるはずだ。果たして、軍人は施設内におり、乗っ取った端末から施設の無線ネットに接続出来た。

軍用のシステムはちょっと頑丈で、コンビニのサーバほど簡単に侵入らせてはくれない。辞書攻撃を仕掛けつつ、母校たる東京電波大学の誇るスーパーコンピュータを使って秘密鍵の推測を行う。

20分程度かかって、なんとか秘密鍵を割り出した。同じ公開鍵が無線ネットの接続に使いまわされていたのはラッキーだった。こうして米軍のシステムに侵入できた。

しかし、いくら同じ米軍のシステムと言えど、見たところこの施設はただの空軍基地。件のスパイ衛星のコントロールシステムはそこには無いようだ。
そんなことは赤坂も最初から分かっていた。赤坂の狙いは、空軍基地にある衛星通信用のアンテナだ。これを使い、標的の衛星の近くにいる衛星にアクセスし、乗っ取り、そこから標的の衛星にアクセスするのだ。

これをやってみると上手くいかない。アンテナから衛星が遠すぎたのだ。仕方なく他の米軍基地をまた乗っ取り、やっと標的にアクセスできた。早速データベースを覗きこむ。

「確かに、教授の言うだけの価値は多少あったかもな」

中身は、ロシアと米NSAの秘密鍵などでギッシリだった。これだけ色々あれば、次また教授が何か言ってきても楽になんとかなるだろう。

『衛星はーーNORADに接続されている。ーー踏み台にするのも良かろう』

教授のほざいたことをふと思い出し、コントロールシステムへの信号に偽装フレームを紛れ込ませてみる。偽装フレームには小さなコードが仕込んであり、相手システムが受け取ると即座に実行され、こちらに諸々の情報を返してくるーーNORADを乗っ取るのに必要な情報だ。すると米空軍の心臓を掌握したも同然である。

いささか満足し、帰る準備として証拠の記録であるセキュリティログを隠滅しようとして気づいた。セキュリティログが明らかに不自然だ。誰かが一部を消したのだーー赤坂が今やろうとしているように。

「私以外に、誰かが侵入っていたんだ。しかも、私とほぼ同時に」

少し気味が悪かったが、適当に証拠を処分し、衛星は傍受したデータではなくランダムに生成したデータを送信するようにしておいて、その場は終わりにした。


ーーーーーーーーーーーーーーーーーーーーー

レジに座り、大きなあくびをした。普段、赤坂は平成商会でアルバイトをしている。平成商会は新横浜にある、電子パーツの問屋だ。マニアと業者だけがやって来て、一般人にとってはガラクタにしか見えない物を買い漁る、知る人ぞ知る店である。

「やあ君。ペケ86kのキーボードを探しているんだがね」

声をかけられ、顔を上げた。教授だった。ふざけている。そんなもの、彼が探しているはずもない。依頼の成果物を取りに来たのだ。

「これ、衛星のコンソールへのリンクです。米軍施設にあるコントロールシステムの電源が付いている限りは、自由に例の衛星をコントロールできます」

事も無げに言い、携帯端末に二次元コードを表示して差し出す。教授はうなずき、コードを写真に撮る。

「報酬はこれだ」

教授は提げてきた紙袋から何か取り出した。大きくて古臭い、中世のコンピュータの周辺機器だ。

「ペケ86のキーボード……」

「ずいぶん探したんだぞ」

教授はなぜか誇らしげである。これには呆れるしかない。

「そうそう。ウチの大学のスパコンあるだろ。あれが短時間何者かによって不正利用されてたらしくてな。学内大騒ぎだ」

ペケ86kのキーボードを撫でて、赤坂は目を逸らした。

「ワシの研究室にもちょっと来てね、誰がやったか調べてくれって言うもんだから見てみたら驚いたよ。RAMに公開鍵がたっくさん入っておったよ。あれがNORADの鍵かね」

「いや、あれはどっかの米軍基地の鍵でした。NORADの鍵は私が大事に保管してます」

「鍵は大事に保管ね。当然だ」


教授が帰った後。店主の勧めでペケ86kキーボードを店頭に展示すべくパソコンに繋いでいる時。

「あの……すみません」

どこかから女の声がするではないか。嫌だな、怖いな、と思いながら声の方向をたどると、一つの端末が音声通信をしていた。
これだからP2P通信は。無視して通信ソフトを落とす。が、何度やっても立ち上がる。

「ちょっとお尋ねしたいんですが……」

電源を落としても、もう一度つく。コンセントを引き抜くと、別な端末に移る。

「もう、やめてくださいよう。ちょっとぐらい話きいてくれたっていいじゃないですか。ひどい」

「あんた誰。メンヘラ出会い厨?」

「いやいや、あなたこそ誰なんですか……?米空軍の迎撃システムに侵入したの、あなたでしょ」

背筋がぞっとする。不自然に消えていたログを思い出す。

「私はただのバイトだ。消えろ」

キーボードを叩き、スクリプトを走らせて回線を遮断しようとするが、文字が入力できない。

「ネット切ろうとしてますよね。それはボクが困るので、キーボードの接続を切りました。ははっ」

ここで赤坂は確信する。こいつがあの不自然なログの正体だと。赤坂と同時にNORADをクラックしたハッカーだと。

「気持ち悪い」

「心外だなあ。ボクはあなたに興味があってはるばるここまで来たんですよ。ちょっとぐらい相手してください……」

突然10秒程度途切れる。やっと消えたかと思う。

「よっと」

後ろで声がする。メイドロボだ。やつは消えなかった。それは淡い期待に終わった。やつはメイドロボを乗っ取った。

「ますます、気持ち悪い」

やつは不思議そうに自分の手や服を眺めた。
ここの店主はメイドとレトロPCが大好きだ。置いてあるロボは無駄に美形の機種を買い、無駄にフリフリでクラッシックでステレオタイプなメイド服を着せられていたのだった。
赤坂が呆然としていると、メイドロボは向き直り、はにかんで言った。

「こんにちは、クラッキングのお姉さん。ボク、ろじかです。どうぞよろしく」

ファンタのゼリー

ファンタふるふるシェイカー的な飲み物が売ってたので買いました

 

f:id:haramAB:20170330163804j:image

 

2ドル……普通だな!

 

(こっちでは600mlのコーラが必ず$3以上する)

 

ファンタふるふるシェイカーと同じく、振ってから飲めと書いてある

 

f:id:haramAB:20170330163933j:image

 

ふる

 

飲んだらファンタふるふるシェイカーの味でした。

 

トゥデイズ・ボンバーズ・ポーインツ

 

警告: 75点……

 

普通においしいし安い。二度と買わないけど満足

 

それではまた来世!お疲れ様で〜す⤴︎⤴︎⤴︎⤴︎⤴︎⤴︎⤴︎⤴︎⤴︎⤴︎⤴︎⤴︎⤴︎

ティッシュに丸めてポポイのポイ!

 

「おえっ」

 

吐いた。女の子がぼくのTシャツの胸にツインテールにした頭をおしつけてゲロゲロと吐いた。

 

メタ的に言うところの「オタサーの姫」然とした見た目である彼女の特性は、近年急速にインターネット・ミームのひとつとして形成されたステレオタイプのそれと寸分違わず、つまりブスだ。

 

それもすげえブス。顔が丸い。丸いどころか、洋菓子のハーバーのように横長である。CMソングを思い出して、本人を目の前にして笑いそうになる。

目と唇は小さい。この2つだけはとびっきりお淑やかだ。唇消失バグ、などと思いついた時も声に出して爆笑するのを必死に堪えた。

鼻は低いくせに大きい。顔にゴキブリが薄くへばり付いているかのようだ。

 

しかし、彼女は典型的なオタサーの姫。ミームの体現である彼女は、例によって男所帯のオタサーでひどく激しく承認されていた。

ぼく以外のほとんどのメンツは、今まで接触したことのない異性との邂逅にはしゃぎ、騒めき、狂っていた。そのうち制御不能になるのは目に見えていた。そこまででミームとしてワンセットだ。

残念ながら、ぼくははしゃぐ気になれなかった。このブスが大嫌いだった。そもそもぼくは自分以外の人間がだいたい嫌だ。

 

小学生の頃、兄貴のゲームを勝手にプレイしてから、その主人公の病気をトレースしようと自己暗示をかけ続けているうち、本当にその病気に近い思考回路を手に入れた。あの日ゲームで見たように、人間はだいたいグロテスクな肉塊に見える。

日常系のアニメやまんがタイムきららなどは肉塊に見えない。人間とかけ離れているから。しかし彼らはとても幸せで平和そう。彼らを憎む毎日である。

 

話を戻そう。そうだ、ブスだ。あのブスのゴミクズは俺のTシャツにゲロを吐いた。

オタサーの飲み会をしていた。ぼくは唯一の友人がこのサークルの主催なので仕方なくこういう催しに参加する。意外なことに、ぼくは結構こういう集まりを楽しむことができる。

なぜだろう、なにか全然別の人格がぼくの脳髄の奥底から出てきて、自己暗示の10年間で殺しきれなかったまともな人格が出てきて、まるで普通のやつみたいに社交をするのだ。毎回驚かされる。

この日、ゲロ袋はぼくの隣に座った。しばらく気づかなかったが、ぼくの足などをあの汚い雑菌まみれの手でぺたぺたぺたぺた触ってくるところで勘づいた。

このゲロは、自分に興味ないように涼しい顔をしているぼくが憎たらしく、まるで最後にひとつだけ残ったビデオゲームの実績のように見えて、ぼくを今日晴れて「解除」しようと企んでいるんだ。ぼくをそこいらのオタクと同じ目でしか見ていないのだろう。

 

性的な視点で見られた。こんなゲロ袋に、このグロテスクな肉のゲロ袋に、セックスとして認識されてしまった。

 

途端、ぼくの社交人格は再び妄想の肉塊に押しつぶされ、ぼく本来の人格が戻った。

 

「ァ、んっ、脚を触るなァアアアアイ!」

 

逆上したぼくは即座に立ち上がり、大声で叫ぶ。

 

「お前、おい!お前!気持ち悪い…気持ち悪いんだよ。豚の心臓のような見た目で、ぼくをその粘液で汚して、雑菌を感染させて殺すつもりでしょ?分かってる。知ってるんだよ。分かるか?

クソ。やめろ。やめろって言ってる!

やめろ!アアアアアアアア!!!

やめろやめろやめろやめろやめろやめろやめろ!

ぼくを殺すんじゃない。ぼくは病気なんだぞ。認識がおかしくなる病気です。

保護されます。ぼくは保護します。国が保護します。豚を殺すんじゃ、殺す。

セックスしようとするな!ぼくに雑菌をやめろ豚の心臓。豚の心臓はぼくの雑菌をやめろ!!」

 

大声でまくしたてて、はっと気づくとサークルのやつらは呆気に取られて、困惑しきって、どうすればいいか全く考えあぐねていた。

 

ワンテンポおいてゲロ袋はわあわあ言い出した。泣き出したんだと思う。よくわからない。

 

何人かが何か非難の目を向けた。ぼくに非難の目を向けた。ぼくを排除しようとしている。

このブスのせいだ。この醜い、グロテスクの肉塊がいるからいけないんだ。

ぼくはゲロ袋の真ん中の辺りを殴った。拳にうんと唸りをつけて殴った。人体でいう腹のあたりにあたった。

 

袋の真ん中を強くたたくと中身がいきおいよく出てくる。ゲロ袋の場合はゲロを出した。ぼくと対峙していたのでぼくの胸に吐いた。

ぼくのTシャツが汚れた。ぼくは死んでしまう。雑菌がぼくを侵してしんでしまう。

 

半狂乱のぼくはゲロ袋を必死に排除しようとした。叩いて、蹴って、店の外になんとか出した。

そうしたら、あなたら、警察が来ておこられたんだ。

 

ねえ、こんなのおかしいじゃないですか?

ぼくの友達はサークルを運営しているし法学部ですよ。きっとぼくの精神異常を認めて無罪にします。

ぼくは健常者とは違いますからね。お前には、気持ちが、分からない。