IoT、車載システムを進化させるQtのポテンシャル 「Qt World Summit 2016」レポート

はじめに

2016年10月18日~20日の3日間、アメリカ、サンフランシスコでQt World Summit 2016 (以下QtWS) が開催されました。会場はフィッシャーマンズワーフの有名な観光スポットであるPier 39に近い、Pier 27のJames R. Herman Cruise Terminalでした。

会場となったPier 27のJames R. Herman Cruise Terminal
会場となったPier 27のJames R. Herman Cruise Terminal

QtWSは、C++のクロスプラットフォーム開発フレームワークであるQtの世界的なカンファレンスです。昨年と同様The Qt Company主催で行われ、The Qt Companyが主催になってから2回目、サンフランシスコでは初の開催となりました。

QtWSに先立って、2016年9月1日~4日にはQtCon 2016(以下QtCon)が開催されました。QtConではQt 6の話題にも触れるなど、中長期的な内容が扱われていたのに対し、QtWSでは直近の最新情報の詳細が扱われていました。

QtWSの内容としては、例年同様、初日にプリカンファレンスという位置づけでトレーニングがあり、2日目以降は本格的なカンファレンスとして、キーノートやセッション、スポンサ企業によるデモブースが設けられました。全体を通して、Qtの最新情報、IoTやUX等流行のトピックに絡めた内容、Qt Automotive Suite (車載ソフトウェア開発パッケージ)、OpenGL、Qt Quick、Qt Creatorについて等、さまざまなトピックが扱われていましたが、ここでは、QtConではあまり触れられていなかった以下の点を中心にレポートします。

  • Qt 5.7、Qt 5.8、Qt Liteの詳細
  • IoT、UX等流行のトピックに絡めた内容

ここからは、大きくトレーニング、キーノート、セッション、デモブースに分けてそれぞれの内容を記載します。

トレーニング

初日はプリカンファレンスという位置付けで、KDAB社、ICS社、froglogic社によるトレーニングが行われました。翌日からのキーノート・セッションの理解を深めることが目的になります。

今回のトレーニングは以下の7つのコースがあり、受講者は申込み時にどれか1つを選択しておく必要があります。

  • Debugging and Profiling for Qt ⁠KDAB)
  • What’s new in C++11/C++14? ⁠KDAB)
  • Introduction to Qt 3D ⁠KDAB)
  • Model/View Programming in Qt ⁠KDAB)
  • Effective QML ⁠ICS)
  • User Experience Design for Embedded and Mobile Devices ⁠ICS)
  • Qt GUI Testing with Squish ⁠froglogic)

トレーニングは基本的には講義形式で行われましたが、⁠User Experience Design for Embedded and Mobile Devices(ICS⁠⁠」のようにグループディスカッションを中心に進められたものもありました。

初日トレーニングの模様
初日トレーニングの模様

私は「Model/View Programming in Qt(KDAB⁠⁠」に参加しました。このコースでは、Qtの基本的な理解がある人を対象に、Qtのモデル/ビューアーキテクチャの概念や使い方が講義されました。講師は、QtとOpenGLの豊富な開発経験を持ち、全米でQtのトレーニングコースの講師をしているJim Albamont氏です。受講者は30人程度で、講義中は受講者が積極的に質問をしていました。説明が淡々と行われるわけではなく、サンプルアプリケーション実装のデモもあり、実装がイメージしやすかったです。デモの途中で、講師の方が「ここはどう実装すれば良いと思いますか?」と受講者に質問しながら進めていたことで、頭を使いながら講義を聞くことになり、より理解を深めることができました。

キーノート

2日目、3日目は本格的なカンファレンスが行われ、The Qt CompanyのCEOであるJuha Varelius氏の挨拶をもってキーノートが始まりました。両日ともセッションを挟んで最初と最後にキーノートがあり、2日間で約10項目のトピックが紹介されました。ここでは、直近の最新情報であるQt 5.7、Qt 5.8に触れた「The future is written with Qt」の詳細なレポートと、その他のキーノートの簡単な紹介を記載します。

The future is written with Qt

このキーノートでは、The Qt CompanyのCTOであるLars Knoll氏から、Qtの最新情報や今後の戦略について説明がありました。

Lars Knoll氏によるキーノート
Lars Knoll氏によるキーノート

キーノートの内容は大きく以下の項目に分けられます。

  • アプリケーション開発向けQtのステータス
  • デバイス開発向けQtのステータス
  • Qt Lite

ここでは、⁠アプリケーション開発向けQtのステータス」「デバイス開発向けQtのステータス」について詳細をレポートします。⁠Qt Lite」については、関連するセッションの内容とまとめて紹介します。

アプリケーション開発向けQtのステータス

ここでは主にQt 5.7、Qt 5.8の新規機能についての説明がありました。Qt 5.7は2016年6月16日に正式リリースされ、Qt 5.8は2016年9月5日にα版が、2016年11月4日にβ版がリリースされています(Qt 5.8の正式リリースは執筆時点では2017年1月5日の予定です⁠⁠。

まず、Qt 5.7でのライセンスの変更について説明がありました。Qt 5.7から商用ライセンスとオープンソースライセンスで使用できる機能が統一されています。それにより、以前は商用版にのみリリースされていた以下のものが、現在はオープンソースライセンスでも使用可能となっています (ただし、LGPLではなくGPLになります)。

  • Qt Charts
  • Qt Data Visualization
  • Qt Purchasing
  • Qt Quick 2D Renderer

ここでは触れられていませんでしたが、Qt Virtual Keyboardも、同様にGPLでの使用が可能となっています。

次に、Qt 5.7、Qt 5.8の新機能については、①C++バージョンアップ、②OSのサポート、③通信関連、④QML/Qt Quick、⑤Qt Quick Controls 2、⑥Qt 3D、⑦Qt WebEngine、⑧新規モジュールの8項目に分けて説明がありました。以下に各項目の主な内容を挙げます。

① C++バージョンアップ

Qt 5.7以降はC++11が必須になります。今後もC++14, C++17をサポートし、新しいC++の機能はそのまま使用できるようにする予定だそうです。

② OSのサポート

Qt 5.8でAppleのtvOSとwatchOSがテクノロジープレビューとしてリリースされます(Qt 5.9で正式リリースされる予定です⁠⁠。

③ 通信関連
Qt 5.8でQt NetworkのHTTP/2、Qt Serial BusのCANやOPC UAがサポートされます。また、Qt Network AuthenticationのOAuth 1&2がテクノロジープレビューとしてリリースされます(Qt 5.9で正式リリースされる予定です⁠⁠。
④ QML/Qt Quick

Qt 5.8ではQt QuickモジュールからOpenGLへの依存性が取り除かれ、描画用バックエンドエンジンが柔軟に切り替えられるようになります。これにより、まずは試験的にDirect3D 12のバックエンドが追加されます。またこの構造変更に伴い、ソフトウェアレンダラ実装のQt Quick 2D Rendererも統合されます。

⑤ Qt Quick Controls 2

Qt 5.7から新しく、マテリアルスタイル (Google) とユニバーサルスタイル (Microsoft) がサポートされています。

⑥ Qt 3D

Qt5.7からサポートされており、レンダリングパイプラインの設定も可能になっています。

⑦ Qt WebEngine

Qt 5.7でドラッグ&ドロップやWidevine Pepperプラグインを通じてのDRMによるメディア保護がサポートされています。また、Qt 5.8では印刷機能がサポートされます。

⑧ 新規モジュール

Qt 5.8でQt SCXMLが正式リリースされます。また、Qt Speechがテクノロジープレビューとしてリリースされます (Qt 5.9で正式リリースされる予定です)。Qt GamepadはQt 5.8でもテクノロジープレビューのままのようです。

Qt 5.7とQt 5.8では、不具合対応やパフォーマンス改善対応が多数入るそうです。特にパフォーマンス改善については、Qt Quickでオブジェクトの生成にかかる時間が大幅に短縮されていることが示されていました。Windows 10やmacOSでQt 5.8を使用した場合には、Qt 5.4と比較し、処理時間が半分以下になるようです。

デバイス開発向けQtのステータス

デバイス開発向けQtについては、基本的な戦略はこれまでと変わりませんが、今後はIoT開発を重視し、小型で低スペックなデバイスに力を入れていくようです。Qt 5.7以降では、組込みプラットフォームとしてNVIDIA DRIVE CX(Tegra X1, 64ビット⁠⁠、Raspberry Pi 3、NXP i.MX7(GPU無し)をサポートしています。また、Qt 5.8で対応予定のQt Wayland Compositorにより、独自のマルチプロセス環境を構築すること等ができるようになります。

「アプリケーション開発向けQtのステータス」「デバイス開発向けQtのステータス」の内容以外にも、今後はリモートディスプレイのサポート (VNCサポートやOpenGLのストリーミングが挙げられていました。VNCについてはQt 5.8でサポートされています) や、Webブラウザ上でQtアプリケーションを実行できるようにする等の対応を予定しているそうです。

その他のキーノート

ここでは、上記「The future is written with Qt」以外のキーノートの簡単な紹介を記載します。

雑誌「WIRED」の創刊編集長であるKevin Kelly氏によるキーノート「The Inevitable Digital Futures」では、ユビキタス社会や人の代わりをするロボットの実現等、30年後には避けられない変化について説明がありました。その上で、私たちはその変化を阻止したりせず、向き合うべきであることが述べられていました。

Kevin Kelly氏のキーノート
Kevin Kelly氏のキーノート

IoT製品等のデザインを手掛けるBig Medium社の創始者であるJosh Clark氏の「Magical UX and the Internet of Things」では、IoT製品による新しいUXは魔法のようなものであるとして、さまざまなIoT製品のアイディアが紹介されました。おむつにセンサを取り付け、取り替えるタイミングを知らせてくれるようにする等のユーモアあふれるアイディアもあり、会場の笑いをとっていました。

Josh Clark氏のキーノート
Josh Clark氏のキーノート

その他、ライトニングトークも含め、さまざまなトピックが扱われていましたが、特にUX、IoT、VR等、流行のトピックを扱っているものが目立ちました。

セッション

セッションは最初と最後のキーノートの間に、トピックごとに5つの部屋に分かれて行われました。2日間で計68項目のセッションが行われ、Qtの初心者や上級者、IoTに興味がある人、自動車に興味がある人等、多くの人が楽しめる内容になっていました。また、各セッションにはAutomotiveやUI/UX、IoT等のタグがついており、各セッションで扱うトピックが一目でわかるようになっていました。

ここでは、Qt Liteについて触れていた「Where Qt is going - Qt Lite Overview⁠⁠、⁠Qt Lite's configuration system explained」と、IoTやUX等の流行のトピックに触れていた「Qt & IoT - Do they fit together?⁠⁠、⁠Performance Boost Through Eye Control」について詳細をレポートします。

Where Qt is going - Qt Lite Overview / Qt Lite's configuration system explained

前述のキーノート「The future is written with Qt」でも触れられていたQt Liteについては、この2つのセッションで詳細な説明がありました。前述のLars Knoll氏とQt LiteのプロダクトマネージャであるNils Christian-Nielsen氏により説明が行われました。

Nils Christian-Nielsen氏によるセッション
Nils Christian-Nielsen氏によるセッション

Qt Liteは、現在の大きな潮流となるIoT開発へのニーズをQtでも満たせるように、より小型で低スペックなデバイスのサポートを目的としたプロジェクトです。Qt Liteの主な課題は①サイズとパフォーマンス、②UX、③ハードウェア、④システムアーキテクチャに分けられ、以下の項目等が挙げられていました。

① サイズとパフォーマンス

RAMとROM(ライブラリの全イメージ)を32MB未満(ただしRAM/ROMの使用量はアプリケーションによるところがあります)にし、デモアプリケーションの起動時間を1.5秒未満にすること

② UX

QMLで魅力的なUXを提供し、OpenGLやグラフィックアクセラレーションの有無に柔軟に対応できるようにすること

③ ハードウェア

メモリ消費量の少ない、ARMv7 300MHz(Cortex A、Cortex M7)をサポートすること

④ システムアーキテクチャ

Yocto LinuxでQtをより使いやすくすることや、ビルド対象とするモジュールをより詳細に設定可能にすること

Qt 5.8のQt Liteとしては、上記④の「ビルド対象とするモジュールをより詳細に設定可能にすること」に対応した新しいビルドシステムが強調されていました。新しいビルドシステムはqmakeとJSONをベースにしており、Qt Core等の各モジュール内部での機能のカスタマイズが可能になります。現状はQt Core, Qt GUI, Qt Quick, Qt QML, Qt Networkで対応されているそうです。QMLのSamegameデモアプリケーションのROMサイズで比較すると、以下の通りとなっており、この仕組みによりROMサイズが60%以上削減されています。

動的リンク静的リンク
Qt 5.625MB14MB
Qt 5.8 Lite10MB5MB

設定方法としては、設定ファイルで設定することも可能ですが、専用のGUIツールがデバイス開発向けQtに含まれており、そちらを利用することも可能です。

Qt & IoT - Do they fit together?

このセッションでは、IoT開発においてQtがどのように利用できるかが紹介されました。

Alex Blasche氏による「Qt & IoT」のセッション
Alex Blasche氏による「Qt & IoT」のセッション

前述のキーノートやセッションでQt LiteとIoT開発について説明がありましたが、それらがQt Liteにフォーカスしているのに対し、このセッションではIoT開発にフォーカスし、Qt LiteだけではなくQt全体についてIoT開発に適している点が示されました。このセッションのホストはQtのメンテナであるAlex Blasche氏で、QtとIoT開発は相性が良いのか?と問題提起した上で説明が進められました。Qtを使用することで、主に以下のメリットがあることが述べられていました。

  • デバイス開発向けQt等のツールが用意され、開発しやすい環境が整っていること
  • ネットワーク関連のAPI(HTTPやBluetooth等⁠⁠、産業向けのAPI(車載等特定の産業でよく使用される機能のAPI⁠⁠、センサ(タップや傾き等)関連のAPIが充実していること
  • コミュニティで情報共有が行われたり、技術的なサポート(有料)を受けられたりすること
  • Qt WidgetsやQt Quick等で魅力的なUIを実装できること
  • プラットフォームの変更に対して柔軟に対応できること
  • データベース(MySQL, SQLite等)操作、データの視覚化分析、クラウドの主要な操作ができること

最後に、IoT開発において考慮すべきコンポーネントを端末、ネットワーク、クラウド、UIに分けると、そのいずれにおいてもQtが適用可能であり、QtがIoT開発に適していることを結論づけていました。

Performance Boost Through Eye Control

このセッションでは、4tiitoo社のCEOであるTore Meyer氏により、アイトラッキングコントロールの可能性とアイトラッキングコントロールを実現した事例が紹介されました。

Tore Meyer氏のセッション
Tore Meyer氏のセッション

4tiitoo社はQtを用いて開発したNUIAというミドルウェアを提供しています。NUIAを使用することで、アイトラッキング、ジェスチャ、音声入力等によるアプリケーションの直観的な操作が可能になります(ただし、アプリケーションはセンサが取り付けられているPC等で動作している必要があります⁠⁠。

まず、Tore Meyer氏はアイトラッキングコントロールの可能性として、操作時のパフォーマンスやVRのパフォーマンスが向上できる点を述べていました。アイトラッキングコントロールでは、ダイレクトで素早いコンテンツへのアクセスが可能になり、操作を行うのにかかる時間を短縮することができます。また、VRにおいては、中心窩レンダリング(視線の中心は高解像度で、周辺は低解像度でレンダリングする技術)により、レンダリング時の負荷を大幅に下げることが可能になります。アイトラッキングコントロールを実現するにあたっては、視線は絶えず動いており、対象を正確に見ているようでも1°の範囲内で位置がずれていて偏りがあるため、補正が必要であることが述べられていました。また、ボタンクリック等のイベントトリガの実現については、視線とまばたき、視線とうなずき、視線とキーボード入力、視線のパターンによる判定等、さまざまな方法が考えられ、対象となるUIごとに適切な操作方法を検討する必要があるとのことでした。

セッションの後半ではNUIAをQt Creatorで使用できるように拡張した製品であるNUIA IDE Booster(Qt Edition)についても紹介がありました。これにより、見ている位置に合わせて自動的にスクロールを行ったり、見つめたボタンを自動的にクリックしたりすること等が可能になり、Qt Creatorを操作する効率が上がるとのことでした(ただし、専用のセンサであるTobii EyeX Eye Trackerを設置したPC上でQt Creatorを動かしている必要があります⁠⁠。

上記のセッション以外にも、Qt 3Dを利用したVR開発の紹介、iOSやAndroidでQtを利用する方法の紹介、車載関連のシステムの紹介等、さまざまなセッションがありました。

デモブース

例年通り、QtWSのスポンサ企業によるデモブースもありました。たとえば、Qt Automotive Suiteを共同で手掛けているThe Qt Company、KDAB社、Pelagicore社や、組込みシステム・コンピュータを専門とするToradex社といった各社は、それぞれのブースでAutomotive関連の展示を行っていたり、ICS社のPrecor(フィットネス機器)のタッチパネル、froglogic社のSquish(Qt向けのUIテストツール)等の展示がありました。

Automotive関連の展示
Automotive関連の展示

また、日本からもsdtech社がブースを出展し、HMI Toolchain(UIデザインとQt Creatorを連携するツール)を紹介していました。その他にも、Apple TV、Android Wear、DOLBYの会議用電話等、さまざまな製品が展示されていました。主にセッションの合間に設けられる休憩時間中に、多くの参加者が興味を持ったブースを見て回っていました。

おわりに

上記、トレーニング、キーノート、セッション以外にも、2日目の夕方にはパーティがありました。そこでは、夕食や飲み物が提供され、世界中のQt関係者・ユーザが交流を深めていました。

パーティの模様
パーティの模様

また、今回のQtWSでは、キーノートやセッションの情報が確認できるスマホ用アプリケーションも用意されていました。スマホ用アプリケーションはERP分野のソフトウェアアーキテクトであるEkkehard Gentz氏が開発したものと、V-Play社が開発したものの2種類あり、いずれもQtで開発されています。これら2つのアプリケーションはそれぞれセッション「Qt World Summit Conference App: Behind The Scenes⁠⁠、⁠How to Develop with Qt for Multiple Screen Resolutions and Multiple Platforms and Best Practices for an Efficient App Lifecycle with Qt」でも紹介されていました。冊子として配布されていたセッションのスケジュールや場所に対して、変更があった場合の最新情報は、このアプリケーション上で確認することができました。

私は今回初めてQtWSに参加しましたが、Qtの最新情報が得られたり、2015年のQt Championの方とお話できたり、Qtを使用している外国人の方とお友達になれたりと非常に良い機会になりました。次回のQt World Summit 2017はベルリンでの開催だそうです。興味を持たれた方は、参加してみてはいかがでしょうか。

SRAのQt関連サービスご紹介

  • Qtの国内販売代理店として2003年からQtの普及・促進に貢献
  • Qtのライセンス販売だけでなく、コンサルティングから開発、サポートサービスまでをトータルに提供
  • 多くのQtエンジニアが在籍しており、Qt開発受託の実績豊富
  • 4名のQtコンサルタントにより、導入のご支援、パフォーマンスチューニング、Qt自身のカスタマイズ等のサービスを提供
  • Qtの導入を検討する顧客向けに、Qtプログラミング体験セミナーを無償で隔月開催
  • より実践的なプログラミングスキルを学べる有償トレーニングも毎月開催
  • 詳細はSRAのQtサイト参照

おすすめ記事

記事・ニュース一覧