インディーハッカー日記:Hackintoshと古いPCでMac版Spotmarkを開発する

インディーハッカー日記:Hackintoshと古いPCでMac版Spotmarkを開発する

こんにちは、CatalystPack Studioです。

前回の記事を読んでくださった方は、私がSpotmark(画面に直接注釈や描画を行うツール)を構築するために、Electronではなく**Native(C++/Qt)**を選択した理由をご存知でしょう。唯一の目的は、アプリのラグをなくし、RAMを節約することでした。

その決定は紙の上ではとても「クール」に聞こえますが、実際にやってみると、私のような低予算のインディーハッカーが予期していなかった苦労の連続でした。

今日は、このBuild in Publicの道のりについて少し共有したいと思います。ピカピカのMacBook Pro M3やハイエンドPCが登場しない物語です。


C++の「Cross-platform」の約束と厳しい現実

ElectronなどのWeb技術を使用する場合、オペレーティングシステムはほとんど抽象化されます。WindowsでUIをコーディングすれば、Macでも完璧に動作します。

しかし、Nativeは違います。特にSpotmarkのようなScreen Markerにとってはそうです。透明なフルスクリーンウィンドウを作成し、クリックを貫通させ、セキュリティレイヤーを通過するために、OSと深く対話する必要があるアプリケーションだからです。

C++のソースコードは共有できますが、Windows(Win32)、Linux(X11/Wayland)、macOS(Cocoa)のシステムAPIは激しく衝突します。これを解決するには、コンパイルしてテストするための物理マシンが絶対に必要でした。

しかし問題は… 予算がなかったことです!


Linuxと古いPCでのWaylandのパズル

SpotmarkをLinuxでうまく動作させるためには、X11(旧)とWayland(新)の両方の環境でテストする必要がありました。

専用のLinuxマシンがなかったため、部屋の隅に置かれていた古いPCをフォーマットし、Ubuntuをインストールしました。HDDで動いているマシンなので、Qtライブラリを引っ張ってきたり、CMakeを実行してC++をコンパイルしたりするのにかなりの待ち時間がかかりました。しかし、ビルドが遅いことは最大の問題ではありませんでした。

本当の問題はWaylandでした。X11とは異なり、Waylandには非常に厳しいセキュリティプロトコルがあります。デフォルトでは、アプリケーションが他のすべてのアプリケーションの上にオーバーレイウィンドウを作成することを許可せず、「クリックの貫通(click-through)」を厳しく制限しています。

Windowsでは、Win32 APIを使えば透明なオーバーレイを作成するのは非常に簡単です。しかしLinuxでは、Waylandのメカニズムには全く異なるアプローチが必要です。クリックスルー機能をテストし、他のウィンドウの上に描画するためには、KDEやGNOMEなどのDesktop Environmentと互換性を持たせるための正確な構成が求められました。最終的にその古いPCですべてのセットアップが完了し、Liquidのインクがウィンドウの枠に邪魔されることなくUbuntuの画面上でスムーズに流れた時、その苦労は報われたと感じました。


macOS:やむを得ずHackintoshに頼る

WindowsやLinuxとは異なり、MacなしでmacOSアプリ(.dmg.appファイル)をビルドすることはできません。初期段階では、クロスプラットフォームのテストだけのためにMacBookを買う費用は少し手が届きませんでした。当時の唯一の解決策は、Hackintoshをインストールすることでした。

私は手元にあったDell VostroのノートPCで「実験」することにしました。Hackintoshをいじったことがある人ならわかるでしょう。OpenCoreでの作業、.plistファイルの設定、WiFiやiGPUのKexts(ドライバ)を見つけてパッチを当てるのは、非常に時間がかかるプロセスです。Kernel Panicで真っ黒な画面で起動するのは日常茶飯事でした。

数日間の奮闘の末、マシンはなんとかコーディングを始められる程度に安定してmacOSで起動しました。しかし、macOSには別のハードルがありました:Accessibility(アクセシビリティ)とScreen Recordingの権限です。Appleは、ユーザーがSystem Settingsでアプリケーションに明示的に許可を与えない限り、画面とのあらゆる相互作用をブロックします。低スペックのHackintoshでこの権限付与のフロー(Permission flow)やCocoa APIの描画メカニズムをテストするのは時折カクつきましたが、最終的にビルドは成功し、Windowsと同じくらいスムーズに動作しました。


次のステップ:PoCからプロダクションへ

これまでのプロセスを振り返ると、Nativeでのクロスプラットフォーム構築は、Webフレームワークに比べて環境のセットアップに確実に時間がかかります。しかし、実際のパフォーマンスを見れば、そのトレードオフは完全に価値があります。

本日、Windows向けのSpotmark v0.4.5 Betaが正式にリリースされ、当初の目標通り、極めて軽量で超低遅延を達成しました。

macOSとLinuxについては、最初のProof of Concept(PoC)ビルドが、あのDell Vostroと古いPC上で正常に動作しています。チームの次の課題は、ソースコードを最適化し、プロジェクトを自動化されたCI/CDパイプライン(GitHub Actionsなど)に統合して、標準のインストールファイル(Mac用の.dmgとLinux用の.AppImage)を生成することです。

Windowsをお使いの方は、最新のBeta版をぜひお試しください: Spotmark v0.4.5 Beta(Windows版)のダウンロードはこちら →

MacやLinuxをお使いの方は、公式のNative版が完成次第通知を受け取るために、メールアドレスを残してください!

最適化の旅は続く。 💻

安全なアクセス

サインイン

CatalystPack へおかえりなさい

Google で迅速かつ安全にアクセス 🚀さらに多くのログインオプションが近日公開予定です。
支払い成功

Proへようこそ! 🚀

{productName} Proにご入会いただきありがとうございます。アカウントがアップグレードされ、すべてのプレミアム機能をご利用いただけます。