mizuff_diary

もうあったものと、まだなかったもの

VTuberおしゃべりフェスに行ってきた

はじめに

この記事は,あるVTuberファンが卒論発表を終えた足で「おしゃべりフェス」へと赴き,溢れんばかりの感情でベショベショになった記録である.

おしゃべりフェスとは

バーチャルYouTuberVTuber)と1対1で会話ができるという,アイドルの握手会やお渡し会に近いイベントである.ただしそれらと比べて対面時間が1分間と長く,十分に中身のあるやり取りが可能である.
そして最後はチョコを受け取り,ハッピーバレンタインを迎えることができる.
また新たな推しに出会おうという趣旨で,ステージにて各出演者ごとのコーナーも用意されている.

f:id:mizuff:20190222235743p:plain:w400
現地はこんな感じだった.

イベントに向かう前のこと

前日に服を買いに行った.お世話になっている方々に適当な格好を見せられないので.

当日は昼過ぎまで大学で卒論発表があった.
研究,というか大学での学業は上手くいっておらず(留年もした),卒論は形にもならないものを無理やり提出したようなものだった.発表も自分の不出来さを実感させられるものであり,出番を終え卒業が確定してもいまいち喜びきれなかった.

そんな経緯に加えて発表準備のための寝不足もあり,何とも言えないテンションで会場まで向かった.

入場前

物販開始時刻の16時を少し過ぎたあたりで会場に到着.
平日のこの時間やし,そんなに人おらんやろとヘラヘラしていたが,既に200人程度の列ができていた.並びはしたものの捌けがかなり遅く,途中で入場待機列の形成が始まったので物販の方は諦めた.
入場待機列はチケットの番号順であった.その旨がアナウンスされるまで自分の番号は全く意識していなかったのだが,幸運なことに私は先頭近くに並ぶことができた.

入場後

開始20分ほど前に入場が始まり,先頭から順に推しのVTuberの列へと並んでいく.私は名取さなの元に向かい,列に到ちゃ……列がない.

私が名取さなの列の先頭であった.

現実を呑み込めなかった.あのバーチャルYouTuberランキング1位*1の名取さなやぞ? その名取さなが(おそらく)初めて参加するリスナー対話型イベントやぞ? そのトップバッターが自分って何やねん.頭おかしなるで.

程なくしてモニターに名取さなの姿が映り,スタッフとの間で音声チェックが行われた.その後も画面は表示されたままであり,目の前で動く名取さなが可愛くて眺めていた.

……のだが,もしかしてと思いスタッフに尋ねてみた.曰くその通りであると. 名取さなからはこちらの姿が見えているらしい.

バーチャルナースはみている.
おいおい開始まで10分あるわ.推し(という言葉は普段使わないのだけれど)と10分間も対面する人の気持ち,味わったことある? 私はこれが初めてだよ.

画面端からヒョコっと現れたり引っ込んだり表情を変えたり,そんな名取さなが間近に感じられる.モニターは普段より遠いのに.
緊張でふわふわしたこの瞬間が幸せだったように思う.

おしゃべりの記録

名取さな

www.youtube.com ステージで上映された動画.名取さなは言葉選びのセンスが秀逸.

ヘッドセットを装着して1分間が始まった.
はじめに2ショット撮影を行った.「はい,ナース」の掛け声にツッコんでくれた.素直に嬉しい.いま思えばいつものコメントへのツッコミだこれ.
手間取りながらも撮影を終えて,会話の入りは「せんせえ1人目だよー!」「1人目だよー!」みたいな感じだった気がする.
私はかつて就職活動が上手くいかず塞いでいたところを名取さなの配信*2に救われており,感謝を伝える手紙を出したことがあった.そんなこともあり,今回は経過報告のつもりで大学卒業が決まったことを伝えた.

「おめでとう!」と祝ってもらえた.
「えらい!」と褒めてもらえた.

他人と比べれば不出来でも,ここまでたどり着いた自分はえらいのだ,と認めさせる力のある魔法の一言だった.感謝を伝えるつもりが,私はまた救われてしまった.
名取さなは伊達にナースやってないんだよな.

あっという間に時間になってしまったのだが,終わり際の「これからも仲良くしてね」という一言がまた印象的だった.友達感覚で接することができるという名取さなの魅力が,別れの挨拶一つに凝縮されているように感じた.

白上フブキ

www.youtube.com 最近のお気に入り動画.こういうのどこから見つけてくるんですか.

白上フブキに対しては質問を用意していた.「面白い話題に対してアンテナを伸ばしていられる秘訣は何なのか」というものである.
ブームの先駆けとなったペヤングMAXEND実食配信に代表されるように,白上フブキは面白い話題に対する感度,そして実行に移すフットワークが素晴らしい.その力の根源を聞いてみたかったのである.

自分の番が来て,挨拶の「こんこんきーつね」から入る.可愛い狐である.名前を尋ねられたのだが,後から聞くとお客さんの名前をメモっていたらしい.まめである.
そうして先の疑問を尋ねてみたのだが,回答は

「恐れずに挑むこと」
「この活動をいつまで続けられるか分からないから」

ということであった.
同業者との会話で情報を仕入れる,とかそういう回答を予想していたが,思いがけない力強い返しであった.こんなん惚れてまうやん.

最後に「MAXEND美味しいですよね」という話になって終わった.流行当時に私も食べたけど美味しかったです.

飛鳥ひな

www.youtube.com 医者の娘ならではの動画.私はこれを見てから野菜の摂取量が増えた.

通称ひなP.声がべらぼうに良いオタク.にじさんじライバーの季節限定ボイスを監修したり男性VTuberを推したりと,独自の路線を突き進んでいる.

会話は配信でお馴染みの挨拶「ぴよぴよー」から始まった.ひなPの声が鍼のように脳にスッと刺さる.耳から摂取する幸せ.
次に名乗ったのだが,なんと名前を覚えてもらえていた.チャット欄に出没するオタクが認知されるというのは本当だったのか……嬉し恥ずかしである.

「やりたいことをやっているのを後方P面して見てる」と伝えると少々照れている様子だった.いいぞ. 「男性Vを推したりしてるけど大丈夫かな」と意外にも心配する言葉が返ってきたが,楽しんでる姿がいいんですよ,はい.

時間になったので,クソマロを捌くときの決め台詞「はりたおすぞ」で締めてもらった.飛鳥ひなフルコースでした,ありがとうございます.

会話以外にあったこと

2Dに奥行きを足すと3D

白上フブキの列に並んでいるときに隣のときのそらの列が見えたのだが,彼女が時折身を乗り出してお客さんに近づいている様子が窺えた.自分との会話でそれをされたら容易に限界オタクになるだろうというのは想像がついた.
今回は日頃から追っているVTuberを優先した結果,相手が全員2Dとなったが,経験として3DのVTuberとご対面してみたい気持ちが生まれた.
VRChatで推しと対面するリスナーさんとか普通に羨ましい.ウチにはOculus Goしかないから…….clusterさんOculus Goへの対応待ってます.

新たな推しに出会えましたか

ステージ企画を通してもちひよこが気になった.歌ってみた動画が上映されたのだが,これヤバない? 技術で圧倒されてしまった.自分の力でなりたい姿に変身できるのエモだよ.

www.youtube.com

これで興味を持ってお話ししたいと思ったのだが,私が並ぼうとした頃には受付が終了していた.初めましての会話は叶わなかったが,気になるVTuberが一人増えたのだった.クリエイター気質のVTuber,好きになりがち.

感想

f:id:mizuff:20190223001043j:plain:w500
幸せはチョコの形をしている.

全体を通して

  • トークテーマは自由であり,会話の様子が配信されるということもなかった(例外*3はあったが).またヘッドセットを通しての会話ということもあり,1対1の会話にいい感じに没入できたように思う.
  • 配信でお馴染みの挨拶を本人と交わせるのいいよね.
  • せっかく服も新調したんだし,と会話時間を少々削ってまでVTuberとの2ショット写真を撮ったのだが,これはこれで正解だった.実のところ会話に必死で,視覚情報まで記憶に焼きつけておく余裕はなかった.
  • 名取さなが先のまとめ動画で「限界になりすぎた時って吐き気がするんだな」と語っていたが,まさにこれになった.器から溢れるほどの幸福を浴び,帰り道でニヤケたり涙が出そうになったり吐きそうになったりと百面相であった.浮かれすぎて交通事故にでも合うんじゃないかと自分で心配になるレベルであった.

列の先頭に並ぶオタク

  • 名取さなと会話する私の声がかなり大きかったらしい.振り返ればそんな気もする.10分間推しに見られ続けて高まった緊張を察して……
  • 今になって思うと,出だしの緊張はお互い同じだったはずである.その辺り気遣えるような人になりたい.

認知されるということ

  • いわゆる「認知される」というものを初めて経験した.
  • 今までは山の賑わいになればと思ってチャットを打ちつつも目立とうという意図はなく,SuperChatもなるべく反応されなさそうなタイミングで投げていた.
  • 応援の結果として名前を覚えてもらえているというのは素直に嬉しかった.そして,これからも応援し続けようという感情が芽生えた.これは新たな知見である.
  • 因幡はねるに熱心なファンがつくのに納得がいった.

その他

  • 物販の牛歩っぷりを始めとして要改善点は少なくなかった.それらはアンケートの方に投げることにする.
  • ステージ映像のYouTube配信が中止されてしまったのは,新たな推しに出会うというイベントの趣旨的にも痛かったね……

おわりに

白上フブキに「古戦場から逃げるな」という言葉を掛けてもらっている人がいた.当時は茶葉を生やしていたが,私の感想記事が遅くなったのもだいたい古戦場のせいである.

*1:https://ja.wikipedia.org/wiki/のばん組#のとく番〜アイは世界を繋ぐ〜

*2:(5/18)登録者2万人達成で泣く名取(突発配信)にじさんじのオーディションに落ち個人で活動を始めたという名取さなの躍進に,数々の面接で落ちた私も勇気づけられたのだった.

*3:ピーマンくんと話せる!ピーナッツくんとも話せる?『VTuberおしゃべりフェス』生配信【#しゃべフェス】.ピーマンくんの列から会話の声が漏れてくるたびに笑ってしまった.

VirtualBox上のCentOSにホスト機からSSH接続する

概要

VirtualBox上のCentOSにホスト機からSSH接続する.
仮想マシンを作成し,CentOSをインストールしてあることが前提です.

環境

ホスト: macOS High Sierra
クライアント: CentOS6 / CentOS7

VirtualBox側の設定

設定 > ネットワーク > アダプター2 > 割り当て でホストオンリーアダプタを選択.

ホストオンリーアダプタの設定

クライアント(CentOS)側の設定

ユーザーの追加

$ useradd {username}
$ passwd {username}
$ usermod -G wheel {username}

ネットワークの設定

CentOS7

$ nmtui

Edit a connection > enp0s8 より,Automatically connectをONに設定する(スペースキーでチェックが入る).

nmtui

IPアドレスの固定

重要だと思われる点だけ以下に記載する.他の変更箇所等は各自調べてください.

(CentOS6) $ vi /etc/sysconfig/network-scripts/ifcfg-eth0
(CentOS7) $ vi /etc/sysconfig/network-scripts/ifcfg-enp0s8

BOOTPROTO=none          # IPを固定するのでnoneでよい
IPV6INIT=no             # IPv6が不要な場合
IPADDR=192.168.56.101   # 値は適宜変更

sshd_configの編集

$ vi /etc/ssh/sshd_config

PermitRootLogin no
PasswordAuthentication yes

sshdの起動

CentOS6

$ chkconfig sshd on

CentOS7

$ systemctl enable sshd.service

SSH接続

  • クライアント側でifconfig(CentOS6)やip addr(CentOS7)によりIPアドレスを確認する.
  • ホスト側でssh {username}@{address}を実行することでクライアントに接続できる.

参照

http://ginpen.com/2011/02/24/ssh-for-linux-on-virtualbox/ https://qiita.com/uhooi/items/ab845b06b136e623e51d https://qiita.com/tak_hos/items/9c9fd6463a7c3c01b4d3

diffがグチャグチャになった話

悲劇

名著『リーダブルコード』を読んだことだし、自分のコードもリファクタリングしてみたい!
そうだな……この間更新したPythonのアレ*1なんか珍妙なグローバル変数の使い方してた気がするし、熱が冷めないうちに手直しするか!

関数を小分けにしてみたら可読性が上がった気がするぞ! リファクタリング楽しい! 指針が見えるのは気持ちいい!
ついでに関数定義も呼び出す順に入れ替えちゃおう!

……これらをまとめてコミットした結果、コードの可読性は向上したものの、前後対応がしっちゃかめっちゃかなdiffが出来上がってしまいました。
Refactor · mizuff/gbf-rapid-search@3d6ab8c · GitHub

diffの品質を保つためには、コードを書き換えるコミットと順序を入れ替えるコミットは分けるべきだと学びました。

まあそれはそれとして

リーダブルコード』はいいぞ。
それと『ノンデザイナーズ・デザインブック』もいいぞ。こちらはWebアプリ制作に役立っている。

整理の指針を身につけるということは気持ちいい。 www.oreilly.co.jp

book.mynavi.jp

【小ネタ】TweetのURLは後ろの数字さえ合っていればよい

概要

https://twitter.com/{screen_name}/statuses/{id}screen_nameの部分が間違っていても自動で修正されるよ.

説明

Twitterでは各ツイートに個別のURLが割り振られており、その構造は上で述べた通りである. screen_nameがいわゆるユーザーID (@hogehoge の hogehoge にあたる部分)で、idTweet固有のIDである.
このidに対応するTweetの主のユーザーIDとscreen_nameが異なっている場合、URLのscreen_nameが正しいユーザーIDに自動で置き換えられる.

考えてみればそりゃそうで,ユーザーIDが変更されてもTweetへのリンクが切れないようにということであろう.

なんでわざわざ記事にしたかって

このことに気づいたきっかけが,拙作「RTだけ表示するやつ」のソースコードミスを発見したことだった.
動作に支障はなかったものの,ソースコードに自分のユーザーIDが混入していてかなり焦った.この焦りを共有したかっただけである.

Webアプリ「RTだけ表示するやつ」を使ってほしい

概要

f:id:mizuff:20180423174509p:plain retweetlog.herokuapp.com

Webアプリ「RTだけ表示するやつ」をリニューアルした.ログインの省略,動作の軽量化,デザインなど良い感じになったから使ってみてほしい.
この時期だと同人即売会のサークルチェックなんかにも活用できると思う.

ちなみにリニューアル前はこちら.https://retweetlog-old.herokuapp.com
デプロイし直したら動かなくなった……記事はこちら

主な変更点

(旧)→(新)の順で述べる.

動作仕様

Twitterアカウントでのログイン

  • ログイン必須→ログイン不要
  • ログインすることで,非公開アカウントでも検索できたり,API制限を回避できたりする
  • ログイン画面の省略により,アプリが単一ページで完結したのはお気に入りポイント

ツイートの読み込み件数

  • ツイートを上限まで取得→順次読み込み
  • 旧版ではツイートのレンダリングに数秒〜十数秒を要していたが,読み込み件数を減らすことで解消
  • Googleのモバイル版ページが検索結果を順次読み込む仕様に変更され,これに着想を得た.そもそもTwitterがこの仕様なんだから,初めから真似していればよかった.

使用言語など

サーバサイド言語

  • Python+Django→Node.js+Express
  • Herokuへのデプロイという点では後者の方が圧倒的に楽.ポート番号をprocess.env.PORTとして,Procfileにはweb: node app.jsと書けば設定はほぼ完了である
  • クライアントとサーバ両方でJavaScriptを用いるのは初めてで,「同じconsole.log()でも出力先が違うスゲー!」なんてはしゃいだりした

CSSフレームワーク

  • Bootstrap3→Bulma
  • Bulmaは軽くてキュートで良いと思います

Webフォント

リニューアルのきっかけ

旧版「RTだけ表示するやつ」を利用しているという声がたまたま耳に入り,火が点いた.習作クオリティから実用レベルまで上げてやろうじゃないかとなった.

アップデート予定

日付指定機能は追加したい.「あのときあいつがRTしたの何だったっけ……」みたいなシチュエーションに対応できるようになる.
あとデザインはどうしよう.個人的にはシンプルで気に入っているが,シンプル過ぎてツッコミ待ち状態でもある.

【JavaScript】非ユーザーがクリップボードを操作できないという話

概要

【Python】コマンドライン上で動くグラブルTwitter救援検索ツール - mizuff_diaryの追試です。
ユーザーが直接クリックすることなく、「クリップボードにコピー」の操作を行うことはできないのか? というお話。

これを読むのが早いです

developer.mozilla.org
Flashに依存することなく「クリップボードにコピー」を実装するにはexecCommand APIを利用することになると思います。そのAPIの仕様で、クリックなどのイベントをユーザー以外が発生させた場合はクリップボードの操作を行えないようになっていました。

これで話はほぼ終わりで、以下おまけ。

実装してみた

  1. ボタンクリック時の動作を設定

    1. アラートを表示する
    2. input内のテキストをクリップボードにコピーする
  2. ページ読み込み時に自動でボタンを1回クリックする

上記1、2の仕様のJavaScriptをそれぞれhtmlに埋め込みました。
ページ読み込み時、手動クリック時のそれぞれで意図通りの動作をするのか試しました。

結果

アラートを表示するほう

aのほうは期待通りの動作をしてくれました。f:id:mizuff:20180309180146p:plain:w500

クリップボードにコピーするほう

bのほうは読み込み時の動作でエラーを吐き、手動クリックしてあげるとコピーに成功しました。 f:id:mizuff:20180309180629p:plain:w500

その他

Gistを初めて使ってみました。引用が楽でいいですね。

【Python】コマンドライン上で動くグラブルTwitter救援検索ツール

概要

github.com

グラブルのマルチバトル救援ツイートを検索し、参戦IDを取得するツールを作りました。
実装言語はPythonで、コマンドライン上で動作します。 IDのクリップボードへのコピーを自動で行うため、矢継ぎ早なマルチバトル参戦が可能になります。

私はこれを使ってシュヴァマグ編成を(一応)完成させました。 f:id:mizuff:20180306002453p:plain:w400

Webアプリとの比較

使用方法などはGitHubに上げた通りなので、以下余談です。
グラブルTwitter救援依頼検索ツール一覧で紹介されている通り、ほぼ同じことをするWebアプリは既にいくつか存在しています。これらのWebアプリはいずれも、参戦IDをコピーするのにクリック動作が必要になります。
ブラウザからクリップボードにアクセスする手段としてはHTML5Clipboard APIやJavaScrpitライブラリ(clipboard.js)などがあるようですが、いずれもクリックなどのイベントをトリガーとして動作するものです。
この仕様については以下のページに記述があります。どうやらブラウザによる制限があるようで……?
https://www.w3.org/TR/clipboard-apis/#allowed-to-modify-the-clipboard
https://github.com/zenorocha/clipboard.js/issues/218

(私自身も非常にぼやーっとした理解なので、 この辺に詳しい方は教えてください)
(2018.3.9) 検証しました→【JavaScript】非ユーザーがクリップボードを操作できないという話 - mizuff_diary

(2018.5.26) Windowsに対応しました

今までMacにしか対応していなかったとも言います。
「このスクリプト動かんやんけグォラァ!!」となっていた方がいたら申し訳ないです。

コメントにてエラーのご報告を頂いたので調べたところ、スクリプト内でMac固有のコマンドを呼び出していたことが判明しました。
クリップボードへのコピーを行うpbcopyコマンドがそれにあたるため、OSがWindowsである場合はclipコマンドを呼び出すよう修正しました。
Linuxへの対応は環境を持っている方がやってくれると助かります……

その他

いくつか書き散らしていたコードを公開してみようと思い立ち、1年以上前に作ったツールをリファクタリングしてGitHubに上げてみました。
README.mdを書くのが楽しい。