strelka_dogのブログ

徒然なるままに心に移り行くよしなしごとをそこはかとなく書き尽くるブログ

GAN(画像生成)で遊んだ話

これはKMCのアドベントカレンダー21日の記事です
adventar.org


僕の前の人たちも結構遅刻してたので遅刻公開でもいいかなと思ってたら今日になりました。
アドベントカレンダー、僕の前日のhatsusatoさんの記事がこちらです
hackmd.io

経緯

KMCに強いGPUを積んだマシンがやってきました。昨今流行っていますよねAIとかDeep learningとか、せっかくなのでこのつよつよGPUマシンを用いて流行りの機械学習をしてみようとしたのがきっかけです。

実はこれをやる前にもテキストのバイナリ分類を学習させて遊んだんですがサークルのアドベントカレンダーとして公開するには憚られる内容だったので(授業の課題でGANで何か作る課題が出ていたこともあり)GANで遊んでみることにしました。

やったこと

最初は来年の干支である寅のイラストを学習させて年賀状を作ろうと思ってたんですが、ググってみると全く同じことをやってる方がいたので適当なデータセットで学習させるだけの話にしました。

データセット

血球の画像のデータセットです。血球の種類等のラベルもありますが今回は画像生成が出来ればそれで十分だったためラベルは用いていません
github.com

モデル

Light weight GANを用いて学習を行いました。ポケモンイラスト生成なんかで知ってる人が多いかも
github.com

やりかた

やり方もなにもreadmeに書かれている通りなんですが説明しないと書くことが何も無くなるので書きます
pip install lightweight-gan
でインストールした後、
lightweight_gan --data (画像のパス) --image-size 512
とやるだけです。
すごいですねコードを全く書かなくてもGANを走らせることの出来る時代ですよ。
データのかさ増し方法の指定などパラメーターもありますがこれで最低限動きます。気になるならreadmeを読んで。

結果

学習の過程がこちら赤血球が赤血球の形になってますし、なんか血球の顕微鏡画像に見える画像が生成されてますね。血液学の授業は一夜漬けだったのでもう血球画像見せられても赤血球の連銭形成とかしか分かんないですけど……

400枚程度の画像でこんな画質の高い画像が生成できるんですね。すごいな

ちなみにさらに学習を続けた結果がこれ
f:id:strelka_dog:20211224113558j:plain
似たような画像が生成されて過学習に陥ってそうなのが分かります。
ちなみに黒くなってるのはデータのかさ増し手法に「Cutout,Translation」を指定したからです。
データセットの画像を黒い四角でくりぬいたり、黒背景で画像を上下左右にずらしたりしてるから黒色が出てきたんだと思います。かさ増しの種類を
--aug-types [Offset]
にすると黒ずみは無くなると思います。

以上ノンコードで出来るGANによる画像生成でした。

22日担当は
こちらの記事です
blog.dnek.net

M5stackでWake on LANをした話

別ネットワークにあるPCからwake on lanで他のPCを起動したいということがあったので、以前elchikaのキャンペーンで記事を書いた時
elchika.com
頂いたM5stackがあったことを思い出しM5stackからwake on lanでPCを起動できるようにしてみました。



まず
スケッチ>ライブラリをインクルード>ライブラリを管理
からWakeOnLanをインストールします。

#include <WakeOnLan.h>
#include <M5Stack.h>
#include <WiFi.h>
#include <WiFiUDP.h>

const char* ssid = "SSID";
const char* password = "wifi-password";

WiFiUDP wifiUdp; 
WakeOnLan WOL(wifiUdp);

void setup() {
  // put your setup code here, to run once:
  M5.begin(true,true,false);
  Serial.begin(9600);
  M5.Power.begin();
  M5.Lcd.print("M5stack start\r\n");
  WiFi.begin(ssid, password);
    while (WiFi.status() != WL_CONNECTED){
        delay(500);
        M5.Lcd.print('.');
  }
  M5.Lcd.print("connect");
}

void loop() {
  // put your main code here, to run repeatedly:
  if(Serial.available()) {
    
    String msg = Serial.readString();
    M5.Lcd.print("\r\nReceived:" + msg);
    if(msg.indexOf("wakepc")>-1){
      M5.Lcd.print("start");
      WOL.sendMagicPacket("MACアドレス");
      M5.Lcd.print("\r\nMagic packet sent.");
    }
    M5.Lcd.print("\r\nend");
  }
}

これでwifiに接続後、PCからシリアル通信で「wakepc」という文字列が含まれる文字列を受け取ると指定したmacアドレスを対象としたマジックパケットが送信されPCの電源が点きます。

最初はUDPで手書きでマジックパケットの送信を実装しようとも思ったのですが念のためライブラリ無いかな?と思って検索したところWakeOnLanのライブラリがありました。
便利ですね

Slackでチャンネルを追い出されても戻ってくるスクリプトを組んだ話

いろはにはツンデレな友達がいて彼のことを褒めるとすぐに恥ずかしがってサークルのslackのとあるチャンネルから追い出そうとしてきます。

なので今回はSlackでチャンネルを追い出されても戻ってくるスクリプトを組んでみました。

環境

Slackのevent APIを使って実装しようと考えたのでRailsでサーバー立てようとしたけどPOST受け取って決まった動作するだけならGASで十分じゃんということに気付き今回の環境はGASに決定!

コード

function doPost(e){
  var params = JSON.parse(e.postData.getDataAsString());
  if (params.event.type=="member_left_channel" && params.event.channel==チャンネルID(Cからはじまるやつ) && params.event.user==ユーザーID(Uからはじまるやつ)){
    var sendData = {
      'channel': チャンネルID(Cからはじまるやつ),
      'token':トークン(xoxpからはじまるやつ)
    };
    var options = {
      "method": "post",
      "payload": sendData
    };

    UrlFetchApp.fetch("https://slack.com/api/conversations.join", options);
  }
  return ContentService.createTextOutput(params.challenge);
}

アプリの登録とかURLの登録とかの方法まで書くのは面倒なのでこちらでも参考にしてみてください
www.pnkts.net

最初監視するイベントをchannnel_leftにしてたんだけどどうやらこれは自分でチャンネルから出た時に通知が飛ぶみたいで他人に追い出された時は反応しなかったのでこのmember_left_channnelを使った。

ちなみにmember_left_channnelで届くJSONはこんな感じ

{

    token:トークン
    team_id:チームID
    api_app_id:APIアプリID
    event:{
        type:member_left_channel
        user:出て行ったユーザーのID
        channel:出て行ったチャンネルのID
        channel_type:C
        team:チームID
        event_ts:タイムスタンプ
    }
    type:event_callback
    event_id:イベントID
    event_time:時間
    authorizations:[
        0:{
            enterprise_id:null
            team_id:チームID
            user_id:BotのユーザーIDかな調べてないから分からんけど
            is_bot:true
            is_enterprise_install:false
        }
    ]
    is_ext_shared_channel:false
    event_context:1-member_left_channel-チームID-チャンネルID

}

詰まったところ

大きく3つの部分で詰まった

  • まず送られてくるjsonの形式を勘違いしてて最初上手く動かなかった。GASってdoPostの関数内でconsoleに書き出した時後でその出力を確認する方法ってないのかな
  • 次に使用すべきAPIを間違えてた。雑に英語のAPIのページ内でleftとかで調べてたら出てきたchannnel_leftを最初に使ったんだけど、さっきも言ったようにchannnel_leftのイベント監視では人に追い出された時に発火しないので今回目的としている「Slackでチャンネルを追い出されても戻ってくるスクリプト」には使えなかった。member_left_channnelを使おう
  • さらにチャンネルに参加するAPIも間違えてた。Slackの英語で書かれたAPIのページを見ながらconversations.inviteが使えるのかなと思って書いたが上手くいかなかった。エラーを見るとどうやら自分のアカウントを自分でinviteするのは出来ないらしい。自分がチャンネルに参加するのはconversations.joinを使わないとダメだということが分かった。


ネタプログラムとしてはまぁまぁ面白いのが出来た気がする。いろはは集中力が続かないので一晩で出来るプログラムしか書けないんだよね

今後もいいネタが思いついたら作っていこうと思う。

今年やったこととその方法を簡単にまとめた

この記事はKMCアドベントカレンダー17日目の記事です。
自分の担当が18日目だと思っていました、18日だとしても遅刻してるんですけどね。でもまぁ僕の前のnaka6さんも書いてないのでなんとかなるでしょう
adventar.org
書くことが無かったので今年やったことを思い出しながら羅列してみました。こんな記事でごめんなさい……

zoom自動録画プログラム

これは何?

○○ナウイルスの流行により決まった時間にzoomを起動してその動画を録画し保存してくれるプログラムの需要が高まりました。そこで寝ていても勝手にzoomを録画するプログラムを組みました。

実装方法

プログラムは書きなれているC#を使って書きました。今回は簡単なまとめなので具体的なコード等は省きます。

  1. タスクスケジューラにより指定時間より少し前にみんな大好きseleniumを使ってzoom授業を起動
  2. 指定時間にプログラムからwin+Alt+Rのキーを投げてwindowsのゲームバーにより録画を開始
  3. 授業終了時間にもう一度win+Alt+Rのキーを投げて録画を終了
  4. 途中で自動から手動での操作に切り替えられるようなボタンをつける

トラブル

画面共有の切り替え時にウィンドウサイズが変わって録画が中断される
zoomの設定でなんとかなる

先生が時間通りに授業を始めない
諦めて

チャットサーバーの立ち上げ

これは何?

僕の参加しているとあるサークルで使用するあまり外部にログを残したくない用のチャットを自宅のサーバーで開設した。

実装方法

RocketChatというオープンソースのslackライクなサービスをubuntuに導入して使う。
docs.rocket.chat
データベースはMongoDBが使われている。
「24時間で会話内容が消える部屋」っていうのを作ろうと思ったのでcronを使って何とかする。

0 * * * * mongo (データベースのタブ) (コマンドの書かれたjavascript)

でmongoコマンドが利用出来るので

const today=new Date();
var an_day_before=new Date();
an_day_before.setHours(today.getHours()-24);
db.rocketchat_message.remove({ $and:[{"rid": ルームID},{ "ts" : { "$lte" : ISODate(an_day_before.toISOString())} }]})

このjavascriptをcronで定期実行させると24時間で会話内容の消える部屋を作れる。

Line読み上げBotの作成

これは何?

僕はほとんどLineを見ないので家族からのLineすらも無視しててしまうので、Botに送った内容を部屋のスピーカーで読みあげるBotを作った。

実装方法

雑にRailsでサーバーを立てる。webhookを受けとって音声合成APIを通した後生成されるwavファイルを再生する。
qiita.com

それでどうなった?


読み上げた後にメッセージをslackにも送るようにした。

発注プライマーの自動データ管理

これは何?

バイト先ではプライマー(DNA)をGoogleスプレッドシートで管理している。業者から発送のメール連絡があった時点でそのメールを解析して自動でスプレッドシートに追加するプログラムを組んだ。

実装方法

バイト先での環境構築が楽そうだったのでPythonで作成。
メールを解析してGoogleスプレッドシートAPIからスプレッドシートに書き込む。
cronで定期実行させる。

maturoidの作成

これは何?

元会長matuの声の文章読み上げソフト

実装方法

デスクトップアプリにしようと思ったのでC#で組んだ。
matu君の音声をサンプリングして五十音ごとに切り分けておく。
文章をmecabにとおして読みを取得し、その読みに合った音声を内部で繋げて新しいwavファイルを生成する。

正の字を自動で認識させた話

f:id:strelka_dog:20200322234325p:plain
突然ですが上の図が人生の時間の内訳です。

「実情と違う」と文句があるかもしれません。
聞きましょう、
確かに睡眠時間は人それぞれですね。
睡眠時間は一日に半日近く眠る人や逆にほとんど眠らないって人もいると思います。
僕なんかは最近生活リズムが乱れて睡眠時間が変則的です。
起床時間がどんどん遅くなっています。
バイトがあるおかげでかろうじで昼夜逆転はしてません。
日課だったニチアサの視聴が疎かになってます。
スタートゥインクルプリキュアはほぼ全話リアルタイムで観ていたにもかかわらず、
ヒーリングっど プリキュアはひなたちゃんがプリキュアになった回で記憶が終わってます。
それだけしか観てないので今さら続きを見る気にもなりません。
もっと遅い時間のプリチャンはちゃんと追えてます。
つまり、何もかんもコロナが悪い。

そういうわけで人生の時間をより効率的に、睡眠時間をしっかりとるために
正の字を自動で認識するプログラムを作ってみました。

画線法とは

𝍲𝍳𝍴𝍵𝍶
環境によっては見えないかもです。というか2018年のUnicode 11で採用されたこんなマイナー文字コード正しく表示される方がおかしいよね。
僕の環境では表示されません。
表示されている人はそれ見て下さい。
お馴染みのあれです。
そうです。
小学校の投票で名前の下に書かれる奴です。
自分の名前の下には自分で入れた一票、「一」しか書かれないやつです。
表示されない人は想像してください。
ほら見えてきたでしょ

学習データの用意

昨今は便利ですね。Googleの画像検索で調べれば大量の画像データが得られます。
後はAPIを叩くなりスクレイピングするなり自由です。
さぁやってみましょう
f:id:strelka_dog:20200331232555p:plain
あれっ?思ってたのと違う。
これじゃ手書きの「正」の字集まらないじゃん。

どうしよ、

よし、

書こう。

f:id:strelka_dog:20200331232957p:plain
書きました。
それはもう大量に書きました。
友人に
「和風ホラーに出てきそう」
と言われました。
帰省した時に黙々と書いてたら弟に
「何か呪ってるのかと思った」
と言われました。
背景や使用しているペンが同じなのでデータの多様性が無いですが、まぁお遊びなので許して下さい。

ラベル付け

こういうので一番面倒な作業が教師データのラベル付けだとはよく聞く話ですね。
独自の判別機を作るにはラベル付けは当然人間がやらないといけません。
そんなただでさえ面倒くさいラベル付けを少しだけやりやすくするためにこれを利用しました。
github.com
readmeに書いてある通りにすると使えます。
あとはひたすら正の字を囲んでいきました。

特徴量の抽出

これをOpenCVで特徴量を抽出します。
時間が無いのでここでの詳しい方法は省略します。

結果

f:id:strelka_dog:20200401000414j:plain
認識出来てますね!これで人生の時間三分の二を有効活用できます!

ちなみに

最初のグラフはべつやくメソッドリエーターで作りました。
こんな面白いソフトあるんですね。
uwa.potetihouse.com

闇鍋をした話

どうもKMC常識人枠のstrelkaです。
この記事は自分の所属しているサークルKMCのアドベントカレンダー14日目の記事として書きました。
adventar.org
前日はMuratamさんの「最高のインターネットと文脈の破片たち」でした。平和なSNSの作り方を知ることが出来た気がします。怪文書に慣れていない人はと紹介されましたが、時間に追われながら変な形式で書いた文章なので読みにくかったりバグもあるかもですがご容赦ください。
明日はasRagiさんですどんな内容になるのでしょうか?


このブログはノンフィクションです。実在の人物や団体などとはしっかり関係しています。


2019年11月19日、僕たちは闇鍋をした。


結論から言うとその闇鍋はBADendを迎えてしまった。
今回はこの僕たちの死体を踏み越え闇鍋のTrue endに至らんとする人たちに向けて、いったい自分たちはどの選択肢を間違えてしまったのかどのようにすれば悲劇的結末(カタストロフィ)を回避することが出来るのかを今回の闇鍋を振り返りながら説明しようと思う。

(関係者へこれは自分が思い出しながら書いた内容なので順番やセリフ等が異なっていることがあるとおもいます。その場合Twitterで教えてください。誰が何を発見したかはほとんど記録してないのでほぼ勘です)



今回の闇鍋は主に「前日編」「準備編」「実食編」の三部構成となっている。それぞれについて順を追って振り返りたい。



※以後参加者の名前が登場するがプライバシーを考慮してここでは仮名を使う。

前日編

「前日編」は主に闇鍋企画してから前日までの期間からなる。

企画発案とメンバー集め

ふと京大生の教科書である四畳半を読み返した僕(以後ストレルカ)は冬になったらいつか適当なメンツを集めて闇鍋をしたいなと思った。そこで軽率にこんなツイートをしてしまった。


この時すぐにこの話に乗ってきたのは3人だった。それぞれ

  • ボブ(仮名)
  • アリス(仮名)
  • マイケル(仮名)

ストレルカはすぐにTwitterのDMでグループを作りすぐに日程を調整した。この結果決行日は2019年11月19日NF前の火曜日と決まったのであった。
だがすでにここですでに我々は選択肢を誤っていたのだった。

闇鍋を?

闇鍋経験者がいるか?

ルールの決定

それからしばらく経った後未だに詳しいルールを決めていないことを思い出した。

ストレルカ:『一人何品持ち寄りますか?それと、場所はうちの下宿で大丈夫ですか?』
ボブ:『うん』
アリス:『3つくらいか』
ボブ:『1000円以内で好きに買うのはどうでしょう』
アリス:『いいですねそれ』
マイケル:『スープとかどうします?業務スーパーで多少見てきますけど』
ボブ:『とり野菜味噌でどう?』
マイケル:『(指でOKの絵文字)』

はい、ルールは決まりましたね。これで事前に決めておくべきことはほとんど決まったと言っていいでしょう。

合計金額を決めるか、持ち寄る品数を決めるか

ルールはこれで充分か?
充分
いやもっと細かく決めるべきだ

さて、後は食材を決めていくだけ。

ストレルカの食材選択

それから数日後
(ここはストレルカの鍋論と食材を決定する際の思考部分を語るだけなので長いからスキップしたければこちら

ストレルカが夕食用の食材を買うために近所のスーパーに行ったときにある物が目に入った。
「おとなのふりかけ 薫るトリュフ風味」
何これ面白そう。
その時すっかり忘れていた闇鍋のことを思い出した。
ストレルカ:そうだ鍋の具材を決めないと
みなさんも知っていると思うが鍋は基本的に二種類の具材で構成される。
一つが出汁や旨みを出すもの
もう一つが出汁や旨みを吸うもの
である。
例えばシンプルな具材で知られるミルフィーユ鍋では肉が前者、白菜が後者となる。
闇鍋と言えどもこのバランスを考えながら具材を選ぶべきであろう。
まずトリュフの振りかけは出汁要員なのは間違いない。
スーパーを回っていると半額になっている唐揚げを見つけた。これも出汁・旨み要員としては面白いかもしれない。普段鍋には入れない具材でありながら出汁・旨み要員としての仕事はきっちりこなしそうである。
そして今度はお出汁コーナーに向かった。
ここで目当ての増えるワカメを見つけた。旨みを出しながら汁もしっかり吸う。そして増えた結果の見た目のインパクトもあるので最初から考えていたものだ。
出汁・旨み要員はこれで充分だろう
次はそれら旨みをしっかり吸う食材に移ろう。
まず最初に思い浮かんだのは「煎餅」だった煎餅汁があるように普段鍋に入れないものでありながらも旨みを吸う役としてはしっかり働く。しかしそれでは物足りない。そう考えながらお菓子コーナーを歩いていると一つのお菓子と目があった。犬の○ンみたいなあのお菓子。かりんとうだ。
かりんとうをカゴに入れた後さらにジャガリコみたいなお菓子も買っておくことにした。
野菜類が無いことに気付き野菜コーナーに行く。
そこでまず見つけたのがりんごだ。
ジャンルを問わずりんごを隠し味に使われる食材。例えこれが隠しきれないくらい大量に入っていたとしてもりんごのほのかな甘みによるダメージなどたかが知れているだろう。
そして、ふと
ストレルカ:せっかく闇の鍋なんだし他の食材と紛らわしいが味は違う物を入れてみたいな。
よし、サツマイモを入れよう。
あれを半生に茹でれば*1見た目も箸でつかんだ感じも見分けはつかないだろう。

最後にふと「闇鍋にはどんなものが出来上がってもカレーさえあれば打ち消せる」という金言を思い出した。

ストレルカ:どうしよう念のためカレールーも買っておこうか

カレールーを買うか買わないか?

そうだな、念には念を。一応買っておこう。
使わなければ自分で食べればいいんだ。

こうしてストレルカの食材は

  • トリュフのふりかけ
  • 唐揚げ
  • 増えるワカメ
  • かりんとう
  • ジャガリコもどき
  • りんご
  • 半生のサツマイモ

となった。

飯算用とさよならマイケルそして新たな挑戦者

ついに闇鍋会を明後日に迎えた17日、ストレルカは鍋には絶対に必要なご飯について何も考えていなかったのを思い出しDMのグループで訊ねた。

ストレルカ:『ご飯はこちらで用意するけど。大体どのくらい食べるか教えて欲しい』
ボブ:『大盛りぐらい』
アリス:『われも』
マイケル:『我、火曜日にデートの予定入ってたので行けない』*2
えっ⁈
マイケル今何て言った?
デートはまぁKYOUDAIジョークだとして明後日の闇鍋に参加できなくなったのか……
そんな……
そんな……
待ってくれよ……
まっ、マイケーーーーーーールッ!*3
そんなマイケルの突然の離脱宣告に皆悲しみ驚きそのグループでも長い沈黙が訪れた。
長い長い沈黙が1分続いたときボブが書き込んだ。

ボブ:『ベンジャミン(仮名)呼ぶか』
ストレルカ:『来れるなら頼むか、3人だと少し寂しいし』

四人でこたつに入りながら鍋を囲むのを想像していた自分はやはり三人になるのは少し寂しく感じられた。そこでボブにベンジャミンに声を掛けてもらえるように頼んだ。
ボブがすぐに声を掛けてくれたらしくベンジャミンは次の日には闇鍋DMグループに来てくれた。

ベンジャミン:『得、流石に食べれるモノになるよね?』
ストレルカ:『大丈夫、食べ物以外入れない。食べれる物が混ざっただけだからきっと食べれるモノになるやろう』

この時のストレルカは生協で「トンカツデミチョコマシュマロ」とかいうカオスを経験したばかりだったのでこの理論を本気で信じていたのだった。

ストレルカ:『@(ベンジャミンのID)ご飯食べる量を大体でいいので教えてください』
ベンジャミン:『キラメキの直太朗並で満足する程度の量』

大体過ぎるわ、どんくらいやねん

ちなみにこの日のうちのサークルのSlackにて
f:id:strelka_dog:20191204142803p:plain

準備編

この章は闇鍋会当日の前半、闇鍋を食べるまでの間の出来事からなる。

準備最終段階

闇鍋会当日の朝ボブからの書き込みがあった。

ボブ:『まともな食材ゼロも悲しくない?白菜と鶏肉だけ買っていくわ』

うん普通の食材があった方がいいかもなお願いしよう。
集合はうちに午後7時。楽しみだな。
そう思っていた矢先午後6時

ベンジャミン:『ん、何持っていけばいいん』
ん?何を言ってるんだ?
ボブ:『何とは』
ベンジャミン:『なにを持っていけばいいの?会場に』

あぁ、ルール伝わってなかったかぁ。
ベンジャミン今初めてルール知ったんだったら今から食品揃えるのきついよなぁ。
まぁベンジャミンが来なければ三人の鍋だったので来てくれるだけでもうれしいから間に合わなかったらそれはそれでいいやと思いながらこの時の会話を眺めていた。

ボブ:『あ、言ってなかったか 1000円程度で好きな食材を購入し持って行く』
ベンジャミン:『ほう』
ボブ:『今からダッシュだな』

ボブ怖えぇ

その日のサークルのSlackにて
f:id:strelka_dog:20191209132635p:plain

集合そして前哨戦へ

最初に来たのはアリスだった。

アリス:いやぁ、なんやかんや無難な物ばっかりになった気がする
ストレルカ:分かる、どこまで冒険していいのか分からず結局無難な感じになったよな

今から思えばここですでに高度な情報戦が行われていたのだ。

アリスに続いてボブそして最終的に7時を過ぎて食材調達のために少し遅れてきたベンジャミンも無事に到着した。
まずは、ボブの用意してきた味噌に水を足し白菜やキノコを突っ込む普通の鍋を作った。

ストレルカ:白菜全部入れる?
ボブ:全部入れればいいでしょ

当時の様子がこれである

この時はまだ平和だった……

具材の投入


ボブ:それじゃぁそろそろ闇鍋に移ろう、隣の部屋使っていい?

ストレルカ:いいよ、今電気が点かないけど
ボブ:大丈夫、じゃぁいったん鍋をこっちに移動させて一人ずつこっちにきて具材を入れていこう。
ボブ:それじゃぁ最初は俺が行くわ

ストレルカ:OK

一人目の時はまだ静かだった。
袋を開ける音や何かが鍋の中に入れられる音がしばらく響くと、

ボブ:よし終わった次の人どうぞ

ボブが戻ってきた。

ストレルカ:じゃぁ次行くわ

そう言って暗闇の隣の部屋へと移動した。
ジャガリコもどき、唐揚げ、リンゴを入れると鍋の汁がほとんど無いことに気付いた。

ストレルカ:水が足りないから少し足すわ

水の補給をうけて次に増えるワカメを投入
すると鍋からいかにもワカメな海藻系の匂いがしてきた

ストレルカ:あぁ、これ匂いで何を入れたかバレるわ

そしてトリュフのふりかけを投入するとすぐにさっきまでのワカメの匂いをトリュフの芳香が打ち消しだした。

ストレルカ:あっ今度は分からなくなった、けど匂いは強いな

ここでサツマイモやかりんとうを全部入れるには容量がキツイように思えてきたので全部は入れなかった。
入れ終わった後トリュフふりかけの匂いが芳香の度を越えてキツくなっていることに気付いた。もうこれトリュフのいい香りというか……

臭くね?

どうしようやっちまったか?
いやそもそも自分は松茸の匂いが苦手である。この臭いも松茸の匂いと同様自分には臭く感じるが一般的な日本人にはいい香りに感じ入るのだろうと、そう信じ込み次の人にバトンタッチした。

三番目はアリスが行った。鍋の置いてある隣の部屋にアリスが入るなり声が聞こえた。

アリス:なんかすでに臭いがヤバいんだけど……
ボブ:あぁもしかしたら俺かもしれん
ストレルカ:いや臭いに関しては完全に自分に責任がある

臭いに関しては間違いなく自分の責任だ。そもそもボブが終わった後にそこまでキツイ臭いはしなかったが一体何を入れたんだ?

アリス:入れ終わったよ
ベンジャミン:じゃぁ行きますわ

(待機部屋にて)
アリス:なんかさすでに入ってる量が多すぎて持ってきた分全部は入れれなかったんだけど……
ボブ:まぁ結構入れたからな
ストレルカ:自分も結構入れてしまったけど結局全部入れれずある食材は二切れ程度しか入ってないからなぁ。ごめんごめん

その時だった突然隣の鍋部屋から叫び声が聞こえてきた

くっさ!!
アリス:やろー
ベンジャミン:くっさ、何これくっさ
ストレルカ:それ間違いなく自分が戦犯だわ……、アリスの時にはすでに臭かったやろ?
アリス:うん
ストレルカ:間違いない自分だ……

やぁっぱり……、戦犯だぁ……

ベンジャミン:終わったけど……
ボブ:よし、じゃぁこっちに持ってきて

それではここからついに実食編となります。

実食編

闇の中にて

(ちなみに締め切りが近いので結構ダイジェストしています)


それは鍋を元の部屋に持ってくるためにスマホのライトを少し点けた時に起こった。

ボブ:なぁ、今チーズケーキが見えたんだけど……
ストレルカ:それじゃあ今から具材を当てていって正解だった場合入れた人が何を入れたかと白状しよう。ちなみにこのチーズケーキを入れたのは……?
ベンジャミン:あっ俺です

お分かり頂けただろうか……?この写真にうっすら白く浮かぶチーズケーキの姿を……

チーズケーキ発見!!

ボブ:えっとどうやって食べよう
ストレルカ:チーズケーキいけば?(笑)
ボブ:いやこれ絶対ヤバいやつじゃん
アリス:いや一番上だし、案外安牌かもよ
ボブ:じゃぁ……
アリス:ていうか、臭いが凄い。何これ生臭い?

ストレルカ:それは本当ごめん、間違いなく自分が入れたのが原因です。ここまで臭くなるとは思ってなかった。
ベンジャミン:いや生臭いんだったら俺かもしれん

まじでみんな何入れたんだ?

アリス:じゃぁこれいってみよ。何だこれ?……
アリス:リンゴ?

ストレルカ:はい、リンゴ入れました。
リンゴ発見!!
アリス:まっず、この変な汁が凄い不味い。
ストレルカ:じゃぁ自分も。これなんだろう。
うぉえぇ
……あぁ……これ自分で入れた物だ……これってこんな不味くなるのか……

しっかり箸でいじりながら、そして口の中での感触を調べた結果自分が取ったのは増えるワカメの絡まったかりんとうだった。
 口に入れた瞬間のワカメの食感そしてかりんとうの甘い表面そしてその中から滲みだしてくる何が入ってるのか舌をピリピリと刺激するとても臭い汁。これらが自分の口の中で最悪のハーモニーディソナンスを奏でている。

ストレルカ:うぇぇ
ベンジャミン:大丈夫?
ストレルカ:うん、自分の入れた具材だったけどその組み合わせがヤバかっただけ……

ボブ:不味っ、このチーズケーキ信じられんほど不味い。ちょっと食べてみて
アリス:少しもらってもいい?……あぁこれはヤバい
ストレルカ:ちょっともらうわ、……うわぁ……
ストレルカ:ただでさえ下のサクサクの部分がこのヤバい汁を吸って不味いのにそこにいつもなら美味しいはずの上のクリーム部分のとろっとした食感が今回は気持ち悪さを助長してる……
ボブ:本当そう
ストレルカ:返すわ
ボブ:いや別に全部食べてくれてもいいよ
ストレルカ:流石に無理
ベンジャミン:じゃぁ少しだけ……、あぁこれはいけんこれはいけんわ

……

ストレルカ:なんだろう、食べれる物を混ぜるだけなんだからもっと食べられる物が出来ると思ってたんだけど……
ボブ:本当それ

……

ストレルカ:不味い物を囲むとこんなに無口になるんやな
アリス:じゃぁ、次行くわ。これは何?麺?
ボブ:あっそれは自分が入れた物かもしれん。多分分からんから言おうか?
アリス:いや待って、当てる……もしかして蒙古?
ボブ:正解!
蒙古タンメン発見!!
ストレルカ:よくわかったな
ベンジャミン:これもう分からんと思うから言うけど実は俺もチキンラーメンを入れてた……
チキンラーメン発覚!!
ストレルカ:みんなラーメン入れすぎだろ。

というかさっきからこのクソ不味い汁が舌を刺激しているのは蒙古が原因か

ベンジャミン:これは何?ポテト?
ストレルカ:あっ、それ自分が入れたやつだ。ジャガリコみたいなお菓子を入れた。
ジャガリコみたいなお菓子発見!!
ボブ:あれ、もしかしてワカメ入ってる?
ストレルカ:正解それも自分です。増えるワカメを入れました。
増えるワカメ発見!!
この記事ではダイジェストで伝えてるのでなかなか伝わらないだろうが、
不味いと分かってるのにこれを食べないといけないっていう感覚……
おかげで誰の箸も進まないし口数もどんどん減っていく。
「食べなければならない」この義務感だけで本能的に拒絶するものを鍋から少しずつつまみお椀に入れていく。
何のためにこんな誰の得にもならなないことをやってるんだろう

アリス:あっ何かあった。リンゴかな?……いや何これ硬っ
ストレルカ:それ多分自分が入れたサツマイモ。半生のサツマイモだと思う。
アリス:半生って何?
ストレルカ:あんま煮てないってこと。
アリス:いやこれ食べ物なん?
ストレルカ:自分が味見した時は食べれなくは無かったけど……それにこの邪悪な汁を吸ってないし安牌でしょ
アリス:いや普通にこれ別の意味で食べ物じゃないって
半生のサツマイモ発見!!

アリス:この白っぽいのなんだ?
ボブ:それは俺かな。多分いちご大福。
ストレルカ:いやお前なんちゅうもん入れてんねん
アリス:いやまぁ闇鍋ならね。あれっでもイチゴが無い
ボブ:あぁ、中でどっかに出たかな
いちご大福発見!!

アリス:んっ、今度は肉?なんだこれ唐揚げみたい。
ストレルカ:それは唐揚げだと思う。
アリス:唐揚げは意外といけるぞ、衣が汁を吸ってるけど肉までは達してないし元々の味が濃いからそんな気にならない。
ストレルカ:本当に?
ボブ:あっ確かに意外といける。
ストレルカ:うーん、確かに意外とマシだけど……あくまで食べることが出来るってとこ止まりだよな。
アリス:この汁に浸かっている時点で美味しい訳ないじゃん。
ストレルカ:それはそうだ。
唐揚げ発見!!

アリス:おっ新しいの見つけた。これは何だ?……ジャーキー?

ボブ:ビーフジャーキーを入れた。
ビーフジャーキー発見!!
アリス:でもビーフジャーキーは普通に美味しいぞ。
ストレルカ:本当?あっ確かにビーフジャーキーは普通にビーフジャーキーの味がする。
ベンジャミン:ジャーキーまだ見つけてないんだけどどこにある?

電気点灯

ボブ:そういえばもうかなり見つかったけど、まだ見つかってない食材ってそれぞれいくつある?俺は後三つだけど多分二つは小さいから見つからんと思う。
アリス:あと二つだけど分からないと思う。
ストレルカ:自分は後二つで一つはこの臭いの原因だけど分からないと思う。
ベンジャミン:あと一つだけど分からないと思う。
ボブ:じゃぁ電気を点けてみようか

じゃーん

きったな!

アリス:もう分からないと思うから言うけど紅茶の粉とホットケーキミックスを入れた。

ん?今何て?ホットケーキミックス

アリス!お前鍋作る気無いだろっ!なに鍋を固めに来てるんだよ!別の料理にしようとしてるだろ!

ベンジャミン:俺も言うと、シジミスープの素を入れた。

何故かベンジャミンのシジミスープが可愛く思える。

ストレルカ:ボブ餅入れた?
ボブ:正解
ストレルカ:餅が見つかった。まだ固いけど。
アリス:餅ならそのままでも食えるよ
ストレルカ:そのままで食うな
アリス:あっこれって何?
ストレルカ:それはかりんとう。すげぇ不味いぞ。
アリス:なるほど……
ストレルカ:不味いやろ?
アリス:……そうでもないよ。なんか慣れたのかもしれん
ストレルカ:あと三つか。
ボブ:俺が入れた残り二つの内一つはナタデココ
アリス:あっもしかしてこれがそれかな?
ボブ:おっ見つかった。
アリス:食べてみるわ……、うわっマッズ。これまでの中で一番不味いかもしれん。しっかり汁を吸ってて噛みしめるとその汁がじゅわって出てくる。
ストレルカ:ボブもしかしてもう一つってタピオカ?
ボブ:おっ正解見つかった?
ストレルカ:見つかった。ナタデココを食うのをみた後だから食べたくないけど

ボブ:後はストレルカのだけどこの臭いやつなんだよな。
ストレルカ:そうだけど、多分分からんと思うぞ。これ自体は一般的には匂いが良いことで有名。
アリス:くさやとかじゃないよな
ストレルカ:違う。あくまでいい匂いで有名だから。
ベンジャミン:納豆とか?
ストレルカ:いい匂いって言ってるでしょ。

まぁ実際臭いんだけど

アリス:もう分からん。教えて。

ストレルカ:トリュフのふりかけ

ベンジャミン:そんなもん分からんわ
ストレルカ:だからどうせ分からないって言ったじゃん。

ボブ:それじゃぁ全部分かったことだしカレーに移るか……

三分カレークッキング

まず大きなザルを用意します
このザルに闇鍋の具材を全部入れます
鍋を洗います
具材を水ですすぎヤバい汁を洗い流します
かりんとうナタデココ、タピオカといった汁を吸う系食材を除きます
洗った鍋に具材を戻します
水とカレールーを入れて煮込みます

はい、カレーの完成!!

クソ不味い闇鍋がみんな大好きカレーに変身、はいこれで大団円めでたしめでたしみんなハッピー!!もうこれでいいでしょ!終了!!

アドベントカレンダーの日付に間に合わせるためとりあえず今回の記事はここまでとします。

反省

食べ物で遊んではいけません
でも楽しかった。Bat endでの反省点を踏まえてルール等もっと決めてやればもっとマシな闇鍋になったんじゃないかと思うので今回の反省を生かした闇鍋会をまた開きたいですね。せっかくの大学生活なんだし

その他

その後(この日解散後)
ストレルカ:gorillaの締め切りだったのを忘れてgorillaを逃してしまった……
ボブ:服に闇鍋の匂いが染み付いた
ベンジャミン:鼻から例の匂いが抜けない

この記事を書き上げるまでサークルのSlackにて
f:id:strelka_dog:20191214143709p:plain
f:id:strelka_dog:20191214143902p:plain
f:id:strelka_dog:20191214144025p:plain
f:id:strelka_dog:20191214144104p:plain

2019/12/14 23:04:16無事ブログ公開完了!

Bad end

共通Bad end(闇鍋を回避した場合)
闇鍋会を無事に回避することが出来た。限界大学生みたいなイベントを無事に回避することができ、これで君たちを待っているのは薔薇色の大学生生活のみだ!
だが本当にこれでよかったのだろうか……?
戻る


Bad end(闇鍋経験者がいなかったor経験の共有をしなかった)
闇鍋経験者がいなかったもしくは経験の共有をしなかったために闇鍋会本番では混沌を極めた。加減を知らない者達が「せっかく闇鍋なんだしある程度おふざけの品も入れないとな」と全員が思った結果この世の物とは思えないゲテモノが出来上がってしまったのだ。
結論としては闇鍋は加減を知らなければ本当に恐ろしいゲテモノが出来るということを周知しておくべきであった。経験者がいなかったとしてもせめて自分たちの持ってきた食材については責任を持つように徹底すべきだった。
戻る


Bad end(持ち寄る食材の上限を品数ではなく金額で決めてしまった)
持ち寄る食材の上限を品数ではなく金額で決めてしまった。結果として皆想定よりも大量の物を持ち寄ってしまい食べきることの出来ないゲテモノを生成してしまった。またこれは幸運なのかもしれないが結局全員が持ってきたものを全て入れることは出来なかった。一般的には一人n品の持ち寄りというのが一般的だろう。だが今回は金額で決めてしまった。
闇鍋の食材を選ぶとき何故か人はハイになり分量を考えない傾向にある。分量についてはしっかり決めておこう。
戻る


Bad end(ルールをもっとつめなかった)
ルールをもっとつめなかった結果闇鍋は想像を超えるものとなった。そもそも闇であろうとなかろうと鍋を作っていたはずなのだが出来た物は汁物とは思えないほどとろみがついている、汁をひと舐めすると言葉に出来ない味がするこの中の食材が全てこの汁を吸っていると思うと……他の皆もそう思ったのか全く箸が進まない。結果として誰も食べることの出来ない何かが出来上がってしまったのだった。
他人は往々にして自分の想像を超えてくる。今回では「ホットケーキミックス」という通常闇鍋にも入れないであろう物質をアリスが持ち寄った。この通り食材とだけしかない場合もはや鍋とも言えないゲテモノが出来上がることがある。また、粉末系の物を持ち寄る者も多い(今回はストレルカのトリュフのふりかけ、アリスホットケーキミックスや紅茶の粉、ベンジャミンシジミスープの素)。これらは少量で味を効果的に破壊出来る。またそれ自体は鍋の中に溶けて被害が広範囲に広がるため悪質である。
反省としては、みなそれぞれ一般的に鍋に入れられている食材を一人分持ち寄る。そこに一人で食べる分の「普通は鍋に入れない粉物以外の食材」を一品ずつ持ち寄る。残った場合自分が持ってきたものは責任もって食べる。といったルールにするべきだった。
戻る


Bad end(自分の部屋で開催)
ふと、自分の部屋で目覚める。
そうだ昨日は闇鍋会を開催したんだった。なんやかんやあったが無事に終わって良かった。明日からはNFだし切り替えていこう。
そう考えベッドから起き上がった時異様な臭気に気付く。
そうだ昨日の闇鍋はとんでもない物を産み出してしまったんだった。闇鍋自体はなんとか片付いたもののキツい臭いは部屋に染み付いている。起き上がって台所へ向かうとそこには汚染物質のこびりついた大量の洗い物が残っていた……
これを片付けないといけないのか、ストレルカは洗い物を前に途方にくれてしまった。
今回の闇鍋においてとても強烈だったのは臭い(主に自分に原因がある) だった。部屋の臭い自体は数日換気に勤しめば気にならなくなるが翌日の寝起きはやはり最悪となる。その他にも洗い物等々ホストをしたがゆえの苦労は多い出来るのであればホスト役は他の人に押し付けよう。(だがホストをしたがゆえの楽しみがあったのも否めないので、それらをよく考えて決めよう)
戻る


Bad end(カレーを用意していなかった)
 目の前にはクソ不味い鍋が一つ、とりあえず誰が何を入れたのかは完全に判明した。しかしそれがどうした。自分の入れた物は責任もって食べろというのか?粉末類を入れた連中はどうする?鍋に何が入っているかが判明した今もうその話題で盛り上がることは無い。だれも喋らない、この汚染物質をどうするかそれを考えるだけで気持ちが重くなる……本当にどうしたものか……
 カレーは何でも受け入れる!それは味がどうだろうが匂いがどうだろうがすべてを包み込んでくれるのだ。そしてカレーの匂いは万人の食欲を刺激する。闇鍋をやるならばいざという時のためにカレールーは絶対に用意しておくべきだろう。詳しい闇鍋カレーの作り方は三分カレークッキングの章を参照されたし。
戻る


Bad end(普通の具材を用意しなかった)
 今日は闇鍋だった。ご飯もたっぷり用意したし鍋もボリュームだけは申し分無かった。しかし、なぜだろうこの満足感の無さは……不味いゲテモノを無理やり口に押し込み、また変な物が入ったカレーもなんとか食べた。そう普通の食べ物を何一つ食べていない。ただ不味い物をみんなで集まって食べただけだった。せめてみんなで集まったのだから普通な物も一緒に食べたならばもう少し楽しかったのではないのか?でも普通の食材が無かった以上今さらそう思ってももう遅いのだ。
 闇鍋はルールが適当だと本当にとんでもない物が出来上がる。せめて食べられる普通の鍋の延長として行うべきであろう。でなければ何も食べられずに終わってしまう。また人間は不味い物を囲むと本当に口数が減る盛り上がらない。闇鍋を楽しむためにも普通の鍋は必要なのだ。
戻る

*1:サツマイモは火を通していないとそんなに甘くない

*2:後になって気付いたがこの時「予定入ってた」という書き方に注目しないといけないつまり我々の方が後だったのだ。人のこと言えないが予定確認しとこうぜ。しかも言うの二日前って……

*3:ちなみにストレルカはマイケルと会ったことが一度もない

「いろは_なの」にAmazonのランダムな商品を送りつけよう!

Amazonの有名な機能といえば「欲しい物リスト」の機能がある。

ここでふと思いついた。

自分の知り合いにはひねくれ者が多い。

素直に欲しい物リストを公開するよりも、もっと変なことの方が面白がってプレゼントを送ってくれるだろう。

そこで考えました

Amazonギフト券のコードをフォームから送るとそのポイント内で買えるランダムな品物をいろはに送り付けることが出来る

これなら知り合いのひねくれ者どもも面白がってコードを送ってくれるだろう

すぐにプログラムを書き作り上げました。





以降使い方

こちらのGoogleフォームに必要事項を入力してAmazonギフト券のコードを送るだけです。
docs.google.com



「どうせランダムとか言ってちゃっかり欲しい物買うんだろ」

と思っているそこの方。

今回はそんなことが無いよう透明性を確保するために以下のことをします。

  • コードを送ってくれた人(のハンドルネーム)とそれで買ったものをTwitterで報告
  • 現在の所持ポイントをリアルタイムで可視化
  • 一定期間ごとに端数のポイントが400円分を下回るまでポイントを使ったランダム買い物を行います(これもTwitterで報告)

Amazonのコードを打ち込むのは人の手なので更新は遅くなります。(最低でも一日一回は確認)
自動でやろうと思ったけど人間です証明が時々必要なので無理だった
f:id:strelka_dog:20191209231718p:plain

Let's 無駄な物を送りつけよう!

現在のAmazonのポイントとその推移