【ITニュース解説】New version of ConanEx v2.3.0 - Conan Extended C/C++ Package Manager. Improved version of 'install' command, now feels like platform package manager
2025年09月20日に「Reddit /r/programming」が公開したITニュース「New version of ConanEx v2.3.0 - Conan Extended C/C++ Package Manager. Improved version of 'install' command, now feels like platform package manager」について初心者にもわかりやすく解説しています。
ITニュース概要
C/C++向けパッケージマネージャー「ConanEx」のv2.3.0が公開された。パッケージのインストールコマンドが大幅に改善され、`apt-get`など一般的なOSのパッケージ管理ツールのように、より直感的で簡単に利用できるようになった。これにより、C/C++開発での依存関係管理が効率化される。
ITニュース解説
システムエンジニアを目指す上で、ソフトウェア開発における「パッケージ」と「パッケージマネージャー」という概念は非常に重要である。パッケージとは、プログラムの一部として利用できる、あらかじめ作られた便利な機能のまとまり(ライブラリやツールなど)を指す。そしてパッケージマネージャーとは、これらのパッケージをインターネット上から探し、自分の開発環境に自動でダウンロードし、適切に設定して使えるようにしてくれるツールのことだ。これにより、開発者は必要な機能をゼロから作る手間を省き、効率的に開発を進めることができる。今回取り上げるニュースは、C/C++言語向けの「ConanEx」というパッケージマネージャーの新しいバージョン2.3.0に関するものであり、その使いやすさが大きく向上したという内容である。
C/C++言語での開発は、高性能なアプリケーションを構築できる一方で、その複雑さから初心者にとってはハードルが高い部分がある。特に、多くのC/C++プロジェクトは様々なライブラリやツールに「依存」している。例えば、ネットワーク通信機能を使いたければ特定のネットワークライブラリを、データ圧縮機能を使いたければ別の圧縮ライブラリをプロジェクトに組み込む必要がある。これらを一つ一つ手動でダウンロードし、コンパイルし、自分のプロジェクトに正しく連携させる作業は非常に手間がかかる上に、間違いも起こしやすい。さらに、C/C++開発の難しい点として、Windows、macOS、Linuxといった異なるOS(オペレーティングシステム)で同じコードを動かす「クロスプラットフォーム」対応が挙げられる。各OSでライブラリのビルド方法やパスが異なるため、手動での管理は非常に困難となる。ConanExのようなパッケージマネージャーは、このような依存関係の管理とクロスプラットフォーム対応の課題を解決するために作られたツールだ。必要なライブラリやツールを簡単なコマンドでインストールでき、開発者は主要なコード開発に集中できるようになる。
ConanExのバージョン2.3.0における最も大きな変更点は、その「installコマンド」が大幅に改善され、より直感的に使えるようになったことにある。従来のinstallコマンドは、複数のライブラリやツールをインストールする際に、多くのオプションを記述する必要があり、少し煩雑だった。
例えば、poco、flatbuffers、ctreという三つのライブラリをインストールし、必要なもの(--build=missing)をビルドし、出力フォルダを特定しない(--output-folder=/dev/null)場合、次のような長いコマンドが必要だった。
conanex install --requires=poco/1.13.3 --requires=flatbuffers/22.10.26 --requires=ctre/3.6 --build=missing --output-folder=/dev/null
また、プログラムのコンパイルやビルドに使うツール(これを「ツール要件」と呼び、--tool-requiresで指定する)と、実際に実行されるプログラムが利用するライブラリ(これを「実行時要件」と呼び、--requiresで指定する)を区別して記述する必要もあった。例えば、cmakeやninjaといったツールをpocoライブラリと一緒にインストールする場合、次のようになる。
conanex install --requires=poco/1.13.3 --tool-requires=cmake/3.23.5 --tool-requires=ninja/1.11.0 --build=missing --output-folder=/dev/null
今回のアップデートでは、これらの記述が大幅に簡略化された。新しいinstallコマンドでは、ライブラリ名とバージョンをスペース区切りで直接指定するだけでよくなったのだ。
例えば、上記の三つのライブラリをインストールするには、たったこれだけのコマンドで済むようになった。
conanex install poco/1.9.4 flatbuffers/22.10.26 ctre/3.6
また、ツール要件を指定する場合も、--toolsというオプションの後にツール名を並べるだけでよく、より直感的になった。
conanex install poco/1.9.4 --tools cmake/3.23.5 ninja/1.11.0
ライブラリとツールの順序も柔軟に対応できるようになり、例えば先にツールを指定してからライブラリを指定することもできる。
conanex install --tools cmake/3.23.5 ninja/1.11.0 -- poco/1.9.4
このように、以前は必須だった--requires=のようなプレフィックスや、--build=missing、--output-folder=/dev/nullといった詳細なオプションが、多くの場合で省略可能になったり、より賢く自動で処理されるようになった。これにより、開発者はコマンドの構造を深く意識することなく、必要なライブラリやツールを簡単に指定できるようになったのである。
ニュース記事では、この新しいinstallコマンドの使い心地を、「apt-get(Ubuntu)、brew(macOS)、choco(Windows)のようなプラットフォーム固有のパッケージマネージャーのように感じる」と表現している。これは、まさに操作のシンプルさと直感性を意味する。これらのパッケージマネージャーは、各OSのユーザーが普段からソフトウェアをインストールする際に使うもので、非常に簡単なコマンド一つで目的のソフトウェアをインストールできる。例えば、UbuntuでWebブラウザのFirefoxをインストールするには、単にsudo apt-get install firefoxと入力するだけでよい。ConanExの新しいinstallコマンドも、これと同じように、何十行もの設定ファイルや複雑なオプションを記述することなく、必要なパッケージの名前を並べるだけで済むようになったため、普段からこれらのパッケージマネージャーに慣れているユーザーにとって、非常に親しみやすく、効率的な操作感を提供する。
ConanExが特筆すべきは、Windows、macOS、Linuxといった様々なオペレーティングシステムで同じように動作する「クロスプラットフォーム」対応のパッケージマネージャーである点だ。C/C++開発では、異なるOS環境でアプリケーションをビルドしたり、テストしたりする必要が頻繁に発生する。しかし、それぞれのOSでライブラリのパスやビルドツールが異なるため、手動で対応するのは非常に骨が折れる作業だった。ConanExは、この複雑さを吸収し、どのOS上でも一貫したコマンドと設定でパッケージを管理できる。これにより、開発者は特定のOSに依存しない、より柔軟でポータブルな開発環境を構築できる。システムエンジニアにとって、多様な環境に対応できる能力は非常に重要であり、ConanExはその強力な味方となる。
ConanEx v2.3.0の登場は、C/C++開発におけるパッケージ管理をよりシンプルで、より効率的なものにする大きな一歩だ。特に、installコマンドの改善は、システムエンジニアを目指す初心者を含むすべての開発者にとって、C/C++開発の学習曲線と生産性を大幅に向上させるだろう。複雑な依存関係管理やクロスプラットフォーム対応といった課題が、より簡単なコマンドで解決できるようになることで、開発者はアプリケーションの機能開発という本来のタスクに集中できるようになる。これにより、C/C++開発の敷居が下がり、より多くの人々がこの強力な言語での開発に挑戦しやすくなることが期待される。