組込Linuxシステム開発(1)

昨今ではIT関連のお仕事って言うと、圧倒的にWeb関係が華やかです。 それに対して組込システムは特殊な世界のようにも思われます。 数回に渡って組込Linuxシステムの開発について説明をしていくつもりです。

最初に何から説明しようか迷ったのですが、今回は組込Linuxを使用したGUIアプリの開発において、これから主流になる可能性がある(?)方法についてです。

GUIを使用した組込Linuxシステムは、古くはDirectFBなどや、X-Window+GTK2、それにQtなどを使ったシステムがあります。 最近ではyoctoで、Weston+Qt5系を使用するケースが多くなっているようです。

そして、もう一つの流れとして、ブラウザを使用してGUIアプリを動かそうとするものです。 ブラウザを使用するという事は、Web系の技術を使用することです。
現時点ではARM32bit+microSDカードのスペックでは少し厳しい感じもしますが、64bit+メモリ4GiB+SSDを搭載すれば現実味が増します。(現在私が使用してるRaspberryPi4です)

そこで、今回はブラウザを使用した組込システムのGUIアプリについて解説していきます。

ブラウザをGUIフロントエンドとして使用するとは、どのような構成なのでしょうか? 最近のPCと同じでブラウザを使ったGUIを構築することになります。 タッチパネルを使った操作については多くの人は違和感を感じないと思います。普段使い慣れているのですから。
ブラウザでは、直接ハードウェアのコントロールはできません。(ブラウザをカスタマイズすればできないことはないですが…) したがって、ハードウェアのコントロールするためのバックエンドサーバが必要になります。 つまり組込Linuxのボード内でGUIのためのブラウザとハード制御のためのバックエンドサーバを稼働させることになります。 バックエンドサーバとしては通常HTTPサーバまたはWebSocketサーバを使用します。

メリット
◎ GUIフロントエンド部分はWeb系技術者で開発可能
◎ 最新ブラウザのGUI機能を使用可能(HTML5, CSS, JavaScript...)
  (動画、OpenGLなど各種機能が利用可能となる)
◎ ハードウェア制御はバックエンドーサーバが行うため、開発に専念できる
  (GUIのデザイン、操作性など細かいことに煩わされることがなくなる)

デメリット
◎ GUIフロントエンド部とバックエンドサーバで分離し、その間の通信が必要
  (タッチパネル上での指のスライド操作に、機械の動きを連動させた場合、
  動きがぎこちなくなることがある)
◎ 今まで使ってきた言語(C,C++)以外に、新しい言語も習得する必要がある
  かも?
◎ バックエンドサーバ側を開発する技術者は、Webサーバ/WebSocketサーバ
  技術を習得する必要がある。(apache, nginx, fcgi, websocket ... )
◎ バックエンドサーバにpythonを使った場合、実行速度面で問題があるかも?
  (組込制御では速度を重視するケースが多々ある。
  しかしC,C++でバックエンドサーバを実装するのは大変)
◎ Web系技術者を投入するのが難しい
  (人手不足、それに組込Linux系は概してWeb系開発よりも時給が低い)
◎ 汎用ブラウザ(chromiun, firefox)では不要な機能があるためそのまま使用で
  きない
  (専用のブラウザを用意する必要がある)

習得しておく必要のある技術
◎ 組込Linuxの基本技術
◎ JavaScript(場合によってはトランスコンパイラ、WebAssembly)
◎ Webサーバ/WebサーバアプリまたはWebSocketサーバ
◎ WebSocket












この記事が気に入ったらサポートをしてみませんか?