株式会社ランスロット 代表取締役 / エンジニア
金子 雄一
2000年代より個人開発者「IchiGeki」として活動を開始し、リモートデスクトップソフトウェア「Brynhildr」などを開発する。2012年に「Microsoft MVP」をRemote Desktop Servicesの部門において日本人として初受賞。現在は富山県を拠点に、リモートデスクトップツールやスマートフォン向けゲームを開発するランスロット社を経営するほか、複数の企業でIT事業の支援などを行う。
「Brynhildr(ブリュンヒルデ)」という、2012年に生まれたリモートデスクトップツールがあります。独自の映像圧縮技術による低遅延と、文字の滲みを許さない無劣化の画質を特徴としたソフトウェアです。開発者は、エンジニアの金子雄一さん。2006年から約20年にわたり、リモートデスクトップツールをつくり続けてきました。その数は、優に20を超えます。
長年フリーソフトとしてBrynhildrを提供し続けてきた金子さんですが、2022年にはブログにて「年齢的にも全盛期と比較して衰えを感じる」と心境を吐露。個人での活動に限界があるとし、開発体制を複数人のチームへ移行すると発表しました。
さらに2024年には、これまで法人向けのみ有償であったBrynhildrを、個人でも有料化。一方でその数か月後には、広告を備えた無料の「Brynhildr Free」を提供するなど、さまざまな転換点を迎えています。
一体なぜ、20年以上も同じジャンルのツールをつくり続けているのでしょうか。そして、突如として開発体制の変更やマネタイズに踏み切った背景には何があったのでしょうか。
その背景にあったのは、ある種の特殊な地元“愛”――?
▲Brynhildrの動作イメージ
FF11の廃人寸前プレイから始まった、リモートデスクトップ開発史
――本日はよろしくお願いいたします。金子さんは20年以上もリモートデスクトップツールの開発を続けられていますが、そもそもどのようなきっかけで開発を始められたのでしょうか。仕事の一環だったのですか?
金子:いえ、動機はかなり個人的なものでした。
まず私のキャリアのスタートからお話しすると、業務システム系の開発会社にプログラマーとして就職したのが始まりです。
当時はバブル期で働き口にはそれほど困らず、私自身は東京に出てゲーム会社に就職しようと考えていました。しかし、父親から「お前、長男なんだから地元に残るよな?」との圧力をかけられまして……。仕方がないので、地元・富山県の開発会社に入りました。
そうして社会人生活を送る中、2000年代のある日、私はオンラインゲームの「ファイナルファンタジーXI(FF11)」のWindows版にどっぷりとハマりました。いわゆる、「ゲーム廃人」の一歩手前でしたね。
このFF11が、転機でした。
――詳しく教えてください。
金子:当時のFF11はフルスクリーンでしか起動できず、Windowsキーを押すとゲームが強制終了する仕様でした。
しかし、オンラインゲームですからリアルタイムで攻略情報は見たいわけです。当時はスマートフォンもありません。そこで私は、ゲームを起動しているパソコンの横にもう1台パソコンを置き、そちらの画面で攻略サイトを開きながらプレイしたいと考えました。
ただ、2台ものブラウン管モニターを置くのは邪魔でしたので、「メインのパソコンから、サブのパソコンの画面を見れないか」と思ったのです。
最初はVNC(Virtual Network Computing)ベースの遠隔操作ソフトを使おうとしたのですが、私の環境ではたまたまうまく動きませんでした。それなら自分で画面を飛ばすソフトをつくってしまおうと考え、開発したのが「Scope」という最初のツールです。
――ご自身のゲーム環境を快適にするためのツールだったのですね。そこから、どうして広く一般に普及していったのでしょうか。
金子:最初は本当に、画面を別のパソコンに表示させるだけの簡素なものでした。それを個人サイトで無料公開したところ、当時人気だったPC雑誌『ネットランナー』で紹介され、ダウンロード数が跳ね上がりました。
ユーザーが増えると「マウスやキーボードで遠隔操作できるようにしてほしい」「音声も転送したい」「インターネット越しにつなぐために暗号化してほしい」といった要望が次々と届くようになります。
私もプログラミング自体は好きだったので、それらの要望に応える形で機能を拡張し、設定不要でつながる「ZeroRemote」や、マルチコアに対応して速度を上げた「TrueRemote」というソフトなどへと、ソフトウェアを進化させていきました。
そしてインターネットのニュースでも取り上げられ、運営しているブログが1日9万PVになることもありました。ユーザーの反応が良かったので、私自身もどんどんフリーソフトづくりにはまっていったわけです。
――そうして個人向けのツールとして広まっていったのですね。
金子:ところが、ZeroRemoteを出したあたりから、企業から「業務で使いたい」「事業内容に近しいので話を聞きたい」との声がかかるようになりました。
各社から詳しく話を聞いてみると、企業ならではのさまざまなユースケースがあることが見えてきました。例えばサーバールームの保守管理の現場。サーバールームはセキュリティが厳しく、物理的に人間が簡単には入れません。そこで、シンプルかつ導入が簡単であり、OSの再起動時などでもスムーズに復帰しやすい私のツールの仕様が、安全で確実な作業を求めるインフラ担当者のニーズに合致していたようです。
あるいは、リモートデスクトップを通して全国の店舗に導入した端末を一括で遠隔保守したいという書店チェーンや、医療システムを組み込んだ端末と連携させたいという病院からの需要など、私が想像もしていなかった現場からの開発依頼がくるようになりました。
――企業からの需要も大きかったのですね。
金子:はい。そうして、副業のような形で、リモートデスクトップツールの受託開発や特定顧客向けのカスタマイズ案件を請け負うようになりました。
並行して、個人で公開するソフトでも、ネットユーザーの細かい要望を受けてさまざまなものをつくっていました。例えばモバイル端末に対応した「Orthros」や、ゲームなど高負荷な描画に特化した「Gungnir」など、さまざまな用途に向けた派生ソフトが次々と生まれました。
その結果、気がつくと20個以上はリモートデスクトップツールを手がけてきたと思います。あまりに多いため、自分でも過去につくったツールの一部の存在を忘れることがあるぐらいです。
――それらのうち、現在まで最も長く開発が続いているのはどのツールなのでしょうか?
金子:私自身が一番長くつくっているのは「Brynhildr」ですね。
――なぜ一番長く続いているのでしょうか?
金子:実はBrynhildrという名前は同じに見えても、中身の映像圧縮や転送のエンジンは何回も入れ替わっているんですよ。別の開発コードネームでつくってみたエンジンが思いのほか「出来がいい」と思うたび、「ではこれを本流のBrynhildrに乗せよう」との判断を繰り返してきました。
この名称を維持している最大の理由は、Brynhildrという名前自体がある種のブランドとして周知され、定着したからです。技術イベントなどでも「Brynhildrの金子さんですよね」と声をかけられるようになったため、この名前を維持しています。
C言語では“遅い”? 「文字の滲みは許さない」VP8改造と「CPUエンコード」
――技術的に強くこだわってきたポイントはどこにあるのでしょうか。
金子:特にこだわってきたのは、ソフトウェアによる、速度と画質のパフォーマンスを引き出すための最適化です。
初期は、既存の映像圧縮コーデックなどは使わず、自作した「GaeBolg」という映像圧縮コーデックを使用していました。C言語とアセンブラ言語を用いて、描画処理の最適化を図ったのです。
――アセンブラ言語まで用いてきたのですか?
金子:はい。時代とともにディスプレイの解像度が上がると、1秒間に数十億回という膨大な演算が必要になっていったからです。
そこにおいて、C言語だけで処理を記述すると、どうしても処理速度が追いつかなくなってしまいました。そのため、アセンブラ言語による処理の記述や並列処理などで効率化を図る必要があったんですね。
――そうして、映像圧縮の処理をご自身の手でずっと記述し続けてきたのでしょうか?
金子:いいえ、そんなことはありません。
時代が進むと、Googleがオープンソース化した「VP8」という優れた映像圧縮の規格が登場しました。VP8の背後にある符号化理論や数学的なアルゴリズムはやはり圧倒的で、動画にも耐えうる極めて高い圧縮率を実現できます。また、H.264などの規格はライセンス料が発生する懸念もありましたが、「VP8」なら商用でも安心して使えたというのもあります。次第に、すべてを自作するアプローチから、このVP8をベースにした形に移行しました。
ただ、VP8を採用するにあたってひとつだけ譲れないポイントがありました。
――どのような点でしょうか?
金子:「文字の滲み」です。VP8をはじめとする一般的な動画圧縮技術は、データ量を小さくするために色情報を間引く「YUV420」という方式を採用しています。YouTubeなどの動画を見る分には問題ないのですが、これをプログラマーが使うリモートデスクトップ環境に適用すると、ソースコードの細い赤字や青字が滲んでしまい、読みにくくなってしまうんですね。その事態はどうしても避けたかったです。
そこは自分で手を入れるしかないので、標準状態ではYUV420しか処理できないVP8をカスタマイズし、色情報を一切間引かない「RGB32」フォーマットでも処理ができるようにしました。どうしてもデータ量は増えますが、チューニングにより一定の処理の軽さと画質を両立させるようにしています。
――処理の最適化という点では、現代ならGPUを用いたハードウェアエンコードが主流かと思います。そちらのアプローチは取らなかったのでしょうか?
金子:あえてCPUだけで処理を完結させるソフトウェアエンコードにこだわっています。
大きな理由は、過去の苦い記憶です。昔、別の案件でDirectXを用いた3Dゲームをつくっていた際、「このメーカーのグラボなら動くけれど、別のメーカーだと動かない」といった環境依存の原因調査と修正対応に非常に疲弊した経験がありました。なので、CPUだけで処理ができるように徹底させています。
――とはいえ、CPUにもアーキテクチャによる依存や差異はあるのでは?
金子:おっしゃる通り、CPUにも世代や命令セットによる差異はあります。ですので、CPUの拡張命令は利用せず、基本命令のみで開発しています。グラフィックボードのドライバやAPIの相性問題が乱立していた当時の状況に比べれば、CPU依存による致命的なエラー率ははるかに低く抑えられます。どんなパソコンにもCPUは必ず搭載されていますし、環境を問わず安定して動作させることを優先した結果、CPUエンコードに落ち着きました。
――汎用性を重視した結果なのですね。
金子:ええ。そしてこれは結果的に、近年のAI開発の現場においてもマッチするという思わぬ利点を生みました。
AIの強化学習などでは、GPUの計算リソースを極限まで消費します。そのため、現場でもしもGPUエンコードを前提とした一般的な遠隔操作ツールを用いてしまうと、ツール側にリソースを奪われてAIの学習効率が落ちてしまいます。
しかしBrynhildrのアーキテクチャはGPUの処理を阻害せず、CPUだけで遠隔操作ができるため、「学習用のGPUをフル稼働させたままで、AI開発用の端末をリモートで操作したい」という需要にも応えられるようになりました。
――CPUでの完結と最適化を追い求め、長年同じジャンルのツールの開発を続けているというのは並大抵のことではないかと思います。そのモチベーションの源泉は何でしょうか。
金子:根本的には、プログラミングが好きだからでしょうね(笑)。ただ、長続きさせるうえで意識していることはあります。
過去に、ユーザーからのあらゆる要望をのんで機能追加をしていた時期があるのですが、どんどん「自分では使わない機能」が増えていきました。するとコードの保守作業に対してネガティブになり、自分でつくったソフトが嫌いになりかけたのですね。「自分のつくったソフトは好きなままでいたい」と考え、それ以降はユーザーの要望は伺いつつも、最終的には「自分が実装したいと思える機能かどうか」を基準に開発を続けるようにしていますね。
なぜマネタイズに踏み切ったのか:「富山でもできるんだぞ!」
――その大きなこだわりとともに個人でBrynhildrの開発をしてきた金子さんですが、2022年には「チーム」での開発体制へ移行しました。何があったのでしょうか?
金子:年齢によるパフォーマンスの衰えを自覚したというのは大きかったですね。
40代手前あたりから、新しいアルゴリズムを頭の中で組み立てるのに時間がかかるようになりました。正常系の処理だけでなく「怪しいデータが来た時にどうするか」といった異常系の考慮が漏れやすくなったり、あとは単純にキーボードのタイプミスが増えたり。
自分の中で「もうエンジニアとしてのピークは過ぎたかもしれない」と痛感し、ちょっとした機能の追加や、自身で経験のなかったAndroid版の開発などにおいては、別のエンジニアの協力を仰ぐなど、チームとしての開発体制へと移行したのです。
――そして2024年には、Brynhildrのシェアウェア展開を、個人向けにも広げることに踏み切りました。しかし、有料化した直後に広告付きの「Free版」もリリースされています。不思議な動きにも見えますが、これは、どのような経緯だったのですか。
金子:突拍子もないように聞こえるかもしれませんが……。
地元・富山を盛り上げたいからです。その思いが背景にあります。
――富山を盛り上げるため、ですか? 一体どういうことでしょうか。
金子:私は高校を卒業して富山で就職した後、ずっと富山を拠点に活動しています。仕事で東京へ出張する機会は頻繁にありますが、私の性分として、車ですぐコンビニに行けるような地元の環境のほうが過ごしやすかったんですね。面倒くさがり屋というのもあるかと思います。
そうして富山にとどまり続けていると、次第に「なぜITの最前線は東京でなければならないのか」「東京に行かなくても、富山でスゴイことができるんだぞ!」と証明したいという、意地のような気持ちが芽生えてきたのです。
その大きなきっかけは、2012年に地元で通話アプリを手がける会社の立ち上げに携わり、代表取締役に就任したことでした。
――そこで何か発見があったのでしょうか。
金子:東京で人材を募集しても、数多くの有名企業と激しい採用競争になり、疲弊してしまいます。そこで、あえて富山を拠点にしつつもエンジニアファーストな労働環境を整えれば、優秀な人材が集まってくるのではないかと考えました。
実際に募集してみると、かつて有名ゲーム会社で活躍していた凄腕のプログラマーなど、富山にも優秀なエンジニアがいることに気づいたんですね。
――富山という土地のポテンシャルを実感されたわけですね。
金子:はい。実際、毎年富山県 では「BuriKaigi」というブリを食べながら行われるIT勉強会が開催され全国から数百人のエンジニアが集まる、熱量の高いエンジニアコミュニティも存在しています。
私は、そうしたコミュニティを通じて富山のエンジニアにもっと活躍してもらいたいと考えています。
しかし、せっかく優秀なエンジニアがいても、地元に彼らが活躍できる案件がなければ仕事になりません。そこで、私が現在関わる会社では、県外のクライアントからシステム開発やゲーム開発などの案件を受注し、経験豊富なリードエンジニアの指揮のもと、地元のエンジニアたちとチームを組んで開発を進めるといった活動を行っています。
このように地元で雇用や仕事を生み出したり、地元スタートアップ会社や自治体への支援、勉強会のスポンサーになったりなど、コミュニティを維持していく上で、どうしても資金が必要になります。だからこそ、これまで育ててきたBrynhildrをマネタイズし、そこに充てたいと考えました。
また無料のFree版に広告を入れたのは、一般的な広告収入が目的ではなく、私が関わっている地元企業のITサービスや、コミュニティのイベントなどを宣伝する場を用意しておきたかったからです。
今後も様々な試みで、富山のエンジニアやコミュニティをもっと盛り上げたいと考えています。
――攻略サイトを見ながらFF11を遊ぶためにつくり始めたツールが、今では地元・富山で働き続け、コミュニティを盛り上げるための武器になっている?
金子:まさかこんなことになるとは、思ってもみませんでした。
金子:それともうひとつ、嬉しい誤算があります。私がつくってきたリモートデスクトップツールが、有名ゲーム会社の開発現場でインフラとして使われていることです。
お話した通り、私は高校時代、本当は東京のゲーム会社に就職したかった。結果的に地元に残ることになりましたが、回り回って、間接的に大好きなゲーム業界を支えられている。この状況には、えも言われぬ自己満足感をひっそり抱いています(笑)。
とはいえ、私が長年ひとりで開発を続けてきたこともあり、Brynhildrのソースコードはリファクタリングが必要な部分が少なくないですし、新しい映像圧縮コーデックやゲームなど、つくりたいものは山積みです。これらは老後に片付けることになるかもしれませんが、これからも富山を拠点に、自分のペースで開発を楽しんでいきたいです。
取材・執筆・編集:田村 今人
撮影:曽川 拓哉