【C++のライブラリ】Awesome C++というページを紹介します。

eyecatch library C++
この記事は約6分で読めます。
※記事内には広告を含む場合がございます

対象読者

  • C++で便利ないい感じのライブラリを探したい!
  • でも日本語記事で紹介されているライブラリでは合わない
  • 沢山の中から選びたい!

C++で楽できる便利なライブラリが知られていない問題。

C++は標準ライブラリが優秀で、基本的な実装には困りませんが、
なんでも自分で作ろうとして、沼にハマり…
という経験はありませんか?

また、大規模なフレームワークにどっぷり浸っていて、MakefileやCmake、面倒な初期化
のせいで時間浪費してませんか?

Googleで検索しようにも、C++つよつよStackOverflow回答者のレスで初心者には???
ということも…

PythonやC#と同様に便利でシンプルなライブラリって結構あるんですよ!

picca
picca

どんなライブラリがあるか知らない
選択肢を検討してから選びたい!
などのお悩みを解決できる便利なサイトがあります。

ライブラリを探す方法

Google検索

Googleで検索するのは最も手っ取り早いでしょう。
C++言語のライブラリは、日本語でヒットすることは少ないです。
一方で、英語で検索するとある程度はヒットするでしょう。

C++言語においては、良くも悪くも枯れた技術のライブラリがヒットしやすいです。
ライブラリによっては後述するGitHubでの公開がなく、ホームページでのみ公開されている場合もあります。

GitHubで検索

OSSのライブラリを探す際は、最も有力な検索方法です。
詳細な条件で検索できるためオススメです。
一方で、ライブラリを運用する上での知見を知るのは少し難しいでしょう。

現在使用しているライブラリを明確な目的をもって置き換える際にも有力な検索方法となるでしょう。
(速度を向上したい、XXXに不満がある等)

GitHubにてライブラリの情報がまとめられているページを見る。

以下で解説します。

Awesome C++でライブラリを探す

GitHub - fffaraz/awesome-cpp: A curated list of awesome C++ (or C) frameworks, libraries, resources, and shiny things. Inspired by awesome-... stuff.
A curated list of awesome C++ (or C) frameworks, libraries, resources, and shiny things. Inspired by awesome-... stuff. - GitHub - fffaraz/awesome-cpp: A curate...

awesome cpp 直訳で素晴らしいC +という意味。

C++でいい感じのライブラリがまとめて掲載されています。
GithubのREADME.mdを使って書かれています。

Github上にあるため、プルリクエストもどしどし出されて、追加されていっています。
特にGitHubから入手できるライブラリが多いです。

何がいいの?

以下の理由でおすすめしています。

  • とにかく掲載量が多い
  • 日本語情報だと知ることが一切ないライブラリも多数

一方でデメリット

  • 日本語情報がない
  • 採用例が少ない場合が多い。

そのまんまですね、情報として沢山のライブラリを知れるのがメリットです。
採用例が少ない場合が多いです。
ただGitHubのスターは採用例の割に沢山ついていたりします。
これから流行る未来の原石を発掘できるかもしれませんね。

picca
picca

1000以上のスターがあっても、
日本語記事0件とか、結構あります。

(前提) C++でのライブラリ導入方法

ビルドしたオブジェクトファイルをリンクする

まずはGitHubからソースコードをクローンします。
各コンパイラごとのビルドプロジェクトを開きます。ここではVisualstudioを想定します。
.slnファイルを開き、Debug/Releaseの両方をビルドします。

導入したいプロジェクトに静的リンク、または動的リンクします。
IDEのために、ヘッダーファイルの場所を教え、intellisenseを使えるようにします。

なおライブラリによってはすでにビルドされたものが配布されている場合もあります。
この場合は静的リンク、または動的リンクする所から設定します。

ヘッダーオンリー、シングルヘッダーライブラリ

C/C++におけるヘッダー(.h)ファイルのみで構成されたライブラリです。
この方式のライブラリを導入する最も手っ取り早い方法は、導入したいプロジェクトのソースに直接入れてしまうことです。
これにより直接ライブラリを使用することができます。

しかしコンパイルするソースコードの量が増えるため、ビルドサイズ、ビルド時間が伸びます。

NuGet

元々は.Net Frameworkに対応したパッケージマネージャーでした。
C++のライブラリも導入することが可能です。
VisualStudioに付属しているため、Ideの画面から操作することができます。

vcpkg

Microsoft社製のC++に対応したパッケージマネージャーです。
VisualStudio以外のCmake等の環境でも導入することが可能です。
もちろんVisualStudioにも付属しています。

Awosome C++に掲載されているライブラリたちを紹介

ゲームエンジン

Godot

OSSゲームエンジンの中では、最近かなり話題です。
特に2Dが強いことで有名でしたが、3Dも結構イケてます。
スクリプトがpython風なこともGOOD

o3de

 Amazonのゲームエンジン、Lumberyardがベースです。
Lumberyard自体が、CryEngineに影響を受けているので、
わりとグラフィックも力が入っています。

Panda3D

Pythonで3Dゲームを作れてしまうライブラリ
コアはC++で作れています。

圧縮

PicoJSON

シンプルイズベストなJSONライブラリです。
意外と有名かも

JSONのライブラリは結構種類があります。
それぞれパフォーマンスもかなり違うこともあるので、
大規模に使う際はベンチマークしたほうが良さげですね。

picca
picca

とにかくシンプルがいい人に結構オススメです。
ソースも見やすいですしね。

Awesomeシリーズ

Awesome XXX というGithubリポジトリは他の言語やサービスでもあります。
基本的には Awesome ‘製品名’ github 等で検索するとヒットするかと思います。

Awesome Rust

GitHub - rust-unofficial/awesome-rust: A curated list of Rust code and resources.
A curated list of Rust code and resources. Contribute to rust-unofficial/awesome-rust development by creating an account on GitHub.

Awesome AWS

GitHub - donnemartin/awesome-aws: A curated list of awesome Amazon Web Services (AWS) libraries, open source repos, guides, blogs, and other resources. Featuring the Fiery Meter of AWSome.
A curated list of awesome Amazon Web Services (AWS) libraries, open source repos, guides, blogs, and other resources. Featuring the Fiery Meter of AWSome. - Git...

こんなのもあります。
“Self Hosted” オンプレで使えるサービス、アプリ一覧

GitHub - awesome-selfhosted/awesome-selfhosted: A list of Free Software network services and web applications which can be hosted on your own servers
A list of Free Software network services and web applications which can be hosted on your own servers - GitHub - awesome-selfhosted/awesome-selfhosted: A list o...

Awesomeシリーズ自体をまとめたページ

GitHub - sindresorhus/awesome: 😎 Awesome lists about all kinds of interesting topics
😎 Awesome lists about all kinds of interesting topics - GitHub - sindresorhus/awesome: 😎 Awesome lists about all kinds of interesting topics

Awesome XXX ページを更にをまとめたページがあります。
言うなれば Awesome Awesome ですね。
とても参考になりますし、ただ見てても面白いですよ。

picca
picca

Awesomeなんちゃら をまとめたAwesomeも結構数があります。
AwesomeのAwesomeのAwesomeが必要になる日も近い…

GitHubで情報をシェアするという事

GitHubではリポジトリにアクセスすると、README.mdが大きく表示されます。
このページに便利で役に立つ情報を書いていこう、というリポジトリが沢山あります。

さらにGitHubで公開するということは、プルリクエスト等で他のユーザーからも
情報を追加したり、編集したりできます。

またGitHub Pagesという機能を用いれば、MarkdownをHTMLに変換し
見た目をいい感じにした上で、.github.io/repoというドメインで公開できるため
非常に有用です。


ぜひまだ世界に存在しない情報をシェアしたい時には活用してみてください!

GitHub Pages について - GitHub Docs
GitHub Pages を使って、自分自身、組織、プロジェクトに関する Web サイトを、GitHub.com 上のリポジトリから直接ホストできます。

~サイト支援のお願い~

以下はアフェリエイトリンクです。
リンクから購入していただくと、当ブログに収益が入り、活動の支援になります。
以下で紹介する本は、私自身が実際に購入し、学習に活用した本です。

スポンサーリンク
C++
ピカログ!

コメント

タイトルとURLをコピーしました