世界を動かす技術を、日本語で。

C++のドキュメンタリー

概要

  • C++: The Documentary がYouTubeで公開
  • Bjarne Stroustrup をはじめとするC++の歴史的キーパーソンが登場
  • C++の40年にわたる進化と世界的成功を描写
  • 過去3.5年で ユーザー数90%増加 という急成長
  • 標準化や今後の課題にも言及

「C++: The Documentary」公開とその意義

  • 2026年6月4日、 C++: The Documentary がYouTubeでプレミア公開
  • Bjarne Stroustrup (C++設計者)や主要関係者がライブチャットに参加
  • C++の開発・普及に関わった数百人の一人としての誇り
  • 40年にわたるC++の歩みを凝縮した内容
  • 謙虚な出発点から世界的普及、そして2025年第3四半期時点で トップ4言語中最も急成長
  • 過去3.5年で ユーザー数+90%増加 という記録的な成長

ドキュメンタリー出演者

  • Bjarne Stroustrup :Bell Labs、C++設計者・初期実装者
  • Alexander Stepanov :Standard Template Library設計者
  • Anders Hejlsberg :C#・TypeScript・Turbo Pascalの開発者
  • Andrei Alexandrescu :Nvidia主任研究員、C++著者
  • Andrew Koenig :Bell Labs、C++標準化委員会創設メンバー、研究者
  • Barbara Moo :Bell Labs、C++開発チームマネージャー、著者
  • Brian Kernighan :Bell Labs、C言語共同著者
  • Chris Lattner :Mojo、LLVM、Clang、Swiftの開発者
  • Danilo Piparo :CERN、ROOT Frameworkプロジェクトリーダー
  • Eric Lubin :Hudson River Tradingリード開発者
  • Gabriel Dos Reis :Microsoft、C++ツール開発者、数学者
  • Herb Sutter :Citadel Securitiesテクニカルフェロー、Standard C++ Foundation会長
  • John Romero :Doom/Quake共同開発者、id Software共同設立者
  • Nina Ranns :ISO C++委員会副議長

ドキュメンタリーチャプターと主な内容

  • 00:00 :イントロダクション
  • 01:50 :AT&T Bell Labsでの発明
  • 07:30 :C with Classesの誕生
  • 09:37 :C with Classesの初期採用
  • 10:53 :C with ClassesからC++(CFront)への進化
  • 12:32 :C++のネーミング由来
  • 13:24 :AT&Tによるソフトウェア販売とC++を巡る他チームの動き
  • 16:08 :AT&T Bell LabsにおけるC++初期開発
  • 19:10 :「バギーな製品」・バージョン2.0.0リリース
  • 21:55 :AT&T外へのC++普及
  • 24:50 :C++バージョン乱立問題
  • 26:03 :標準化の必要性
  • 29:38 :Alexander StepanovによるSTL開発
  • 37:19 :初の標準化(C++98)
  • 39:21 :90年代CERNでのC++活用
  • 40:34 :ゲーム・トレーディング分野への拡大
  • 43:00 :2000年代初頭の「C++冬の時代」
  • 45:34 :プログラミング言語戦争(C#との競争)
  • 49:25 :効率的なプログラミング言語需要の再燃
  • 52:29 :モダンC++(C++11)
  • 56:29 :標準化委員会によるC++の複雑化問題
  • 1:00:45 :C++の普及範囲
  • 01:05:00 :C++の未来と課題
  • 01:08:31 :Bjarne Stroustrupの影響力

Herb Sutterについて

  • Herb Sutter :Citadel Securitiesテクニカルフェロー
  • Standard C++ Foundation会長、CppConカンファレンス主催
  • 2002年~2025年ISO C++標準委員会議長
  • C++コミュニティへの多大な貢献者

まとめと視聴推奨

  • C++の歴史と進化、関係者の証言を知る絶好の機会
  • プログラミングやソフトウェア開発に興味ある方への必見コンテンツ
  • 週末の視聴目標としておすすめ

Hackerたちの意見

最近C++をたくさん使ってるから、ビルドが終わるのを待ちながらこの動画を見てみることにしたんだ。長さもちょうどいいし、運良く動画もめっちゃ面白い!

C++の歴史についてできるだけ読んできたから、これを見るのが楽しみ。進化の過程が本当に興味深いと思う。

C++の開発トレンドが続いてるのは驚きだね。C++で作られたゲームやプログラムは、パフォーマンスがほぼ保証されてるから大体良い感じ。でも、自分でC++を書くように言われたら泣いちゃう。覚えることが多すぎるし、標準もバラバラすぎる。メンテナンスのためにプロジェクトサイトに行くと、C++プロジェクトだと一瞬でエネルギーがなくなる — 難しすぎるから。誰かが書いてくれたら嬉しいけど、自分で書きたい言語ではないな。

個人的にはC++でのプログラミングはそんなに難しくないと思う。欠点は、プロジェクトごとに頭を温める必要があることだけど、そのフライホイールが回り始めれば、コードを書くのはほぼ楽に感じる。どの言語でも同じようにウォームアップが必要だから、PythonやGo、Javaを書くのとそんなに変わらないよ。

言語自体は今のところ大丈夫だけど、エコシステムはイマイチ。プロジェクトを始めるには、非自明なツールやアプローチを選ぶ必要があって、C++の標準はそれを強制したりガイドしたりしないんだ。例えば、依存関係をパッケージで管理するの?それなら何を使うの?プロジェクトをビルドするのに何を使うの?リストはどんどん続くよ。

「覚えることが多すぎるし、標準もバラバラすぎる。メンテナンスのためにプロジェクトサイトに行くと、C++プロジェクトだと一瞬でエネルギーがなくなる — 難しすぎるから。もし10年以上使ってたらそんな風には感じないだろうけど、もうたくさん覚えてるから。」

言語の70%でもかなり生産的になれるよ :) C++はゲームエンジンや似たような分野にしか適してないっていうのは誤解だよ。アプリケーション分野でも全然問題ないし。ちなみに、プロフィール情報についてだけど、北朝鮮に住んでない限り、少なくとも料金に0を一つ足した方がいいよ。そうすれば、もっと長期的で質の高いクライアントが得られるよ。

ゲームに関しては、C++はかなりシンプルな言語になるよ。ゲームのコードベースは大体C++の標準ライブラリを無視するからね(ほとんどの場合、良い理由があって、詳しくは[0]を見てみて)。標準ライブラリがないと、C++は実際にはまあまあ使える感じになる。関連して、C++のエコシステムの主な問題は、みんなが自分たちの言語のサブセットを作り出すことなんだ。だから、ひとつのエコシステムじゃなくて、矛盾したスタイルや言語/標準ライブラリのサブセットを持つたくさんのエコシステムがある。これがライブラリを使ったコードの再利用を難しくしてるんだよね。

確かに、C++にはたくさんの機能があるよね。でも、他のところでも言われてるように、ほとんどのプロジェクトは自分たちの慣習や使う機能のサブセットを定義してる。多機能があるおかげで、C++は非常に低いレベルでも高いレベルでも、すごくいい抽象化を書くことができるのがいいところだよ。つまり、オンラインASMやビット操作、直接メモリ操作を使ってすごく低レベルに行くこともできるし、ほぼスクリプト言語みたいに高レベルに行くこともできる。問題のドメインに応じて、C++はしっかり対応してくれるよ。

面白いね、私もRustについて同じことを思ってる。

そうでもないよ。欠点があっても、それがあるからこそ多くの人がC++に手を伸ばすんだ。私たちの中にはCが好きじゃない人も多いし、1990年代初頭に最初のC++コンパイラが市場に出た時には、Cはすでに少なすぎて危険すぎたから、デスクトップOSはフレームワークにC++を使うようになったんだ。Cへの回帰は、FOSSの台頭やUNIXがサーバールームで勝ったこと、初期のGNUコーディングスタンダードがCだけをメインのコンパイル言語として使うようになったことが原因だよ。それに、他のプログラミング言語のエコシステムが発見したように、バージョン1.0ではC++に勝つのは簡単だけど、最終的にはどれも自分たちの複雑さを持つようになる。私はC++を使うのは、私が気に入っている言語のランタイムやコンパイラツール、GPGPUフレームワークが部分的にC++で書かれているからで、新しいエコシステムを自分で作る余裕はないんだ。

最近の流行についていけてないな。PythonやClojure、あとは何か別の言語もあったよね。これって同じ人たちがいろんな言語を扱ってるシリーズなの?それとも偶然?トレンドなのかな、今はどのプログラミング言語も自分たちのドキュメンタリー動画を作ろうとしてるの?

そう、これらは同じ人たちだよ: https://www.cultrepo.com/ どうやら、オープンソースソフトウェアについてのドキュメンタリーを作っているみたい。

C++の唯一の問題は、ちょっと冗長すぎることかな。便利な構文が欲しいだけなのに、目が大量のコードを解析しなきゃいけないのがつらい。まあ、今のプログラミング言語のイディオムはかなり普遍的だけどね。

それに関しては、言語に頭を使えば使うほど、目の前のタスクに使える頭の容量が減っちゃうんだよね。

Javaを試してみて。

C++は、冗長さを減らすのにかなり適してるよ。例えば、標準ライブラリのアルゴリズムがイテレータのペアを取る代わりに、コンテナを受け取ってそのstart()とend()を使って他の関数を呼ぶような関数を作ることができる。新しいバージョンの言語では、範囲ベースの関数も使えるしね。usingから型付きリテラル、プリプロセッサマクロまで、いろんな文法的なハックがあるよ(避けたいけど、まだ存在する)。これが、元々ない言語機能をエミュレートする方法なんだ。Javaのように静的コードブロックを「実装」したこともあるよ: https://stackoverflow.com/a/34321324/1593077 これは全部C++98で書いたんだ。実装はちょっと見栄えが悪いけど、使い方は簡潔でわかりやすいよ。

C++が今、トップ4の中で最も成長してる言語っていうのは驚きだね。

アンドレイ・アレクサンドレスクがこのドキュメンタリーに含まれてるのを見て嬉しい!彼の現代C++デザインに関する本は、私が読んだ時に目から鱗だったよ。今でもそうかもしれない。誰か他に読んだ人いる?

うん、私も同じ気持ちだよ。ミュンヘンのMeetupでアンドレイに会ったことがあって、彼に「考え方を教えてくれた」って言ったら、ちょっと awkward な会話になっちゃったけど、楽しい時間だったよ :-)

最近読んだんだけど、特にポリシークラスがOOデザインの問題をどう解決するかが好きだったな。各章を要約して、現代の同等のものを教えてくれるAIチャットボットに聞くのをおすすめするよ。いくつかの表現が進化してるからね。確か、std::variantやstd::visitを使うことで、まるごと一つのセクションが時代遅れになったと思う。

個人的な意見だけど、C++は私が使った中で最もエレガントな言語だよ(もう15年くらい使ってる)。もしあなたが「システマイザー」タイプで、書くものの最後のビットまで極めて正確なメンタルモデルを持ちたいなら、C++に勝るものはないよ。コンパイラなどからくる制限や不確実性は認めるけど、それでもね。

もしあなたが「システマイザー」タイプで、書くものの最後のビットまで極めて正確なメンタルモデルを持ちたいなら、C++に勝るものはないよ。私もRustについて同じことが言えると思う。

自分が情熱を持っていることについての無料のドキュメンタリーが大好き。ありがとう!でも、私はちょっと変わったタイプなんだ。短い文を言っている人たちのドキュメンタリーは見れない。物語を語らせるために作られているのはわかるけど、考えることを教えてくれるナレーターが必要なんだ。気が散っちゃうからね。それでも、クリエイターにはたくさんの愛を送るよ。

私が教えているウェブ開発者には、インターネットの言語はJavaScriptじゃなくてC++だっていつも言ってる。ウェブ開発者はC++の開発者のプログラムで遊んでいるユーザーに過ぎないんだよね。 ;)

地元の映画館を借りて、普通の友達や家族を招待するつもりだよ。そろそろちゃんとした映画を観てもらわないとね。