2023年、2024年に続いて、2025年もお世話になったライブラリのうち、あまりメジャーでも定番でもないライブラリをリストアップさせていただきました。
新しいライブラリをお探しの方のご参考になれば幸いです。
2025年はC++23のコンパイラサポートが十分成熟したこともあってか、C++23の機能を利用したライブラリが増えて楽しい1年でした。
それ以外にもリフレクションを先取りしたライブラリが増えたこともコードの書き味が変わって楽しませてもらいました。
Glaze - JSONの読み書き
| 項目 | 値 |
|---|---|
| ライブラリ種別 | ヘッダオンリー |
| C++バージョン | 23 |
| ライセンス | MIT |
| スター数 | 2306 |
| 2025年リリース回数 | 39回 |
今年も一番お世話になったライブラリです。
リリース回数こそ減りましたが、重要な機能が沢山実装されました。
日本語の記事もちらほら出てきて、執筆された方に感謝です。
個人的には強化されたCSV機能が便利なため、今まで使っていたcommata, sspは利用しなくなってしまいました。ありがたい。
2025年の主な新機能
- JSON RPC対応 (私は使っていないのでいまいちわかっていません)
- CSV読み込み機能の強化
- TOML, MessagePack, CBOR対応
- リフレクション機能の柔軟性の向上
良い点
- 構造体やクラスだけでなくSTLコンテナもJSONとの直接読み書きができる
- 中間データに独自バイナリ形式を利用してさらに高速化できる
- 2025年にCSV読み込み機能が強化されて大抵の用途に使えるようになった
- TOML、MessagePack, CBORにも対応している
いまいちな点
- AVX512が使える環境だとsimdjsonより30%ぐらい遅い
- 最後のフィールドのカンマやコメントの読み込みに対応していない
- C++23が必須なのでそれが厳しい環境では選択肢にもならない
- JSON, BEVE, CSV以外の形式は一部機能制限がある
代替ライブラリ
Jsonifierはちょっと開発が止まってしまった感じなので、個人的にはsimdjson一択です。
simdjsonが性能面でも機能面でもどんどん進化しているのと、C++26のリフレクション機能を使ったシリアライズの先行実装が出てきていることもあり、将来的にはglazeとの使い分けに悩むことになりそうです。
Enchantum - 便利なenum
| 項目 | 値 |
|---|---|
| ライブラリ種別 | ヘッダーオンリー |
| C++バージョン | 17 |
| ライセンス | MIT |
| スター数 | 101 |
| 2025年リリース回数 | 5回 |
2025年にリリースされたenumとenum classを便利にするユーティリティライブラリです。
この分野ではMagic Enum C++が主流だと思うのですが、enum classで定義数が多くなるとコンパイルがやたら遅くなるのが気になっていたのとenumをbit flagとして使う場合により便利だったのでEnchantumを使うようになりました。
良い点
- magic_enumとほぼ同様の機能を提供している
- magic_enumよりコンパイル時間と生成バイナリサイズの2点でとても優秀
いまいちな点
- メジャーではない
- 開発が10月ぐらいで止まってしまった(不安)
代替ライブラリ
安定性と普及度合いを考えるとmagic_enumが一番有力だと思います。
Quill - 高速多機能なログ出力
| 項目 | 値 |
|---|---|
| ライブラリ種別 | 静的・動的ライブラリ |
| C++バージョン | 17 |
| ライセンス | MIT |
| スター数 | 2748 |
| 2025年リリース回数 | 15回 |
今年もほぼすべてのプログラムで大活躍してくれました。
私の中ではロギングライブラリについては一択です。
2025年の新機能
- マクロフリーなのに性能が落ちない呼び出し方式が実装された
- バイナリフォーマットのログ出力に対応した
- format機能がバックエンド側に移動したので、フロントエンド側(ログ出力を記述する側)のレイテンシがさらに短くなった
良い点
- とにかく高速に動作する
- 柔軟なログ出力構成やログローテート設定が定義できる
いまいちな点
- まだAPIが安定しておらず、細かい修正をしないといけないリリースがときどきあって泣ける
- ログ出力設定の定義が慣れるまで大変
代替ライブラリ
他のライブラリもちょいちょい見ていますが、今のところQuillから浮気をしたいと思わせるものに出会っていません。
余談ですがGoogleのglogがarchivedになってしまったのは時代を感じさせられました。
ThorVG - 2Dグラフィック描画
| 項目 | 値 |
|---|---|
| ライブラリ種別 | 静的・動的ライブラリ |
| C++バージョン | 14 |
| ライセンス | MIT |
| スター数 | 1355 |
| 2025年リリース回数 | 9回 |
多機能な2Dグラフィックライブラリです。
開発の主軸は1.0系に移ってしまったからか、今年はあまりリリースがなかったのですが、他に代替となるライブラリがないので半ば惰性で使っています。
1.0ブランチの開発は活発に見えるのではやく1.0がリリースされて欲しいところです。
良い点
- 点線が描画できる
- Lottieアニメーションに対応している
- GPUを利用した描画にも対応している
いまいちな点
- 1.0がリリースされるはずだった…
- 今のところドキュメントが少ない
- 画像ファイルへの出力が弱い
代替ライブラリ
この分野はそれ以外のライブラリもあまり動きがなかったように思います。
去年と同じでソフトウェアで高速に動作させたいならBlend2Dか、SVGに寄っていますが軽量なLunaSVGになるかと思います。
Blend2dもLunaSVGも開発は続けられているので、提供されている機能次第での選択になるのかなと思っています。
Rapid YAML - 高速なYAML読み書き
| 項目 | 値 |
|---|---|
| ライブラリ種別 | 静的・動的ライブラリ |
| C++バージョン | 11 |
| ライセンス | MIT |
| スター数 | 691 |
| 2025年リリース回数 | 3回 |
JSONと同じく必須と言っていいYAMLの読み書きを高速に実現してくれるライブラリです。
GlazeがYAMLに対応してくれればそっちに移行してしまうかもしれませんが、今のところのその予定はないみたいなので、引き続きRapid YAMLのお世話になっています。
2025年の新機能
- std::map, std::arrayなどへの変換に対応した
- ノードのスタイル(表現方法)を確認したり指定できるようになった
良い点
- 私が使う範囲では他のライブラリより高速に動作する
- ふつうのYAMLであれば困らず使える
いまいちな点
- Glazeのようなstructとのバインディングがない
- C++11以降の言語機能による便利機能がない
代替ライブラリ
一般的なのはyaml-cppでしょうか。
Rapid YAMLよりもAPIが簡単に使えるように設計されていて便利ですが、処理速度が気になるのでRapid YAMLを使うことが多いです。
StringZilla - 高速文字列処理
| 項目 | 値 |
|---|---|
| ライブラリ種別 | ヘッダーオンリー |
| C++バージョン | 11 |
| ライセンス | Apache-2.0 |
| スター数 | 3304 |
| 2025年リリース回数 | 35回 |
SIMD命令を利用した文字列処理の高速化に特化したライブラリです。
2023年頃に複数のニュースサイトで取り上げられていたのを覚えている方もいらっしゃるかもしれません。
その後も活発に開発が続けられていて、C++とのシームレスな連携も可能になっています。
「とにかく高速な処理を手軽に!」という時にとても助かる場面が多くて助かりました。
情報があまりに少ない、公式でさえ情報が古い、といった問題があるため、万人に進められるライブラリではないのが悲しいところ。
2025年の新機能
- CUDAを利用した高速処理に対応
- 全体的に高速化(特にIceLake以降のCPUに対して)
- C++との連携機能の強化
良い点
- どんぴしゃの機能があれば高速化が期待できる
- SIMD命令だけでなくCUDAへのオフロードに対応するなど高速化の実現方法が多彩
いまいちな点
- 高速化できる機能だけを提供しているので、汎用的なライブラリではない
- UnicodeやBase64などの高速実装は(まだ)他のライブラリを利用するしかない
- ドキュメントが十分ではない、もしくは間違っていることが多い
代替ライブラリ
これだけ広範囲に最適化メソッドを提供してくれているライブラリを他に知らないです。
強いて言えば機能特化で以下のライブラリになると思います。
- Unicode関連ならばSIMDUTF
- ソート関連ならばx86-simd-sort
magic_args - プログラム引数チェック
| 項目 | 値 |
|---|---|
| ライブラリ種別 | ヘッダーオンリー |
| C++バージョン | 23 |
| ライセンス | MIT |
| スター数 | 63 |
| 2025年リリース回数 | 3回 |
2025年にリリースされたライブラリです。
「glazeがJSONを扱う様にプログラム引数を手軽に処理したい」
という私の変態的な願望をほぼ完ぺきに実現してくれるライブラリです。
あまりの喜びに過去のプログラムをこれに一気に対応させてしまいました。
良い点
- structを定義さえしてしまえば簡単にプログラム引数から情報を取り出せる
- ヘルプメッセージを自動的に構成してくれる
いまいちな点
- glazeようにstructとメタ情報の分離はまだできない
- C++23のため使える環境が限られている
代替ライブラリ
この分野はいくらでもありますね。
「ボイラープレートを書かなくていい」という機能性でいうとdocopt.cppがおすすめです。
SimdUTF - 高速なBase64処理
| 項目 | 値 |
|---|---|
| ライブラリ種別 | ヘッダーオンリー |
| C++バージョン | 11 |
| ライセンス | Apache-2.0 |
| スター数 | 3304 |
| 2025年リリース回数 | 35回 |
未だにData URLやChrome DevTools Protocol, Kitty Graphic Protocolでの利用でまだまだBase64を使うシーンが多いですね。
SimdUTFはSIMD命令を利用した高速なUTF処理を提供するライブラリなのですが、実はBase64処理についても高速な実装を提供しています。
恥ずかしながら私は2025年までこの事実を知らずにいました。ありがとうGemini。
2025年の新機能
- Base64処理が高速化
- RISC-V対応
- 全体的に高速化(特にIceLake以降のCPUに対して)
良い点
- とにかくBase64処理が速い
いまいちな点
- Base64処理のために使うにはUTF関連のロジックが膨大
代替ライブラリ
速度だけを見るならTurbo Base64がとても優秀です。GPL-3.0が許容できるならば、という条件付きになりますが。
SimdUTFやTurbo Base64に比べると若干遅いですが、base64も十分に高速な実装ですし、BSD-2-Clauseなので扱いやすいはずです。
終わりに
相変わらずC++はオワコンと評価されることが多い印象ですが、個人的には満足度の高い1年でした。
C++23の機能がやっとライブラリに落ちてきて、私のようなレベルの人間でも恩恵に預かれるようになったことで、生成AIの支援も相まってC++のさらなる発展を感じられました。
今年はC++26での大変革が起きるはずなので、期待が広がるばかりです。
既存ライブラリのまだ見ぬ新機能や、新しいライブラリに出会えることを楽しみにしています。