はじめに
近年のWebアプリはレスポンシブ対応が当たり前になっています。最低でもPCとスマートフォンに対応したデザイン、ときにはその中間のタブレットに対応したデザインなんかも作成する必要があります。
Webアプリの開発はPCを使って行うのでPCでのデバッグは簡単ですが、スマートフォンやタブレットなどの別端末でのデバッグは少々面倒です。Google Chromeのデベロッパーツールを使えば任意のスマートフォンの解像度に変更することが可能ですが、そこで確認したデザインと実機で確認したデザインは微妙に異なるということがよくあります。
ある程度完成したらテストサーバーにデプロイし、手持ちのスマートフォンからテストサーバーに接続という方法であれば確実ですが、テストサーバーを用意するのも大変ですし、軽微な修正のたびにいちいちデプロイしなくてはいけないのは非常に面倒です。
実は、開発中に使用しているRailsサーバーに手持ちのスマートフォンから接続することができます。これならば実機での確認ができますし、面倒なデプロイ作業をいちいちする必要はありません。
本記事では、マルチデバイスでデバッグを行う方法について説明します。
前提
Railsサーバーを起動している端末と他の確認したい端末は同じWiFiネットワークに接続している必要があります。
また、今回はRailsサーバーを起動する端末がMacBook Air (macOS: Big Sur 11.3.1)、スマートフォンがiPhone SE2 (iOS: 14.5.1) の場合について記述しています。WindowsやAndroidでも可能だと思いますが、手近な環境がないので説明の対象外とします。
マルチデバイスでデバッグ
PCの設定
Railsサーバーを起動する端末の設定を行います。メニューから[システム環境設定] - [共有]を開きます。共有設定の上部にコンピューター名が表示されているので、「編集」ボタンをクリックします。
任意のローカルホスト名を入力します。今回はmacbook
としました(.local
は自動付与されます)。
Railsの設定
Railsの設定を行います。config/environments/
ディレクトリ配下のdevelopment.rb
に以下を追記します。
development.rb
Rails.application.configure do
# 以下を追記
config.hosts << Rails.application.credentials.localhost
end
以下のコマンドを実行してCredentialsを追加します。
$ EDITOR=vi rails credentials:edit
# 以下を追加
localhost: macbook.local
Railsサーバーの起動
Railsサーバーを起動する際、バインディングアドレスとして0.0.0.0
を指定します。
$ rails server --binding 0.0.0.0
# 短縮形も使用可能
$ rails s -b 0.0.0.0
オプションなしでRailsサーバーを起動するとlocalhost (127.0.0.1)
のみをバインディングします。しかし、localhost (127.0.0.1)
は外部の環境からはアクセスできないため、外部からアクセス可能なアドレスをバインディングする必要があります。0.0.0.0
をバインディングアドレスとして指定すると、端末に割り当てられているすべてのアドレスがバインディングされ、外部からのアクセスが可能になります。
別端末からアクセス
別の端末では同じWiFiネットワークに接続すること以外、何もする必要はありません。ブラウザでhttp://macbook.local:3000
にアクセスすればPCで起動しているRailsサーバーに接続することができます。
まとめ
デバッグに実機を使うと、JavaScriptのユーザーエージェントプロパティ (Navigator userAgent Property) の確認が行えるというメリットもあります。Google Chromeのデベロッパーツールは単に解像度を変更しているだけなので、想定通りのユーザーエージェントプロパティを取得することはできません。そういう意味でもデバッグは実機を使って行ったほうがいいのではないかと思います。
本記事を参考にして、マルチデバイスでのデバッグを行っていただければと思います。