
habrosocietyへのご挨拶!
おそらく、プロとしてソフトウェアを開発したり、プログラミングを楽しんだりする人は誰でも、遅かれ早かれ、プログラムのユーザーインターフェイスを作成する必要に迫られました。 また、ネイティブプラットフォーム環境や、インターフェイスを視覚化するためのツールを最初に含むWindows向けのC#やMac OS X向けのObjective-Cなどの言語を考慮しない場合、特にGUI開発ツールにお金を払いたくない場合は、選択肢はあまり豊富ではありませんまたはクロスプラットフォームを達成したい。
Habrに関する最初の投稿では、JUCEのようなフレームワークについてお話したいと思います。 Habrでの検索では、このフレームワークのみが言及されている2つの記事のみが返されましたが、詳細情報は提供されていません。 C ++でクロスプラットフォームのGUIアプリケーションを習い始めたばかりの人は、QtやGTK +のような高齢者のようなモンスターの代替について学ぶことに興味があると思います。
JUCEとは
開発者の公式ウェブサイト:
juce.comJUCE(Julesのユーティリティクラス拡張)は、クロスプラットフォームソフトウェアを開発するための包括的なC ++クラスライブラリです。
ほとんどのアプリケーションの作成に必要なほぼすべてのものが含まれており、特に複雑なGUIの構築、グラフィックスおよびオーディオの処理に適しています。
ウィキペディア:Juceは、GUIアプリケーションとプラグインの開発に使用されるC ++言語用のオープンなクロスプラットフォームソフトウェア開発ツールキット(フレームワーク)です。
JUCEは、次のプラットフォームと機能をサポートしています。
- Mac OS XアプリケーションとVST / AudioUnit / RTAS / NPAPIプラグインは、Xcodeを使用してコンパイルされます。 (10.7.5およびXcode 4.6.3では、すべてが問題なく機能します)
- WindowsアプリケーションとVST / AudioUnit / RTAS / NPAPI / ActiveXプラグインは、MS Visual Studioを使用して組み立てられます。 結果は、Windows XP、VistaおよびWin7 / 8と完全に互換性があります
- Linuxアプリケーションおよびプラグインは、カーネルバージョン2.6以降用にコンパイルできます。
- XcodeでビルドされたiOSネイティブiPhoneおよびiPadアプリ
- Android Androidアプリケーションは、Android NDKを使用してAntまたはEclipseを使用して構築されます。
JUCEは 1人によって開発され、個人使用のための一連のクラスから本格的なフレームワークに成長しました。
オープンソースライセンスは2003年に登場し、2005年以降、フレームワークはクローズドソフトウェアの有料版を取得しています。
ほとんどのフレームワークモジュールにはオープンライセンス
GPLv2、v3 、
AGPLv3があり、コアモジュールには
ISCライセンスがあります
プログラムのソースコードを公開したくない場合は、次の価格で商用ライセンスを購入できます。
- 単一製品ライセンス-399英国ポンド
- 無制限の製品ライセンス-699ポンド
- 最初から2番目のアップグレード-349ポンド
- 古いバージョンのアップグレード-最大349ポンドから単一製品のライセンスまで199ポンド
フレームワークの構成と作業の始まり
JUCE自体
は非常に軽量で、28 MB強です。 docsフォルダーには、さまざまなオペレーティングシステムと開発環境でのフレームワークのインストールと接続に関する詳細なドキュメントが含まれています。
インストールに関しては、
JUCEは通常の意味でのライブラリのセットまたは静的または動的リンクのためにライブラリをコンパイルする必要があるソースのセットではなく、フレームワークによって提供されるすべてのクラスを含むヘッダーファイルとソースコードファイルのセットであることに注意する価値があります。 このアプローチは、あるプラットフォームから別のプラットフォームへの移行を簡素化するだけでなく、ディストリビューションにフレームワークライブラリを含めたり、ユーザーのコンピューターにそれらを必要とする必要性を排除するだけでなく、フレームワークが依存するライブラリのビット容量の問題も解決します。 標準ライブラリまたは
JUCEプロジェクトで使用される最新のオペレーティングシステムの標準環境(これらはすべてフレームワークに付属のドキュメントに記載されています)は通常32ビットと64ビットの両方をサポートしてコンパイルされているためです。 そのため、プロジェクトでさらに使用するライブラリのみのビット数を監視する必要があります。
すべてのフレームワークモジュールは、モジュールフォルダーにあります。 すべてのソースコードは適切に構造化され、コメントされているため、理解するのに問題はありません。
extrasフォルダーには、フレームワークの使用例があります。 特に、開発に役立つ2つのユーティリティがあります。 これらのユーティリティ、およびすべての例については、さまざまなプラットフォームおよびIDE向けの既製のプロジェクトが既にあります。プロジェクトを開いて、サンプルまたはユーティリティをコンパイルするだけです。
最初のユーティリティは
Introjucerです。これは、
JUCE自体を使用して記述された、プロジェクトを自動生成するためのやや禁欲的なプログラムであり、フレームワークの機能の鮮やかな例です。 キットには、プロジェクトを作成するためのウィザード、ソースコードテンプレートを作成するためのウィザード、および非常に重要な追加機能が含まれます-対応するソースコードファイル(テンプレートウィザードを使用して作成された)の操作に基づいてC ++コードを簡単に生成する視覚的なGUIエディター)、コードエディタ、ローカライズウィザード、その他の非常に便利なツールが多数あります。
明確にするためにいくつかの写真プロジェクト構成
コードエディター
GUIエディター
ソースコードファイルを追加する
Introjucerの優れた点は、フレームワークでサポートされているすべてのIDEおよびプラットフォーム用に構成された独自のプロジェクトファイルの存在です。 開発者からコードを転送するには、ターゲットシステムで
Introjucerユーティリティ以外は必要ありません。 ユーティリティによって生成された各プロジェクトは、OSに使用するターゲットIDEで開くことができます。

2番目のユーティリティは
binarybuilderです 。これにより、バイナリファイルをソースファイルのコードに直接転送できます。 たとえば、画像とロゴは、コードで使用できるバイナリデータのセットになります。 このユーティリティも
Introjucerの一部であり、GUIの編集時にリソースマネージャーで使用されます。 ただし、個別のコンソールアプリケーションとして構築できます。

ハローワールド
そして、コード例なしで...
フレームワークで提供されている例を詳しく見てみましょう。
../extras/exampleプロジェクト:JUCEプロジェクトでは
、すべてのヘッダーファイルは最終的に単一のファイル
"../JuceLibraryCode/JuceHeader.h"に埋め込まれます。
そのため、開発者は、各ソースファイルでフレームワークのクラス全体を手動で接続する必要はありません。
この例では、2つのプログラムモジュールがあります。
- Main.cppは、アプリケーション自体に直接関与します-開始、ウィンドウ表示、完了など。
- MainComponent.cpp(.h)は、ウィンドウ、ボタン、背景、テキスト入力フィールドなどを埋めます。
JUCEでは、すべてのGUIコンテンツが
JUCE コンポーネントクラスを継承するクラスであることに注意して
ください 。
MainComponent.hについて考えてみましょう。
#ifndef __JUCE_HEADER_9002020A4DD09B20__ #define __JUCE_HEADER_9002020A4DD09B20__
次に、クラス、そのコンストラクターおよびデストラクタの動作を説明する必要があります。
次のセクションは
公開セクションにあります。
MainComponent (); ~MainComponent(); void paint (Graphics& g);
プライベートセクションには、直接インターフェイス要素があります。
ScopedPointer<Label> helloWorldLabel; ScopedPointer<TextButton> quitButton; Path internalPath1;
MainComponent.cppの GUIのロジックに直接
渡しましょう。
これで、クラスはアプリケーションウィンドウに落ち着く準備ができました。
Main.cppに進み 、サンプルがどのように初期化され起動されるかを見てみましょう。
ウィンドウについて説明しましたが、今度はアプリケーション自体の番です。
class JUCEHelloWorldApplication : public JUCEApplication
プロジェクトが組み立てられて起動されると、すべての準備が整い、次の結果が得られます。
JUCEのその他の
機能を確認したい場合は、このフレームワークの主な機能を示すextrasフォルダーからDemoアプリケーションを
ビルドして実行する
ことをお勧めしますが、さらに多くの機能があることを忘れないでください。
便利なリンク
あとがき
誰かが即興で役立つことを願っています。
私の個人的な意見はこれです:このフレームワークは注目に値し、小規模および大規模プロジェクトで何が使用されるかです。
どんな批判やコメントも喜んで受け入れます。この投稿に注意を払ってくれてありがとう!