JUCEは、デスクトップおよびモバイルアプリケーションの開発に使用されるオープンソースのクロスプラットフォームC++アプリケーションフレームワークです。JUCEは特にGUIおよびプラグインライブラリで使用されています。AGPLv3と商用ライセンスのデュアルライセンスで提供されています。[ 2 ]
JUCEの目的は、同じソースコードがWindows、macOS、Linuxの各プラットフォームで完全に同じようにコンパイルおよび実行されるようにソフトウェアを記述できるようにすることです。JUCEは様々な開発環境とコンパイラをサポートしています。
JUCEは、Julian StorerがTracktion(現Waveform)のDAWのグラフィックおよびオーディオ機能を開発するために作成した基盤となるC++コードから派生したもので、2004年に初めて一般公開されました。
JUCEとRaw Material Softwareは、2014年11月にロンドンを拠点とするハードウェアメーカーROLIによって非公開の金額で買収された。[ 3 ]
2020年4月、JUCEがROLIからPACE Anti-Piracy Inc.に売却されたことが発表された。[ 4 ]
JUCEは、複数のプラットフォームとコンパイラで全く同じように使用できるように設計されています。Raw Material Softwareは、公式にサポートが確認されているプラットフォームとコンパイラのリストを以下のように示しています。その他のプラットフォームでも動作する可能性はありますが、公式にはテストされていません。
JUCEは以下のプラットフォームでサポートされています。
JUCEは、以下のコンパイラで正常に動作することが正式に確認されています。
他の多くのフレームワーク(Qt、wxWidgets、GTKなど)と同様に、JUCEには、ユーザーインターフェイス要素、グラフィックス、オーディオ、XMLおよびJSON解析、ネットワーク、暗号化、マルチスレッド、 ECMAScriptの構文を模倣した統合インタープリタ、その他さまざまな一般的に使用される機能を網羅するクラスが含まれています。そのため、複数のサードパーティライブラリを必要とするアプリケーション開発者は、JUCEライブラリのみを使用するか、少なくとも使用するサードパーティライブラリの数を減らすことができます。この点において、当初の着想はJavaのJDKであり、JUCEは「C++版の同様のもの」となることを意図していました。
他の類似フレームワークと比較した場合、JUCEの注目すべき特徴は、その豊富なオーディオ機能です。これは、JUCEが元々オーディオシーケンサーであるTracktionのフレームワークとして開発され、その後独立した製品として分離されたためです。JUCEは、オーディオデバイス(CoreAudio、ASIO、ALSA、JACK、WASAPI、DirectSoundなど)とMIDI再生、ポリフォニックシンセサイザー、一般的なオーディオファイル形式( WAV、AIFF、FLAC、MP3、Vorbisなど)の組み込みリーダー、 VSTエフェクトやインストゥルメントなどのさまざまな種類のオーディオプラグインを構築するためのラッパーをサポートしています。これにより、オーディオ開発コミュニティで広く使用されるようになりました。[ 5 ]
JUCE には、オーディオおよびブラウザ プラグインを構築するためのラッパー クラスが付属しています。オーディオ プラグインを構築すると、複数のプラグイン フォーマット ( VSTおよび VST3、RTAS、AAX、Audio Units ) をサポートする単一のバイナリが生成されます。プラットフォームおよびフォーマット固有のコードはすべてラッパーに含まれているため、ユーザーは単一のコード ベースから Mac および Windows 用の VST/VST3/RTAS/AAX/AU を構築できます。JUCE7 以降では、LV2プラグインのターゲット設定とホスティングも可能です。[ 6 ]以前は、さまざまなフォークを使用してこれを行っていました。[ 7 ] [ 8 ]
ブラウザプラグインも同様の方法で処理されます。NPAPIプラグインとActiveXプラグインの両方として機能する単一のバイナリが生成されます。
「Projucer」は、 JUCEプロジェクトの作成と管理を行うためのIDEツールです。JUCEプロジェクトのファイルと設定を指定すると、Projucerは自動的にサードパーティ製のプロジェクトファイル群を生成し、各ターゲットプラットフォーム上でプロジェクトをネイティブにコンパイルできるようにします。現在、Xcodeプロジェクト、Visual Studioプロジェクト、Linux Makefile、Android Antビルド、CodeBlocksプロジェクトを生成できます。プロジェクトのファイルと設定を管理する機能に加え、コードエディタ、統合GUIエディタ、新規プロジェクトやファイルの作成ウィザード、ユーザーインターフェース設計に役立つライブコーディングエンジンも備えています。