ゲームパッド

提供: ArchWiki
2015年1月6日 (火) 20:42時点におけるKusakata (トーク | 投稿記録)による版 (ページの作成:「Category:入力デバイス Category:ゲーム en:Joystick ゲームパッドを Linux で使うのには少し手間がかかるかもしれません。サ...」)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
ナビゲーションに移動 検索に移動

ゲームパッドを Linux で使うのには少し手間がかかるかもしれません。サポートが薄いためではなく、あなたのゲームパッドを動かすのにロードすべきモジュールを見つける必要があり、そしてそれがわかりづらいことがあるからです。

ゲームパッド入力システム

実は Linux には異なる2つのゲームパッドの入力システムが存在します。オリジナルの 'Joystick' インターフェイスと新しい 'evdev' ベースのインターフェイスです。

/dev/input/jsX は 'Joystick' API インターフェイスに /dev/input/eventX は 'evdev' インターフェイス (こちらにはマウスやキーボードなど他の入力デバイスも含まれます) にそれぞれマップされています。

ほとんどの新しいゲームは 'evdev' インターフェイスをデフォルトで使います。しかしながらこのページで触れているツール (jscal, jstest, jstest-gtk) の多くは旧式の 'Joystick' でしか動作せず、これらのツールによる調整やマッピングがほとんど無駄になってしまうでしょう。'evdev' はリマッピングやキャリブレーションをサポートしておらず、サポートしているアプリケーションに任せっきりになっています。

SDL_JOYSTICK_DEVICE=/dev/input/js0 環境変数を設定することで 'Joystick' API を使うように SDL を強制させることができます。これは X3 などのゲームで役に立ちます。

wine での確認とテストは基本的に wine control joy.cpl で両方できます。

また、xorg ドライバー xf86-input-joystick というのも存在します。これはゲームパッドを使って xorg のマウス・キーボードを操作できるようにするだけのもので、ほとんどの人にとっては望んでいたものではないとなるでしょう。ゲームでの調整やボタンマッピングのために xorg.conf.d ファイルを編集するのは無意味ということです。

必要なモジュールの確認

Linux における全てのゲームパッド関連のモジュールの広範な外観を見るには、Linux カーネルのソースを紐解く必要があります -- 特に Documentation セクションがそれです。残念ながら、pacman のカーネルパッケージには必要なドキュメントが含まれていません。カーネルソースをダウンロードした場合、Documentation/input/joystick.txt を見て下さい。また、kernel.org から使用しているカーネルの "cgit" (git フロントエンド) リンクをクリックして、上部の "tree" リンクをクリックすることでカーネルのソースツリーをブラウズすることができます。こちらはカーネル 3.12.6 のドキュメントのリンクです。

Microsoft Sidewinder コントローラー (sidewinder) や Logitech デジタルコントローラー (adi) など、特定のモジュールを必要とするゲームパッドも存在します。多くの古いゲームパッドはシンプルな analog モジュールで動作します。サウンドカードによるゲームポートにゲームパッドを接続している場合、サウンドカードドライバーをロードする必要があります - しかしながら、カードによっては、Soundblaster Live など、特定のゲームポートドライバーを持っているものもあります (emu10k1-gp)。古い ISA サウンドカードは ns558 モジュールを必要とします。これは標準のゲームポートモジュールです。

Linux でゲームパッドを動作させるのに関連するモジュールは多々あるため、ここでは全てを説明することはできません。詳細については上記のドキュメントを見るようにしてください。

モジュールのロード

ゲームポートのモジュール (ns558, emu10k1-gp, cs461x, など)、ゲームパッドのモジュール (analog, sidewinder, adi, など)、そしてカーネルジョイスティックデバイスドライバー (joydev) をロードする必要があります。これらを /etc/rc.conf に追加するか、modprobe してください。gameport モジュールは他のモジュールの依存モジュールとして、自動でロードされるはずです。

設定のテスト

モジュールがロードされたら、新しいデバイスが見つかるはずです: /dev/input/js0。デバイスを cat することで動作するか確認できます - スティックを動かして、全てのボタンを押して下さい。例えば Logitech Thunderpad Digital には2つのボタンが存在しますが analog モジュールでは動作しません。ドキュメントには、このコントローラーのための固有の adi モジュールが載っています。教訓として、最初に動作しなかったときも、諦めてはいけません。ドキュメントを隅々まで読んでみましょう。ドキュメントを見つけるまでは何も動かせないこともあります。

テストする他の方法は AUR の joyutilsAUR パッケージの jstest を使うことです。このパッケージにはデバイスのキャリブレーションのための jscal も入っています。一行では設定できないほどの多数のボタンや軸がある場合や、パッドに加速度センサが付いている場合は (何も起こってない時も新しいイベントを送り続けます) グラフィカルツールを使って下さい。AUR にはそのための jstest-gtk-gitAUR が存在します。sixaxis のテストとトラブルシューティングには必須です。

USB ゲームパッド

USB を動作させて、ジョイスティックドライバーを modprobe する必要があります。usbhidjoydev です。 usb マウスやキーボードを使っている場合、usbhid は既にロードされるので joydev モジュールだけをロードしてください。

PS3 コントローラー

Sixaxis ゲームパッドは USB で接続された時に設定なしで動作します (操作を開始するには PS ボタンを押さなくてはなりません)。振動機能はカーネル 3.14 からサポートされています。

Steam は PS3 パッドとして正しく認識し、PS ボタンで Big Picture を起動することが可能です。Big Picture やゲームによっては 360 コントローラーのように振る舞うことができます。ゲームパッドによるマウス操作はデフォルトでオンになっています。ゲームをプレイする前にオフにしたいときは、下を見て下さい。

Xbox 360 コントローラー

このコントローラーはパッケージを別にインストールしなくても動作しますが、無線コントローラーには無線レシーバーが必要です (charge-and-play ケーブルはコントローラとの通信に使えません)。有線コントローラーと無線レシーバーはどちらも xpad カーネルモジュールによってサポートされています。

デフォルトで、コントローラーと関連付けられたデバイス (例: /dev/input/event14) は root に所有されます。これは root グループに入っており、所有者にしかデバイスを読み書きすることが許可されません (600)。結果として、アプリケーションはスーパーユーザー権限で実行しないかぎりコントローラーを使用できなくなります。これを修正するため、以下の udev ルールを作成してください。

/etc/udev/rules.d/50-event.rules
KERNEL=="event*", GROUP="games", MODE="660"

この udev ルールは games グループのメンバーであるユーザーがコントローラーを使えるようにします。

残念ながら xpad には新しい無線コントローラーで問題が起こります:

解決方法は xboxdrvAUR を使うことです。これはユーザースペースで動作するもうひとつのドライバーです。システムサービスとして起動することができます。もしくは SteamOS のパッチがあたった xpad (steamos-xpad-dkmsAUR) も以上の問題を修正しています。

コントローラーを使ってマウスの制御や、ボタンのキーへのマッピングなどをしたい場合、xf86-input-joystick パッケージを使う必要があります (設定のヘルプは man joystick で見れます)。マウスが隅で固まってしまうときは、/etc/X11/xorg.conf.d/50-joystick.confMatchDevicePath/dev/input/event* から /dev/input/js* に変更すれば直るでしょう。

ヒント: TLP 電源管理デーモンを使っている場合、Microsoft の無線アダプタの接続に問題が発生することがあります (例: インジケータ LED がアダプタを接続した数秒後に消えてしまい、コントローラーの接続が失敗する)。これは TLP の USB 自動サスペンド機能が原因です。この機能を完全に無効化するか、Microsoft の無線アダプタのデバイス ID を機能のブラックリストに追加することで問題は解決します (詳しくは TLP configuration をチェック)。

SteamOS の xpad

デフォルトの xpad カーネルモジュールで問題がおこる場合、AURsteamos-xpad-dkmsAUR でインストールできる SteamOS バージョンを使うことができます。

インストールする前に、DKMS をインストールして実行してください。

それから修正版のカーネルモジュール steamos-xpad-dkmsAURAUR からインストールして下さい。インストール中に新しい xpad カーネルモジュールがカーネルに結び付けられるのが確認できると思います:

Creating symlink /var/lib/dkms/steamos-xpad-dkms/0.1/source ->
                 /usr/src/steamos-xpad-dkms-0.1
 
DKMS: add completed.
 
Kernel preparation unnecessary for this kernel.  Skipping...
 
Building module:
cleaning build area....
make KERNELRELEASE=3.12.8-1-ARCH KVERSION=3.12.8-1-ARCH....
cleaning build area....

再起動すれば動作するようになります。

xboxdrv で2つのコントローラーを使う

xboxdrv は多数のコントローラーをサポートしていますが、デーモンモード でしか動作しません。 一番シンプルな方法はサービスとして xboxdrv をデーモンモードで起動して:

ExecStart = /usr/bin/xboxdrv -D -c /etc/conf.d/xboxdrv

設定ファイルに2番目のコントローラーのサポートを追加することです:

 [xboxdrv]
 silent = true
 next-controller = true
 [xboxdrv-daemon]
 dbus = disabled

Xbox 360 コントローラーに偽装する

xboxdrv を使うことで --mimic-xpad スイッチによってあらゆるコントローラーを Xbox 360 コントローラーとして登録することができます。Xbox 360 コントローラーをサポートしていて、他のゲームパッドでは問題がおこるゲームでありがたい機能です。

まず、コントローラーのボタンやスティックの名前を確認する必要があります。evtest を使えば確認できます。evtest を実行してコントローラーに対応するデバイスのイベント ID 番号 (/dev/input/event*) を選択してください。コントローラーのボタンを押したりスティックを動かしてボタンやスティックの名前を調べます。

以下は出力の例です:


Event: time 1380985017.964843, type 4 (EV_MSC), code 4 (MSC_SCAN), value 90003
Event: time 1380985017.964843, type 1 (EV_KEY), code 290 (BTN_THUMB2), value 1
Event: time 1380985017.964843, -------------- SYN_REPORT ------------
Event: time 1380985018.076843, type 4 (EV_MSC), code 4 (MSC_SCAN), value 90003
Event: time 1380985018.076843, type 1 (EV_KEY), code 290 (BTN_THUMB2), value 0
Event: time 1380985018.076843, -------------- SYN_REPORT ------------
Event: time 1380985018.460841, type 4 (EV_MSC), code 4 (MSC_SCAN), value 90002
Event: time 1380985018.460841, type 1 (EV_KEY), code 289 (BTN_THUMB), value 1
Event: time 1380985018.460841, -------------- SYN_REPORT ------------
Event: time 1380985018.572835, type 4 (EV_MSC), code 4 (MSC_SCAN), value 90002
Event: time 1380985018.572835, type 1 (EV_KEY), code 289 (BTN_THUMB), value 0
Event: time 1380985018.572835, -------------- SYN_REPORT ------------
Event: time 1380985019.980824, type 4 (EV_MSC), code 4 (MSC_SCAN), value 90006
Event: time 1380985019.980824, type 1 (EV_KEY), code 293 (BTN_PINKIE), value 1
Event: time 1380985019.980824, -------------- SYN_REPORT ------------
Event: time 1380985020.092835, type 4 (EV_MSC), code 4 (MSC_SCAN), value 90006
Event: time 1380985020.092835, type 1 (EV_KEY), code 293 (BTN_PINKIE), value 0
Event: time 1380985020.092835, -------------- SYN_REPORT ------------
Event: time 1380985023.596806, type 3 (EV_ABS), code 3 (ABS_RX), value 18
Event: time 1380985023.596806, -------------- SYN_REPORT ------------
Event: time 1380985023.612811, type 3 (EV_ABS), code 3 (ABS_RX), value 0
Event: time 1380985023.612811, -------------- SYN_REPORT ------------
Event: time 1380985023.708768, type 3 (EV_ABS), code 3 (ABS_RX), value 14
Event: time 1380985023.708768, -------------- SYN_REPORT ------------
Event: time 1380985023.724772, type 3 (EV_ABS), code 3 (ABS_RX), value 128
Event: time 1380985023.724772, -------------- SYN_REPORT ------------

上記の場合 BTN_THUMB, BTN_THUMB2, BTN_PINKIE がボタンで、ABS_RX が右アナログスティックの X 軸になります。 そしてこの名前を使って次のようなコマンドで Xbox 360 コントローラーにみせかけることができます:

$ xboxdrv --evdev /dev/input/event* --evdev-absmap ABS_RX=X2 --evdev-keymap BTN_THUMB2=a,BTN_THUMB=b,BTN_PINKIE=rt --mimic-xpad

上の例は不完全です。デモンストレーション用に1つの軸と3つのボタンしかマップしません。xboxdrv --help-button を使って Xbox コントローラーのボタンと軸を見て、上のコマンドに拡充してそれぞれ割り当てて下さい。軸のマッピングは --evdev--absmap の後に、ボタンのマッピングは --evdev-keymap の後に記述します (カンマで区切り、スペースは使いません)。

デフォルトで、xboxdrv は全てのイベントをターミナルに出力します。これによってマッピングが正しいかどうかテストすることが可能です。--silent オプションを追加すると出力がされなくなります。

USB による Playstation 3 コントローラー

PS3 コントローラーを使っていて USB で接続している場合、xboxdrv には初めから組み込まれたマッピングが存在します。次のプログラムを実行 (して動作中のドライバを取外) すれば動作するようになります。

# xboxdrv --silent --detach-kernel-driver

Bluetooth による Playstation 3 コントローラー

bluetooth を通してプレイステーション3のコントローラーを使うには sixpairAUR ユーティリティをインストールする必要があります。

sixpair をインストールした後はコントローラーを USB ケーブルで接続して sixpair を実行してください:

# sixpair

USB からコントローラーを切断して5分間待機してください (本当に待機する必要があるのかは定かでない)。

そして bluez でペアリングを行います。bluez-utilsbluez-plugins パッケージが必要です。

全ての bluetooth ユーティリティ (bluedevil や bluemon) を無効にしてください。

bluetoothctl ユーティリティを実行します:

# bluetoothctl

bluetooth のプロンプトが表示されます。

プレイステーションボタンを押して、接続・切断のメッセージを見てデバイスのアドレスをコピーしてください (例: 38:C0:96:56:4D:AA)。

ランプの点滅が止まるまで待って下さい。

そして、以下を入力してください:

agent on
default-agent
discoverable on
pairable on

もう一度プレイステーションボタンを押して、点滅している間に次を入力します:

connect <device_addr>

デバイスが利用可能にならない場合 (接続と切断を繰り返します) 以下のような表示がされるまで上のコマンドを試し続けてください:

[CHG] Device <device_addr> Modalias: usb:v054Cp0268d0100
[CHG] Device <device_addr> UUIDs:
       00001124-0000-1000-8000-00805f9b34fb
       00001200-0000-1000-8000-00805f9b34fb

そしてデバイスを認証してください:

trust <device_addr>

これで完了です。

次からはプレイステーションボタンを押せば自動的に接続されます。

また、無効にした bluetooth アプレット・モニターをもう一度有効にすることができます。.

コントローラーを使わないときは切断するのを忘れないで下さい。接続したままにしておくと、バッテリーを消費します。

xboxdrv を使って xbox360 コントローラーをエミュレートする場合は udev ルールを作成するのが良いでしょう。

udev ルールを作成する

以下の内容で新しい udev ルールを作成してください (例えば 99 または 98-dualshock.rules を /etc/udev/rules.d/ に配置):

KERNEL=="event*", SUBSYSTEM=="input", ATTRS{uniq}=="<device_addr_you_got_on_pairing>", SYMLINK+="input/dualshock3"

xboxdrv を新しいデバイスで実行します:

xboxdrv --evdev /dev/input/dualshock3 --mimic-xpad

mimic-xpad が動作しない場合は、xboxdrv [1] による設定ファイルを使用して xboxdrv セクションに以下を追加してください:

 mimic-xpad = true

そして evdev 行を以下のように置き換えてください:

evdev = /dev/input/dualshock3 (or whatever other name you gave in the udev_rule)

設定したら、xboxdrv を実行します:

# xboxdrv -c config_file

楽しい時間をお過ごしください。

Playstation 2 アダプタ

PS2 デュアルアダプターのボタンマッピングを修正して Xbox コントローラーに見せかけるために、以下のコマンドを使うことができます:

 sudo xboxdrv --evdev /dev/input/event* \
     --evdev-absmap ABS_X=x1,ABS_Y=y1,ABS_RZ=x2,ABS_Z=y2,ABS_HAT0X=dpad_x,ABS_HAT0Y=dpad_y \
     --axismap -Y1=Y1,-Y2=Y2 \
     --evdev-keymap   BTN_TOP=x,BTN_TRIGGER=y,BTN_THUMB2=a,BTN_THUMB=b,BTN_BASE3=back,BTN_BASE4=start,BTN_BASE=lb,BTN_BASE2=rb,BTN_TOP2=lt,BTN_PINKIE=rt,BTN_BASE5=tl,BTN_BASE6=tr \
     --mimic-xpad --silent

Logitech Dual Action

Logitech Dual Action ゲームパッドは PS2 のパッドと似ているマッピングを持っていますが、Xbox コントローラーのように使うにはいくつかのボタンとトリガーを交換する必要があります:

 sudo xboxdrv --evdev /dev/input/event* \
     --evdev-absmap ABS_X=x1,ABS_Y=y1,ABS_RZ=x2,ABS_Z=y2,ABS_HAT0X=dpad_x,ABS_HAT0Y=dpad_y \
     --axismap -Y1=Y1,-Y2=Y2 \
     --evdev-keymap BTN_TRIGGER=x,BTN_TOP=y,BTN_THUMB=a,BTN_THUMB2=b,BTN_BASE3=back,BTN_BASE4=start,BTN_BASE=lt,BTN_BASE2=rt,BTN_TOP2=lb,BTN_PINKIE=rb,BTN_BASE5=tl,BTN_BASE6=tr \
     --mimic-xpad --silent

Playstation 4 コントローラー

PS4 コントローラーのボタンマッピングを修正するために、xboxdrv で以下のスクリプトを使用するか、または ds4drv プログラムを試すことができます:

 #!/bin/bash                                                                          
 sudo xboxdrv  \                                                                      
   --evdev /dev/input/by-id/usb-Sony_Computer_Entertainment_Wireless_Controller-event-joys>
   --evdev-absmap ABS_X=x1,ABS_Y=y1                 \                               
   --evdev-absmap ABS_Z=x2,ABS_RZ=y2                \                               
   --evdev-absmap ABS_HAT0X=dpad_x,ABS_HAT0Y=dpad_y \                               
   --evdev-keymap BTN_A=x,BTN_B=a                   \                               
   --evdev-keymap BTN_C=b,BTN_X=y                   \                               
   --evdev-keymap BTN_Y=lb,BTN_Z=rb                 \                               
   --evdev-keymap BTN_TL=lt,BTN_TR=rt               \
   --evdev-keymap BTN_SELECT=tl,BTN_START=tr        \                               
   --evdev-keymap BTN_TL2=back,BTN_TR2=start        \                               
   --evdev-keymap BTN_MODE=guide                    \                               
   --axismap -y1=y1,-y2=y2                          \                               
   --mimic-xpad                                     \                               
   --silent                                         \                               
   "$@"

デッドゾーンの設定

アナログ入力のデッドゾーンを設定したいときは、xorg (マウス・キーボードエミュレート用) とカーネルドライバー (ゲーム用) で別に設定する必要があります。

Xorg でデッドゾーン

/etc/X11/xorg.conf.d/50-joystick.confEndSection の前に以下のような行を追加してください:

Option "MapAxis1" "deadzone=1000"

1000 はデフォルトの値で、0 から 30000 の間で設定できます。軸番号を取得する方法はこの記事の #設定のテスト セクションを参照。 問題の軸で既にオプションを設定している場合は、スペースで区切ったパラメータの最後に deadzone=value を入力してください。

カーネルドライバーでデッドゾーン

一番簡単な方法は jstest-gtk-gitAUR を使うことです。編集したいコントローラーを選択して、ダイアログの下にあるキャリブレーションボタンをクリックしてください。ジョイスティックやアナログスティックには CenterMin と CenterMax の値を、トリガーには RangeMin を設定します。設定したら jscal を使って新しい値をシェルスクリプトに出力してください:

jscal -p /dev/input/jsX > jscal.sh # replace X with your joystick's number 
chmod +x jscal.sh

そして udev ルールを作成して (例えば /etc/udev/rules.d/85-jscal.rules) コントローラーを接続した時に自動的にスクリプトが実行されるようにします:

SUBSYSTEM=="input", ATTRS{idVendor}=="054c", ATTRS{idProduct}=="c268", ACTION=="add", RUN+="/usr/bin/jscal.sh"

idVendor と idProduct を取得するには udevadm info --attribute-walk --name /dev/input/jsX を使って下さい。

最後に SDL にジョイスティックデバイスを知らせるようにしてください。そうしないと無視されて固有の設定が使われるようになってしまいます。 以下を ~/.bashrc に追加してください: export SDL_JOYSTICK_DEVICE=/dev/input/jsX (X はデバイスの番号に置き換えてください。)

ゲームパッドのマウス操作を無効にする

コントローラーを使ってゲームを遊びたいとき、ゲームパッドによるマウスカーソルの操作を無効にすると良いかもしれません。無効にするには、以下のように /etc/X11/xorg.conf.d/50-joystick.conf を編集してください:

/etc/X11/xorg.conf.d/50-joystick.conf 
Section "InputClass"
        Identifier "joystick catchall"
        MatchIsJoystick "on"
        MatchDevicePath "/dev/input/event*"
        Driver "joystick"
        Option "StartKeysEnabled" "False"       #Disable mouse
        Option "StartMouseEnabled" "False"      #support
EndSection

トラブルシューティング

ゲームパッドでマウスが動く

ときどき USB ゲームパッドが HID マウスとして認識されることがあります (X 内のみで、/dev/input/js0 としてもインストールされる)。カーソルがゲームパッドによって動いたり、接続した後に画面の右端に逃げていくのは既知の問題です。アプリケーションが自力でゲームパッドを検出できる場合は、xf86-input-joystick パッケージを削除することができます。

もっと平和的な解決方法はゲームパッドのマウス操作を無効にすることです。

ゲームパッドでキーストロークを送る

rejoystickAURqjoypadAUR という2つのゲームパッドでキー操作するプログラムがあり、どちらも X.org の設定をせずとも問題なく動作します。

X.org で

This is a good solution for systems where restarting Xorg is a rare event because it's a static configuration loaded only on X startup. I use it on my media PC running XBMC controlled with Logitech Cordless RumblePad 2. Due to a problem with the d-pad (a.k.a. "hat") being recognized as another axis, I used to run Joy2key as a workaround. Since I upgraded to XBMC 11.0 and joy2key 1.6.3-1, this setup no longer worked for me. I ended up taking a more direct approach and let Xorg handle joystick events.

First, make sure you have xf86-input-joystick installed. Then, create /etc/X11/xorg.conf.d/51-joystick.conf like so:

 Section "InputClass"
  Identifier "Joystick hat mapping"
  Option "StartKeysEnabled" "True"
  #MatchIsJoystick "on"
  Option "MapAxis5" "keylow=113 keyhigh=114"
  Option "MapAxis6" "keylow=111 keyhigh=116"
 EndSection
ノート: The MatchIsJoystick "on" line doesn't seem to be required for this to work but you may want to uncomment it.

ゲームパッドがどのプログラムからも認識されない

Steam など、ソフトウェアによっては最初に接続されたゲームパッドしか認識しないことがあります。Microsoft の無線周辺機器デバイスのドライバーにバグが存在するため、bluetooth ドングルでもこの問題が起こることがあります。/dev/input/js*/dev/input/event* がキーボードの bluetooth トランシーバーに属していることが確認できたら /etc/udev/rules.d/99-btcleanup.rules を作成することで自動的に排除することができます:

/etc/udev/rules.d/99-btcleanup.rules
ACTION=="add", KERNEL=="js[0-9]*", SUBSYSTEM=="input", KERNELS=="...", ATTRS{bInterfaceSubClass}=="00", ATTRS{bInterfaceProtocol}=="00", ATTRS{bInterfaceNumber}=="02", RUN+="/usr/bin/rm /dev/input/js%n"
ACTION=="add", KERNEL=="event*", SUBSYSTEM=="input", KERNELS=="...", ATTRS{bInterfaceSubClass}=="00", ATTRS{bInterfaceProtocol}=="00", ATTRS{bInterfaceNumber}=="02", RUN+="/usr/bin/rm /dev/input/event%n"

KERNELS=="..." はあなたのデバイスに合わせて置き換えてください。次を実行することで正しい値が確認できます:

# udevadm info -an /dev/input/js0

問題のデバイスは /dev/input/js0 と仮定しています。ルールを記述したらルールをリロードしてください:

# udevadm control --reload

そして問題のデバイスを再接続します。joystick や event デバイスが外されても、番号は予約されています。ただしファイルは扱われます。