ニンテンドースイッチでおすすめ!オート連射/連射ホールドができるコントローラ【あつ森】


あつまれ どうぶつの森』を最近よく遊んでいるのですが、純正のプロコンでは不便に感じることがいろいろとあります。

なんとかできないかと思い、幾つか得た情報を紹介いたします。


以前も連射コントローラを紹介しましたが、故障してしまいました。

am͜a͉zonで取り扱ってる中華製のものは、星5の評価でアマゾンギフト券を贈るなどといった「ヤラセ」や「さくら」の風潮が当たり前になっています。

Amazon.co.jpが販売・発送する商品はこれに限りません。

アクション、シューティング、レースゲームなどの対戦ゲームは純正のプロコン一択


switch-third-party-controller-01

Nintendo Switch Proコントローラ | Amazon.co.jp

最近ではHORI製のコントローラが任天堂に認可されていますが、amiiboを読み込むNFCやジャイロセンサーの補正機能などに対応していません。

いろいろと不満はありますが、総合的なパフォーマンスから純正のプロコンをお勧めします。

コントローラによるスリープからの復帰、NFC機能、自動連射


はじめに前提条件として、この3つの機能があるものを探しました。

他にも指定した動作を自動で行うマクロ機能を持ったサイバーガジェット製のコントローラもありますが、某大手掲示板などの情報によると不評のようです。

これらが揃っている商品を熟考してみました。

中華製 Switch Proコントローラ : Amazon.co.jp

中国のBooKingというブランド名でGCHTというショップ(マーケットプレイス)が販売し、Amazon.co.jpが発送

記事執筆時の価格:¥3,499

2020/08/24の夜から取り扱いを開始しているためレビューは今のところありません。ショップが無くなる可能性もあります。

OEMビジネスを利用したもので他のショップのコントローラにも使用されています。商品名だけでなく外観を確認する必要があります。

確認できる範囲でのマーケットプレイス名:scorel、Maxku、 etc...

コントローラによるスリープからの復帰

TVモードの場合、プロコンに慣れたら無くてはとても不便な機能

amiiboを読み込ませるNFC機能

頻繁には利用しませんが無いよりもあった方が便利

自動連射ホールド機能

以前に紹介した「ECHTPower」というブランドのものや類似商品は5分で自動的にコントローラの電源が切れるため、放置して連続作業を行わせるということはできないようです。

他の同じコントローラのレビューなどを見る限りボタンを押している間だけ連射となるようです。

(洗濯バサミなどで物理的に固定する方法もあり?)

ジャイロセンサーと振動機能

6軸ジャイロセンサーとデュアルモーター振動とのことですが、プロコンと比べると確実に劣ります。

ゲームにある機能を最大限楽しむなら、素直に純正のプロコンを使用するのが賢明です。

USB Type Cケーブル

充電などはUSB Type Cで行いケーブルも付属されます。

結論

国内メーカーで、このような機能を持つコントローラは現時点ではないことと、安物買いの銭失いになる事を考えて、購入を見送りました。

PCからBluetoothで接続し自動化出来る「joycontrol」


敷居は高くなりますが、手持ちの環境で無料で行うことが出来たこちらの方法を紹介します。

必要なもの/環境

  1. PC(Windows 10にて使用)
  2. Bluetooth環境
  3. ネット環境
  4. Linuxを動かすためのバーチャルマシン
PCさえあればソフト上で実行でき、Pythonスクリプトで操作の自動化や自作の自動操作が可能です。

※ご利用は自己責任でお願いします。

バーチャルマシンのインストール

VirtualBoxを利用して紹介されているものが多いですが、私の場合はVMwareをずっと使っているのでそちらで紹介します。

Link:VMware-workstation-15.5.6-16341506.exe.tar

VMware Workstation 15.5.6が現在最新のようです。実際に使用するのは付属するPlayerなので無料で利用できます。

圧縮されたtarファイルを展開後、「VMware-workstation-15.5.6-16341506.exe」をダブルクリックして、インストーラに従ってインストールしてください。

圧縮・解凍ソフトは「7-Zip」をお勧めします。

すでにインストールしている方は入れなくてもOKです。

elementary OSのダウンロード

個人的にお気に入りのUbuntuベースのOSを使用しました。


isoファイルだけ使い、PC本体にインストールはしないので「elementary OSのダウンロード」の部分を参照してください。

VMwareにelementary OSをインストール

1)VMware Workstation Playerを起動して「新規仮想マシンの作成」

2)インストーラ ディスクイメージ ファイル→ダウンロードしたelementary OSのisoファイルを選択

3)Linux Ubuntu 64ビットのまま次へ

4)仮想マシン名を「elementary OS」などわかりやすい名前にし、場所はデフォルトでOK

容量の余裕がある場所を選択(SSDだと起動や動作が速い)

5)ディスク最大サイズは私の場合だと40GBに、仮想ディスクを単一ファイルとして格納にチェック

理由は後で拡張する機会があったときに面倒なため

6)ハードウェアをカスタマイズをクリックしてメモリ容量などを変更

【推奨システム要件】
  • 最近のIntel Core i3またはそれと同等のデュアルコア64bitプロセッサ
  • 4 GB のシステムメモリー (RAM)
  • 15 GB のディスクスペースのある SSD
※これらの要件は必須ではなく、満たしていなくても動作します。

私の場合ですが、メモリを8GB プロセッサを4コアにしています。

7)「完了」をクリックして「仮想マシンの再生」

日本語を選択後、「elementaryをインストール」をクリックして進めていきます。

基本的にそのまま続けるを押してインストールするだけです。

  1. キーボードレイアウトはJISキーボードが大半だと思うので日本語のままでOK
  2. 「elementaryのインストール中にアップデートをダウンロードする」にチェックを付けたまま続ける
    (サードパーティ製ソフトウェアのインストールはチェックしなくてもOK)
  3. ディスクを削除してelementaryをインストール
  4. Tokyoのまま続ける
  5. 名前とパスワードをわかりやすく設定し自動的にログインするにチェック
  6. インストール完了後「今すぐ再起動」をクリック
  7. 「Please remove the installation medium, then reboot」と表示されるので、ゲストを再起動

仮想マシンへのインストールなので、パスワードは簡単に「スペース」だけでも大丈夫です。

後々このパスワードを使うので忘れないようにしてください。

以上でelementary OSがVMwareにインストール完了です。

位置情報サービスは使わないため、それだけオフにして初期設定を済ませたあと、アップデートをインストールします。

VMware Toolsのインストール

ホスト(Windows)とゲスト(elementary)間でクリップボードやファイルのドラッグ&ドロップを有効にします。

1)ドックにあるAppCenterを開きます

2)インストール済みのタブにある「open-vm-tools-desktop」の無料をクリック→了解してインストール

以上で完了です。

ウインドウのサイズを変更すると自動的にデスクトップが拡大・縮小します。

表示がおかしい場合はフルスクリーンにして戻すと治ると思います。

ターミナルとファイルをドックに追加

左上のアプリケーションをクリックして、ターミナルとファイルをドックにドラッグして追加します。

よく使うので、あると便利です(アプリケーションをクリックで選択してもOK)

joycontrol-kbのインストール


Linux上でニンテンドースイッチのコントローラをエミュレートできる「joycontrol-kb」を利用します。

「joycontrol-kb」は「joycontrol」の派生でキーボードでボタン操作ができるようになるソフトウェアです。

以下からターミナルを使ってコマンド入力で操作していきます。

joycontrolに必要なパッケージのインストール

ターミナルを起動して以下を実行

1)依存関係のあるパッケージをインストール

sudo apt-get update -qy
sudo apt-get upgrade -qy
sudo apt-get install -qy git python3-pip libglib2.0-dev python3-dbus libhidapi-hidraw0 libhidapi-libusb0 libdbus-1-dev
sudo -H pip3 install hid aioconsole crc8 dbus-python keyboard

ターミナルへのコピペは「Ctrl+Shift+v」で貼り付けすることができます。

初回に警告が出るので「貼付け時に保護警告を表示」のチェックを外して「了解して貼り付け」をクリック

貼付け後「Enter」で実行します。

2)joycontrol-kbのインストール

git clone https://github.com/QueenLinuxGlitch/joycontrol-kb.git
sudo -H pip3 install joycontrol-kb/

これで赤文字や黄色などのエラーがでなければインストール完了です。

joycontrol-kbの実行方法


はじめに、ドックにある「システム設定」から「電源」の非アクティブ時の項目を「なし」に設定してください。

これを行わないと、一定時間経過後に仮想マシン上のelementary OSが止まってしまい、自動で実行しているコントローラの操作が止まってしまうからです。

Bluetooth環境

PCにBluetooth環境が必要です。

私の場合、以前購入したUSB2.0接続のBluetoothドングルを使用しています。

I-O DATA Bluetoothアダプター Class 2対応 4.0+EDR/LE対応 USBアダプター USB-BT40LE : Amazon.co.jp

Amazon.co.jpが販売・発送なので安心です。

記事執筆の価格が¥1,564なので、価格コムとam͜a͉zonの売れ筋1位である「TP-Link製 UB400」でも問題ないと思います。

TP-Link Bluetooth USBアダプタ Ver4.0 UB400 : Amazon.co.jp

Bluetooth 4.0ですが、5.0以降で販売されているものは今のところ全て中華製のバルク品になります。

機能で簡単に説明すると、5.0で通信速度と距離が拡大され、5.1で方向探知機能が追加となっています。

PCに接続するUSBドングルでは特に気にする必要はありません。

仮想マシンへのBluetoothの接続

VMwareの右上にあるUSBのマークを右クリックして「接続(ホストから切断)」

elementary OS上の右上にあるBluetoothのアイコンをクリックすることで操作できます。

joycontrolの基本的な操作

ターミナルを開き以下を実行します。

1)ディレクトリの移動

cd joycontrol-kb/

「jo」と入力後にTabキーを押すことで入力補完されるので利用してください。

2)joycontrolの実行

実行するときはNintendo Switchの「ホーム画面」→「コントローラ」→「持ち方順番を変える」の画面にします。

sudo python3 run_controller_cli.py PRO_CONTROLLER

実行ログが流れ、ペアリングが成功したら以下のログが数行続いたあとに止まります。

INFO - received output report - Sub command SubCommand.SET_PLAYER_LIGHTS
Enterキーを押してあげることで操作が可能になります。

次回実行時はキーボードの↑を押すことで過去の入力履歴が表示されます。

「cmd>>」という表記になるので、「a」→「b」→「home」といった感じで入力してみてください。

「help」と入力すると英語で説明が表示されます。

【基本的なボタン入力】
a Aボタン
b Bボタン
x Xボタン
y Yボタン
l Lボタン
r Rボタン
zl ZLボタン
zr ZRボタン
l_stick Lスティックボタン
r_stick Rスティックボタン
minus -ボタン
plus +ボタン
up 十字ボタン(上)
down 十字ボタン(下)
left 十字ボタン(左)
right 十字ボタン(右)
capture キャプチャーボタン
home HOMEボタン
「keyboard」と入力するとキーボードでコントローラを操作することができます。
q=LEFT w=LstickUP e=UP r=ZL t=L y=R u=ZR i=RstickUP
a=LstickLEFT s=LstickDOWN d=LstickRIGHT f=RIGHT g=capture h=home j=RstickLEFT k=RStickDOWN l=RstickRIGHT
c=DOWN up=X down=B left=Y right=A
]= + [= -

recording機能などもありますが、今回は使わないので割愛させていただきます。

終了する場合は「exit」もしくはキーボードの「Ctrl+c」を押すことで終了します。

Bluetooth接続がエラーとなる場合

VMwareのUSBドングルの接続を右クリックして一度ホスト(PC)に接続、再度ゲスト(VM)に接続してみてください。

elementary OSのBluetooth設定を開いた状態が接続されやすいです。

joycontrol-pluginloaderとプラグインのインストール


Almtrさんの「joycontrolプラグイン」を利用させていただきました。


詳細はこちらに書かれています。

joycontrol-pluginloaderのインストール

ターミナルを開き以下を実行

git clone --recursive https://github.com/Almtr/joycontrol-pluginloader.git
sudo -H pip3 install joycontrol-pluginloader/

稚拙プラグインのダウンロード

簡単なものですが、どんぐりと松ぼっくり回収用に「AとYを連射ホールド」するスクリプトを作りました。

ターミナルを開き以下を実行

git clone https://github.com/ichitaso/joycontrol-plugins.git

わかりやすく短くなるように名前を変更

mv joycontrol-plugins plugins

ディレクトリ(フォルダ)名が joycontrol-pluginsからpluginsという名前に変わります。

使い方

1)住民に話しかけないように、坂のない崖に木を植えます。

2)木の正面で以下のように実行します。

「HOME」→「コントローラ」→「持ちかた/順番を変える」の画面にする

sudo python3 run_controller_cli.py PRO_CONTROLLER

「a」→「b」→「home」と入力して「exit」

3)ディレクトリの移動とコマンドの実行

cd joycontrol-pluginloader/

以下のコマンドで連射ホールド

sudo joycontrol-pluginloader ../plugins/utils/RepeatAY.py

うまく接続されたら、AボタンとYボタンの連射が続けられ足元に落ちたものを回収していきます。

ポケットの持ち物は少ない方がより長い時間継続できます。

4)マイル旅行券の発行だけの場合

同じような要領でAボタンのみを連射ホールドします。

sudo joycontrol-pluginloader plugins/utils/RepeatA.py

5)終了方法

キーボードで「Ctrl+c」を押して終了します。

6)ディレクトリをもとに戻す

cd ..

これで一つ前のディレクトリに移動します。

自作プラグインの参考サンプル

MyPlugin.py

import logging
from JoycontrolPlugin import JoycontrolPlugin
logger = logging.getLogger(__name__)

# クラス名とファイル名を一致させる
class MyPlugin(JoycontrolPlugin):
async def run(self):
await self.button_push('a') # Aボタンを押す
await self.wait(0.3) # 0.3秒間待つ

await self.button_push('a', 'b') # AとBボタンを同時に押す
await self.wait(0.3)

await self.button_press('a', 'b', 'x') # A、B、Xボタンを同時に押し続ける
await self.wait(0.1)

await self.button_release('x') # Xボタンだけ離す
await self.wait(0.1)

await self.button_release('a', 'b') # AとBボタンも離す
await self.wait(0.1)

await self.button_push('a', press_time_sec=3.0) # Aボタンを3秒間長押しする
await self.wait(0.3)

スティック入力サンプル

StickPlugin.py

import logging
from JoycontrolPlugin import JoycontrolPlugin
logger = logging.getLogger(__name__)
# クラス名とファイル名を一致させる
class StickPlugin(JoycontrolPlugin):
async def run(self):
await self.left_stick('up') # 左スティックを上に傾ける
await self.wait(0.3) # 0.3秒間待つ

await self.right_stick('down') # 右スティックを下に傾ける
await self.wait(0.3)

await self.left_stick(angle=45) # 左スティックを左上(45度)に傾ける
await self.wait(0.3)

half_power = self.max_stick_power / 2
await self.left_stick('right', power=half_power) # 左スティックを半分の力で右に傾ける
await self.wait(0.3)

await self.left_stick('center') # 左スティックを中央に戻す
await self.right_stick('center') # 右スティックを中央に戻す
await self.wait(0.3)

実際に実行している動画


まとめ


一度環境さえ作ってしまえば、思ったより簡単かつ安価に行うことができました。

PCが無い、もっと手軽にやりたいという場合は「HORI製の有線コントローラ」がいいかと思います。

ホリパッドミニ for Nintendo Switch : Amazon.co.jp

NFCやジャイロ、振動機能などがありませんが、任天堂のライセンス商品です。

連射ホールド機能があり5分間でオートスリープしない、スティックを動かしながら連射機能を使える、国内メーカーでAmazon.co.jp が販売、発送など安心です。

カラーバリエーションの中ではピカチュウ&イーブイが好みです。

【参考Link】