なんでも 21日目

世界を終わらせるアプリでついた嘘

この記事自体は「なんでも Advent Calendar 2019」の21日目の記事となります。

内容はQiitaのクソアプリアドベントカレンダー2019 20日目、「この世界を終了しますか?」の振り返りです。

とりあえず作る時に思ったことを一通り書いてます。

この記事の前提

この記事はクソアプリアドベントカレンダー2019の投稿日よりも前にかかれています。

なにを作ったか

すべてが上手くいっていれば、投稿された画像がノイズに浸食されていくアプリが投稿されているはずです。
記事にある通り、Mask R-CNNを用いています。

なぜ作ったか

世界中の物体が消えていったらおもしろいし怖いよね、というところを表現したかったのはQiitaの記事の通りで間違いありません。

ただ、あの文章中で「なにに感動したか覚えてない」はやや嘘が入っていて、当時はMapFanという地図アプリで住所検索すると自分の自宅が出てくることに感動していた気がします。

今となってはGoogle Mapなどで住所で検索すると、その地点が表示されるというのは当たり前の技術だけれども、子どもの頃には「パソコンがあるとこんなすげえことできるんだ」って思えました。

昔は地図の索引とかをめくりながら「P42の……Cの3……ここだ!」とかやってたんですよ。
検索する→すぐ情報が出てくる
はすごい革命だと思います。

「シャットダウンの動き」にそこはかとない恐怖を感じているのは事実ですが、それが最初にパソコンを触ったときなのかどうかは記憶にありません。(Windowsだった気もする)

なぜTwitter経由で画像を取得しているか

ファイルアップローダーをつける手が考えられましたが、バリデートをやりたくなかったのでTwitter経由にしました。

Twitterである程度フィルタリング+サイズ圧縮してくれるので、予期しないデータが送られてくることをある程度防止できます。

単に画像入力のI/FとしてTwitterを用いているだけで、それ以外の意図はありません。

リプライの文章

同じ文章ばっかり返しているとTwitterに目をつけられそうだったので、いくつかランダムで文章を生成してリプライするようにしています。

以下は一例です。
この操作は承認されました。 アノマリーは無視されます。 情報は断片的です。

あなたの行動は全面的に肯定されました。 虚数空間への影響は無視できません。 ハミルトンはこの操作に懐疑的です。

この操作は承認されました。 プランク値が-iに変動。 プラスチック。

この操作は支持を得ました。 社会はこの暴挙を許さないでしょう。 45%。

元々は「世界を入れる」→「虚無に帰す」だけのアプリだったので世界設定的なものは必要なかったのですが、
この文章を通すために世界設定(嘘)が必要になりました。

世界設定

今回は、
「どんな世界設定か」 → 「文章を出す」
ではなく
「どんな文章を出したいか」→「世界設定」
というアプローチでした。

リプライの一行目は操作の結果を示しますが、この結果の文章は以下の二通りが考えられました。
- 「世界は消滅しました」(他者の介在を許さない)
- 「操作は承認されました」(何者かが介在している)

前者はユーザーが全ての権限を掌握しているのに対して、後者はユーザーはあくまで「組織の一員として」なにかを行っている体になります。
私は官僚的な方が好きなので後者を採用しました。

「承認されました」という文章は、同時に「否認されました」が存在する可能性を残す表現です。
ですが「否認される」ことは面倒なので作りたくありません。
(それともランダムで否認される機能を作る? 何のために?)

この設定を通すためには、組織のワークフローを機能不全に陥らせる必要があります。
要するに組織のルールとしては「承認する」というフローを通す必要があるものの、
そのフローは既に形骸化しており、「とりあえずはんこがあればいい」という状態を想定します。

はんこ押しマシーンの誕生です。

その結果、ハミルトンが誕生しました。
ハミルトンというのはこいつです。

あなたの行動は全面的に肯定されました。 虚数空間への影響は無視できません。 ハミルトンはこの操作に懐疑的です。

腐敗している組織であっても、何人かはその組織に疑問を持っているものです。
ハミルトンはその状況の表現者として生まれました。

彼は真面目な男で、「自分達が一定数の世界を消滅させないと現状を維持できない」ことをわかってはいながらも、
それを理由に無軌道に世界を消滅させているメンバーがいることに疑問を感じていました。
彼は「この操作は愉悦のためにやっているだけだ」と時折異議を唱えますが、組織の意思を曲げるほどの力を持っていません。

従って「おかしいんじゃないか」と文句を言うだけの存在に留まっています。少なくとも今は。

Twitterアカウントの「nyauryry」というのは、世界を消滅させる力を持った謎の生物です。

最近発見されました。

宇宙がこのまま膨張していくと、やがて物質の密度が0に近付き絶対零度に向かって冷却し続けるというビッグフリーズを迎えることになりますので、一定程度の世界を削除して宇宙の密度を保つ必要があるという体で組織が生物に世界を食わせています。

デプロイという苦痛

フロントはReact
APIサーバーはDjango
Twitter用のバッチ処理はPython
で作り始めて開発はせいぜい2日ぐらいで終わったと思うんですよ。

小規模なアプリなので大して時間はかかりませんでした。

そのはずなのにそれからデプロイまで4日ぐらいかかってます。
これもすべてデプロイでつまずいたからです。

今回はサーバーサイドはAWSのEC2を使ったわけですが、そもそも、何をどうやればDjangoを起動できるのかよくわからないし、起動してもなんで動かないのかわからないという地獄。

後から考えれば、最優先事項は「問題が起こったらログを出力する」だったのですが、「早く動かしたい」という病に勝てず延々とコード修正+デプロイを繰り返していました。

一個一個設定を見直して、ようやく安定稼働したころには一週間が過ぎていました。

みんなどうやってこの辺学んでいるんでしょうか。

表現という快楽

今回は何となく頭の中にあるものがそのまま出せた気がして開発者満足度の高いクソアプリにしあがったと思います。

その後、クソアプリAdventCalendarが投稿されていく中で、「ああ、VRにするべきだった……」とか「リアルと連動するのいいなあ」とか色々思うことはありましたが、なんとなく伝えたいことは伝えられるものになったのかなという思いがあります。

また来年。頭の中でもやもやと溜まっているものを外に出すことができたなら、すっきりとした気持ちで年越しを迎えられるのかな。

ちょっと排泄っぽいですが。(クソアプリ回帰)

ツイッターでシェア
みんなに共有、忘れないようにメモ

iotas𓆡創作支援アプリ運営中𓅬

創作支援ツールとかを作ってます。(Python) https://www.world-type.com 歴史成分多め。

Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。

また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!

有料記事を販売できるようになりました!

こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?

コメント