はじめに
2017年10月10日から12日の3日間、ドイツ、ベルリンのBCC(Berlin Congress Center)にてQt World Summit 2017(以下、QtWS)が開催されました。筆者は、今年より弊社SRAのQtチームにアサインされ、Qtの知識を高めるためにQtWSに初めて参加しました。ここでは、その時の模様をレポートします。
QtWSは、クロスプラットフォームアプリケーションフレームワークであるQtの開発者や、Qtで製品を作成するベンダ、ユーザが集まるカンファレンスです。今回は、QtWSに先立って、Qt開発者が集まるQt Contributors' Summit 2017(QtCS)が10月9日から10日の2日間、ベルリンにて開催されています。詳細については別レポート を参照ください。QtCSは、Qt開発に関わる人たちが長期的なトピックを議論するのに対し、QtWSは、QtユーザがQtベンダーなどからの短期、中期的なトピックについて、いろいろ学ぶ場という位置づけです。
会場となったBCC(Berlin Congress Center)
また、QtWSアプリがAndroidおよびiOS用で提供されており、これらはQt 5.9およびV-Play SDKにより実装されています。このアプリでは、QtWSカンファレンスのスケジュール内容や詳細情報の確認、お気に入りに登録し自身が参加するセッションの管理を行うことも出来ます。筆者は、QtWS期間中、このアプリにて、セッション内容の確認やカンファレンスルームの確認に使用しました。なお、アプリはオープンソースとしてGitHub に登録してありますので、興味がある方は参考してください。
カンファレンスの内容としては、初日にトレーニング、残り2日はキーノートとセッションが行われました。
トレーニングデー
トレーニングデーを受講するには、QtWS申込時に、希望のトレーニングコースを選択する必要があります。今年は、以下の13コースが行われました。
Introduction to Qt/QML
Introduction to Multithreading with Qt
Introduction to Model/View Programming with Qt
Introduction to Qt for Mobile Platforms – Android/iOS
Introduction to Qt 3D
Introduction to Modern OpenGL
Introduction to Profiling and Debugging for Qt Development on Linux
Introduction to CMake
Introduction to Testing Qt GUI Applications with Squish
User Experience Design for Embedded Devices by ICS
Advanced QML
Advanced Modern OpenGL
What's new in C++14 and C++17?
筆者は、「 Introduction to Qt for Mobile Platforms – Android/iOS」を受講しました。
トレーニング会場への案内板
トレーニングの模様
このコースは、KDAB社のMike Krus氏により、AndroidやiOSのQt Mobile環境における開発手法に興味がある人を対象に、主にスライドを用いた講義形式で、時折デモも交えて詳細の説明が行われました。本コースには、20人程度の受講者が参加しており、講義中に受講者からの疑問や質問に、ていねいに回答していました。
講義内容では、最初に、AndroidとiOSそれぞれの開発環境の構築方法について、次に、QMLとQuick Control 2導入の説明および、QMLをMobileで使用する際の注意点について、最後に、各Mobile環境特有の機能と統合するための説明がありました。
トレーニングでは、説明に使用したスライドの印刷物を受講時に配布されました。本コースの資料は400ページを超えており、そのため、だいぶ駆け足の説明になった部分もありましたが、あとから参照してもわかるように細かな部分まで配慮して資料が作成されていました。また、コースで使用したデモのサンプルコードも事前に配布されており、これらも合わせて復習するのもよいと思います。
キーノート
10/11、12の2日間については、The Qt Group CEOのJuha Varelius氏によるウェルカムスピーチによりカンファレンスが開始されました。両日は、午前がキーノートで午後からセッションという構成で、キーノートでは12のトピックが紹介され、その他に全部で78のセッションが講演されました。ここでは、「 Welcome to Qt World Summit 2017」 、「 The future is written with Qt」と、これら以外のキーノートの紹介をします。また、セッションについては後述します。
Welcome to Qt World Summit 2017
このキーノートでは、Qt Group CEOのJuha Varelius氏から、ウェルカムスピーチの後、Qtの関心業界(分野)について話がありました。最初の挨拶では、今回のチケットが売り切れたこと、世界40ヵ国から1,000人以上が参加し、Qtの使用業種30が参加する世界規模のイベントになったと報告があり、パートナーおよびカスタマーの皆様に感謝していると述べました。
Juha Varelius氏によるキーノート
今までは、非常に長い間デスクトップビジネスを行ってきましたが、これからも重要なビジネスの一部であり投資していきますと述べた上で、次の2つに着目していると言います。
UIの重要性
付加価値の追加(特定の業種により多くの付加価値を追加したい)
1つめの「UIの重要性」では、IoTの技術革新において、あらゆる「モノ」にUIが必要となり、今までのUIのみならず、新しい技術3Dや音声認識技術を利用したUIが登場しますが、デバイスが何であってもユーザエクスペリエンスがシームレスでなければならないと考えているようです。
また、2つめの「付加価値の追加」では、数年前に特定の業界でより多くの価値を追加したいと考えて、自動車産業を開始して考察してきました。世界の一流自動車メーカーの多くと協力し、Qt Automotive Suiteは主にIVIで使用されるようになったと述べています。
最後に、自動車業界に関しては、車内のすべての画面をQtにしたい、また、他の業界として、オートメーションと医療業界に付加価値を追加したいと考えていると結びました。
Qt Design Principals and Roadmap
このキーノートでは、The Qt CompanyのCTOであるLars Knoll氏から、Qtの現状と今後について説明がありました。
Qt Design Principals
はじめに、Qtデザイン原則について説明がありました(QtCSでも同様な話があったようです) 。
コードは1回記述すれば、長い間メンテナンスのため何度も読まれ、修正し続けられます。しかし、開発者は、コードにコメントをほとんど記述しないので、誰もがメンテナンスできない部分があります。このためQtでは、どのようにしてAPIの開発を行っていくかを次のように述べています。
APIs that lead to readable & maintainable code
コードは、直感的でドキュメントを記述しなくても理解できるようにすべきです。
Easy to learn & use, hard to misuse
クラスまたはメソッドごとに1つの概念とし、一貫した名前付け、かつ、シンプルで明確なセマンティクスの実装とします。
Performance
フレームワークのすべての部分で良好なパフォーマンスを確保し、デフォルトのAPIを複雑にしない、可能な限り多くのAPIを作成して、高速でシンプルなAPIを作成します。
Flexible(APIs Flexible)
一般的な使用事例を可能な限り簡単に実装できるAPIを作成します。
Keeping it simple
C++言語は複雑ですが、ほとんどの場合、複雑な機能は必要ありません。APIを簡単にすることで、敷居を低くし、初心者や中級者でも用意に実装できるようにします。
API Stability
Major Version間でも可能な限り互換性を保ちます。
また、ツールの開発方針についても、次のように述べていました。
World class tools
画面設計、プロジェクト管理、パッケージング、デプロイ、メンテナンスなどの開発プロセスのすべての部分をツールでカバーできるようにします。
Qt開発現状について
大きなトピックとして上がっていたのは、Graphicsについてです。
1つめのトピックとして、Qt Quick Scene Graphが使用するグラフィックスAPIの追加について話がありました。今後、5.9ではQt QuickのバックエンドでH/Wに依存しない、OpenGL、OpenVG、ソフトウェアラスタライズをサポートし、また5.10では、Qt GuiでVulkan(次世代の標準3DAPI規格)をサポートし、さらにOpenGL ES 3.2 APIも公開する予定とのことです。
次に、Qt 3D Studioの今後の動向について述べています。Qt 3D Studioとは、今年の2月NVIDIAからQtに寄付された3DのUIオーサリングシステムです。2017/10/11現在、そのソースコードがリポジトリで公開され、バイナリはWindows版のみですが、Qt Onlineインストーラーからインストールできるようになりました。現在、3D RuntimeにはNVIDIA RuntimeとQt 3D Based Runtimeがありますが、今後これをQt 3D Based Runtimeと統合して行くと述べていました。
Lars Knoll 氏による「Qt 3D Studio」説明の模様
リリースロードマップ
最後に、リリースロードマップについて紹介します。
Qt 5.9.2は、2017/10/6(金)にリリースされており、今後5.9シリーズについては、2ヵ月おきにリリースをしていく予定です。なお、5.9LTSは、3年間サポートになります。
また、5.10 Beta が10/9(月)にリリースされました(2017/11/13現在、5.10 Beta 4がリリースされています) 。5.10の正式リリースを今年11月末に予定しています。
5.10と5.11は通常のリリースおよび通常のサポートとなります。5.11のリリースは2018年春ごろを予定しています。
5.12は、Q t5系の最後バージョンとして、2018年秋にLTSとしてリリースされる予定です。
キーノートサマリ
ここでは、その他のキーノートのタイトルと、演者、概要を挙げます。
1.How Do You Measure What You Can't
CERNのATLASで研究をしているSteven Goldfarb博士は、「 見えないものを測るにはどのようにすればよいか」の問に対し、どのように回答するかを、ATLAS実験で得た結果から宇宙の起源についてまで話を広げて説明していました。
2.One Hundred Languages
『ルビィのぼうけん(原題:Hello Ruby) 』の著者である、プログラマ、作家、イラストレータであるLinda Liukasさんは、子供たちにコンピュータ、論理やプログラミングについて教える様子を説明していました。
3.Behind the scenes of a show car: Rapid UI/UX prototyping and production
Mercedes-Benz Research & Development North America Inc.で、IVIやインパネ(Instrument Panel)のUIチームを率いるAlex Hilliger氏は、コンセプトカー3台の概要を説明しました。そのうちの1台をブースで展示していました。
4.Future of Vehicle HMI Systems
Takayuki Tanabe氏は、Panasonic ITS社のCEOで、車のコックピットに表示する機能をQtで開発しています。IVI機能の開発フェーズは完了しており、ドライバ部のメーターやヘッドアップディスプレイの開発をしていると説明していました。
5.Using Qt to Build Next Generation Intuitive High End Cameras
Hasselblad社のRichard Röjfors氏は、自社製品である中判ミレーレスカメラHasselblad X1Dの液晶モニターのUIをQt/QMLで実装していることを説明していました。
6.Imaging Tissue Architecture: The Next Frontier in Battling Cancer
Quantitative Imaging Systems社の物理学者Michel Nederlof氏は、KDABと開発したQiTISSUEツールを用いた、人間ゲノムの配列の3D画像を分析し可視化する能力について説明をしていました。このツールは、がんを解明するツールです。
7.Game Engine Evolution: From Tech to UX
Amzon社、Game Engine Tools SpecialistのAlex Montgomery氏は、ゲームにも2D、3D、VRとあり、それらを処理するためのGame Engineの開発も複雑になっています。Rich GUIやC++ APIであること、クロスプラットフォームであることから、エディタやツールをQtに移行することにしましたと説明していました。
8.An IDE for Embedded Devices
Qualcomm社のJustin Howar氏は、組み込み機器の開発環境の統合を担当しており、Qt Creatorにおける問題と解決策を例を上げて説明をしていました。
9.Trends in Software and Business
マーケティング戦略家であるIgor Beuker氏は、Industry4.0、ビジネス動向、ソフトウエア、環境について述べた上で、未来ビジネスを予見しています。
10.Meta: Toward generative C++
C++の権威であり、ISO C++標準委員会のHerb Sutter氏は、現行のC++のさまざまな問題を提起し、それに対する解決策を説明していました。
セッション
各セッションは、以下の8カテゴリに分類されており、1セッション25分または50分で、78セッションが行われました。なお、カテゴリ最後のカッコ内数字は各カテゴリのセッション数を表しています。複数カテゴリに属しているセッションもありました。
App Dev(12)
Automation(15)
Automotive(16)
Business(11)
Embedded(7)
Graphics and 3D(9)
Medical(5)
Technical Deep Dive(6)
ここでは、筆者が参加したトピック Automation「Qt and MQTT」 、Automotive「QtIVI: Integrating and Testing Vehicle Functions with Qt Automotive Suite」 、Medical「Technical Overview of Qt in Medical Devices」について紹介したいと思います。
Qt and MQTT
このセッションは、QtMqttのメンテナーであるMaurice Kalinowski氏が、Qt for Automationについて、MQTTとななにか、QtMqttとはなにか、最後にロードマップについて説明していました。
セッションの冒頭で、Qt for Automationプロジェクトが2017年8月に立ち上がり、そこにKNXやMQTTなどのM2Mプロトコルが含まれたことが説明されました。
次に、MQTTとは、OASIS標準であるpublish/subscribe型のメッセージを処理するための軽量プロトコルあることを説明していました。現在MQTTのバージョンは3.1.1です。
また、QtMqttは、クライアント側の実装で、デバイスからの送信や、データの受信や管理のモニタリングのソリューションを提供します。ブローカー、サーバ、およびクラウド側は対象外です。QtMqttでは、MQTT仕様に完全準拠したいうことで、プロトコルレベル3.1および3.1.1、SoQレベル、トピックのワイルドカード、認証、SSL接続、および遺言機能を実装しています。
最後に、ロードマップについて説明がありました。QtMQTTを含むQt for Automatoin 1.0は、GPL/CommercialのDual Licenseで、Qt 5.10でリリースする予定です。
また、将来の開発については、MQTTの次のバージョンとなる5.0のDraftのステータスがPublic Reviewであり、正式にMQTT 5.0がリリースされれば実装する予定です。ただし、MQTT-SNに関しては、適応事例が見当たらないので、聴講者からのフィードバックをもらい、Qtにとって利点があるかどうかを吟味した上で対応したいと締めくくっていました。
QtIVI: Integrating and Testing Vehicle Functions with Qt Automotive Suite
このセッションでは、KDABのMike Krus氏が現行のQt Automotive SuiteのQtIVIについて説明し、また、このQtIVI 1.xにおける問題を提起し、QtIVI 2.0で導入予定の解決策について述べました。
QtIVIとは、Qt In-Vehicle Infotainment車載用インフォテインメント(InformationとEntertainmentの造語)でQt Automotive Suiteに含まれる開発を支援するためのツールです。QtIVIを用いることで、エアコン制御、ウィンドウ制御、オーディオ制御などの車両機能をQtベースのインタフェースで容易に作成することができます。QtIVIモジュールでは、車載機能を利用するためのC++クラスやQML Typeを提供しています。モジュールは、開発者側のAPIをFeatureといい、それを実装した側をBackendといいます。また、1つのFeatureに複数のBackendを設けることも可能です。
QtIVI
現在のQtIVI 1.1では、QIviPropertiesを利用していますが、アプリケーション実装側でQtIVIで使用する全てのプロパティを記述する必要があります。たとえば、エアコンの温度の最大値や最小値など、全て定義しなければなりません。これには、Backendで使用するデフォルト値も含まれ、Backend側のメンテナンスも行う必要があります。
そこで、これらのプロセスを簡略化するために、QtIVI 2.0ではコード生成機能を追加します。これは、アプリで使用する値をInterfaceとして定義し、プロパティだけでなく、名前、ENUM,データ構造、Signal、Slotなどをメタデータとして記述できるようにします。そして、このメタデータから、QtIVI 1.1で手作業で作成していたプロパティや、Backendのデフォルト値、テスト時に使用するBackendのSimulatorの生成、およびデータバリデータ用のコードなどを生成しようと考えていると説明していました。
QtIVI 2.0は、次期Qt Automotive Suite 2.0で、来年にリリースの予定です。
Technical Overview of Qt in Medical Devices
このセッションでは、医療業界にて開発に従事してきたThe Qt CompanyのIonut Alexandrescu氏が、医療機器におけるQtの技術概要について述べ、最後に適用事例を2つ挙げて説明しました。
Ionut Alexandrescu 氏によるセッション
医療機器の表示に関しては、医者にとって、ボタンの位置、フォーマット、サイズなどの見た目がとても重要で、またユーザの経験も重要であることから、次のコンポーネントに有用性があると述べていました。
1. Qt Quick
Qt WidgetよりUI作成やカスタマイズが容易
2. Qt Safe Renderer
簡単に実装可能であり、安全に重要な部品を使用でき、また車業界でも使用されています。
3. Virtual Keyboard
数多くの言語対応し、手書き入力も可能であり、また、カスタマイズも簡単です。
さらに、医療機器間の接続に関しては、次の機能が有用であろうと付け加えて説明していました。
1. Qt Bluetooth
Bluetooh Low Enargy(BTLE)
2. Qt Serial Bus
自動車業界で多く採用されているCAN Busや産業業界のデファクトスタンダードであるModBusを使用しています。
最後に、使用事例の1つめとして、麻酔換気(Anesthesia ventilators)医療機器を紹介。これにはQt Quickが使用されており、全世界で毎日2万5,000人以上の患者に安全に使用されています。また2つめとして、医療機器ではありませんが、全世界で使用されている外科用レントゲン撮影装置(Cアーム)のシミュレーション機器があります。
展示ブース
1階のホールには、スポンサー企業による展示ブースがありました。ほとんどの人がセッションに参加しているため、昼食やセッション間の休憩時は、多くの人たちがブースで展示者と会話し、賑わっていました。
展示会場の様子
今回は、特にキーノートスピーチがあったMercedes-Benz Concept EQに人集りができていました。
Mercedes-Benz Concept EQ
Concept EQのインパネ部分
ドライバー側のインパネ部分には21インチのディスプレイが設置されており、ここにはスピードメータなどの計器類や、ナビゲーションが表示されるようになっていました。また、この車にはサイドミラーはなく、前両ドアの内側にインサイドミラー(写真には写っていません)が付いていました。写真にあるConcept EQサイドミラー付近に見えるのはカメラでした。
その他のイベント
まずは食事関係です。1日目の夜、QtWSのトレーニングデーに参加した人のみ、Welcome Partyと称して、軽めの夕食とドリンク2杯が振る舞われました。筆者はホテルで朝食を済ましてからイベントに参加していたので、会場で食べなかったのですが、3日間毎朝パン、飲み物やフルーツなどが用意してありました。昼食はメイン1品とサイド1品(どちらも2品の中から選ぶ) 、自由選択ですが、飲み物とデザートも付いていました。また、セッション間に休憩時間が設けてあり、ソフトドリンクやケーキなどが用意されていました。写真は2日目の昼食です。
最終日には早めに帰国する人たちもいるため、2日目の夜にパーティーが催されました。パーティーに先立って、まず、夕食が振る舞われ、歌手とバンドが、その場を盛り上げてくれました。そのあと、パフォーマーが楽器を生演奏して、大変に盛り上がりました。
おわりに
今回のイベントは、トレーニングデーとカンファレンスの3日間で1,000人以上のユーザが参加し、チケットが売り切れる大賑わいでした。Automotive、Automation、Medicalに関しては、The Qt Companyも特に力を入れており、業種間で共通話題もあり、これからもっと活発になる分野だと感じました。
特にAutomotiveでは、KDAB社などの海外企業のみならず、日本企業も活発に取り組んでいることがわかりました。たとえば、キーノートでスピーチしたPanasonic ITS社では、電子コックピットシステムの開発を行っていましたし、またsdtech社では、上流工程から効率よくHMI開発をするためのツール群TRITO Linkageの開発を行っていました。また、キーノートスピーチにありましたSteven Goldfarb博士のCERNでも、かなりQtを使っているとのことで、これからもっとさまざまな業種や分野でもQtが使われていくように思いました。
筆者は、個人的にはQtWSに参加するまで、何がトレンドなのか、Qtの各機能がどのように関連しているのかなど、わかりませんでしたが、参加したことにより漠然とわかったように思います。今後は、このイベント参加の経験を活かして、Qt機能の知識を高めていきたいと考えています。
最後に、カンファレンスの様子のビデオは、すべてYouTubeにて公開されています。興味のある方はぜひチェックして、来年のQtWSに参加してみませんか?