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

HHKB Professional HYBRID Type-S レビュー

少し前に PFU HHKB Professional HYBRID Type-S 日本語配列/墨を買った。調べてみたら5/16に届いたようなので、2ヶ月半ほど使用している。発売後すぐから気にはなっていたのだけど、価格(税込み35200円)をネックに感じて購入には至っていなかった。ただテレワークが始まって自宅での作業が増えたこともあり、ほぼ毎日仕事で使うのだからいいものを使いたいなと思って半ば衝動的にポチった。

持ち運びはせず、有線と無線を併用(最近はほぼ無線のみになった)して使った感想を書く。

HYBRID Type-S のいいところ

比較的静かなキータッチ

比較対象が以前使っていた HHKB Lite2 で、これがなかなかにカチャカチャうるさかったのだけど、Hybrid Type-S は小さめにシャカシャカと鳴る感じで、あまり音が気にならずにタイピングできると思う。ただめちゃくちゃ静かだよとは言いにくい。他の高級なキーボードを触ったことがあまりないので、どの程度静かだとよいのかわからないけど……。

有線/無線合わせて5つのデバイスとの接続を切り替えられる

無線の場合は数字キーを選択してペアリングすることで、4つまで接続先を保存できる。有線は USB Type-C で、無線と併用できる(たぶん)。ちょっと前までは両方使っていたのだが、最近無線だけで切り替えるコツを覚えてきたので、有線はやめることにした。机上のケーブルもほんのちょっとすっきりした。

キーマップを公式のツールで変更し、キーボード本体に保存できる

USB接続して公式ツールを使うと、わかりやすいUIでキーマップを変更できる。今はこんな感じに設定してある。

デフォルトの左Fnが押しづらいのと、無変換と間違えて左Altを押すことが多いので、それを防いでいる。一度変更すればキーボード本体に設定が保存されるので、わざわざ接続先ごとにソフトを入れなくていい。

HYBRID Type-S のわるいところ

無線接続時の挙動に癖がある

まず、ペアリングした状態でもしばらく入力がないと勝手に電源が落ちてしまう。電池の持ちを考えると仕方ないのかもしれないが、入力しようとしたときに反応がないのは結構ストレスになる。

—-
2020/10/29追記
ちゃんと調べたところ、この自動スリープ機能はdipスイッチを切り替えることでオフにできる。電池持ちは1週間程度? かなり短くなるものの、タイピングしようとした瞬間にスリープになっていてラグがある、というような事態は起こらなくなるので、個人的には常時ONになっている方が便利だと感じた。
—-

また、ペアリング先を切り替える時も接続に成功したかどうかがわかりにくい。具体的にはキーボード右上のLEDが青く光っていると接続先を探している状態で、点灯が消えると接続に成功したことになる。これも電池持ちへの配慮かわからないが、直感的とは言い難い。

ただ上記の挙動を理解しておけば、何が起こってるかは把握できるため、使っているうちに慣れてくる部分ではある。

数字キー、矢印キー回りを押し間違いやすい

これも慣れが関係してくることとは思うのだけど、数か月使ってもまだ慣れないというか距離感が掴めていない。アルファベットで打ち間違うことは少ないが、数字が1つずれたり、↑を押そうとして\を押してしまうなどは結構よくやってしまう。キーボード自体がかなりコンパクトに設計されているので、これに慣れるのはなかなか大変かもしれない。

USBハブ機能がない

HHKB Lite2 には USB のポートが2つ付いていて、そこにマウスのレシーバーを挿しておけばキーボードとマウスを一緒に別の端末に切り替えられるというメリットがあった。これは地味に便利だったのだけど、HYBRID Type-S ではなくなってしまった。マウスとキーボードの共有方法はいろんな選択肢があるが、現在はマウスはそれだけで USB 接続を切り替えられるスイッチを挟んで使っている。

まとめ

書いてみたら結構不満な点があったけど、全体的には満足して使っている。結構いい値段がするし、キーボードは好みが結構分かれるので安易に人に勧められるものではないのだけど、自作キーボードとまではいかないまでも良いキーボードを使いたい人とかにはいいかなと思う。

参考リンク

着実に進化した新型HHKB「HYBRID」 オタク視点でねっとりとレビューhttps://www.itmedia.co.jp/news/articles/2002/14/news037.html

Happy Hacking Keyboard Professional HYBRID Type-S 日本語配列/墨https://www.pfu.fujitsu.com/direct/hhkb/detail_pd-kb820bs.html

Amazon の試着サービス プライム・ワードローブを試してみた

ちょっと前にプライム・ワードローブという Amazon の試着サービスで靴を試着・購入してみた。プライム・ワードローブとは、

プライム・ワードローブとは何ですか?

レディース、メンズ、キッズ服、シューズ、バッグなどを取り寄せ、試着後に、購入を決定した商品のみ代金をお支払いいただくサービスです。1点から最大6点までの商品を配送が完了した翌日から最長で7日間、試着いただけるため、気になる商品のサイズ違い、色違いなど、まとめて取り寄せていただくことができます。

https://www.amazon.co.jp/b/?_encoding=UTF8&bbn=5429200051&node=5425661051&ref_=sv_tbyb_l0_1

という、プライム会員限定のサービス。今回は革靴を2種類・サイズ違いで合計4足取り寄せて、サイズが合ったやつだけ手元に残して不要な3足は送り返した。新しい革靴が欲しいなと思っていたところにタイムセールが開催されていたのと、このワードローブ対象商品だったのでこれ幸いと申し込んでみた。

具体的なシステムとしては、まず試着したい服や靴を6点以内選んでワードローブから注文する。普通にAmazonで購入するのと同じように注文できるが、この時点では決済は行われない。届いた商品は屋内でのみ、タグ等を外さない状態で試着ができる。

試着して実際に購入したいと思った商品だけ購入手続きをして手元に置き、不要なものは一週間以内に送られてきたダンボールにそのまま詰め直して返送する。一緒に返送先が書かれた指定の用紙を入れておき、返送用の伝票もついてくるので、自分の住所などを書いてダンボールに貼り付ければOK。コンビニでも手続きできるが、ヤマト運輸に発送を頼むと家まで取りに来てくれるので楽ちん(着払いなので返送料も無料)。複数商品が梱包できる大きさのダンボールなので、コンビニまで持っていくのは大変だと思われる。

あまり気にしていなかったが、料金は購入・返送手続きを行ったあとに請求される。もちろん購入を選んだ商品の値段のみ。今回は4足中1足のみを購入してほかを返送したが、複数購入やすべて返送もできると思う。

しばらく雨が続いていて機会がなかったが、最近ようやく出社日に晴れたので履くことができた。試着して選んだのもあって満足している(まだちょっとしか履いてないけど)。Amazonで靴を買う機会があればまた使うかもしれない。

iPhone 8 plus から iPhone SE (第2世代)に機種変更した

2017年9月から32ヶ月くらい使っていた iPhone 8 plus を iPhone SE(第2世代)に機種変更した。その前の iPhone 6s plus からずっと大きな画面だったのだけど、平均よりは大きいと思われる自分の手でも、片手の操作は結構つらいものがあったので、4.7インチの iPhone SE が出ると聞いて即座に買おうと決めた。

XS や 11、11 Proなどをスルーしていたのは Face ID がイマイチだったり、ノッチだったり、無駄なカメラ性能だったりしたので、そのあたりを軒並みクリアして、割安感のあるモデルが出てきたのは非常に嬉しい。まあ 256GB モデルだと少し高い(7万5千円くらい)のだけど……。

発売は少し前だが、au online shop で購入したので 5/10 に発送され、昨日届いた。テレワークは荷物を逃さず受け取れて便利。夜にセットアップしたのだけど、回線切替の手続き画面が見当たらず少し焦る。ちゃんと読んだら端末増設(simカードを入れ替えるだけ)の場合は別に手続きはいらないらしい。前回の機種変のときやった覚えがあるんだけど、なんでだっけ……? 今思うと sim カードの規格が変わったのかな。

データの移行は前回同様あの変な模様を読み取って端末間で転送した。一部のアプリ以外は(WiFiとかの設定も含めて)全部移行してくれるので楽ちん。ただ、ゲーム関係はアプリを起動してから DL があり、FEH は2GB オーバーの DL が始まってしまってちょっとびっくりした。今遊んでるソシャゲは FEH くらいだけど、いっぱいやってる人は大変そうだ。

画面サイズが小さくなったおかげで、右手で持っているときに左上のボタンをタップするのも割と楽になった。plus は片手だとかなり厳しいので、頻繁に動画を見るとか、大きい画面でゲームがしたいとかがなければ SE(第2世代)のサイズはおすすめ。iPhone 8 plus と比較するとカメラの性能が落ちるけれど、写真は気が向いたときにしか撮らないので個人的には問題ない。というかフラッグシップモデルでもカメラのレンズを大量に付けたりするのはやめてもう少し価格を抑えてほしい……。

使用感は快適だけど、液晶保護フィルムの貼り付けに結構失敗してしまったのが残念賞。右にズレてるし、縁が浮いてしまっている。。画面が暗い状態だと目立つけど、まあ使っているときは気にならないのでまだマシか。なんかフィルムが余ってた気がするのでそのうち貼り替えたい。

今まで使っていた iPhone 8 plus はお風呂用にでもしようかなと思っていたのだけど、これからの季節はシャワーで済ませそうだなと気づいたので、どこかで買い取ってもらおうかなあ。

Deskdock Pro でキーボードを使う時の Discord の設定

PC と USB で接続している Android 端末を、外部ディスプレイのように PC のマウスで操作出来る Deskdock というソフトがある。

いくらか払って Deskdock Pro にするとキーボードも共有出来るのだが、Discord でチャットをする時に、無変換のひらがなをそのまま入力しようとすると、エンターですぐ送信されてしまう。

そんなときは設定で送信の操作を Shift+Enter で行うようにしよう。

歯車マーク→動作→「シフト+エンターでメッセージを送る」を有効にしておけば、エンターだけでは送信はされないようになる。

この設定がなかったら不便すぎるので Pro なんて買うんじゃなかった……としばらく思ったが、設定変更出来てよかった。

ポケモン剣盾でメタモン捕獲のためにステッカーを更新したいときの覚書

基本は以下の記事を参考にしていますが、微妙に上手くいかなかったりしたので、自分のやり方を備忘録的にメモしておきます。

【ポケモン剣盾】ワイワイ通信のステッカー更新を爆速にする方法 – オンラインゲーマー日記 https://onlinegamernikki.com/pokemon-raid-matching

ステッカー更新の手順

  1. ワイワイ通信でインターネットに接続する
  2. ステッカー検索でマックスレイドバトルで絞り込む
    当てはまるステッカーがない場合は飛ばして、後でやってもOK
  3. 通信交換で被りにくいパスワード設定をして開始する
    ここまでは上の記事と同じ
  4. フィールド画面に戻り、画面左に新しいステッカーが表示されるまで待つ
    その場で待つより、移動している方が更新されやすい気がします
  5. ワイワイ通信を開いて新しいステッカーを確認

まあ大体同じなんですが、通信交換を始めてすぐだとあまり更新されなかったので、しばし待つという手順を加えてます。

ちなみにマックスレイドを行うときに通信交換がキャンセルさせられるので、戦闘後は再度3.から始めましょう。

また、体感ですが人が多すぎる時間帯(22~24時くらい)は、逆にステッカーが更新されにくい気がします。可能であれば20時くらいがベストのような気も。

その他Tips

  • 「すさまじく 強い ポケモンだ!!!」のメッセージが星5。4Vが確定します。
  • メタモンを集める場合は上記の4V確定でなくても回収しておきましょう。性格厳選に使えるので。
  • ムゲンダイナなどの伝説ポケモンにはメタモンは変身できないので、適当にレベルを上げたムゲンダイナでダイマックスほうを撃つなりして倒しましょう。
  • 連射コントローラーがあると、技一覧の一番上をダイマックスほうにしてAボタンをオート連射にするだけなので楽ちんです。演出長過ぎる。
  • 2体目以降のメタモンを捕まえるときはリピートボールがよさそうです。
  • ただし、オート連射をONにしたままだとモンスターボールを投げてしまうので注意(何度かやった)。