Brynhildr

KeroRemote

リモートデスクトップエンジニアのブログ。

iOS版Brynhildrについて



iOS版Brynhildrの技術的なお話。




先日遂に公開しました「iOS版Brynhildr」についてのお話でございます。その昔に出していたのではないかと言われそうですが、それは「KeroRemote」という名前でしてBrynhildrという名前は付けておりませんでした。もうかれこれ12年ほど前ですね。ふと、さらにその2年ほど前にiOS版で「Orthros」も出していましたね。ちょっと記憶がだいぶ薄まっていますが。

さて、そんな「Orthros」と「KeroRemote」を経てまた登場しましたiOS版の「Brynhildr」。今度は名前がちゃんとしてます。いやOrthrosもその当時はWindows版もOrthrosでしたのでちゃんとしてたんですが。KeroRemoteの時からちょっとおかしくなりましたね。

iOS端末からWindowsを操作できるコンセプトのいつものやつです。

さて、そんなKeroRemoteと今回のBrynhildrですが、もちろんベースはKeroRemoteでございます。ただ、ベースも何も当時の記事によるとiOS 4.3に対応しているという昔すぎるお話で当然Xcodeもずいぶんと変わっており、当時のソースコードをそのままビルドなんてできるはずもなく、大量のエラーコードを吐き続けることになりました。

特に致命的なのが、KeroRemoteの時から利用していたVP8のデコード用のライブラリです。arm64とかに対応させるべく何度かリプレースした記憶もあるのですが、今回それを使うとなるとかなりの難儀が予想されたのと、あまりここばかりに時間をかけられないという事情もあり、限りなくWebブラウザ接続に近い仕様としました。

Webブラウザ接続では、VP8ではなく「WebP」と「PNG」の組み合わせです。そもそもBrynhildr Freeの方もVP8をベースにした「Vritra」になってますのでVP8のデコーダーは使えません。VritraのiOS版のデコーダーはちょっと開発する時間がないのでスルーとなっております。いつかやるかもしれませんけど。

さて、そんなWebP形式は言うまでもなくVP8のキーフレームですので、当然VritraからもWebPを生成可能です。なぜできるかはともかく。

この仕様により、iOS版Brynhildrの描画処理はとてつもなく簡単になります。何せWebP形式かPNG形式の画像をビューに貼り付けるだけですので。VP8のデコーダーの時は大変でしたけどそれは無に帰りました。さすが時代です。

あとは、使えなくなった命令とかが多数ありましたので無限に修正してました。確か数百はエラーがあったように思えましたので。変数の中に入っていた文字列の変更ができるようになっていたのは驚きですよね。さすが時代です。

あ、ちなみに言語は「Objective-C」のままです。さすがに巷ではSwiftの技術資料が溢れていますが、AIを駆使すればサンプルソースも楽勝です。良い時代になりました。

そんなこんなで最新のXcodeで何とかビルドが通るようになりました。実機でも動作します。最低iOSのバージョンは15.6と出ています。まあ良いでしょう。

手元にたまたまあったiPhone 7はiOS15.8でした。なんと描画されません。調べてみると、iPhone 7はApple A10 FusionというCPUなのですが、このCPUではネイティブでWebPを描画できない模様。色んなサイトではiOSのバージョンを上げると対応できるとありますが、恐らくソフトウェアで変換してんじゃないかと勝手に予想。もし違ってたらこの記事をそっこーで修正します。Xとかストアの回答にも書いちゃいましたけどまあそれはヨシとしましょう。

Brynhildr Freeの方の修正でスイッチを付けて乗り切ろうかとも思いましたけどちょっと不便かなと思い自動的に切り替わるようにしました。つまり、古い端末ですとWebPではなくJPEGになります。JPEGを描画できない端末なんて聞いたこともありませんのでまあ大丈夫でしょう。もちろんPNGとのハイブリッドですのでその辺の処理もぬかりなく。

ちなみになんでPNGがあるかと言いますと、Webブラウザ接続でもそうなのですが、画面に動きがないと差分だけで済むので圧縮すれば通信量が小さくて済みます。なので、画面に動きがあればWebP or JPEG、画面に動きがなければPNG、という寸法です。

ただ、WebPは優秀な画像圧縮形式ですので、JPEGですと画質も圧縮率も悪いので、古い端末ですと通信量が増えてしまいますのでご勘弁ください。古い端末ですのでいたしかたございません。

描画に関してはそんな感じで乗り切りました。

あと、実はKeroRemoteの時に散々言われたズーム機能。KeroRemoteではズームするかしないかの2段階しかありません。縮小か等倍で間がないのです。なぜこーなっていたかと言いますと、当時はサーバー側で縮小していたので、クライアント側(iOS)で微妙な拡大とかができなかったのです。

ですので今回は、KeroRemoteの時より10年以上経過しまして、通信インフラも整っていますし、ここは大盤振る舞いということで、サーバー側で縮小はせずに、等倍のままクライアント側に送って、拡大するなり縮小するなり好きにせい、という仕様にしました。これでスムーズに拡大縮小ができるようになりました。

あと、使い方が分からないの声が多かったのでガイド機能をつけました。ガイドがオンになっていると、ボタンをスライドさせた時に何が起こるか分かります。例えば起動画面ですと接続ボタンを左右で履歴が表示されます。上下で消したり戻したりできます。実はこの機能はKeroRemoteの時に実装されていたのですが、履歴機能が欲しいという意見は結構ありまして。接続後もどこからコントロールパネルと出すかとかキーボードを出すかとか。ちなみにKeroRemoteの時は画面外下からスワイプするとキーボードが表示される仕様でしたが、最新のiOS端末ではなんと使えません。OS標準のなんか違うのが出ます。上からもです。しょうがないので、左画面外からスワイプでコントロールパネル、右画面外からスワイプでキーボード、がそれぞれ表示される仕様にしました。

また、コントロールパネルもキーボードも表示位置の移動ができます。移動先は2種類の固定ですけど。消すことももちろんできるんですが、移動とか消すのに必要なボタンはガイド機能により動いてます。動ける方法に動かそうかと思ったのですが基本的な方向だけにしました、やかましいので。ちなみにコントロールパネルの「Fn」はガイド機能がオンですと「Option」になっていたりします。Fnだとちょっと分かりにくいかと思いまして、細かいですが。

あと細かなところを多少直していますが、基本的にKeroRemoteとWebブラウザ接続をがっちゃんこした感じの作りになっております。

そんなiOS版Brynhildrですが標準価格が「800円」でございますが、リリース記念といたしまして3月末日まではなんと「0円」となっていますのでまだの方はぜひダウンロードしてお試しください。

言い忘れましたけど、サーバー側(操作される側)はWindows版Brynhildr(Brynhildr Free)が必要になりますのでお忘れなく。バージョンは「3.5.1」以降がお勧めです。基本的にはローカルネットワーク(LAN)での接続となります。インターネットを介す場合はVPNなり固定IPなりが必要の上級になりますのでご了承ください。

あともしよろしければストアにレビューもらえたら嬉しいですのでよろしくお願いします。もちろん動かなかったレビューでも真実であればそれはそれで。

以上でございますー。


コメントはまだありません ... ( 管理人承認制 )





... 不具合報告の際は、アプリのバージョンやOS等の動作環境の記載を御願い致します。

表記されている会社名・製品名・システム名などは、各社の商標、または登録商標です。
当サイトはAmazon.co.jpアソシエイトプログラムに参加しています。
© 2026 LAUNCELOT CO. LTD.