Qt 5 の未来は明るいブログ

New configuration system

Published: 2016-08-20 / Last modified: 2016-08-20

この記事は、2016年6月23日に Qt の Developer メーリングリストに投稿された New configuration system というメールを適当に訳したものです。

やぁ、

すでに知っている人もいるかもしれないけれど、最近俺は Qt の新しい configuration システムを開発してるんだ。一番最初の大きな変更が昨晩マージされたから、このタイミングでその変更と今後の予定について説明するよ。

新しいシステムのゴールは2つ。

1つめは、Qt のビルドのカスタマイズについての要望が、特に組み込み系のユーザーから非常にあがっているんだ。多くの場合は容量に関する制限で、Qt から製品開発に必要のない機能を外すことができないか?って話。昔はそういう仕組みが Qt にあったんだけど(詳しくは src/corelib/global/qfeatures.txt を見てね)configure スクリプトには完全には組み込まれていなくて、Qt 4 の時代からそんなにちゃんとメンテナンスされてなかったし、いろんな制限があったんだよね。この仕組みを新しいシステムでそれを改善できたらなぁと思ってる。

2つめは、長い間、2つの別々の configure システムがあったこと。Unix 向けのモンスターのようなシェルスクリプトと、Windows 専用の Qt で作ったやつ。Qt の設定まわりを変更しようとするとだいたいその両方を変更する必要があって、へんなバグの温床になってたんだよね。メンテナンスのしやすさは結構ひどい感じだった。

というわけで、新しいシステムを作ることにしたんだ。最初に言ったように、最初の(でもでかい)パッチ(https://codereview.qt-project.org/#/c/149202/)が昨晩マージされた。これは設定の定義をシェルスクリプトの中から(configure.json という名前の)json ファイルに持っていくもので、qmake にこの json の処理をさせる予定。今の段階では Unix のみが対象で、Windows はもうしばらくは configure.exe が使われます。この変更では古いシェルスクリプトと新しいシステムで(可能な限り)同じ設定になっているはずなので、もし今までどおり configure を動かして、動かなくなっていたら俺に教えてね。

新しいシステムの詳細についてはもう一個別のメールを送るので、興味がある人は読んでほしい。

Continue reading...

QtMultimedia の Linux でのカバーアート対応

Published: 2016-07-24 / Last modified: 2016-07-24

某所で音楽ファイルのメタ情報に含まれているはずのカバーアート表示されないんだけど?と言われたので「GStreamer: support cover art」というパッチを作ってみました。

メタデータのうち簡単な型のデータについては Qt の型に変換して対応していたが、カバーアートは GstSample という少々高度なクラスだったので未対応だったようだ。

前職でマルチメディア関係の仕事をしていたせいか、GStreamer とも戦える身体になっていた。嫌いだけどね。

QtQuick の base64url 対応

Published: 2016-04-18 / Last modified: 2016-04-18

Qt 勉強会 #34 @Tokyo で試行錯誤をしていた Qt.atob()Qt.btoa()base64url 対応が形になったので Qt 5.8 向けに QByteArray::Base64Option support for Qt.atob and Qt.btoa というパッチを送りました。

Base64url Encoding とは?

先日とあるウェブサービスの Google+ のサインイン対応 をしていた際に JWT 形式のレスポンスを Qt.btoa() でデコードしようとして上手くいかないケースがありました。

通常の Base 64 では A-Z、a-z、0-9 と + と / が使用されますが、+ と / は URL では特別な意味を持つため、別の文字(- と _)を使用するようにし、最後の == もなくしてしまおうという形式で JWT ではこの Base64url Encoding が採用されています。

Qt の Base64url Encoding の対応状況

2013年の秋に「 Base64: Implement the "base64url" encoding and the stripping of '='」というパッチで QByteArray::toBase64QByteArray::fromBase64 で Base64url Encoding に対応していました。

Continue reading...

The Qt Company に入社しました

Published: 2016-04-01 / Last modified: 2016-04-01

1月末で前の会社を退職して2ヶ月ほど経ちましたが、The Qt Company で働くことになりました。

今まではダウンストリーム側からみなさんと一緒に日本の Qt を支えてきましたが、今後はアップストリーム側から日本のみなさんを引っ張っていければと思います。

詳しいことはまだ言えない(というより全然決まっていない)のですが、日本で Qt のビジネスを拡大するための仕事をエンジニアとしてサポートする予定です。

これまで 日本 Qt ユーザー会 を通じて行ってきた活動からは一旦手を退きますが、勉強会などはユーザー会のメンバーが引き続き開催を継続する予定なのでご安心ください。私もいち参加者として、たまに遊びに行きたいと思っています。

今回 The Qt Company に入社することができたのは、Nokia を退社して以来、コミュニティという立場で Qt に関する活動を行ってきたことの一つの成果です。一緒に頑張ってきたみなさん、参加してくれたみなさんにこの場でお礼を言いたいと思います。本当にありがとうございました。

立場は変わりますが、やりたいことは特に変わらないので、引き続き日本での Qt の普及や、Qt を使った便利なアプリケーションや製品の開発に貢献できればと思っています。

PTP を退職しました

Published: 2016-02-04 / Last modified: 2016-02-04

PTP 入社の経緯と退社までの流れを整理しました。どっかに書いたら忘れてもいいよね?w

2012年10月 Nokia Japan を退職

Qt 冬の時代の到来?

Nokia による Qt(Trolltech) の買収からはじまり、Symbian 対応、MeeGo での採用、MeeGo のプラットフォームを様々なデバイスに採用してもらえるような活動などを通じて、結構アグレッシブに Qt を押していましたが、2011年2月の Nokia の戦略転換により Qt ブームの終焉を迎えました。

それまで(実力以上に)頑張っていた反動により、これからは Qt にとって我慢の時期が続くんだなぁと思いました。

これから数年何をしようか

それまでは Qt の中の人としてアップストリーム側から Qt を広める活動をしていましたが、これからは真逆の立場に立って Qt を広める活動ができたらいいなぁと思いました。

というわけで当時2つ目標を立てました。

Qt のコミュニティ活動を盛り上げよう

当時はちょうど日本各地の Qt 勉強会が統一されたりしていた時期でした。冬の時代の到来に伴ってそれまで関東 Qt 勉強会を主催していた方のモチベーションも下がっていたため、その勉強会を私が引き継ぎました。

そして、勉強会で色々な人と議論をし、今までの発表形式の勉強会をやめ、もくもく(とそれぞれ好きなことをやる)形式の勉強会にすることと、毎月定期的に開催することを決めました。

Qt を使ってすごいものを作ろう

SRA をはじめ、当時 Qt のビジネスをしていた日本の会社にもお誘いいただいたのですが、そういう役割は朝木さんにお任せして、私は「Qt 5 で作ったすごい UI/UX のなんかの製品を一人でも多くの人に使ってもらえる仕事」を選ぼうと思いました。

会社の安定性とか待遇の面はほとんど重要視せず、失敗するリスクが高くてもいいので「うちもこんなすごい UI/UX を(Qt5 で)作りたい!」と思ってもらえるような製品をとにかく最短で世に送り出せそうな会社を探して、PTP という会社で働くことにしました。

Continue reading...

Qt 勉強会 #30 @Tokyo 開催しました

Published: 2015-12-20 / Last modified: 2015-12-20

2015年12月19日(土曜日)に Qt 勉強会 #30 @Tokyo株式会社 PTP のミーティングルームで開催しました。

簡単な自己紹介

今回は参加者が10人。大学生の方が1名、女性の方が1名いらっしゃいました。

おめでとうIoriさんQtチャンピオン

ということで、(本人不在でしたが)みんなでお祝いしました!

詳しくは Qt Advent Calendar 2015 19日目のエントリ Qt Champions for 2015に選ばれました! をご覧ください。

Continue reading...

Qt 勉強会 #29 @Tokyo 開催しました

Published: 2015-11-22 / Last modified: 2015-11-22

2015年11月21日(土曜日)に Qt 勉強会 #29 @Tokyo株式会社 PTP のミーティングルームで開催しました。

簡単な自己紹介

今回は参加者が12人。大学生の方が1名、久しぶりに参加の方が数名いらっしゃいました。

おやつを食べながらもくもくタイム

自己紹介の後は自由時間ということで、各自自分のやりたいことを進めながら、質問があったり困ってることがあったりしたらみんなで相談にのるような形で進めていきました。

Qt Advent Calendar 2015 の宣伝と協力のお願い

2014年大好評だった Qt Advent Calendar を今年もやることにしました。どなたでも、どんな内容でも大丈夫ですので、是非今年もみんなで楽しくクリスマスを迎えましょう!

OSC の報告

10月末に開催された OSC Tokyo 2015 Fall の簡単な報告をしました。

Qt World Summit 2015 の報告

10月5日から3日間、ドイツのベルリンで開催された Qt World Summit に参加された方からイベントの報告がありました。

セッションの動画もすでに公開されているので、興味のある方は是非ご覧ください。

Continue reading...

Qt 勉強会 #28 @Tokyo 開催しました

Published: 2015-10-20 / Last modified: 2015-10-20

2015年10月17日(土曜日)に Qt 勉強会 #28 @Tokyo株式会社 PTP のミーティングルームで開催しました。

簡単な自己紹介

今回は参加者が13人。初めて参加された方が4名、大学生の方が1名いらっしゃいました。

おやつを食べながらもくもくタイム

自己紹介の後は自由時間ということで、各自自分のやりたいことを進めながら、質問があったり困ってることがあったりしたらみんなで相談にのるような形で進めていきました。

OSC の準備

一週間後に開催される OSC Tokyo 2015 Fall のブース当番などを決めました。

Continue reading...

Qt 勉強会 #27 @Tokyo 開催しました

Published: 2015-09-21 / Last modified: 2015-09-21

2015年9月19日(土曜日)に Qt 勉強会 #27 @Tokyo株式会社 PTP のミーティングルームで開催しました。

簡単な自己紹介

今回は参加者が9人。初めて参加された方が2名、大学生の方が1名いらっしゃいました。

Qt の日飲み会の報告

9/10(キュートの日)に開催した 2015年 Qt の日飲み会 の簡単な報告をしました。

OSC 参加の告知

10月末に開催される オープンソースカンファレンス Tokyo/Fall への出展に際して、ブース展示に協力してもらうよう宣伝をしました。詳細は後日シェアされる予定です。

おやつを食べながらもくもくタイム

自己紹介の後は自由時間ということで、各自自分のやりたいことを進めながら、質問があったり困ってることがあったりしたらみんなで相談にのるような形で進めていきました。

Continue reading...

Qt Creator で作成した「Qt Quick Application」のコンパイルが通らない問題を修正しました

Published: 2015-09-05 / Last modified: 2015-09-05

というバグを 前回の Qt 勉強会 の時に修正し、無事マージされました。

問題点

Qt Creator で「Qt Quick Application」を作成する際に生成されるアプリケーションのテンプレートのビルドが通らないという問題で、設定の「Use Qt module name in #include-directive」というオプションが有効の場合に再現します。このオプションはデフォルトでは無効なので誰も困っていなかったという話もあります。

修正

#include <QtGui/QGuiApplication> であるべきものが、#include <QGui/QGuiApplication> となってしまっていたので、そういう場所を一通り修正して QtQuickWizards: Fix compilation というパッチを送り、無事マージされました。今後リリースされる 3.5.x では修正されている予定です。