駄文。

プログラマーの日常でつまずいたこと・気づいたことなどの記録です

ipad proと ipad airを繋いで二画面化してみる。

今回の記事は本当に意味ない実験である。

つい最近とある事情で ipad airを使うことになった。 もともと手元には iPad Proがあるにも拘らずである。

ここに至った経緯はどうでもいい。

ただ、ここにiPadが2枚あるならやらねばならないことがある。

それは ipadの画面を iPadに出力して二画面化してみることである。

最近 iPadはiOS16.2で画面の外部出力をサポートした。

そして最新のiOS17ではUVC(USB Video Class)をサポートしたのである。 つまり、HDMIの入力をカメラデータとして取り込めることを意味している。

そう、これらの事実を組み合わセガ意味することは、なんとipadの画面を別のipadでみれるということを示しているのである、もっと言えばipadの外部モニター にipadを使うことができるということである。実に面白い。

ということで早速やってみた。

単にusb-cケーブルでipad同士を繋げばうまくいくもんじゃない。 実際には実験というだけあってちょっと構成が面倒である

ipad air - USBhub(HDMI出力付き) - HDMI - HDMIビデオキャプチャー - USB-c - ipad pro

とまぁだいぶ色々真ん中に入れてようやく実現できるのである。

ただ、これだけではまだうまくいかない。次はソフトの方である。

ipad air は 設定 - 画面表示と明るさ - (外部ディスプレイを繋ぐと表示される)配置 で、ディスプレイをミラーリングにして各直画面モードで表示します(HDMI出力する側の CPUがMシリーズのチップである必要があります、Aシリーズの場合にはミラーモードのみ)

そして、ステージマネージャをONにすれば送信側の準備はOK

表示側のipad proではそのままでは表示できない。UVCで得た画面をを表示するアプリが 必要となります。以下のいずれのあたりを入れれば動作します。 わたしはorionで試してみました。

ここまで準備すれば、OKです。

やってみるとあら不思議、ipad air の外部ディスプレイとしてipad proに表示されました。

まぁ、さすがにここまで配線が面倒だと実際の運用で使うことはないと思いますが できることが確認できて気が済んだというお話でした。

google colaboratoryをself hostedで立ち上げてみた

Deep Larningの勉強で以前自宅のGPUを使った環境を構築していたが、 検証する毎に都度セットアップをするのが大変でなんとなく遠ざかって しまっていた。

ちょうどLLMが盛り上がってきた時に触っていたが一休みしていたが その間にもLLMのバリエーションが増えてきてもう少し触りたいという 気持ちとは裏腹に遠ざかっていた面倒臭さに手を出せずにいた。

世間ではLLM検証となるとgoogle colaboratoryを使用していたのだが、 費用や無料で使用できるGPUのメモリサイズ上限もあって手をだせず にいた。

世に出ているサンプルは圧倒的にgoogle colaboratoryを使っていることも あり、ちょっと触ってみようとやってみたら相当簡単に環境が準備できる ことに感動。

ただ、やっぱりメモリ上限がかなりきつくLLM検証に使用するとかなり壁に なる(無料の範囲で使う前提でw)

と悩んでいたら、自宅のサーバにgoogle colaboratoryを立ち上げて(ローカルランタイムと呼ばれています) google colaboratoryのUIと連携できることをネットの記事で知り*1、 この点での課題も一気に解決した。 *2

dockerイメージで環境が提供されているのでコマンド一発で立ち上がるのものいいところ。 なぜ今までこれに気が付か手を出さなかったのかと後悔するくらいに。

我が家での検証環境はVMWareで仮想化されたサーバにGPUを割り当てた環境になるので 一癖があり単純にDockerでとはいかない環境を作っていくので、いろいろ手間がかかり そうだったのだがこちらもansibleを使うとあっさり出来上がった。

まぁ、実際にはちょっとゴタゴタもあったのだが、長くなるのでこちらについては 時間がある時に別記事で紹介していきたい。

これで、無事googleインスタンスではなく、自宅サーバで検証ができるようになったのである。

ただ一点注意が必要なのは、接続先URLがセキュリティの都合かlocalhostに限定されているため サーバ上でブラウザを実行しない場合にはブラウザを実行しているマシンからサーバまでsshトンネリング を設定しておくことで問題を回避する必要がある。

なんだかんだでちょっと性能の良い費用がかからない google colaboratoryが手に入った。

ということで、これからもうちょっと時間をかけてLLMを検証していくことにするのである。

参考情報

ランフラットタイヤのおかげで助かりました

車を変えたのだがその際タイヤがランフラットタイヤになった。

ランフラットタイヤとはパンクしてもしばらく走れるとうたったタイヤ である。

それ自体はありがたいのだが、乗り心地やタイヤ自体が重かったり 値段も高かったりでそういう部分を考えるとなんか余計なものを的な イメージで良い印象はなかった。むしろ次変える時はノーマルタイヤで いいやろって思っていたくらい。

最近、車に乗っているとタイヤの空気圧注意の警告が表示されたのだが、 まさか買い替えて数ヶ月でパンク?(中古なのでタイヤの使用期間としては かなりそれなりなのであるがw)と思い、あまり注意を払っていなかった。

念の為、パンクならタイヤも圧が減ってさわればわかるだろうと触診してみた のだが、どのタイヤもほとんど差がないのでセンサーの誤検知としていたのだ。

で、数日そのままだったのだが再度タイヤを見ると左後方のタイヤが微妙に接地 面に膨らみがあり、気になり始めた。そういえば、今日は左後ろで普段聞かない ノイズもあったなぁ。やっぱりパンクか?

ちょうどガソリンを入れるタイミングもありガソリンスタンドで空気圧を測ったら 見事に 0。全く圧がかかっていないのであった。

そう、パンクだった。

ヤベェとは思いつつ、非常処置としてガソリンスタンドで空気を入れておく。

どうもスローパンクだったらしく、とりあえず家までは普通に走れたので 一安心だが、早く交換しないということでお店に相談したら明後日には 交換できるということで、なんとか無事に解決しそうである。

バカにしていたランフラットタイヤではあったが、ひょんなことで効果を しっかり感じてすっかりランフラットラブである。

いやぁ、本当にランフラットタイヤ、パンクしていてもほとんど気がつかない。 触ってもわからないし、万が一そのまま空気圧が0でも違和感あれど走れちゃう。

欠点と言えば、パンクしても気づけないってわけのわからんあたり。 もちろん重いので燃費や走りにも影響あるし、乗り心地もノーマルの ほうがいいらしい。

でも、もう私には一択である。

次のタイヤもしっかり、ランフラットを注文したのであった。

notionのweb bookmarkからraindrop.ioに変えてみました

日々ネットでいろいろ調べては、気になったサイトをbookmarkしている私。 というか、このbookmarkがないと困ること多々な日々になってしまうので この作業が快適な環境が必要なのである。

この作業をいままではnotionのweb bookmark機能でうまいことやっていたが ちょっとだけ、いやかなりかな我慢できない点があった。

という前に私がこのbookmark機能に求めている点をちょっとだけ書いていく。

  1. どのブラウザ、デバイスを使っていてもbookmark情報は一元管理できる
  2. bookmarkしたコンテンツのタイトルも同時に記録され、どのような情報か後で把握できる
  3. bookmarkしたサイトの情報を保存し、最悪元サイトがアクセス不要になってもあとで情報が参照できる(ここまでいくとbookmarkというよりweb clipと言ったほうがいいか)

という点を求めていた時にnotionのweb bookmarkは非常に私のニーズにマッチしていたのだ。

ただ、使い続けているうちにnotionのデータが大きくなってnotionを開くの数分待ち、動作もモタモタするように なってきて機能と使い勝手の綱引きが最近私の中で起きていたわけです。

というときに一年前の記事ですが、raindrop.ioの紹介記事を見つけてこれが快適ならこっちでも良い かなということで、一気に乗り換えてみたわけです。*1

bookmarkの量でまた同じことになってしまうかもしれませんが、今のnotionの状態はかなり深刻なので まずは使ってみてみようって感じです。

あ、ちなみにweb clipの機能は有償版のほうがしっかりしているので、今回あまり検証はしてないのですが しっかり加入しています。

あとはnotionに溜まったbookmark情報を移行できれば本当によいのですが、こちらはbookmarkのURLがテキスト情報として本文テキストに 埋め込まれているため、なんとか抜き出す方法が必要そうです。

頑張ってツールを作って統合したいです。

参考情報

esxi8.0U2にアップグレードとBroadcomのVMWare買収の影響

ちょっと時間が空いたので vCenterを使ってのESXiを8.0U2へアップグレードをやってみた。

やることは非常に簡単だったのだが、今回VMWareの買収により思わぬ伏兵が出てきて結局手こずってしまった。

本当に、姉さん、事件です!くらいの大事件が発覚しました。

何がっていうと、非公式ドライバーを提供していた fling.vmaware.comのサイトが買収の煽りを受けて突如10/25に閉鎖されて しまったのだ。

困ったぁとサイトを探していると閉ざされた背景を説明してくれるサイトがあり、やっぱり買収の影響で閉ざされたようで 今後の状況はかなり見通しが立たない状況らしい。*1

ドライバーの提供先のサイト https://fling.vmware.com/ を表示させるとサンプルの検索サイトに移動させられ、ほぼ希望の ドライバが手に入らなくなる。

私の環境では、このサイトで提供している3つのドライバーを利用していたのだが、USB Network Native Driverが8.0U1から 8.0U2へのアップグレードで非互換が出ており、これを解消しないとアップグレードができない状況であった。

で、状況を説明したくれたサイトにはこの状況を見てflingのサイトをアーカイブしてくれた人がいて、閉鎖される直前のサイトの データがhttps://archive.org/download/flings.vmware.com/提供されている。

今回はありがたく、このアーカイブを利用させていただき最新のUSB Network Native Driverを無事入手できた。*2

あとは例により*3 このドライバをvCenterに登録してESXiホストのアップグレードを指示するだけであっという間にアップグレードできました。

しかし、今後のアップグレードでドライバーが追従しないと上手くいかなさそうなのでちょっと心配になってきている。

特にUSB Network Native DriverはESXiのアップグレードごとにドライバーの依存関係が解決できず、アップデートされているので なんとなく次回のアップグレードで使えなくなりそうだし、他のドライバーもESXi7世代から更新のないドライバーなので何かあれば このドライバーに依存するデバイスの置換を考えていく必要がありそうな予感。

ということで、次のアップデートまで原稿のflingで提供されたデバイスを洗い出して置き換えを検討していくのが良さそうって ことになりそうである。

もっといえばBroadcomが心入れ替えて flingのサイトを復活させてくれるのが本当はハッピーなのだがそれは期待薄なのであろう。

まだ、サイトが閉じて1週間。この手のサイトは常に利用されるわけではないがいざなくなると非常に困るのでそのうち ネットでも騒ぎが起こるかもしれない。しばらくは現状を甘んじて受け入れるしかないが、このサイトを訪れた人が この情報で少しでも状況が改善できることを願わずにはいられない。

最後に、flingのサイトに関わっていた方に感謝の意を表し、今日の記事は終わりとしたい。

参考情報

quest3を使って2週間

meta quest3を使い始めて2週間たった。

Quest3を使うことで、物理ディスプレイを使わないスタイルにも慣れてきました。 というか、もう物理ディスプレイには戻れそうもないです。

モニターレスなので、いつでもどこでも同一環境で作業ができるので 自宅外での作業も快適になりそうです。

とはいえ、自宅外では周りの目が気になるのでなかなか実践はできそうもなさそうですが。

さて、使ってきての良い点・改善されるといい点をまとめておきます。

ただ、あくまでも今まで仕事で使っていたマルチモニターをQuest3の環境に切り替えた 場合の感想です。というか、この2週間MR/VRとして他の使い方を全くしていないので そちらの感想はかけないという、とても偏った感想となっております。

Quest3+immersedで実現する仮想モニター環境の良い点

  • 視界全面に大きなモニターが配置できるので見やすいし、動画を見れば迫力があります
  • キーボード・マウス操作もMRモードでは全く問題なく利用できますし、VRモードでも一部エリアをパススルーで見せることができるので違和感なく利用できます
  • モニターの配置を自由にできるので物理的な制約を受けない位置に配置できる(ちょっと目線を下げれば見える位置に配置するみたいなこともできます)
  • 度付きレンズを使用することでかなりクリアに見ることができる(物理モニターほどではないが問題ない程度にはクリアになります)
  • モニターをOFFにした状態でquest3を無線接続した状態でも問題なくログイン画面からログインができるため、完全にモニターレス運用ができる
  • ほぼ丸一日Quest3をかぶっていても疲れない
  • wifi接続でも十分な表示レスポンス。ただもっとレスポンスが欲しい場合にはUSB接続モードにすればより高速なレスポンスが期待できます

もっと良くなってくれたら嬉しい点

  • immersedの初回接続時の仮想モニターの解像度が4kになっていて負荷が非常に大きいため都度解像度設定を行う必要がある
  • 使い始めるためにimmersedの接続に1分程度必要なため、使いたい時にワンテンポ待ちが発生してしまう
  • バッテリーの消費が結構大きいので長時間運用の場合、USBで充電しながら使うか、休憩時にまめに充電するなど運用を気を付ける必要がある
  • 解像度4kでの利用はもっさりするのでお勧めできないが、2kの運用は十分問題ないので複数画面での運用で賄える
  • immersed上でHDCP保護コンテンツを見る場合には、chrome + ハードウェアサポートoffにする必要がある

まぁ、色々書きましたが初回起動時の仮想モニターの解像度を都度変更する必要がある点とバッテリーの持ちについてが ほぼ悩みだったのですが、今は以下の運用でほぼ個人的には影響のない状態になっているいます。

解像度設定についてはワンボタンで変更できる環境を構築することで改善した。具体的にはdisplayplacerというCLIコマンドを使って、 Loopedeskというショートカットキーデバイスにキーを割り当ててることで、設定する際にワンボタンで変更できるようにした。

バッテリーの持ちについては、完全なバッテリー運用だと本体だけで2h弱、eliteストラップの追加バッテリーを繋いでも3h弱でであり 長時間運用を考えると心許ないが、USB給電を行いながら運用すれば1時間で数%の消費で済むので長時間運用も問題ない状況になった。

まぁ、理想を言えば1日バッテリー運用し、夜中充電で100%に戻す形ができれば本当にいいのだが、まぁ期待しすぎかなと。

そうそう、Quest3自体は悪くはないが、Quest3でモニター運用することで困ったことが3点ほど。

  • ドリンクをコップから飲む時にQuest3にあたって飲みづらい。
  • QRコードが画面に表示されてiphoneとかで認証する時に仮想画面上の表示なのでiphoneから撮影できずログインができない(Lineのログインとか)
  • iPhoneのFaceID認証の時に認証されないので、コード認証になって手間がかかる

これらも完全ではないが回避策があってなんとか凌いでます。

  • ドリンクを飲むのはストローを使って解決。
  • QRコードはスナップショットをとってAirDropで連携して解決(これじゃできない時も実はある)
  • FaceID認証時にちょっとだけゴーグルを持ち上げれば実は認証できる

と、数回に渡り Quest3の利用感について記事を書いてきたが一旦一区切りとします。 とはいえ、利用に際して大きな事案が発生すれば書くことがあるかもしれないですが。

quest3と視力矯正レンズ。

普段はメガネで生活している私。

Quest3はメガネをつけても使える。事実買ってから今までQuest3+メガネで 運用してきた。

多少、見づらい。眼鏡がずれて使い勝手が気に掛かるなってこともあるが 使ってみれば快適でこんなものであろうと思っていた。

ただ、視力矯正レンズが標準のオプション*1で提供されていることもあり 気に掛かって注文したのが先日届いた。

注文に際しては視力の矯正情報が必要になるのだが、こちらは事前に 眼科や眼鏡屋さんに処方を手配しておけば問題なかった。

注文してから土日挟んで5日で届いたのはびっくり。アメリカからなの にあっという間に届いてしまった。

さて、実際に装着すると(装着もレンズを向きを合わせて押し込んではめる だけでした)、爽快・爽快・爽快。

もうこれ無くしてはありえないくらいです。 メガネでもそこそこ見えていたのですが、レンズをつけるとフォーカスが いつもぴったりあってこんなに楽なのかってくらいです。

ぜひ、メガネ+Quest運用している人は矯正レンズにした方がいいですと 言ってもいいくらいのQoL改善っぷり。

標準オプションだと送料込みで1万越えでいい値段ですが、Quest2のころ 3rdパーティ製のレンズは5千円程度で入手可能だったのでおそらくもう 少し待てば安いものも手に入るので、こちらを待っても良いかも。

もう一回言いたい。

メガネ+Quest運用している人は矯正レンズにしよう。

参考情報