わたすけです。
以前このような記事を書きました。
この記事でも書いたように,「面倒な環境構築を最小限に抑え、全ての環境で開発を可能にする」という試みを以前から行っています。これを実現することができれば,PCごとに環境構築をする必要がなくなり,また,外出先でもほぼ同じような環境で開発を行うことが出来るという素晴らしい開発環境が出来上がるのではないかと思っています。もっといいやり方があるのかもしれないけど
しかし,FlutterはWebアプリ開発に対応しているため,ngrokでlocalhostを公開することで開発が可能でしたが,このままだとGUIソフトウェアの開発がかなり困難になってしまいます。例えばQtソフト,SSH接続してプログラムを書いてビルドしても,GUIがなければ肝心のビルドされたものを実行することができません。
ということで,解決方法をいくつか考えていましたが,結局リモートデスクトップで表示させるのが一番かなぁという結論になりました。
今回は,サーバーとしてラズパイを用意し,ラズパイ上で実行されたQtアプリケーションのGUIを表示させる方法について書きます。
動作環境
- サーバー:Raspberry Pi 4 Model B(RAM: 4GB)+Arch Linux Arm
- ローカル:Windows10 Home 2004
Qtのビルド環境構築については省略します。qt5-base,cmake,ninjaがあれば出来ると思います。
サーバーの設定
まずはサーバー(ラズパイ)の設定をします。
必要なパッケージのインストール
必要なパッケージを入れます。まずウィンドウマネージャのOpenbox,VNC構築に必要なtigervnc等です。
$ sudo pacman -S openbox xorg-server tigervnc
VNCサーバーの設定
接続時,openboxを起動させるように設定します。~/.vnc/xstartupに設定すればいいよ~という情報が多かったのですが,何故かそれだと設定が反映されなかったため,/etc/X11/tigervnc/Xsessionを編集します。
任意のエディタで/etc/X11/tigervnc/Xsessionを開き,以下のような内容にします。
#!/bin/sh
exec openbox-session
VNCサーバーの起動
VNCサーバーを起動します。最初はパスワードの設定を求められると思うので,好きに入力してください。
$ vncserver :0
ローカルの設定
VNCサーバーに接続します。今回はWindowsから接続しますが,使用するソフトはクロスプラットフォームらしいのでおそらくどの環境でも似たような感じになると思います。
まずは以下のページからVNC Viewerをダウンロードし,インストールします。
インストールが終わったら起動します。
次に,「File」→「New connection」を選びます。「VNC Server」の部分にサーバーのIPアドレス,「Name」の部分はわかりやすいものにしてください。
記入が終わったらOKをクリックし,ダブルクリックして起動します。
Openboxが表示されたら成功です!
一応Qtソフトを起動してみる
一応ビルドから起動まで試しましょう。ターミナルを開き以下のようにコマンドを入力します。
$ git clone https://github.com/watasuke102/template
$ cd template/Qt
$ cmake -GNinja .
$ ninja
$ ./qt-test
なにもないウィンドウが表示されるはずです。このような流れで
終わりに
まとめると,「vncserver :0」してからVNC Viewerで接続しようという感じです。
いかがでしたか?? 正直,なんか微妙に変なやり方になったような気がするので,もっといい案を探していきたいです・・・。
なにか良い案があったり,この記事の中で不明な部分があったりしたら,是非コメントをお願いします。
コメント