Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
tfcon-2022-cpp
Search
Ryo Suzuki
May 14, 2022
Technology
5
7.8k
tfcon-2022-cpp
TechFeed Conference 2022「最近の C++ (2022 年)」
発表者:
https://twitter.com/Reputeless
Ryo Suzuki
May 14, 2022
Tweet
Share
More Decks by Ryo Suzuki
See All by Ryo Suzuki
C++ MIX #9
cpp
4
5.1k
DojoCon2021-Siv3D
cpp
0
330
JSSST2021-Siv3D
cpp
1
840
CEDEC2020
cpp
54
42k
Other Decks in Technology
See All in Technology
dbtとリバースETLでデータ連携の複雑さに立ち向かう
morookacube
0
1.1k
Terraform にコントリビュートしていたら Azure のコストをやらかした話 / How I Messed Up Azure Costs While Contributing to Terraform
nnstt1
1
570
Amplifyとゼロからはじめた AIコーディング。失敗と気づき
mkdev10
1
160
チェックツールを導入したけど使ってもらえなかった話 #GAADjp
lycorptech_jp
PRO
0
130
ゆるくはじめるSLI・SLO
yatoum
1
120
MCP でモノが動くとおもしろい/It is interesting when things move with MCP
bitkey
3
610
SONiCにて使用されているSAIの実際
sonic
0
230
GPU 클라우드 환경에서의 회복탄력적 AI 운영 : 훈련 및 추론을 위한 견고한 아키텍처와 전략
inureyes
PRO
0
110
Google Cloud Next 2025 Recap アプリケーション開発を加速する機能アップデート / Application development-related features of Google Cloud
ryokotmng
0
340
encoding/json v2を予習しよう!
yuyu_hf
PRO
1
220
Google Cloud Next 2025 Recap マーケティング施策の運用及び開発を支援するAIの活用 / Use of AI to support operation and development of marketing campaign
atsushiyoshikawa
0
350
UIパフォーマンス最適化: AIを活用して100倍の速度向上を実現した事例
kinocoboy2
1
570
Featured
See All Featured
How to Think Like a Performance Engineer
csswizardry
23
1.6k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
30
2k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
29
9.5k
Adopting Sorbet at Scale
ufuk
76
9.4k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
30
2.4k
Speed Design
sergeychernyshev
29
940
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
160
15k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
32
2.3k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
29
1.7k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
667
120k
GitHub's CSS Performance
jonrohan
1031
460k
Building a Modern Day E-commerce SEO Strategy
aleyda
40
7.3k
Transcript
鈴木 遼 (Siv3D) 最近の C++ (2022 年) 5 分でわかる C++
のトレンド 1
発表者プロフィール 鈴木 遼 • C++ ゲーム・アプリ開発フレームワーク Siv3D の作者 • C++
プログラミング教室を運営 / 早稲田・上智・駒澤大学で講義 • C++ に関する商業出版 / 技術書典出展 / 技術発表
身近なところに C++ • OS (Windows, Android, macOS, iOS) • Web
ブラウザ (Google Chrome, Firefox, Safari) • コンピュータグラフィックス (Photoshop, CAD ソフト) • オフィススイート (Microsoft Office, LibreOffice) • ゲームエンジン (Unreal Engine, Unity, Godot) • コンシューマゲーム / モバイルゲーム • Web サービスのバックエンド (Google, YouTube, Facebook, Amazon) • 組み込み / ロボット / 自動運転車 • 金融 (C++ 作者 Bjarne Stroustrup は、現在モルガン・スタンレーの Technical Fellow) • プログラミング言語コンパイラ / 仮想マシン
競技プログラミングのブームで C++ 学習者が増加 • AtCoder などの競技プログラミング(競プロ)に挑戦する人が増えている • 競プロは歴史的に C++ がデファクトスタンダード
• 中高生が目標とする、日本情報オリンピック (JOI) / 国際情報オリンピック (IOI) は C++ を使うルールになっている • 競プロに関する書籍の多くが C++ を前提に書かれている
便利なオンライン C++ コンパイラが登場 • Web ページ上で C++ コードを書いて実行結果を確認できるサービスが発展 • 複数のコンパイラの種類やバージョン間の比較・検証が容易に
Compiler Explorer • 各種コンパイラ (GCC, Clang, MSVC など) での コード実行結果、生成されるアセンブリを出力 • 代表的な (非標準) ライブラリも収録 Wandbox • 国産の C++ オンラインコンパイラ • コードの実行結果を表示。API も提供
静的コード解析ツールが進化 • 静的コード解析ツールの性能が向上し、C++ の様々な間違い / 非効率を、 実行前に検出できるようになってきた GCC や Clang
の静的解析機能 Visual Studio • エディタ上に情報を表示 PVS-Studio • ヒューリスティック解析による typo の検出にも強い
C++ Core Guidelines が整備 • C++ プログラマが統一的で優れたモダン C++ を書くためのガイドライン •
2015 年に初公開 • 現在もアクティブにメンテナンスされ 約 500 項目に • 各ガイドラインはルール、理由、サンプルコード、代替案や例外などで構成 • 『Effective C++』や『C++ Coding Standards』の現代版 • ガイドラインの大半は、静的解析ツールでの検証ができるようデザイン • (例 1) C.47: メンバー変数は宣言順のとおりに定義、初期化する • (例 2) ES.86: ループ変数を for 文の本体で変更することを避ける
C++ の規格更新と主要コンパイラの対応状況 • 主要コンパイラ (GCC, Clang, MSVC) は、ほぼ対応完了。 業務での活用事例も増えている •
MSVC が一番乗りで対応完了、GCC, Clang も大部分の機能に対応 • 一部の機能が、最新のコンパイラにおいて先取りで使える 2016 2017 2018 2019 2020 2021 2022 2023 2024 C++17 発行 主要コンパイラが C++17 対応を実装 C++20 発行 主要コンパイラが C++20 対応を実装 C++23 発行 主要コンパイラが C++23 対応を実装 C++17 C++20 C++23
C++17 の注目機能 • ファイルやディレクトリの操作に関する ライブラリ • 無効値を表現できる 型 • Java
の や Haskell の に相当 • 型安全に共用体 ( ) を表現できる 型 • Tuple-like な値を分解して、複数の変数にバインドできる構造化束縛 • 戻り値の無視時に、コンパイラに警告を出させる 属性 • 所有権を持たない文字列クラス を返す関数
C++20 の注目機能 • ヘッダを置き換える Modules • テンプレートの型制約を柔軟かつ簡潔に記述できる Concepts • Python
風のテキストフォーマット • 三方比較演算子 <=> と、それによる比較演算定義の簡略化(自動化) • コルーチン用の文法 • コンパイル時計算できる操作の拡大(ソートや動的配列も に) • ビット演算に関する標準ライブラリ関数の追加
C++23 の注目機能 (予定) • のように添字演算子に複数の引数を渡せるように • スタックトレースに関する情報を取得する ライブラリ • 標準ライブラリが
Modules に対応 • の代わりに ですべての標準ライブラリを使用可能 • の進化版
C++ 最新情報はどこで手に入る? 日本語 • cpprefjp • cppmap • C++ Twitter
コミュニティ 英語 • Standard C++ Foundation • cppreference.com • reddit [r/cpp] • hacking C++