いろいろあっていろいろ考えたんだけど結局どうしようもないねってなっちゃった

先日、友人とプロスポーツの試合を見に行った。 友人は幼い頃からこのスポーツ、ひいては観戦するゲームに出場するチームのファンであり、僕は年に1〜2度観戦に誘ってもらっている。 その日は友人の希望もあり試合開始の2時間弱ほど前から会場入りしていたのだが、僕は特にそのスポーツに思い入れがあるわけでもないため、若干時間を余らせた気持ちでいた(よくない)。

そうした事情もあり友人とはどうでもよい雑談を延々としていたのだが、その中で大乱闘スマッシュブラザーズSpecial(以下スマブラ)の話題が上がった。 僕も友人も一定以上にスマブラをプレイしているため、話は細かいテクニックなどの話にも及んだ。 ただ、友人はスマブラのテクニックなどの知識が薄いために用語やプレイヤー名などを知らないことも多く、時折話が噛み合わない。

このときも僕が会話の中でとあるテクニックについて言及した。 友人はそれを知らないと言った。 僕は話を広げる程度のつもりで、「○○さんがこの前解説の動画上げてたよ」といった趣旨の返答をした。 友人は(おそらく冗談ではあろうが)強い口調でだいたい次のようなことを言った。

曰く、

そんなオタクしか知らないようなことは俺は知らない。

そもそもそんな人間のこと俺は知らないし、eスポーツなどという下らないものにも興味がない。

だいたいeスポーツなどというしょうもないものに何の価値があるのか。

僕はまるで記憶力がないために、細かい内容やニュアンスに食い違いはあると思う。 ただ、友人はだいたい上のような趣旨の発言でeスポーツやそれを好む人間のことを侮辱する内容の発言をしたことは間違いないと思う。 少なくとも僕はそう解釈して、少なからず不愉快感を抱いた。

その場ではそのまま不愉快感を露わにして友人の発言を止めたのだが、日頃から僕の理屈っぽさにうんざりしている友人はこのときも「またかよ」といったうんざりした表情を浮かべていた(僕が何かを主張するときはだいたい無駄に理屈っぽく話す)ので、それ以上は何も言わなかった。 しかしこの件は思った以上に僕にとって不愉快だったようで、数日経った今でも時折思い出しては不愉快な気持ちになるので、考えを整理して文章に残すことでこのループを終わりにしたいと思う。


まず、不愉快感の主な原因はスマブラやeスポーツというものを侮辱していたこと自体にはないと考えている。 不愉快感を形作る一要素として全くないとは言えないけど、少なくとも主な原因ではない。はず。

前提として、ゲームを楽しむ過程で様々な情報に触れて強くなろうとするのも、自分の外にある情報を気にせず独自に強くなろうとするのも、個々人の自由に任されたプレイスタイルの違いに過ぎない。 また、いくら自分がプレイしているタイトルであろうと所詮ゲームに過ぎないので、そのタイトルにおいて強いとされるプレイヤーについての知識があろうとなかろうと、どうでもよい。 昨今eスポーツだなんだと騒がれているもののゲームとは所詮ゲームであり、それに向き合う姿勢などというものは個々人に強く依存する。 以上により、それに対して友人がどのような態度を取りどのような発言をしようと、それ自体がモラルに反することではないし、発言自体の攻撃性が持つ以上の不愉快さもないと考えられる。

ではどうしてわざわざこのような形に残すまで不愉快だと感じたのか。

それは「友人が」「あのときあの場所で」eスポーツなどを侮辱したことにあると思う。 最初に説明した通り、これは友人に誘われたスポーツの試合観戦に赴いた球場でのできごとである。 友人はあのとき球場においてスポーツのファンであり、チームのファンであったはずだ。 普段は別のアイデンティティを持つ友人も、そのときその場所においては「スポーツファン」であるし「特定のチームのファン」である、と捉えることはかなり自然なことだと思う。 抽象度を上げれば、友人は「何か」が好きな人間であり、「その何かを高いレベルで遂行する人間のファン」であった。

その、「何か」が好きで、「その何かを高いレベルで遂行する人間」が好きな人間が、他の「何か」が好きで「その何かを高いレベルで遂行する人間」のことを侮辱したのである。 この矛盾、論理的破綻が僕に強い嫌悪感を抱かせたのだと考えられる。 だって、おかしいじゃん。こんなの絶対おかしいよ。間違ってる。あんなに何かを好きな人がこんな間違いしちゃいけない。

更に、「eスポーツなどという下らないもの」といった趣旨の主張には「(友人の好きな)スポーツはeスポーツなどという下らないものより優れている」といった思想が見える。 ここで問題なのはそのような発言をしたことにあり、実際に友人が考えているかにはない(というか、友人はそこまで考えていないと思う。彼はそもそも冗談で上のようなことを言ったわけだし、そもそも彼はものを深く考える性格ではない)。

この発言の問題点はむしろ、自覚的にせよ無自覚的にせよ友人がスポーツとeスポーツを比較の俎上に載せてしまったことにある。 このことによって、「球技など所詮ただのボール遊びで、いい大人にもなっていつまでもボール遊びをしているような人間はとんだ間抜けのバカ野郎でどうしようもない社会不適合者だし、もっといえばそれを見て喜んでいるような人間は底がどうしようもなく浅いしそのような社会不適合者を見て嘲笑っているどうしようもない差別主義者」といった無茶苦茶な主張がカウンターで返ってきてしまう可能性を作ってしまったのだ。 そのようなカウンターを想定せず軽率に放言してしまう、思慮の浅さ。 これも僕を不愉快にさせた一因だろう。

それ、君が言っちゃダメでしょ、ってことだ。

思い当たる節はまだある。 すっかり言い忘れていたが、僕も友人も中学生の時分からずっとアニメのオタクなのである。 僕と友人は大学も卒業して随分経つというのに未だにアニメだのゲームだのといった幼稚で下らないものに熱を上げている、どうしようもない社会不適合者だ。 アニメが市民権を得たと言われて久しいが、それでも僕や友人には「アニメだのゲームだのにいい年した大人が熱中しているのは全くもって適当ではない」といった意識が残っているし、他の人々もそう考えていると思っている。 それでも。それでも、僕達はそうした「下らない」アニメやゲームを未だに手放さず大事に両手に抱え続けている。 よく言われることではあるが、アニメやらゲームやらといったものは、下らない「から」、しょうもない「から」、面白いのであり、惹かれてしまうのである。

僕達はこうした下らなさ、しょうもなさの中にある価値を認めて、信じ続けてきたはずだ。 これは僕が友人に抱いた身勝手でおよそ現実とはかけ離れた願望なのかもしれないけど、友人もこうしたことを分かっていると思っていた。 だからこそ、「下らない」と何かを侮辱したことがたまらなく不愉快だったんだと思う。 許せないと思った、と言ってもいいかもしれない。

だって、僕達みたいなどうしようもない人間が「どうしようもない」って言っちゃあ、おしまいじゃないか。そんなの悲しすぎる。それは流石に嫌だ。


まとめると、友人は「何か」を、しかも下らない「何か」を含めて、しかもかなりの度合いで、好きだったはずなのに、他の「何か」を下らないと侮辱してしまったことを僕は耐えられなかったんだと思う。

ただ、途中にも書いたけど友人はものごとを深く考える性格をしていないし、僕はやたらと理屈っぽくて無駄にものごとを考えてしまう。 こうしたミスマッチを僕はすっかり忘れてしまっていて、僕は勝手に友人に期待して、勝手に失望してしまった。

言ってしまえば、それだけの話だった。

僕はたぶん、できるなら考えたことを共有したいし、一緒にものごとを考えていきたいんだけど、そんなことまるでしたくないよって人にこんな面倒くさいことを強制はできない。 考えたこと、感じたことを伝えることができないのは悲しいことだし苦しいことだけど、求められてもないのに伝えるのはただの押しつけだから、なんとかして自分の中で処理するしかない。 こうしたディスコミュニケーションはとても悲しいことだと僕は思うけど、どうしようもないのでどうしようもないね。

ITerm2の設定をGitHubで共有……できんやんけ!って思ってたけどそうでもなかった

macOS用のシェルアプリの1つとして有名なiTerm2ではシェルのカラースキームや透過率などの設定ができて,この設定を追い込むことでCLI作業のモチベーションが30%くらい上がってくる. 今回MacBook Proクリーンインストールすることにしたので,この設定の共有を複数の端末間でやってみることにした.

やりかたは簡単で,書き込み元のマシンでiTerm2の環境設定を開いて「general」→「Load preferences from a custom folder or URL」で好きなディレクトリを指定するだけ. 例えばdotfilesをgit管理している場合, dotfiles/iterm2 みたいなディレクトリを掘ってそこを指定すればいいし,Google Driveでローカルのディレクトリとクラウドストレージを同期している場合は GoogleDrive/iterm2 みたいなディレクトリを掘ってそこを指定すればいい. 指定後,同じ画面の「Save Current Settings to Folder」をクリックすれば現在の設定が保存される. 設定ファイルは「com.google.iterm2.plist」って名前のファイル(中身はXML)なので,これをそのままgit管理するなりクラウドストレージに上げるなりすればいい.

読み込む先では↑と同じ設定項目で同じ様にディレクトリを指定すればいい. これだけで設定は完了.

ただしここから先に罠がある

ここで読み込んだ設定はいくらiTerm2を再起動しても読み込まれず, OS自体を再起動しないと読み込まれないGUIアプリの設定ファイルを読み込む理由は知らないので原因などは分からないんだけど,なんかそうなってるっぽい.


追記.

macOSの設定ではplistファイルを変更した場合, cfprefsd を叩くと良いらしい.

qiita.com

でも今回は(僕だけかもだけど)効かなかった.

後輩のkn1cht氏に指摘をいただいて思い出せたので書き足しておく. kn1cht氏に感謝したい.


以上.

YAMAHA AG-06を買った

Steinberg CI 2+のヘッドホン端子が壊れて音が聴けなくなってしまったので,新しいオーディオインターフェースが必要になった. 10分くらい調べた結果,なんとなく評判が良さそうだったので表題通りYAMAHA AG-06を買うことにした. 小型版のAG-03でも良かったんだけど,大は小を兼ねる的な頭の悪い発想と到着日がこっちの方が早いという経済性ゼロの理由によりAG-06を選んだ.

レビューできるほどヘビーに使えてないし使う予定もないからレビューはしないけど,使用時に引っかかった点がいくつかあるので残しておく.

1つめ.AG-06は電源ボタンがあり,電源を入れないと機能を発揮しない. それはそうといった感じなんだけど,CI 2+は電源ボタンがなかった(USBケーブルを挿せばすぐに電源が入った)ので個人的に混乱してしまった.

2つめ.PCからの入力もAG-06側で音量調整ができるため,ツマミを回さないと音が出ない. これもそれはそう案件なんだけど,CI 2+はPCの音とラインその他からの入力の音のバランスを取る機能くらいしかなかったので,これも個人的に混乱してしまった. 確かにあると便利で,楽器の練習時やゲームをするときの通話,僕はやらないけど動画の配信時にも良い機能だと思う. というかオーディオインターフェース兼ミキサーみたいな製品だし,音量調節は当然できるんだよなと後から気付いた.

こんな感じで,入門 / 中級者クラス用のオーディオインターフェースとして,軽く使うには文句の付け所がほとんどない良い製品なんじゃないかと思う. 知らんけど.

あとひとつわがままを言うとすると,初音ミクモデルも再生産してほしいなぁ.ボカロは通ってないけど.

macOS Mojaveにアップデートした

rootログインができるのヤダー!とかなんとか言ってHigh Sierraをスルーしてたらいつの間にかモジャヴェが出ていた. 後輩のアップデート報告を聞くなどしたら段々乗り遅れている感を感じてきて嫌だったので,土日を使ってSierraからMojaveにアップデートした.

アップデート後,homebrewとtexの動作を確認したのでメモを残しておく.

homebrew編

アップデート後,homebrewが機能するかを確かめるために

brew update && brew upgrade && brew cleanup && brew prune && brew doctor

した. homebrew自体は正常に動いたものの,doctorにXCodeが古いぞオマエと言われてしまった.

そのためXCodeをアップデートした. 普通にApp Storeで最新版を落としてきただけなので,忍耐力が必要なこと以外特筆することもなくアップデートが終了した.

念のためCのプログラムをコンパイルしてみたところ正常にコンパイルできたのでまあ大丈夫だろうと判断した.

tex

次にtexの動作を確認するため,卒論をタイプセットしてみたところなんか知らんがコケた. 大昔に入れたmacTeX 2015をそのまま動かしていて原因の切り分けが面倒になったので,せっかくだしtexクリーンインストールすることにした.

まずmacTeX 2015をアンインストールすることにした.

手順はTeX Wikiにも載ってるブログ記事を参考にした.

MacTexのアンインストール - ikap

大まかに言えば,アンインストールするためにはファイルを消しまくればよい.

次にインストールだが, brew cask install mactex で入る. ただし,El Capitan以降ヒラギノ関係が面倒くさい.

そこらへんの関係は下の記事などを参考にした.

qiita.com

他に地雷を踏み抜いていないか不安だが,とりあえず今はやりたいことはできている.

以上です.

VSCodeで保存時にESLintがfixしてくれるようにする

前提

  • ESLintなどがプロジェクトに入っている
  • VSCodeを使っている

やりかた

  1. ESLintのプラグインVSCodeに入れる
  2. settings.json"eslint.autoFixOnSave": true を追記
  3. settings.json"files.autoSave"afterDelay 以外にする
  4. settings.json"editor.formatOnSave": false とする
    • eslint.autoFixOnSave と競合するらしい.参考

ぶっちゃけ最後のを書きたかっただけだった...

今更だけどdockerめっちゃいいなって思った

discordのbotを作って動かしてみた ところ,いい感じだったので自宅サーバで動かしていつでも使えるようにしようと思った.

このときにせっかくなのでdocker + docker-composeを用いて環境構築することにした.

成果物は github に上げているので気になる人は確認してほしいが,サーバで

$ git pull https://github.com/RY-2718/discord_who_to_fight_rb
$ sudo docker-compose up -discord_who_to_fight_rb

と打つだけでbotが動くところまで行ってしまった. dockerつよつよ〜.

discordのbotをrubyで作るときに任意個の引数を受け取る

最近友人や後輩とdiscordで通話をしながらスプラトゥーン2のリーグマッチをやっている. いつもは2人や4人で集まることが多いので問題にならなかったが,3人で集まったときに「誰がやるよ?」というのが問題になった.

そこで「人数と名前を入れるとランダムに選んでくれる」discordのbotを作成した.

「discord bot」で検索するとpythonでの例が多く出たため最初pythonで作ろうと思ったが,pythonでのライブラリ管理手法などがよく分からなかったので,結局慣れているrubyを用いることにした.

そこでrubyでの作成法を軽く検索したところ,

trap.jp

などが引っかかったので大いに参考にさせていただいた.

ただし,任意個の引数を受け取る方法が書いてなかったので,一応メモに残しておく. まともにrubyを扱える人なら調べるまでもないものだと思う.

bot.command :args do |event, *args|
  event.send_message("argc: #{args.size}, args: #{args}")
end

って感じで,ブロックの第二引数に *args を取ればいい.

普通に可変長引数を取ればいいだけなんだけど,そもそも可変長引数の取り方を知らなかったという……