ARグラスで広がる作業環境

これは、「フィヨルドブートキャンプ Part 2 Advent Calendar 2023」25日目の記事です。

昨日は、Part 1がsiroemkさんの応用情報技術者試験に合格した時の勉強法、 Part 2がMasafumi OkuraさんのRubyConfTw2023の感想記事 - okuramasafumiのブログ でした。

今年のアドベントカレンダーは以下になります。

adventar.org

adventar.org

目次

はじめに

コロナ禍でリモートワークになり、デスク周りの作業環境を快適にしようと、ディスプレイやキーボード、高額の椅子を購入しました。 たしかに、デスク周りの作業空間は快適になったのですが、ARグラスを今年入手してから物理的なデスク環境に 縛られずに作業空間がさらに拡張された気がします。 ここでは、ARグラスでどのような作業環境が変わったのか、いろいろ試した内容を共有したいと思います。

過去と現在の作業環境

簡単に前後の作業環境を比較します。

コロナ禍の作業環境

主にデスクでの作業を前提として、アイテムを揃えました。

MacBookクラムシェルモードで、ディスプレイ2枚と接続して使用します。 傾斜台はデスク上に角度をつけるとキーボードが打ちやすかったり、iPad proでメモが取りやすいです。 オットマンは足を伸ばせるので、アーロンチェアの背もれたに寄りかかりながらの作業が快適です。

デスク周り

現在の作業環境

コロナ禍の頃の作業環境も残ってはいますが、使用頻度は下がっています。

MacBookクラムシェルモードでARグラスのXREAL Air 2 pro と接続し、3画面の仮想ディスプレイを表示できるNebula for Mac *2という ソフトウェアを使って作業しています。

基本的には、Apple関連のデバイスを中心とした作業環境になります。Windows PCは持っていないので、本記事ではWindows PCについては記載していません。 ただし、GPD Win や ROG Ally、Steam DeckなどのWindowsベースの端末とARグラスを組み合わせて作業環境を作ることもできると思いますので、参考になる部分もあるかと思います。

ARグラス

ARグラスの厳密な定義は正直分からないですが、自分が使用した範囲内では外部の映像などの情報を入力として、レンズに情報を投影(ミラーリング)できる サングラス型のデバイスです。PCやスマホなどの端末やSteam Deck、Nintendo SwitchPlayStationなどのゲーミング端末の画面をミラーリングできます。 一般的なAR(Argument Reality) = 仮想現実としては体験したことがないので、基本的にはディスプレイとしての用途で、このARグラスを活用しています。

国内では、Rokid、VITURE、XREALなどのブランドが主要なようですが、正直XREALのARグラスであるXREAL Air / XREAL Air 2 pro 以外のARグラスを使用したことが ないため、どれが良いのか比較できません。(ただし、視力の観点では、XREAL のARグラスには、視度調整機能がなく、視力が悪い場合はお手持ちのメガネを使うか、あるいは別売のインサートレンズを購入して使う必要があります。高額(1万円〜2万円台)のインサートレンズを購入したくない場合は、視度調整機能があるARグラスを購入するといいかもしれません。)

そのため、本記事では、XREALのXREAL Air / XREAL Air 2シリーズを対象として書きます。

XREAL Air/ XREAL Air 2シリーズ

XREALブランドのARグラスです。 上記にも書きましたが、PCやスマホなどの端末やSteam Deck、Nintendo SwitchPlayStationなどのゲーミング端末の画面をミラーリングできます。 DP AltモードのUSB-Cに接続した端末と一本のケーブルの有線接続でミラーリングできます。また、XRAEL Beamというサブデバイスを使うことで、無線接続でミラーリングできます。

最近発売したiPhone15では、ついにUSB-Cがサポートされたため、iPhone15シリーズはお手軽に ミラーリングを楽しめます。AndroidのPixelはUSB-Cがサポートされていますが、DP Altモードが無効化されているので、 ルート化せずにミラーリングすることはできません。

XREALとXREAL Air 2 シリーズの違いはそこまでないのですが、XREAL Air 2シリーズのXREAL Air 2 proには調光機能があり、サングラスのレンズの明るさを透過度0%、30%、100%の3段階で切り替えることができます。*3 この調光機能を使うことで、屋内や屋外での使用で没入感を得ることができるため、現時点で購入するなら、XREAL Air 2 proがおすすめできるかなと思います。

https://www.xreal.com/jp/air2/

XREAL Beam

XREAL Beam

Wi-Fi経由でワイヤレスに映像をミラーリングすることができます。 また、空間ディスプレイとして3つのモードに対応しています。

  • Smooth Follow (0DoF)

ブレ補正がされて頭の動きに追従される

  • Sideview (0DoF)

レンズの4角に小さく映像を配置できる。

  • Body Anchor (3DoF)

任意の位置に画面を配置できる。

基本的に、XREAL Air 単体でディスプレイのミラーリングされた映像を見ると、頭の動きに追従して目の前に映像が張り付いた感じ(0DoF)になりますが、 空間ディスプレイのBody Anchor (3DoF)モードに切り替えることで、任意の位置に映像を固定化することができます。これは、動画を視聴したり、Kindleなどの本を読むときなど好きな姿勢で見れるので、大変便利に感じています。

また、映像のディスプレイのサイズや距離(深度)の調整を行うことができます。

最近のXREAL Beamのアップデートでは、Androidのアプリ(apkファイル)をインストールできるようになったため、XREAL Beam単体でNetflixを視聴したり、Kindleを閲覧できるようになっています。 ただし、NetflixAmazon Primeの視聴はDRM制限により、残念ながらSD画質でしか再生ができません。その他にも、Google Playからのアプリのインストールはできなかったり、充電・発熱問題など色々と制限があります。それでも、空間ディスプレイを活用できるデバイスとして価値を感じています。

XREAL Beamの画面

https://www.xreal.com/jp/beam/

Nebula for Mac(ベータ版)

macOSの作業環境を拡張できる仮想ディスプレイを作成できるソフトウェアです。 最大3画面の仮想ディスプレイを横並びに配置できます。ディスプレイの空間の位置や距離、サイズなどを 調整することができます。

https://www.xreal.com/jp/app/

MacBookの作業環境

MacBook上で複数画面で作業できるようにNebula for Macをセットアップします。 また、スマホなどの他の端末からSSH接続できるようにTailscale SSHをセットアップします。

SSH接続以外にも、VSCodeのリモートトンネル機能(vscode.dev経由で接続)やリモートデスクトップなどを使ってリモートアクセスができますが、詳細は割愛します。

code.visualstudio.com

vscode.dev

ただし、リモートデスクトップについてはいくつか試してみたので、簡単に紹介します。

1つ目は、macOSに標準で搭載されている画面共有アプリ(Apple Remote Desktop)です。 もし、メインマシンとサブマシンがどちらもmacOSであれば、画面共有アプリを使うことで簡単にリモートアクセスができます。メインマシンの設定画面の一般 > 共有 > 画面共有をONにすることで、サブマシンからリモートアクセスすることができます。 サブマシンのMacBookからメインマシンのMacBookに画面共有アプリで接続した感じでは、遅延の問題もあまりなく使うことができました。 また、macOS Sonomaの画面共有アプリは、画面共有アプリが刷新され、Apple Silicon Macでは高パフォーマンス接続が可能となっているようです。

support.apple.com

2つ目は、主にゲームプレイ向けのリモートデスクトップツールのParsecです。

parsec.app

これも、メインマシンのMacBookにParsecのアプリをセットアップすることで、同じアカウントでログインしたサブマシンのMacBookAndroid GalaxyのDeXなどのParsec(クライアント側)アプリを通して、リモートアクセスができます。

サブマシンのMacBookからリモートアクセスすると、低遅延で画面表示が画面全体にフィットするため、非常に使いやすく感じました。 サブマシンのDexからリモートアクセスした場合も、問題なく表示はできましたが、DeX側のタッチ操作をなぜか受け付けず使えなかったです。*4

Nebula for Macをセットアップ

MacBookにARグラスを接続すると、MacBookの画面がミラーリングされます。 この時に、頭を動かすと、ミラーリングされた画面も一緒に頭に追従されます。

複数の画面(2画面と3画面)を使用するには、Nebula for Macというソフトウェアを使用します。 このソフトウェアを使用すると、ARグラスを単体で使用することとは異なり、複数の画面が横並びに固定配置され、 頭を動かしても画面は追従されません。

Nebula for Macの設定画面

Nebula for Macの調整画面

SSHサーバを有効化する

MacBookSSHサーバを有効化します。設定の共有→リモートログインを有効化することでSSHを使ってアクセスすることができます。 ただし、ここではTailscale SSHを使って簡易的にSSHでアクセスできるようにします。

Tailscale SSHのセットアップ

Tailscaleは、簡易的にVPNネットワークを構築できるサービスです。同じネットワークに参加している端末同士でアクセスできるようになります。 Tailscale SSHは、現在ベータ版の機能になりますが、ユーザー自身で公開鍵認証のセットアップをしなくとも、Tailscaleのネットワークに参加している 端末からSSHアクセスできる機能を提供します。

tailscale.com

上記のドキュメントに記載の手順でTailscaleをインストールします。

Tailscaleをインストール後、以下のコマンドでTailscale SSHの機能を有効化します。

$ tailscale up --ssh

Tailscale SSHのセットアップ

便利なMacアプリ

Rectangle

macOSのウィンドウのリサイズや複数のディスプレイ間でウィンドウを移動するのに便利です。

rectangleapp.com

CatchMouse

macOSの複数のディスプレイ間でカーソルを移動するのに便利です。

github.com

iPhone15(iPad pro)の作業環境

iPhoneスマホでも、ターミナルエミュレータを使って、簡易的な開発作業ができます。 ARグラスの登場前はスマホの画面が小さすぎて、使う気にはなれなかったのですが、ARグラスを使うことで小さな画面も ARグラス上に投影されるため、無理なく作業できるようになったと感じます。

また、iPhone15でDP Altモード対応のUSB-Cが搭載されたことにより、ARグラスと直接有線接続できるようになりました。 ここでは、iOSのターミナルエミュレータを使って、MacBookSSH接続して作業する方法を記載します。

iSH Shellをインストール

iOSで使用できるターミナルエミュレータとしてiSH Shellというアプリがあります。 これは、iOSのローカル上にAlpine Linux環境を構築できます。

iSH Shell

iSH Shell

  • Theodore Dubois
  • 開発ツール
  • 無料
apps.apple.com

MacBookにTailscale SSH接続する

リモートマシンのMacBookSSH接続することも可能 *5 ですが、ここではTailscaleを使ったSSH接続について紹介します。 TailscaleでSSH接続するには、リモートマシンのMacBook上でTailscaleをインストールし、Tailscale SSHを有効化する必要があります。

また、クライアントであるiPhoneにもTailscaleのアプリをインストールします。

Tailscale

Tailscale

  • Tailscale Inc.
  • ユーティリティ
  • 無料
apps.apple.com

TailscaleでSSH接続する前に、iOSのTailscaleアプリを起動し、Tailscaleのネットワークに参加します。

Tailscaleアプリ

iSH Shellのターミナルを起動し、通常のSSH接続を行います。

この時、Tailscaleのログイン画面が起動し、ログインが成功すると、MacBookSSH接続することができます。

iSH ShellのSSH接続

Tailscale SSHの認証

Tailscale SSHの接続完了

FBC Stackを動かす

以前自作したサービスのFBC StackをリモートマシンのMacBookで動かします。

github.com

FBC StackのWebアプリの起動

TailscaleのIPアドレスでもアクセスできますが、iPhone側のブラウザでTailscaleのMagic DNSドメインを使ってアクセスします。

FBC StackのWebアプリにアクセス

Tailscaleのサービスには、Tailscaleネットワークの内外からhttps/httpでアクセス可能なTailscale FunnelやTailscale Serveなどの機能も提供されているので、興味がある方は調べてみてもいいかもしれません。

tailscale.com

tailscale.com

Android GalaxyのSamsung DeXの作業環境

Android のGalaxyには、Galaxy S8以降から、スマホの画面をデスクトップモードで表示するDeXという機能が提供されています。 Androidはあまり好きではないのでほとんど触っていなかったのですが、最近中古の端末を購入して触ってみました。

DeXが起動されるとAndroidの端末側がタッチパネルとして操作できるようになるので、トラックパッドは基本的に不要になります。 また、キーボードはBluetooth接続が可能なため、HHKBのキーボードを使って操作できます。

作業環境の観点では、Google Playで配布されているUserLAndというターミナルエミュレータSSHクライアントのアプリをインストールすることで、 開発作業を行うこともできます。RubyのインストールやBootcampのアプリをローカル環境で動かすことはできました。

Samsung DeXを動かす

Android Galaxy S20+ は、DP Altモード対応のUSB-Cを持っているので、ARグラスを直接有線接続することができます。 ARグラスを端末に接続すると、DeXが起動し、ARグラスにDeXモードのデスクトップがミラーリングされます。

Sumusung DEXの起動

Samsung DEXの表示

Samsung DeXのタッチパッド

ARグラスのDeXの画面をキャプチャするのが難しいので、他の外部ディスプレイにHDMI出力した画面を載せます。(外部ディスプレイのアスペクト比があってないので、画面が横に伸びています。) 基本的には、HDMI出力した画面がARグラスにミラーリングされます。

DeXのHDMI出力

※ どうやら、FjordBootCampでは、12/21(木)〜1/7(日)の期間で年末学習キャンペーンを実施中のようです。

UserLAndをセットアップ

以下のGoogle Playからアプリをインストールします。

play.google.com

ターミナルエミュレータのUserLAndを使うと、UbuntuLinuxをインストールすることができます。 UserLAndやUbuntuのセットアップ手順の詳細は割愛します。

UserLAndのセットアップ後

ConnectBotでUserLAndに接続

UserLAndにSSH接続するには、UserLAnd側でSSHサーバの起動などのセットアップを事前に実施しておきます。UserLAndのSSHサーバは、 デフォルトでdropbearを使用しているようです。セキュリティ的にパスワード認証ではなく、公開鍵認証でSSH接続できるように セットアップした方が良いと思います。詳細なセットアップ手順は割愛します。

SSHサーバのセットアップ後に、SSHクライアントのConnectBotを使って、UserLAndにSSH接続します。

ConnectBotのアプリは以下のGoogle Playからインストールします。 play.google.com

ローカルでBootcampアプリを動かす

Bootcampアプリを動かすためには、RubyのインストールやRailsなどのgemをインストールする必要があります。 また、データベースに接続するために、PostgreSQLのインストールも事前に必要になります。この辺りのセットアップ手順も 通常のUbuntuでセットアップする手順と同じで、調査すれば分かるので詳細は割愛します。

github.com

開発環境のBootcampアプリを起動

MacBookにTailscale SSH接続する

Androidでも、Tailscaleのアプリをインストールします。

play.google.com

基本的に iOSのターミナルエミュレータで実行した場合と同じように、 SSHクライアントのConnectBotを使って、MacBookにTailscale SSHで接続できます。SSH 接続の際に、Tailscaleの認証のセッションがない場合は、認証が求められます。

Tailscale SSH接続

屋外(野外)で作業する

リュックにMacBookを入れたまま、作業できる環境を目指します。 つまり、XREAL AirのARグラスとキーボード、トラックパッドのみを出した状態です。

野外で作業

必要なアイテム

XREAL Air 2 pro

明るい場所でも作業しやすくなるため、調光機能がついている XREAL Air 2 proがおすすめです。

MacBook

持ち運び可能なノートパソコンとしてMacBookを利用します。 MacBookの内蔵ディスプレイとXREAL Airのディスプレイの2つのディスプレイも同時に利用することもできますが、基本はクラムシェルモードで利用したいので、MacBookは閉じた状態で内蔵ディスプレイは利用しません。

MacBookクラムシェルモードで使用する条件として、以下があります。

  • 電源で給電されていること
  • 外部ディスプレイが接続されていること

support.apple.com

HDMI ダミープラグ or BetterDisplay

内蔵ディスプレイを閉じた状態のMacBookにXREAL Airを接続すると、MacBookの画面がミラーリングされます。 ただし、この接続状態では Nebula for Macのソフトウェアが正常に動作しません。これを回避するために、外部ディスプレイが接続されている状態と認識されるように、HDMIダミープラグかBetterDisplayを使って、仮想ディスプレイを作成します。

ディスプレイエミュレータプラグ ヘッドレス ゴーストエミュレーター フェイクディスプレイ (ヘッドレス-1920x1080-4096x2160 @60Hz

MacBookHDMI端子がない場合は、仮想ディスプレイを作成できるBetterDisplayというソフトウェアを使いのもOKです。 有料版のソフトウェアですが、仮想ディスプレイの作成は無料でも可能です。

github.com

これで、MacBookクラムシェルモードでXREAL Airを接続して、Nebula for Macを使用できる状態になります。

キーボード

Bluetooth接続でHHKB Hybrid Type-Sを使用しています。 キータッチの押し心地がいいのと、マルチペアリングでMacBookiPadiPhoneAndroidなどに繋がるので 大変重宝しています。

最近発売されたHHKB Studioには、マウス機能やジェスチャーパッドが内蔵されているため、トラックパッドが不要になるかもしれません。一度、HHKB Studioを店舗で触って試してみましたが、ジェスチャーパッドの性能がいまいちに感じたため、トラックパッドを使用しています。ただ、HHKB Studioだけでキーボードとタッチ操作ができるのはコンパクトでいいなと思います。

トラックパッド

Bluetooth接続でApple のMagic Trackpadを使用しています。 端末のタッチパッドがある場合は、それでもOKかと思います。

電源

屋外で作業するためには、電源が必要になります。 MacBookに給電するために、Ankerの733 Power Bankを使用しています。 およそ、2、3時間くらいは給電できるかと思います。

Anker 733 Power Bank (GaNPrime PowerCore 65W)www.ankerjapan.com

もっと長時間給電したい場合は、ポータブル電源を検討するのもいいでしょう。

Jackery Explorer 100 Pluswww.jackery.jp

電源を使用せずに、MacBookのバッテリーを使用することで、クラムシェルモードを維持する方法もあります。 MacBookのバッテリーを使用した状態で、MacBookの閉じてしまうとスリープ状態に移行してしまいますが、Macの電源管理用のpmsetコマンドを使用することで、スリープ状態を回避することができます。

pmset -gコマンドで、現在の電源周りの設定値を確認することができます。 SleepDisabledの設定値が1の場合に、スリープ状態に移行しないようになります。

$ pmset -g
System-wide power settings:
 SleepDisabled      0
Currently in use:
 standby              1
 Sleep On Power Button 1
 hibernatefile        /var/vm/sleepimage
 powernap             1
 networkoversleep     0
 disksleep            10
 sleep                0 (sleep prevented by powerd, Music, coreaudiod, coreaudiod, GroupSessionService, bluetoothd)
 hibernatemode        3
 ttyskeepawake        1
 displaysleep         0 (display sleep prevented by Nebula for Mac)
 tcpkeepalive         1
 lowpowermode         0
 womp                 1
$ sudo pmset -a disablesleep 1

$ pmset -g
System-wide power settings:
 SleepDisabled      1
Currently in use:
 standby              1
 Sleep On Power Button 1
 hibernatefile        /var/vm/sleepimage
 powernap             1
 networkoversleep     0
 disksleep            10
 sleep                0 (sleep prevented by powerd, Music, coreaudiod, coreaudiod, GroupSessionService, bluetoothd, sharingd)
 hibernatemode        3
 ttyskeepawake        1
 displaysleep         0 (display sleep prevented by Nebula for Mac)
 tcpkeepalive         1
 lowpowermode         0
 womp                 1

スリープ状態に移行しない場合は、MacBookを閉じてもバッテリーを消費し続けるため、屋外で使用しない場合は SleepDisabledの設定値を元に戻しましょう。

$ sudo pmset -a disablesleep 0

バッグ🎒

XREAL AirMacBook、電源などが入れば、なんでもいい気がします。 ただし、割と重量が重いので、耐久性があるリュックがいいかもしれません。

ポータル電源が必要な場合は、サイズが大きめのUber Eatsのような配達バッグがあると役立つのではないでしょうか。

ロゴ入り配達バッグ(ブラック) - Delivery Bag with Logo (Black) – Ubereatskit Japan - ウーバーイーツ 配達バッグ 購入

Povo 2.0

屋外でインターネットを使用するには、テザリングなどができる環境が必要です。 Povo以外についてほとんど使ったことないので他の代替品を知らないのですが、Povoは24時間(とはいえ、2日間)で使い放題のオプションがあるので、たまに屋外(旅行中でも)で作業したいときに低価格で利用できて重宝します。

povo.jp

もしかすると、スペースXが提供する通信衛星サービスのスターリンクを使うのもありかなと思ったのですが、電波法により野外での利用に制限があるようですね。

www.starlink.com

作業場所

  • 公園(ベンチ)
  • 河川敷
  • キャンプ場

河川敷にて

屋内で作業する

Nintendo Switch のリングフィット(RubyKaigi 2023参加中のホテルにて)

RubyKaigi 2023のイベントにて

必要なアイテム

自宅以外の屋内なら、屋外で必要なアイテムと基本変わらないかもしれかもしれません。 自宅で作業なら、自宅のWi-Fiに接続できるので、テザリング用のPovo 2.0は不要です。 (もちろん、屋内でWi-Fiが完備されている場合は、そちらで代用できます)

作業場所

作業場所としては、以下があります。

作業スタイル

作業スタイルとしては、以下があります。

  • クッション(ごろ寝)
  • 椅子(背もたれ、壁)
  • スタンディング
  • お風呂(自宅)

ニトリのゲーミング座椅子や最近発売された回転ゲーミング椅子などは持っていないのですが、ARグラスでの作業と相性がよさそうで 少し気になっています(笑)

www.nitori-net.jp

www.nitori-net.jp

お風呂で作業するのは、割りと良かったです*6。ただし、電子機器を扱うので、取り扱いには注意する必要があります。 先日、Atcoder(競プロ)のABCのコンテストにお風呂から参加したのですが、問題が難しく動揺したせいか、風呂フタが傾いてiPhone端末とケーブルを浴槽に落としてしまうことがありました。MacBookやARグラスを落としてしまった際には、かなりショックが大きいことかと思います。*7

あと、屋内で作業する際に、屋外の項目でも記載しているリュック🎒をかけて作業するのも、作業場所やスタイルを変更する際に便利かもしれません。 たまに別の場所に移動して作業したり、スタンディングで作業したり、気分によって変更することができます(笑)

まとめ

いろいろと書いたので、雑にまとめると以下になります。

  • ARグラスの登場により、小型のデバイスであるスマホMacBook(クラムシェルモード)を作業環境として使いやすくなった。
  • ARグラスを使うことで、自宅のデスク環境と比べて、さまざまな作業場所や作業スタイルを選択できるようになった。
  • 3DoFの空間ディスプレイをサポートするNebula for Macのソフトウェアを使うことで、物理的なディスプレイが不要で、場所によらず複数の画面(2画面と3画面)を利用できるようになった。
  • DP Altモード対応のUSB-C対応デバイスとARグラスを簡単に接続できることで、屋内や屋外にかかわらず、大画面で読書や動画視聴ができるようになり、以前に比べて読書や動画視聴の体験が向上した

普段は、メインの作業マシンとしてMacBook を使っていますが、以下の組み合わせで結構便利になったと感じています。

おわりに

XREAL のARグラスを使用することで、デスク周りの作業空間に縛られずに、自宅や屋外などで快適に作業できる環境ができたように感じます。 フィヨブーでは、プラクティスを学習する上で、本を読んだり、動画を見たり、コードを書いたりしますが、ARグラスを使うことで、 自宅だけでなく、外出先など隙間時間を有効に活用できるのではないかと思い、ARグラスを活用した作業環境について共有させていただきました。 本記事を読んで気になりましたら、ぜひ体験していただきたいなと思います。

また、来年には、CES2024のXREALの新製品の発表やApple Vision proなどの販売も予定されています。これらにより、作業環境がどのように 変わるのか楽しみです。今後も作業環境を快適にしつつ生産性を上げていきたいと思います。

*1:椅子はワーカホリックという店舗でいろいろな椅子を試し座りして選びました。

*2:最近、Nebula for Windows (ベータ版)も出ました。

*3:ただし、0% はXREAL Airのデフォルトの透過度(薄暗い)と同じくらいで、完全に透過されるわけではありません。

*4:Androidの機種やバージョンに依存している かもしれないので、他のGalaxyのDeXでは正常に動作する可能性はあります。

*5:もちろん、AWSやさくらVPSなどのクラウドサービス上に構築した環境にSSH接続することも可能です

*6:令和時代の風呂グラマーはARグラスで作業するといいかもしません笑

*7:水没防止に何らかの対策が必要でしょう