ほろ~かる京都編 スタンプラリーRTA 100% 5時間30分

ほろ~かる京都編 | イベント情報 | hololive(ホロライブ)公式サイト (hololivepro.com)

12/9(土)に行ってきました。

京阪伏見稲荷駅から10時11分にスタートして全8か所の施設のスタンプを集め、京都高島屋で15時41分に景品のオリジナル缶バッジ(とクリアファイル)をゲットするまで、5時間30分でした。途中軽い昼食や迷子を挟みつつも、まあまあのタイムになったのではないかと思います。

ルートだけ参考にしたい方は目次から 2.3 ルート に飛んでください。

目次

    レギュレーション

    最初に訪れるコラボ施設の最寄り駅に着いた時間をスタート時刻とし、全てのスタンプを集めて景品の缶バッジを交換した時点でタイマーストップとしました。ストップウォッチとかは用意しなかったので、時刻を写真のEXIFから読み取っています。

    ルート構築

    スタート地点について

    走者は大阪寄りの京阪沿線在住のため、伏見稲荷から北上していって回るのが効率的だろうとまず考えました。全8か所のコラボ施設のうち、伏見稲荷、下鴨神社、車折神社の3か所は京都の中心地から大きく離れており、そのうち伏見稲荷と下鴨神社を回るついでに京都国際マンガミュージアムと京都市京セラ美術館にも寄れる京阪線北上ルートはかなり効率がいいのではと思います。

    一方、遠征などで京都駅からスタートする場合には、伏見稲荷や車折神社などの「その目的地のためだけに向かう」場所が比較的多くあり、同じルートを往復する必要が出てくるため、RTAには不向きと言えるでしょう。

    移動手段

    バスは使わない

    京都市内の移動といえばバスが定番ですが、今回のルートではバスを一切使わないことにしました。バスを使わない理由は主に以下の2点です。

    1. 観光シーズンは混雑により運行の遅れがしばしば発生する
    2. どのバス停からどのバスに乗れば目的地に行けるかがわかりづらい

    ほろ~かるのコラボ期間は紅葉の見ごろと重なるため、特に1.は避けたい要因でした。走者は学生時代に京都で生活していた経験があり、同じ行先のバスが3台並んでバス停にやってくる光景を何度も目にしたことがあります。

    2.についても、たとえ京都に住んでいた経験があったとしても、よく使うルートではない移動にバスを使う場合は迷うポイントです。

    もちろん、バスにもメリットはあり、例えば一日乗車券などを利用することで割安で目的地を回ることもできるでしょう。個人的にはデメリットが上回ったのと、単に混雑しているバスの乗り心地があまりよくないなどの理由でバスをやめました。

    電車と自転車を使う

    というわけで、メインの移動手段を電車とし、細かい移動には自転車を使うことにしました。自転車は、シェアサイクルのHello Cyclingを使いました。自転車移動で回った三条や出町柳周辺には、Hello Cyclingに限らずいくつかのシェアサイクルステーションが並んでいたため、自分好みのシェアサイクルを利用すればいいかと思います。走者は単に自宅周辺にもステーションがあって登録していたという理由でHello Cyclingを利用しました。

    前述したとおり走者には京都在住経験があったため、多少の土地勘によって一部は自転車でも回れそうだなと感じたので自転車を選択しています(それでも結構Googleマップとにらめっこしましたが)。京都はよく言われる碁盤目の道路のため、現在地や経路は把握しやすいと思いますが、慣れない土地でいきなり自転車を使うのはなかなか勇気が必要そうです。走者のルートを参考にする場合でも、迷わず行けるかどうかはしっかり調べた方がよいでしょう。

    電車については、細かな乗車時刻は決めませんでした。ガチでRTAをやる場合はしっかり計画した方がいいと思いますが、迷う可能性や各施設での待ち時間等を正確に予測するのは難しいと考えたため、基本的に駅を訪れたタイミングで適当に来たやつに乗る、という戦略です。運行本数が極端に少ないようなルートはなさそうだったので、これでほぼ問題なく移動できました。

    観光はしない、グッズも買わない

    走者は京都を気軽に訪れることができるので、観光はいつでもできると思い観光的な要素は一切排除し、等身大パネルの発見をしてスタンプを押したら即次の場所へと移動するRTAスタイルで挑みました。グッズも元々あまり購入しない人種です(それなのにスタンプ報酬の缶バッジのために回っている矛盾)。

    遠征で京都に来ているのだからある程度は観光も……と考えている方は走者のルートはあまり参考にせず、一泊二日などでゆっくり回った方がよいかと思います。

    ルート

    前置きが長くなりましたが、実際に走破したルートとタイムです。

    1. 10:11 ②伏見稲荷(スタート)
    2. 10:48 ⑥京都国際マンガミュージアム
    3. 11:09 ⑤京都市京セラ美術館
    4. 11:45 ④下鴨神社
    5. 13:29 ⑧車折神社
    6. 14:07 ⑦壬生寺
    7. 15:03 ③京都駅
    8. 15:41 ①京都高島屋(ゴール)

    各施設間の移動手段は以下の通りです。

    伏見稲荷~京都国際マンガミュージアム

    京阪伏見稲荷駅から京阪線に乗り三条駅まで移動後、シェアサイクルで自転車を借りて西に向かい、京都国際マンガミュージアムの建物北側の駐輪場へ。

    京都国際マンガミュージアム~京都市京セラ美術館

    借りている自転車でそのまま東へ向かい、京都市京セラ美術館の駐輪場へ。

    京都市京セラ美術館~下鴨神社

    借りている自転車で三条まで戻り自転車を返却。三条駅から京阪線で出町柳まで移動。出町柳で再度シェアサイクルで自転車を借り、鴨川デルタから北上して下鴨神社へ。

    下鴨神社~車折神社

    来たルートを三条まで引き返します。出町柳まで自転車で戻り自転車を返却し、京阪電車で三条へ。地下鉄東西線の三条京阪駅から太秦天神川駅まで移動。嵐電天神川駅で乗り換え、車折神社駅まで。

    車折神社~壬生寺

    車折神社駅から嵐電に乗って引き返し、終点の四条大宮まで移動。徒歩で壬生寺まで歩きます。

    壬生寺~京都駅

    壬生寺からJR丹波口駅まで少し長めに歩き、JRで京都駅まで移動します。京都駅のパネル設置場所である八条口祭時計広場はたどり着きづらい場所にあるため、迷わないよう気を付けましょう(1敗)。

    京都駅~京都高島屋

    地下鉄烏丸線で四条駅へ。阪急京都線の烏丸駅から京都河原町駅まで乗り継ぐか、四条駅から地下道を一駅分歩いて高島屋へ。7階で景品を貰ってゴールです。

    リプレイ

    ここからは走破時の思い出を日記的に綴ります。

    伏見稲荷編

    10時過ぎに京阪の伏見稲荷駅に降り立ち、伏見稲荷大社の方へ……と漫然と歩いていたら、道中のちょっと逸れたところにあるパネル設置場所を通り過ぎていた(1敗)。ちいかわもぐもぐ本舗のある十字路を右に曲がって少し歩いたところに目的地の La Tiare Kyoto さんがあるので、見逃さないようにしましょう。

    フブちゃんかわいい

    京都国際マンガミュージアム編

    京阪電車で北上して三条駅でシェアサイクルをレンタル。登録していたクレカで支払おうとしたら、何故か決済がエラーになる……。結局PayPayで支払うことに。PayPay払いの場合、預り金として2000円を要求されるので残高には注意しましょう。

    ここでゲットした自転車の乗り心地がいまいちで、サドルが高いし後輪の空気があまりないし、ブレーキの引っかかり方も変。シェアサイクルはこういうところをちゃんとメンテしてほしいですね。

    京都国際マンガミュージアムまでは地下鉄東西線の通っている通りをまっすぐ西に進み、烏丸御池を北上すればすぐ。道路も広くてあまり迷わなそう。マンガミュージアムの入り口を横目にちょっと北上するとすぐに駐輪場も見つかります。

    スバルかわいい

    京都市京セラ美術館編

    乗ってきた自転車に乗って通ってきたルートを逆走。当初は三条で一度シェアサイクルを返却しようと考えていたが(Hello Cyclingは30分まで130円、その後15分ごとに100円なので、45~60分乗るなら一度返却した方が若干安い)、余裕がありそうなので直接美術館まで直接向かうことに。

    京都市京セラ美術館周辺には大きな建物がいくつかあり、最初は間違って別の施設に入ってしまった。駐輪場も北側にしかないので迷うとドツボに入る可能性がある。ちゃんと調べて行きましょう(1敗)。

    美術館は白を基調にした綺麗な空間で、時間があるときにゆっくり見て回りたくなる場所だった。

    ラプラスのこの衣装すき

    下鴨神社

    同様に自転車で来たルートを戻り、三条で返却。出町柳までの移動に京阪電車を使ったが、ここもいっそ自転車で直接下鴨神社に向かった方が速い/安いかもしれない。個人的なイメージで三条~出町柳までがそこそこの距離ありそうだな、と思ったので自分は電車にしました。

    出町柳で再度自転車を借りるのだが、ここのHello Cyclingのステーションはかなりわかりづらい場所にある。他の事業者のステーションは駅出口すぐにあったので、そちらを検討した方がよいかもしれない。

    自転車で下鴨神社まで行ってそれっぽい駐輪場に停めた……と思ったらそこは河合神社で、下鴨神社まではちょっと歩くことに(1敗)。ああいう場所で自転車でどこまで行けるのか、はかなりわかりづらいので、初見だと難しそう。

    みこちかわいい

    昼休憩

    出町柳まで自転車で戻り、自転車を返却したくらいでちょうどお昼時になったので、出町柳駅すぐのロッテリアで昼食。学生時代によく来たので懐かしい。絶品チーズバーガーとふるポテがおいしかったです。

    車折神社

    ここからは自転車ルートはなくなり、電車を乗り継いで次の地へ。嵐電はおそらく初めて乗ったのだけど、叡電のような、バスみたいに降りる際に車両の前で決済して降りる方式。区間によらず料金は均一なので乗るときにピッてする必要もない。

    車折神社は車折神社駅からすぐで道がわかりやすく、迷わずに行けた。ここで初めてパネルの撮影待ちの列が。お昼過ぎのタイミングでだいたい50人くらい並んでいたように見えた。普通の参拝とミオしゃのパネルとで列が分かれているのだけど、「ホロライブの方 左へ」って張り紙がしてあって笑った。とてもわかりやすい。

    周りの紅葉もきれいでした(画像無し)

    壬生寺

    車折神社駅から再度嵐電で戻り、そのまま終点の四条大宮へ。少し引き返すかたちで西に徒歩で歩き出し、壬生寺へと向かう。Googleマップを見ながらで特に迷わずたどり着けた。

    壬生寺でござる

    京都駅

    壬生寺から京都駅までは少し移動しづらいのだが、今回は丹波口駅まで歩いてそこからJRで京都駅まで向かうことに。ここの道中が個人的に一番ミスが多かった。

    まず丹波口駅にたどり着いたタイミングでちょうど京都行きが出発。あと10秒あれば乗れていた……。仕方なく待つが、次の列車まで20分あり、椅子もない。ここまで半日程度それなりに歩いてきたので少々足が疲れていたが、キュビスタをやりながら待つしかなかった。

    無事に電車に乗って京都駅に着いてからも、八条口への行き方がわからずかなり迷う羽目に(1敗)(こいついつも負けてんな)。適当に出た改札が中央口だったのだけど、ここからが遠い。八条東口を目指していたのだけど、南北の連絡通路を渡って一旦八条西口を経由してからでないと八条東口にはたどり着けない罠。西口がこっちだから東口は逆側……と考えていると一生たどり着けない。ここはしっかりルートを調べておくことをお勧めします。

    かわいい余

    京都高島屋

    地下鉄烏丸線で四条まで戻る。ホームから改札階に上がるエスカレーターの最後にほろ~かるの広告が張り出されてたんだけど、ちょうどエスカレーターの終端で、立ち止まって写真なんか撮れない位置でちょっと笑ってしまった。まあ列車が来てないタイミングを狙って撮りに行けば人がいないタイミングもあるかな……。

    代わりに、四条駅の改札を出たあたりのデジタルサイネージにも宣伝があったのでこっちは撮影した。撮ろうとした瞬間に終わってしまい、次に流れるのを待っていたら2~3分は待つことになったのでこれもタイミングは悪かった……。

    表示される時間自体も短め。シャッターチャンスは逃さずに。

    で、高島屋までは阪急に乗らず地下道を歩いて行くことにした。一駅くらい楽勝だろうと思ったけど、一日頑張った足には結構きつく、道中少し後悔しながら黙々と歩くことに。できれば電車を乗り継いだ方がよさそうです。

    なんとか高島屋の7Fにたどり着き、最後のスタンプをゲットして目的の缶バッジもゲット! これにてタイマーストップです。タイムは5時間30分。一日お疲れさまでした。

    疲れました

    完走した感想とか

    もともとRTAとか考えておらず、普通に効率がよさそうなルートを考えてスタンプラリーしてきただけです。回っている最中にレポートをRTAっぽく書いたら面白いかもな、と思って適当に綴った次第。なので最速を目指したわけではありません。というか目指さなくていいと思う。。

    スタート地点が若干ズルっぽかったりするので、RTAとしては捉えず、単にルート構築の一つの助けになればいいかなと思います。自転車での移動とか、万人向けではないかもしれませんが、京都はシェアサイクルのステーションが多く、使いこなすと結構快適に移動できそうなので、できる人にはお勧めです。

    近いから、せっかくだし……と思ってスタンプ完全制覇しましたが、ルートの構築含めなかなか楽しかったので、関西圏でほろ~かる〇〇編があればまたやってみたいですね。遠征してまでは、ちょっときついかな……。今後の展開にも期待したいです。

    MX Mechanical Mini のタイプミスを Logi Options+ で低減する

    昨年購入して打鍵感がとても気持ちいい MX Mechanical Mini (青軸) なのだけど、コンパクトなキーボードの右端に縦に home, end, pg up, pgdn と並んでいて、del や back を押そうとした際に間違って叩いてしまうことが多々あった。

    しばらくそのまま使っていたけど中々慣れなかったので、Logi Options + というロジクールの純正アプリをインストールして一部のキー割り当てを変更したところ、タイプミスがかなり低減された。

    MX Mechanicalワイヤレスキーボード – フルサイズまたはMini | Logicool 特に home を誤って押しやすい

    具体的には、home キーに Backspace を、end キーには割り当てを無しに設定した。ついでに、pg up と pg dn にそれぞれ home と end の機能を割り当てた。これだけで back / del を押そうとして間違えて home を押してしまう、という現象がなくなり、タイプミスは体感でかなり減った。

    音量の上げ下げなどのキーも特に使っていないので、ここに del などを割り当てて右端のキーを全く使わないようにするのもありかもしれない。

    2022年 買ったもの

    今年も終わりなので、2022年に買ったものを適当に並べていく。基本的には買って満足してますが、あまりよくなかったものも含みます。

    Bauhutte 電動スーパーゲーミングデスク BHD-1400FA

    ゲーミング家具とかを出しているバウヒュッテの電動昇降デスク。動かしたい位置を記憶できるので、ボタン一つでスタンディング用の高さにしたり、椅子に座って作業できる高さにすぐ変更できる。ただしボタンの反応は少し悪い……と言うより、しばらく操作していないとスリープモードっぽくなって、何かしらのボタンを押して復帰させてから次のボタンを押さないと反応しない。いくら手軽に昇降できるとはいえ、そんなに頻繁に高さを変更しないので基本的にスリープ状態のため、操作はちょっとまどろっこしい。まあ我慢できるレベルなので、在宅ワーク中にたまにスタンディングで仕事をしたり、エアロバイクを漕ぎながら動画を見たりゲームをしたりするのに重宝している。

    MOFT X 9.7~12.9in タブレットスタンド

    タブレット用のスタンドは色々あれど、これが一番便利だなあというところに落ち着いている。サイズがいくつかあるのだけど、これは無印iPadやFire HD 10あたりにぴったりのサイズ。タブレットの裏に貼り付けるタイプで、縦横どっちでも立てられて、手で持つときもちょうどいい支えになるなかなか便利なやつ。iPad mini なんかはそれ用の大きさのやつがあるのでちゃんと調べて買いましょう。

    ソニー ワイヤレスイヤホン LinkBuds WF-L900

    これはちょっと失敗したやつ。完全ワイヤレスイヤホンに穴が開いていて外の音を取り込んだりできるのだけど、バランスがあまりよくなくて、再生している音楽を聴こうとすると外部音は聞こえにくいし、かといって音量を下げるとあまり意味がないし、そもそも大きめの音を出すと音漏れが気になる……といった感じで、あまりいいところがなかった。本体がかなり小さいのでふとした隙に落としそうにもなる。タッチ操作の感度が良すぎるのか、マスクを付け外しした際にふと触れてしまって次の曲に行ってしまったりもする。後継機の LinkBuds S では穴がふさがれてることもあり、ソニー自ら失敗だと認めてしまっているような気がする。結構いい値段したので使えるうちは使う予定です。

    Anker 511 Power Bank (PowerCore Fusion 5000)

    電源アダプターと一体型のモバイルバッテリー。これまでの PowerCore Fusion シリーズは躯体が大きくて壁面のコンセントに挿しづらい、挿してもちょっとした衝撃で落ちてしまいやすかったのだけど、これはスリムになってその弱点を克服。USB-Cケーブルを挿す端子の位置が若干悪いけど、このタイプなら新幹線でも使いやすくなった。

    BenQ EW2880U 4K モニター

    4Kモニターは1つ持っており(4Kディスプレイ GIGABYTE M28U を買って10日ほど使ってみた)、サブディスプレイとして24インチくらいのモニターとデュアルディスプレイで使っていたのだけど、後述するモニターアームを導入したら机の上が非常にスッキリしたので、「これなら同じサイズの4Kモニタを2枚並べられるのでは……?」ということに気づいてしまい、半ば衝動的に購入した。ディスプレイとしてはDisplayPort, HDMIx2, USB-Cの入力ができ、スピーカーがマシな音質、操作はリモコンで可能、といったあたりが必要十分なスペックを備えていて文句なく使えている。

    エルゴトロン LX デスクマウント モニターアーム

    前々から気にはなっていたけど、少々値が張るのでAmazonのセール時を狙って買ってみたところ、非常に使い勝手がよく、すぐに追加で4Kモニタとこのアームをもう1つ買ってしまったやつ。正直モニターアームは、どれだけ説明しても実際に使うまでその利便性がよくわからないと思っている。ので、気になる人はポチって使ってみましょう。机の上にディスプレイの脚がないことがどれだけ気持ちいいか、これは経験したものでないとわからない……。

    SwitchBot カーテン

    これもAmazonのセールかプライムデーかで買ったやつ。カーテンの片方が少し開け閉めしにくい場所にあったため導入。タイマーでスケジュールした時間に開閉するようにしているけど、朝起きると勝手に開いていて、夜暗くなると勝手に閉まるのはなかなか便利。最初のうちはめっちゃでかい音を立てて自動で開閉するカーテンを見て笑っていたけど、すぐ慣れてしまった。

    ソニー 完全ワイヤレスイヤホン WF-SP900

    これについては先日別途記事として書いた(水中でも音楽が聴けるソニーの完全ワイヤレスイヤホン WF-SP900 を買ってみた)。最近は寒すぎるので水泳は中断中です。暖かくなり始めたら再開したい。

    ロジクール KX850CC MX MECHANICAL MINI(青軸)

    今まで同じロジクールの MX KEYS MINI を使っていたのだけど、ふとこのMECHANICALが気になって実物を家電量販店で叩いてみた。結果、青軸のクリッキーな感触がよく、このカチャカチャ言うのが好きだったんだ……と自分の性癖を再確認することになり、その場でAmazonで買ってしまったのであった。過去に長い間使っていた HHKB LITE 2 か何かもカチャカチャ音が結構したのだけど、あれもわりと好きだったんだなあ。そういうわけで今まで使っていたMX KEYS MINIやHHKB Hybrid Type-Sはクローゼットで眠ってます。

    ただやっぱり、気になっていたキー配置である、右端にHomeやEndが並んでいるところ。これは未だにタイプミスの温床になっているので、頑張って慣れたいところ。キーボードを打つ感触は久々にとてもいい感じです。

    ロボロビン ノートパソコンアーム

    最近になってようやくノートPCもアームで中空に固定するようにした。なるべく安定するやつを選んだつもりだけど、固定の仕方がちょっといまいちだったかな……。構造上どうしようもない部分ではあるのだけど。これのおかげで、最初に出てきたデスクの上に4Kディスプレイが2枚、ノートPCが1台載っている状態になっている。

    まとめ

    なんかお金をかけているのは大体デスク周りだった。まあ在宅勤務になってからは一日のほとんどをデスクの前で過ごしているわけで、そこをグレードアップしてQOLを上げるのは合理的でよいかなと思っている。現状だいぶ揃っているので来年以降はそんなに買うものがないと思うけど、その振り返りはまた一年後に。よいお年を。

    水中でも音楽が聴けるソニーの完全ワイヤレスイヤホン WF-SP900 を買ってみた

    最近、運動不足解消のために近場の市営屋内プールに通って水泳をしている。全身運動で健康にいいのは違いないのだけど、普通のイヤホンではウォーキングやランニングのように音楽やラジオ等を聴きながら泳げないのが残念なポイントの一つ。ちなみにBluetoothは水中では使えないので、ただの防水イヤホン+Apple Watchみたいな装備では大丈夫ではない。

    水中でも音楽が聴ける WF-SP900

    というわけでそれ専用のソニーの完全ワイヤレスイヤホン WF-SP900 を購入した。4GBと現代の基準では少ないながらもメモリを内蔵しており、再生機器との連携なしに単体で音楽を再生できる。Amazonで購入した当時は8980円だったのだけど、今は値上がりしているようだ。

    いいところ

    水中で音楽やラジオが聴ける

    これのために買ったので当然なのだけど、軽い有酸素運動をするだけだと結構暇というか時間の浪費感があるので、何かを聴きながら泳げるのは満足感があっていい。自分は適当なラジオをmp3やm4aにしてWF-SP900に転送して聴きながら泳いでいるが、ラジオを聴きに泳ぎに行っているようなモチベーションもあって、今のところまあまあの頻度で水泳を継続できている。

    適切なイヤーピースを選べばほぼ外れない

    水中で泳ぎながらの使用になるのでポロポロ外れられては困るのだが、これは杞憂だった。自分の耳のサイズにあったイヤーピース(少しきつめがよい)さえ選んでしまえば普通に泳ぐ分にはほぼ外れないし、両方のイヤホンを結ぶ細い紐がオプションで付いているため、これを頭の後ろでゴーグルに挟んでおけば万一外れたときも水中で漂うことはない。

    容量は必要十分

    4GBと聞くとかなり少ない印象を受けるが、そもそも再生する楽曲の選択がかなり不自由なため、自分のライブラリをいっぱい詰め込んで気分でどれを聴くか決める、といった用途には向いていない。上でも述べたが再生時間の長いラジオなんかを何本か入れておき、だいたいどれも聴いたな……となったら新しいものと入れ替える、といった使い方がベターだと思っている(のでそうしている)。

    微妙なところ

    音量が小さい

    防水のために密閉してあるからか、機器自体の設定で最大音量にしても音が小さいと感じることが多い。音源のファイルをノーマライザなどを使ってかなり大きめの音量にしておくことで解決はできるが、若干音割れが発生したりするため、この点からもやはり音楽よりもラジオに向いていると感じる。

    操作性は難あり

    まず、当然ながらディスプレイがないので、視覚的に再生するファイルを選ぶことはできない。許されている操作は音量の調整と、再生開始、停止、次へ、前へ、くらいである。このため曲数が増えるごとに再生したい曲を選ぶのは困難になっていく。やはりラジオがすべてを解決する。

    転送がめんどくさい

    本体内部のメモリに楽曲がないと単体では何もできないため、古代のmp3プレイヤーのように専用のソフトを使ってmp3ファイルを転送する必要がある(試してないけどWindowsのexplorerだけでもいいかもしれない)。これは当然めんどくさい。そもそも現代のサブスク時代に自分で音楽ファイルを用意する必要があること自体がナンセンスではあるが、これはもう諦めるしかない。水中でも伝播できるワイヤレス規格を確立してほしい。

    その他

    水中で使うと勝手に音量が下がるときの対処

    タップ操作で音量の上げ下げができるのだけど、初めて使ったときに水に反応しているのか勝手に音量が下がることがあった。これの対処はちゃんとヘルプに載っていて、

    音量調節の誤操作を防ぐために、タップセンサーをロックし、音量を一定に保つことができます。タップセンサーをロックするには、まず、プレーヤーを両耳に装着し、ボタン(3)を2秒長押ししてBluetooth機能をオフにしたあと、ボタン(4)を2秒長押ししてください。ロックを解除するには、ボタン(4)を再度2秒長押ししてください。プレーヤーを同梱の充電ケースに取り付けた場合も、ロックは解除されます。

    https://helpguide.sony.net/mdr/wfsp900/v1/ja/contents/TP0001694278.html

    とあるようにタップをロックすることができる。ケースに収めた際にリセットされるのか、毎回ロック操作をする必要はあるが、これで勝手に音量が下がることはない。ヘルプはちゃんと読みましょう。

    スマホとペアリングして音楽を聴くことも可能

    自分では使ってないが、一応普通のワイヤレスイヤホンとしてスマホ等とペアリングして音楽を聴くこともできる。ただ水中用のイヤーピースだと音がこもって聴きにくいため、都度付け替えないといけなくなり、面倒そうではある。

    まとめ

    操作性に難はあれど、水中でも音楽が聴けるのはやっぱり嬉しい。これを装着してホロのうたきけラジオを聴きながら1000mほど泳いで軽くウォーキングして上がる、というルーティーンが出来上がっているので水泳はこれからも継続できそう。運動へのモチベーションを上げるためへの投資としておすすめです。

    【PS Remote Play】iPad Pro に Xbox Wireless Controller をペアリングしていると PS5 に接続できない(80001fff)

    現象

    iPad Pro から PS Remote Play で ローカルの PS5 に接続しようとしたらエラーになってしまった。

    もう一度やり直すと別のユーザーがリモートプレイしていると言われる。もちろん他の端末からは何もしていない。

    結論から言うと Xbox Wireless Controller をペアリングしているせいだった。一体どういう原理なのかは不明。

    環境は以下の通り。

    • iPad Pro 第3世代 11inch iPadOS 15.4.1
    • Xbox ワイヤレスコントローラー
    • Play Station 5 ver. 22.01-05.02.00.03-00.00.00.0.1
    • PS Remote Play ver. 5.0.0

    対処法

    PS5 への接続時にコントローラの電源を切っておけば問題なく動作する。接続後にコントローラの電源を入れるとちゃんと使えるようになる。若干面倒ではあるが、この手順を踏めばエラーは発生しない。

    iPad Pro 第3世代 11インチ Wi-Fi 256GB を購入した

    先日半ば衝動的に iPad Pro を購入した。わかってはいたけれど高い分とてもいい買い物ができたので、簡単にどこが良かったかとかを適当に書き散らしておく。

    買ったもの

    • iPad Pro 第3世代 11インチ Wi-Fi 256GB 10万くらい
    • Magic keyboard 3.5万くらい

    ついでに Apple Care+ もつけたので、大体15万くらい使ったことになる。ちなみに、PayPay ジャンボが実施されていたので100%還元を期待してヤマダウェブコムで購入したのだけど、残念ながら1%バックの3等すら当たらなかった。値引きがないなら公式で刻印を入れた方が良かったが…… Magic keyboard を使っていると背面は見る機会がないので特に気にはしていない。

    買おうと思った理由

    モデルは違えど以前から iPad 系の端末を所有して使っていたし、購入前も通常の iPad (多分第7世代くらい) を使用していた。乗り換えようと思ったのは Magic keyboard とスペックの加減である。

    Magic keyboard の存在

    これまでの iPad の利用シーンとしては、Youtube を見るか、キーボードを接続して Discord でチャットをするか、あとは Kindle を読むくらいだった。キーボードだけでなく Bluetooth マウスを繋いで操作もしていたのだけど、周辺機器の準備がちょっと面倒であった。

    トラックパッド付きのキーボードも検討したが、なかなか良い選択肢がなかった。iPad Pro または Air なら Magic keyboard が純正で存在し、トラックパッドも付いている。そのままカバーにもなっているので、着けたり外したりする手間もない。

    Smart folio も考えたが、やはりトラックパッドがあること、打鍵感が良さそう、といった点で Magic keyboard を選択した。ネットの評判を見ると重量がネックのようだったが、ノートPC的なものだと考えればそこまで重くもならないだろうと判断した。

    iPad Pro のスペック

    通常の iPad でも基本的な操作はストレスなく行えるのだが、キーボードでの入力やマウスでの操作時に時々突っかかる場面があってストレスを感じていた。また、 Apple Arcade で FANTASIN をプレイし始めたところで、スペックが上がれば快適にプレイできそうだという目論見もあった。

    Magic keyboard の存在だけであれば iPad Air も選択肢に入ったが、やはりM1チップ搭載の方が今後何年も頑張ってくれそうだし、スピーカーなど細かいところでもスペックが上がるので、どうせならケチらず Pro にしたかった。

    ちなみに Pro の中でもストレージを1TB以上にするとメモリ容量が上がったりするが、流石にタブレットに20万もかけるのは……と躊躇してストレージは割と控えめの256GBにしておいた。デカいファイルをなんかするのは去年買い換えたデスクトップPCがあるので、そういう用途は考えなかった。

    12.9インチか11インチか

    そういうわけで iPad Pro + Magic keyboard を買うのは決定したのだが、画面サイズでは小さい方の11インチを選択した。実際に家電量販店で確認したところ、大きい画面は魅力的ではあるが、流石にちょっとデカすぎると感じたので11インチにした。どちらのサイズにもメリットデメリットがあると思っていて、もし石油王だったら両方のサイズを購入して使い分けるのが一番いい使い方なのでは……と思っている。

    乗り換えてみての感想

    Magic keyboard は最高

    まず、キーボードとしての完成度が高い。Surface Pro の Type cover なんかよりも断然打ちやすいキーボードに仕上がっていて、トラックパッドも使いやすい。この記事も Magic keyboard を繋いだ iPad Pro から書いているが、ほぼストレスなくタイピングできる。

    そして、iPad の台座としても使いやすい。できればもう少し水平にできると嬉しかったが、ある程度の角度調整もできる。それでいてどっしりしているので安定感がすごい。使用感はクラムシェルのノートPCとほぼ変わらない。Split Viewで2つのアプリを並べて表示することもできるし、Discord や LINE をフロートさせればゲームを周回しながらチャットもできる。三本指スワイプでアプリの切り替えも Mac ライクにできてとても便利。この点は特に気に入っている。

    ただ、事前の確認不足などで一部には不満が残っている。

    両端のキー幅が狭くなっている

    これは完全に自分の確認ミスなのだが、11インチ用の Magic keyboard は端にあるタブキーや「ー」「〜」「@」などの幅が狭くなっている。多分12.9インチ対応の方ではフルサイズになっていると思うので、キーボードへのストレスを最大限減らすためには12.9インチにするしかない。

    ただ狭くなっているとはいえ、めっちゃ押しにくいというわけではないので、我慢できるレベルではある。慣れてくればそんなに気にもならないのかもしれない。

    ESCキーがない

    そこまで気にはならないのだけど、ESCキーが存在しない。左上隅には数字の1キーがあるだけである。たまに普通のキーボードの癖で押してしまうが、慣れたらそんなに不便ではない。

    ちなみに、今この文章を書きながら調べたら、いくつかの代替方法があるらしい(参考:https://minatokobe.com/wp/ios/ipad-pro/post-65455.html )。CapsLockキーがいらない子なので、とりあえず早速ESCを割り当てておいた。

    重い&価格が高い

    少し触れたが、重いのは確かに重い。iPad 本体を支える必要もあるので必然的にそうなっているのだと思うけど、タブレットとしての携帯性は少し落ちる。制限の多いPCだと考えれば我慢できる重さではあるので、個人的にはそんなに問題でもない。

    価格が高いのは Apple 純正品だともうどうしようもないか……という感じ。その分品質はいいし本当に快適なので、欲しいのであれば出費を躊躇うより初期に投資してしまうのがいいと思っている。

    装着したままだと画面を縦にできない

    これは iPad の横向きモードに対応していないアプリにとっては致命的で、まあ対応していないものを使おうとするのが悪いのだが……。そういうわけで縦にしか表示できないアプリは iPad にはインストールすること自体をやめた。

    やや面倒くさいが、装着したままでもキーボードごと傾ければ画面の回転はできるので、寝転んで Kindle を読む場合なんかは縦画面で回転を固定してやればある程度読みやすくはなる。

    ただやはり使いづらい点になっているのは確か。つけ外しもできるが、外した状態で縦に置くなら結局別のスタンドが必要になったりして、面倒なので装着したままできることしかやらないようになった。次世代では回転できる凄い機構を盛り込んでくれたらいいな。

    とまあ最高と言いつつここまでめちゃくちゃ不満を述べてしまったが、最高なのは本当。ついついキーボードを打鍵したくなる。PCで使っている HHKB よりも打鍵感は好みかもしれない……。

    iPad Pro 自体の仕様にも満足

    話を戻して良かった点について。

    基本的に家で使うのなら Face ID は便利

    最近は外出時にマスクが必須なので、外で使用する機会が多いなら Air の Touch ID の方がいいかもしれない。実際今はスタバでこれを書いているが、パスコードの入力すら面倒に感じる人もいると思う(自分含む)。

    USB-C になってケーブルの共通化ができる

    USB-C については iPhone がいまだに Lightning なのをどうかして欲しいが、その気配がないので若干諦め気味ではある。ただ iPhone を除くと、もう最近のガジェットはみんな USB-C なので、だんだん移行はしていくべきである。

    スピーカーもいい感じ

    スピーカーは4つ配置されていて、Dolby Atmos なんかの空間オーディオも聞くことができる。まだコンテンツは少ないけど、聞いていて楽しいので対応楽曲をどんどん増やして欲しい。購入特典で Apple Music の3ヶ月無料権利がもらえたので、普段は YouTube Music を利用していたのだが最近は iPad Pro で Apple Music を聞いている。YouTube Music は音楽配信サービスとしてはイマイチ微妙なところがあるため、無料期間が終わっても Apple Music を契約してしまう可能性はある。本当は Spotify にも入りたい……。

    画面もベゼルが狭く見やすくて大きい

    画面はやはり通常の iPad と比べると格段にいい。フットプリントは同じくらいなのにベゼルが狭くなったおかげで画面は大きくなっている。完全据え置きにするなら12.9インチもアリだったかもしれないな、と思うくらいに画面が大きいのは嬉しい。

    処理性能やバッテリー全く問題なし

    当然ながらゲームを遊んでもスペック的に問題がない。先述した FANTASIAN や、ハチナイ(八月のシンデレラナインというソシャゲ)をしていても軽快に動作する。バッテリーも、ヘビーなことをしなければ1日中余裕で保つように思う。

    総じて、iPad Pro 自体には全く不満点はないと言っていい。

    まとめ

    まだ一週間ちょっとしか使っていないものの、少しの不満はあれど基本的にはめちゃくちゃ満足していて、いい買い物をしたなーと思う。 普段から iPad をかなり利用していたので、利用頻度の高いものにはちゃんと投資しろってことである。

    もうすぐ Apple の製品発表イベントが控えているものの、iPad Pro については噂もないし、そもそも今年の4月に出たばかりなので、持っていない人はまだまだ買い時だと思う。初期投資が少なからず必要だが、とにかく性能には満足できるのでおすすめです。

    4Kディスプレイ GIGABYTE M28U を買って10日ほど使ってみた

    PS5を購入できたこともあり、前々から4Kのディスプレイが欲しかったのだけど、求めてるスペックを満たすものがなかったので様子見していた……ところにたまたま GIGABYTE M28U(公式サイト)という製品が発売されたのを見かけ、そのスペックがかなり理想的だったので半ば衝動的に買ってしまった。そのレビューです。

    M28U のスペックと求めていた条件

    スペックについては価格.comあたりを参照するとわかりやすい。以下は選んだ理由に直結したスペックを記載。

    4K 120Hz HDMI2.1 対応

    どうせなら PS5 の機能を最大限引き出せるスペックが欲しかったので、ここはマスト。ただ、現時点ではPS5でも4K 120Hzで動くソフトはあまりない。あくまで将来的なソフトの充実に期待して、その時にまたディスプレイを買い替えたりはしたくなかった。

    28インチ

    PS5をはじめとしてゲームで遊ぶだけなら、リビングにでも大きなディスプレイorテレビを置くのも選択肢に入るのだけど、自室にゲーム兼PC用のディスプレイとして設置したかった。むしろPC用として使う時間の方が長い。ので、あまり大きなディスプレイは使いにくそうだし、30インチ前後がいいなと思っていた。

    できれば32インチ程度が欲しかったのだけど、32インチかつ4K 120Hz HDMI2.1 対応というディスプレイは本当に全然なくて、知っている限りでは未発売のROG Swift PG32UQくらい。本当はこれを待っていたんだけど、なかなか情報が出ず、結局28インチでもまあいいかなとM28Uにした。

    DisplayPort×1 + HDMI×2 + USB-C×1

    入力は現在DPにプライベートのデスクトップPC、HDMIにPS5とSwitch、USB-Cに会社用ノートという感じでフルに使っている。デスクに色々と集約してる人には最低限の入力ポートはあると思う。また、USB-C は電源供給も可能。ただし、あまり電力は強くないようで、開発でごりごりビルドする会社ノートPCではじわじわバッテリーが減っていくので、ACを抜くとそういう用途では少し厳しそう。

    88,800円(Amazon)

    参考記事 PS5/Xboxにマッチする、HDMI2.1対応ゲーミングモニターの選び方 によると、競合となる製品はだいたい10万円かそれを少し超える程度。価格にそんなにこだわりはなかったものの、他と比べて高くはない。現在はAmazonでは別の出品者から買うことになっていて、だいぶ値上がりしているので注意。価格.comの最安値も1万円程度上がっているので、買うタイミングは見極めた方がいいと思われる。

    使ってみた

    PS5をやってみた

    無料で 4K 120Hz 対応を試せるのが Fortnite くらい(やったことない)だったので試してみて、まあ綺麗だとは思うけど感動するほどかというとそうでもない。28インチはやはり若干小さいのかもしれない。やりこんでないので当然120Hzの恩恵もわからんし、FPSやるならそもそも4Kじゃなく湾曲ワイドとかが宣伝されてるのをよく見かけるので、やはり対応ソフトがもっと出揃ってからかな。

    PC(Windows)に繋いでみた

    デフォルトだと解像度が150%に拡大されていて、これだとあまり4Kディスプレイでデスクトップが広くなった感じがしない。100%にすると広くはなるがめちゃくちゃ字が細かくなってしまう。

    たぶん125%くらいが落としどころだとは思うし、会社用PCは125%で使っているけど、デスクトップPCの方は意地で100%で使っている。画面に広げておきたいのはだいたいChromeなので、デフォルトのズームを150%にすることでTweetDeck用、Discord用、はてブとかInoreaderを回遊する用、みたいに画面を三分割して使っている。Windows の基本機能をカスタムできる Power Toys というアプリに Fancy Zones というウィンドウを所定の位置に調整しやすく出来る機能があるので、これを使っている。

    フォントサイズを大きく出来ないアプリに関しては、キーボードの Win と + を同時押しするとWindows10のデフォルト機能で拡大鏡が起動するので、これで見たりする。ただやっぱり100%表示では色々ときついので、PCで使う際は諦めて大きくした方がいい。

    KVM 機能が便利

    KVMとはGIGABYTEのディスプレイで利用できる機能で、ディスプレイにキーボードやマウスなどを繋いでおくと、2台のPC間を背面ボタンひとつで切り替えられる。まあUSBのswitcherとかを別途用意すれば(実際M28Uを買うまではそうしていた)ディスプレイ側でやる必要は別にないのだけど、入力ソースも併せて変更できるので便利になった。

    PIP 機能が便利

    いわゆるピクチャーインピクチャ(P in P)と呼ばれるやつで、要するに子画面を表示できる機能。マルチディスプレイから1枚の大きなディスプレイに移行すると、PCとゲームの両立ができなくなるデメリットがあるのだけど、PIPを使えば画面の大部分をPCで使い、四隅の一部にゲームを表示したりできる。SwitchくらいならPIPの子画面でも十分にプレイできるので、前述のFancy ZonesでPIP表示領域を避けてウインドウを配置しておくと使いやすい。

    OSD Sidekick が便利

    PCに OSD Sidekick というGIGABYTE製のソフトをインストールすることで、ディスプレイの操作をPCから行えるようになる。KVMとかPIPの操作もできるので、わざわざディスプレイの物理的なスイッチを触る必要がなく、マウスやキーボードでディスプレイの設定を変えることができる。

    スピーカーが残念

    残念ポイントその1。第一印象からもう全くダメ。外部のスピーカーに繋ぐのはほぼ必須と思われる。

    手元に手頃なスピーカーがなかったので適当に探してScomoonというよく知らないサウンドバーを購入した。これはまあ安いなりに違和感なく聞けるレベルの音質で、そこそこ満足している。接続はオーディオミニプラグで、電源はUSBから取れる(USBから音声の入力はできない)ので、M28UのUSBポートに刺せるのでケーブルを長く取り廻す必要もない。音量調節のつまみもあるのと、ディスプレイ下のスタンド基部にぴったり置ける大きさなのでおすすめです(リンクはアフィリエイトです)。

    正常に接続できない機器がある

    残念ポイントその2。当初、HDMIのセレクタをかましたうえでJ:COMのBD-V302Jを繋ごうとしたのだけど、これが上手くいかない。画面が緑っぽくなったり、音が出なかったりする。セレクタをやめて直接繋いでもダメだったので、諦めてCATVは結局別のディスプレイに接続した。また、Amazon Fire Stick TV(第3世代)もHDMI 2.1オンの状態だと映りもせず、HDMI 2.1 をオフにするとPS5用に買った意味がないので結局これも諦めた。手持ちのケーブルが問題だったのかもしれないけど、原因はわからず。PS5とSwitchは直接繋いでちゃんと正常に表示されるので、それ以外の機器を使いたい方は何かしらの情報が出るのを待った方がいいかもしれない。

    まとめ

    以上は機能とかスペックを全て網羅していない個人の感想なので、参考程度に。ネットにはあまりレビューとか情報が出回っておらず、Asciiの4KでHDMI 2.1対応でPS5もOK! GIGABYTEの28型液晶「M28U」は万能選手だという記事が比較的詳細にレビューされている。

    個人的には特にKVMとPIPの機能で満足してて、4Kだからよくなったという点がそんなにないのだけど(サブのディスプレイも結局用意してるし)、まあこれで今後PS5も活躍できるようになったかな……。同じようなデスク回りの人は、定価の在庫が復活したら検討してみてもいいんじゃないかなと思います。

    近況とか

    転職した

    6月から新しい会社で働いてます。何か書くようなこともないので退職エントリとかはなく、報告だけ。

    Twitter で何気なく呟いたら結構反応もらえてしまった。テレワークがデフォになったので嬉しいです。

    プロ野球見てる

    阪神戦はほぼ全て観戦して別のブログで観戦記を書いてます。今年は強いから楽しい。負けが込んでたら続いてない気がする。

    習慣・自動化

    色々なウェブサービスとかアプリとかを連携させて、日々の生活の可視化とかやってる感じ。使ってるものを列挙すると IFTTT, Pixela, Zapier, Miband 5, Google Apps Script, Notion, Todoist など。タスク管理を iOS のリマインダーから Todoist に移行したのが結構便利になってます。あとは Ruby の自作スクリプトでスクレイピングしたり。公開できそうなものはそのうち Zenn とかで書いてみたい。

    そういえば、自動化の一貫で常時起動してるサーバーが欲しくなったので、さくらのVPSを久しぶりに契約しました。折を見てこのブログ(さくらのレンタルサーバーの方で動いてる)も中身を移行したいけど、結構めんどくさそうなんだよなあ。

    ゲーム

    ソシャゲはFEHとオクトパストラベラー大陸の覇者の2つで落ち着いてます。リリースを機に色々手を出したりするけど、だいたいどれも続かない。

    最近はあまりできてないけどモンハンライズもそこそこやってる方かな。つい最近ハイニンジャソードを作ったばかりなので、これを使って地道にHR上げたいな。

    【iPhone / iPad】続・Ohajiki Web ブラウザでねじれ天国のUIをそこそこ快適にする

    はじめに

    前回記事では検索窓の幅調整だけというショボい内容だったが、今回大幅にUI改善を加えてみた。Ohajiki Web ブラウザの導入は前回記事を参考にし、貼り付けるコードをこの記事の最後のものに置き換えてほしい。

    2021/03/26追記

    コードを修正し、発言ボタンの2度押しを防止する機能を追加。また、各機能の有効/無効をフラグでコードの先頭に追加した。

    追加内容

    文学ブロッカー

    規定文字数以上の発言を途中で省略する。コード内の BLK_MAX_LENGTH の値を変えれば何文字以上で省略するかを変更可能。デフォルトは800文字。

    サイドバー格納

    左の参加者リストおよび検索窓をデフォルトで非表示にし、ログを画面幅最大で表示できるように。サイドバーの中身は「リスト・検索窓を開く▼」ボタンで開閉可能(表示位置が適当なのはご愛敬)。

    発言欄のフォントサイズを調整

    これによって入力時にズームされないようになり、発言の全体が見やすくなった(はず)。

    「村を出る」ボタンタップ時に確認ダイアログ表示

    誤タップによる退村を防げる。

    発言ボタン2度押し防止 2021/03/26追加

    そのまま。通常の発言欄だけでなく、すべてのフォームに適用される。

    その他

    最初にねじ天の村かどうかを判定しているので、他のサイトで悪さをする可能性はありません。

    修正版コード

    タップでコピーされます。適用手順は前回記事を確認してください。このコードより下に文章はありません。

    (function() {
      // 各機能ごとの有効フラグ。不要なものは true を false にすると無効になります。
      const USE_BLK_LTR = true;    // 文学ブロッカー
      const USE_ADJ_SEARCH = true; // 検索窓幅調整
      const USE_RMV_SIDE = true;   // 左リスト畳み込み&発言入力欄ズームなし
      const USE_CFM_EXT = true;    // 村を出るボタンに確認ダイアログ追加
      const USE_BLK_DBL = true;    // 発言ボタン2度押し抑止
    
      // BLK_MAX_LENGTH 以上の文字数を短縮表示する
      const BLK_MAX_LENGTH = 800;
    
      const url = window.location.href;
      if (!url.match(/nejiten\.halfmoon\.jp\/index\.cgi\?vid=/)) {
        return;
      }
    
      if (USE_BLK_LTR) {
        blockLiterature();
      }
      if (USE_ADJ_SEARCH) {
        adjustSearchBox();
      }
      if (USE_RMV_SIDE) {
        removeSidebar();
      }
      if (USE_CFM_EXT) {
        confirmExit();
      }
      if (USE_BLK_DBL) {
        disableSubmit();
      }
    
      // 文学ブロッカー
      function blockLiterature() {
        // 表示変更リンクのテキスト
        const OPEN_MES = '▼全文表示';
        const CLOSE_MES = '▲短縮表示';
    
        function createOpenDiv(mes_num) {
          let div = document.createElement('div');
          div.style.color = 'blue';
          let a = document.createElement('a')
          a.id = 'open' + mes_num;
          a.innerText = OPEN_MES;
          a.style.cursor = 'pointer';
          div.append(a);
          return div;
        }
    
        function createCloseDiv(mes_num) {
          let div = document.createElement('div');
              div.style.color = 'blue';
          let a = document.createElement('a')
          a.id = 'close' + mes_num;
          a.innerText = CLOSE_MES;
          a.style.cursor = 'pointer';
          div.append(a);
          return div;
        }
    
        function createMsgDiv(msg, id) {
          let div = document.createElement('div');
          div.id = id;
          div.innerText = msg;
    
          return div;
        }
    
        let mes = document.querySelectorAll('[class$=body1]');
        for (let i = 0; i < mes.length; i++) {
          if (BLK_MAX_LENGTH < mes[i].innerText.length) {
            let msg = mes[i].innerText;
            let shortMsg = msg.slice(0, BLK_MAX_LENGTH) + "...\n\n";
            mes[i].innerText = '';
    
            // 長文を退避
            let msgDiv = createMsgDiv(msg, 'msg' + i);
            let closeDiv = createCloseDiv(i);
            msgDiv.append(closeDiv);
            msgDiv.style.display = 'none';
    
            // 短縮文を作成
            let shortMsgDiv = createMsgDiv(shortMsg, 'shortMsg' + i);
            let openDiv = createOpenDiv(i);
            shortMsgDiv.append(openDiv);
    
            // クリック時に開閉を呼ぶようにイベントリスナ設定
            closeDiv.addEventListener('click', function() {
              toggle(i, true);
            });
            openDiv.addEventListener('click', function() {
              toggle(i, false);
            });
    
            // 追記
            mes[i].append(shortMsgDiv);
            mes[i].append(msgDiv);
    
          }
        }
    
        function toggle(i, isOpened) {
          const msgDivId = 'msg' + i;
          const shortMsgDivId = 'shortMsg' + i;
          let msgDiv = document.getElementById(msgDivId);
          let shortMsgDiv = document.getElementById(shortMsgDivId);
    
          if (isOpened) {
            // 全文表示から短縮表示に切り替える
            msgDiv.style.display = 'none';
            shortMsgDiv.style.display = 'inline';
    
            // 短縮時に発言が詰まってしまうので元発言のトップにスクロール
            shortMsgDiv.scrollIntoView(true);
          } else {
            // 短縮表示から全文表示に切り替える
            shortMsgDiv.style.display = 'none';
            msgDiv.style.display = 'inline';
          }
        }
      }
    
      // 検索窓幅調整
      function adjustSearchBox() {
        var target = document.querySelector('input#cse-search-box');
        const observer = new MutationObserver((mutations) => {
            mutations.forEach((mutation) => {
                target.style.width = "auto";
            });
        });
    
        var config = { attributes: true, childList: true, characterData: true }
        observer.observe(target, config);
      }
    
      // 左リスト削除
      function removeSidebar() {
        var side = document.querySelector('#side');
        var side2 = document.querySelector('#side2');
        var sides = document.createElement('div');
        sides.id = 'sides';
        sides.style.display = 'none';
        sides.appendChild(side);
        sides.appendChild(side2);
        var btn = document.createElement('span');
        var btnMsg = document.createTextNode('リスト・検索窓を開く▼');
        btn.id = 'btn';
        btn.classList.add('hope_toggle');
        btn.appendChild(btnMsg);
        btn.onclick = () => {
          if (sides.style.display === 'none') {
            btn.innerText = btn.innerText.replace('開く▼', '閉じる▲');
            sides.style.display = 'block';
          } else {
            btn.innerText = btn.innerText.replace('閉じる▲', '開く▼');
            sides.style.display = 'none';
          }
        }
        var content = document.querySelector('#content');
        content.appendChild(btn);
        content.appendChild(sides);
      
        document.querySelector('body > table > tbody > tr > td > table > tbody > tr > td > table > tbody > tr:nth-child(2) > td:nth-child(1)').style.display = 'none';
        document.querySelector('#main > td:nth-child(1)').style.display = 'none';
        document.querySelector('body > table > tbody > tr > td > table > tbody > tr > td > table > tbody > tr:nth-child(5) > td:nth-child(1)').style.display = 'none';
        document.querySelector('body > table > tbody > tr > td > table').style.width = 'auto';
        
        // 発言フォームのフォントサイズ変更(フォーカス時にズームされないようにする)
        let textAreas = document.querySelectorAll('textarea');
        (Array.from(textAreas)).forEach((ta) => { ta.style.fontSize = '24px' });
      }
    
      // 村を出るボタンに確認ダイアログ追加
      function confirmExit() {
        var exit = document.querySelector('input[value="村を出る"]');
        if (exit) {
          var form = exit.closest('form');
          form.onsubmit = () => {
            if (window.confirm('村を出ますか?')) {
              return true;
            } else {
              return false;
            }
          };
        }
      }
    
      // 発言ボタン2度押し防止
      function disableSubmit() {
        let forms = Array.from(document.querySelectorAll('form'));
        let btn = Array.from(document.querySelectorAll('input[type="submit"]'));
        
        forms.forEach((form) => {
            form.onsubmit = () => {
                btn.forEach((b) => {
                    b.disabled = true;
                })
            }
        });
      }
    })();

    【iPhone / iPad】Ohajiki Web ブラウザでねじれ天国のUIをちょっと快適にする

    ※2021/03/25追記 こちらで紹介しているよりも多機能なスクリプトを次の記事で公開しています。合わせてご覧ください。

    はじめに

    500以上の役職が遊べる人狼サイト、ねじれ天国。99人村のようなアホみたいな村も不定期に開催されており、そのカオスっぷりは多くの人狼プレイヤーを引き付けてやまない。

    この記事ではiOS向けブラウザアプリの「Ohajiki Web ブラウザ」でユーザースクリプトを適用して使うことで、スマホからでもちょっと快適にねじれ天国を操作する方法を解説する。具体的には、村中での左リスト下のGoogle検索ボックスが横に伸びてしまっているのを、適切なサイズに調整する。

    ※Android版は現在配信されていないようなので、本記事はiPhone / iPad ユーザーのみが対象です。もしAndroidでもユーザースクリプトが使えるブラウザがあれば教えてください。

    Ohajiki のインストールと設定手順

    インストール

    AppStore Ohajiki Web ブラウザからアプリをインストールしてねじれ天国にアクセスして、適当な村を開く。

    強制ダークモードの解除

    ※OSの設定がダークモードでなければ、この設定は不要かもしれないので飛ばしてください。

    強制ダークモードがONになっているとねじれ天国の表示が崩れるため、オフにしておく。

    強制ダークモードONの状態

    画面中央下のアイコンをタップ→上に現れた同じアイコンをもう一度タップ→左上の歯車アイコン(設定)をタップして設定画面に遷移して行う。タップじゃなくてスワイプでも可。

    タップ1度目
    タップ2度目。左上に設定のアイコンが表示される。

    設定画面の「目の保護機能」にある「強制ダークモードを使用」をオフにする。

    強制ダークモードがONの状態
    オフにすると画面全体が明るくなる。
    ねじれ天国の表示も正常になった。

    ユーザースクリプトの設定

    上のスクショでもわかるように、画面左下のGoogle検索ボックスが横長になっていて、レイアウトが崩れている。ユーザースクリプトを適用することでこれを適切な幅に調整するため、先ほど同様に設定画面から「コンテンツ」にある「ユーザースクリプトの編集」をタップ。

    ユーザースクリプトを実行するタイミングで設定箇所が異なる。

    「タイミング」の画面が表示されたら「読み込み後」の方の書き込みボタンをタップする(おそらく読み込み前でも動くが、たぶん読み込み後の方がいい)。

    読み込み後に適用されるユーザースクリプトの初期表示

    初期値を削除し、ここに以下のコードをコピーアンドペーストする。タップでコピーされます。

    (function() {
        'use strict';
    
        var target = document.querySelector('input#cse-search-box');
        const observer = new MutationObserver((mutations) => {
            mutations.forEach((mutation) => {
                target.style.width = "auto";
            });
        });
    
        var config = { attributes: true, childList: true, characterData: true }
    
        observer.observe(target, config);
    })();
    貼り付けたあと

    「戻る」からタイミング画面に戻り、読み込み後のスイッチをONにする。

    スイッチは緑が有効

    これで設定完了。村のページをリロードすると検索ボックスの幅が正常になっているはず。

    ENHANCED BY Google がちゃんと収まった

    その他つぶやき

    • 上記の検索ボックス幅調整スクリプトはPC版でも利用できます。Tampermonkey や Greasemonkey などが導入してあれば、こちらからインストールできます。
    • 他にも文学ブロッカーやレイアウトの変更など、UIを改善するコードを追加公開するかも。需要次第なので村とかTwitterで声をかけてもらえるとやる気が出ます。
    • 仕様的にねじれ天国と関係のないサイトでもスクリプトが実行されてそう。害はないと思うけど、気が向いたら修正します。