Qtブログ(日本語)

教室からコードへ 第2弾:未来の開発者が創る革新的なQtアプリケーション

作成者: Qt Group 日本オフィス|May 31, 2026 9:00:00 AM
このブログは「From Classroom to Code II: Innovative Qt Apps by Future Developers」の抄訳です。

昨年ケルン工科大学(TH Köln)との新たな連携と、Engineering Desktop Applications with C++ and Qt(EDA) と題した新コースについてご紹介しました。第1回では、学生たちが実践的な環境でモダンな C++ と Qt 開発を体験し、チームごとに独自の音楽プレーヤーアプリケーションを設計・開発しました。 この連携は第2回目を迎え、順調に進んでいます。 

2025/26年度冬学期には、テーマがオーディオアプリケーションから写真編集ツールへとシフトし、チームには現代的な画像ワークフローに対応した、直感的で高機能なソリューションの開発が課されました。

新テーマは機能性、パフォーマンス、ユーザーエクスペリエンスの面で新たな制約をもたらしました。最終プロジェクトには、高い技術力だけでなく、ユーザビリティ、ソフトウェアアーキテクチャ、そして実際のユーザーニーズへの深い理解が反映されています。

Prof. Dr. Jan Salmen より

第1回が大きな成功を収めたことから、EDA コースを同じ形式で再び開催するのは容易な決断でした。今回も、参加者がいかに素早く C++ と Qt によるソフトウェア開発に関心を深め、いったん始めると自らのプロジェクトにいかに熱心に取り組むかが明らかになりました。チームたちが達成した成果は、今回も素晴らしいものでした。 

コースを通じて、Qt はソフトウェアアーキテクチャ、インターフェース設計、モダンな C++ 開発を探求し、アプリケーションプロジェクトのすべての段階で実践的な経験を積むための共通基盤を学生たちに提供しました。 

学生プロジェクト

学期末に、各チームが完成した写真編集アプリケーションを発表しました。すべてのプロジェクトが同一テーマに基づいていましたが、各チームは課題への取り組み方が異なり、独自のアイデアや優先事項、ソリューションを生み出しました。 

Imedit

チームメンバー: Enes Günay , Enis Okutan , Muhammed Kizil

IMEDIT は Qt と C++ で構築したデスクトップ写真編集アプリケーションで、日常的な画像調整のための明確かつ効率的なワークフローを重視しています。既存の多くのエディターはシンプルなタスクには多機能すぎると感じることから、インポート、編集、フィルタリング、エクスポートに特化した画面を中心に構成しました。機能としては、明るさ・コントラスト調整、トリミング、回転、アーティスティックフィルター、元に戻す機能、ズームコントロール、カメラキャプチャー、AI アシストプロンプトダイアログを備えています。 

主な課題は、OpenCV の処理と Qt のレンダリング間での一貫した画像データの維持でした。変換を処理し、処理と UI を明確に分離するため、集中管理された画像管理レイヤーを実装しました。

複数の編集画面にわたる画像状態を追跡する共有の undo 機構も開発しました。スムーズなズーム動作は、専用コントローラーと Qt のシグナル・スロット機構を使って実装しました。

このプロジェクトでは、Qt Widgets、QStackedWidget ベースのナビゲーション、トリミング用カスタムオーバーレイ、QPainter ベースのレンダリングを多用しています。画像処理には OpenCV を使用し、Qt Multimedia と Qt Network でカメラ機能と AI アシスト機能を実現しました。

      

Photo Manufactura

チームメンバー: Anh Duong Tran , Ghirishaanth Ananthavadivel  

メディアテクノロジーを専攻する学生として、大学でプロ用フォトエディターを実際に使用した経験から、編集ツールに真に必要なものを身をもって知っています。こうしたエディターの多くは有料サブスクリプションが必要で、学生や趣味のユーザーがほとんど使わない高度な機能が詰め込まれています。無料の代替品も存在しますが、RAW ファイルサポートやプロ水準のワークフローが欠けているなど、基本的な機能が不十分なのが一般的です。

そこで私たちは、学生や趣味のユーザーのための写真エディターを開発しました。RAW 画像をネイティブサポートし、効率的な編集ワークフローを実現し、GPU アクセラレーションを活用して複数ファイルを一度に処理・書き出しできます。さらに、インターフェースはきわめて直感的に設計されており、ユーザーはツールの操作に悩むことなく創造性に集中できます。加えて、AI を活用したスタイル転送機能により、ワンクリックで他のスタイルを画像に適用することができます。

 

QOpenGLWidget を継承したインタラクティブな CanvasWidget の実装が、圧倒的に最難関でした。スムーズなズーム、パン、インタラクティブな自由形式・固定比率トリミング、4点透視補正トリミング、バウンディングボックス制約付き回転を実装しながら Model-View-Projection 行列の同期を維持するには、高度な座標管理が必要でした。厳密な双方向座標マッピングを確立し、paintGL() でハードウェアアクセラレーションされた OpenGL テクスチャの上に標準の QPainter を使ってグリッドやハンドルなどのインタラクティブな UI オーバーレイをレンダリングすることで解決しました。

高度な Qt スタイルシートとイベントオーバーライドの組み合わせは、硬直した旧来の OS スタイリングから脱却するうえで不可欠でした。また、UI アクションをシグナル&スロットを通じて ApplicationController にのみルーティングするという厳格な MVC パターンを徹底したことで、UI コンポーネントのモジュール性と高い疎結合性を維持しました。

プロジェクトリポジトリ: https://github.com/blendezu/photo-manufactura

EasyCheesyTab

チームメンバー: Paul Samsel, Paul Schöpfer

複数の画像を同時に操作できるマルチタブ機能を備えた、モジュール型の画像編集アプリケーションを開発しました。主要機能の一つがバッチ処理で、単一タブまたは開いているすべてのタブに対して画像操作を適用できます。 

 

システムはモデル(ImageDocument)、サービス層(undo/redo に QUndoStack を使用した ImageService)、プレゼンテーションロジックを明確に分離した構成となっており、保守性と拡張性を確保しています。画像編集操作は専用の IEditor インターフェース経由でカプセル化されており、処理モジュールを標準化して、一貫性があり拡張性の高い方法で新しい編集機能を追加できます。

また、QWidget を継承して QPainter で手動レンダリングするカスタムの HistogramWidget を実装しており、特殊な UI コンポーネントをゼロから構築する方法を示しています。

まとめ

最終発表は、学生たちが自らのアイデアを自由に発展させてソフトウェアとして具現化できる環境があれば、わずか1学期でいかに多くのことを達成できるかを改めて示しました。各チームが独自のアプローチで課題に取り組み、多様なアプリケーションと数多くの創造的なソリューションが生まれました。 

Ursula Derichs より 

Qt フレームワークを使ってチームたちがここまでの成果を上げたことには、本当に感銘を受けました。フィルタリング、ズーム、トリミングといった中核機能の実装にとどまらず、学生たちはユニークなソリューションと美しいデザインで私たちを驚かせてくれました。最終フェーズでチームたちが複雑なオプション機能を開発し始めると、プロジェクトはさらなる盛り上がりを見せました。その結果、AI 機能を内蔵したものも含め、標準的なグラフィックソフトウェアを超えた革新的なツールが生まれました。これだけの成果を届けてくれたすべてのチームに、素晴らしい仕事でした! 

筆者自身、再び TH Köln を訪れ、学生や教職員の皆様と最終日を現地で過ごすことができて嬉しかったです。完成したプロジェクトを直接プレゼンテーションで見て、その開発プロセスについて語り合うことができ、コースの有意義な締めくくりとなりました。

Prof. Dr. Jan Salmen、Ursula Derichs、そして参加したすべての学生の皆様が、学期を通じて示してくださった真摯な取り組み、熱意、そして協力に心より感謝申し上げます。この連携を継続し、コースの今後の開催をサポートしていくことを楽しみにしています。

上の画像は、オンサイトイベントの参加者数名を、Photo Manufactura アプリケーションでローカルに編集を適用した状態で表示したものです。関わったすべての皆様、素晴らしい仕事でした!