このブログをActivityPubに対応させました

euro | 群青日和 (gunjobiyori.com)をフォローすることでMastodonやMisskeyのアカウントからこのブログを購読することができます。

ほぼほぼWordPressブログをActivityPubに対応させる – Going Pollyanna (ihatovo.com)さんを参考にしました。プラグインをぽちぽちインストールするだけなので、らくちんでした。

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で声をかけてもらえるとやる気が出ます。
  • 仕様的にねじれ天国と関係のないサイトでもスクリプトが実行されてそう。害はないと思うけど、気が向いたら修正します。