みなさん、こんにちは。
前回、Telnetとexpectを駆使して、Linux上のGitHub Copilot CLIから Haiku OS を自在に操る「最強の連携環境」を構築しました。
環境が整えば、次にやりたいことは決まっています。「アプリがなければ、自分で移植してしまえばいい」。
HaikuはPOSIX準拠であり、Qtなどのフレームワークの移植も進んでいるため、Linuxアプリを比較的少ない修正で動かせるポテンシャルを持っています。そして今の私には、GitHub Copilotという、Haikuの深淵にも物怖じしない心強い相棒がついています。
今回は、かつて挫折したアプリの移植に再挑戦し、AIと共に数十分で動作まで漕ぎ着けた感動の記録をお届けします。
メディアOSに相応しい素材を求めて
HaikuのルーツであるBeOSといえば、かつて「メディアOS」として名を馳せました。その系譜を継ぐOSに相応しいアプリとして、以前Bodhi Linuxで動作可能な動画管理アプリとして紹介したSceneExplorerを選びました。
- SceneExplorerとは
→ 動画から複数のサムネイルを抽出し、視覚的に管理・再生できるアプリ。 - 使用技術
→ Qt5, ffmpeg, SQLite。
まさにHaikuにぴったりの素材です。
開発環境の構築
まずはHaiku OSに必要な実行・開発環境をインストールします。
pkgman install -y qt5 qt5_devel qt5_tools qthaikuplugins gcc pkgconfig sqlite ffmpeg6
その後、SceneExplorer、lsMisc、profileの3つのリポジトリを開発元のambiesoftさんのGitHubリポジトリからクローンしました。その後、Bodhi Linux で成功したビルド手順を試みましたが、いくつかのコンパイルエラーとリンカエラーに遭遇。
実はこの作業は前回も実施しており、エラーの解析が面倒で挫折していました。しかし、AIの力が借りられる今回は前回とは違います。
ここからは、WSL2上のGitHub Copilot CLIにHaikuへログインしてもらい、エラーの解析と修正を繰り返してもらいました。
Copilotと乗り越えた5つのエラー
Linux固有の拡張機能がHaikuでは通用しない。そんな「移植の定石」とも言えるトラブルを、Copilotはどう解決したのでしょうか。
エラー1 – secure_getenv が未定義
secure_getenvはGNU/Linux独自の拡張関数です。Haikuのlibcには存在しません。
【修正】 Linuxのみ
secure_getenvを使い、Haiku(および他OS)では標準のgetenvを使うよう分岐させました。
エラー2 – リンカエラー(undefined reference)
- qmakeのプロジェクトファイル(.pro)に
linux { ... }というスコープがあり、Haikuでのビルド時に重要なソースファイルが除外されていました。
【修正】 スコープを
linux|haiku { ... }に書き換え、Haikuでもプラットフォーム固有のコードがビルドに含まれるようにしました。
エラー3 – sys/syscall.h が見つからない
- HaikuにはLinux固有のシステムコールヘッダは存在しません。
【修正】
#ifdef __linux__でヘッダとシステムコール呼び出し箇所をガードし、Haikuではスタブを返すように修正しました。
エラー4 – struct dirent に d_type がない
- Linuxでは
readdir()で得られる構造体に「ファイル種別(ディレクトリかどうか)」が含まれていますが、これはPOSIXで必須ではなく、Haikuの構造体には含まれません。
【修正】
stat()とS_ISDIR()を組み合わせたPOSIX準拠の判定処理に置き換えました。これは移植における王道の修正です。
エラー5 – gitrev.h の修正
- SceneExplorer特有の処理として、
aboutdialog.cpp内の微修正を行い、ビルドを通しました。
これらの修正を施した結果、とうとうビルドが成功し、Haiku OS で SceneExplorer を立ち上げることに成功しました!

デスクバーの「Applications」メニューへの登録
アプリが起動できることが確認できたものの、毎回ターミナルから起動するのはスマートではありません。Haikuらしくデスクバーに登録しましょう。
Haikuでは、特定のディレクトリにシンボリックリンクを置くだけでメニューに反映されます。
# ユーザー固有のメニューディレクトリ作成
mkdir -p ~/config/settings/deskbar/menu/Applications
# バイナリへのシンボリックリンクを作成
ln -s /boot/home/git/ambiesoft/SceneExplorer/build/SceneExplorer \
~/config/settings/deskbar/menu/Applications/SceneExplorer
※バイナリへのパスは各自の環境にあわせてください。
これで、デスクバーからいつでもSceneExplorerを起動できるようになりました。

AIが変える「移植」と「保守」の未来
かつて、エラーログを読み解くのが大変で挫折した移植作業が、AIの力を借りることで数十分で完了しました。Haiku OSという、AIの学習データとしては決して多くないはずのマイナー環境でも、POSIXの知識やC++の文脈を理解しているCopilotは驚くほど的確な指示をくれます。
今回修正したソースは、こちらで公開しています。
taoman26/SceneExplorer (GitHub)
最近「SaaSの死」が語られることがありますが、私は「ドキュメントのない業務用アプリ」こそが、AIによってその寿命を劇的に変えられるのではないかと感じています。
「担当者がいなくなって保守できない」という理由で捨てられてきたアプリたちが、AIという伴走者を得て、生き残り続ける。そんな未来がすぐそこまで来ています。
仕様書通りに書くだけ、モダナイゼーションするだけの時代は終わり、新しい価値を生み出すためにAIを使いこなし、「最短でアプリケーションを実装して目的を達成する」というエンジニアの直感が問われる時代になってきたことを実感させられる移植作業でした。
本日も最後までお読みいただきありがとうございました。
それでは、よいHaiku OSライフ&開発者ライフを!




ピンバック: Haiku OSでUSBウェブカメラに挑む — XHCIドライバの深淵とISO転送の沼 - ビューローみかみ
ピンバック: SceneExplorerをforkして長編動画の管理をやりやすく改造した話 - ビューローみかみ