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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Ryo Suzuki
May 14, 2022
Technology
8.1k
5
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
tfcon-2022-cpp
TechFeed Conference 2022「最近の C++ (2022 年)」
発表者:
https://twitter.com/Reputeless
Ryo Suzuki
May 14, 2022
More Decks by Ryo Suzuki
See All by Ryo Suzuki
C++ MIX #9
cpp
4
5.4k
DojoCon2021-Siv3D
cpp
0
420
JSSST2021-Siv3D
cpp
1
1k
CEDEC2020
cpp
54
46k
Other Decks in Technology
See All in Technology
初めてのGitHub Actions / GitHub Actions at First
tooppoo
0
140
認知負荷をGemini で溶かす — GKE 基盤「Orbit」における AI エージェントの実践
sansantech
PRO
1
260
Redmine 7.0 新機能・機能強化解説(OSC2026京都ダイジェスト版)
vividtone
1
190
『三匹の子ぶた』から学ぶネットワークセキュリティの昔と今 / Network Security: Then and Now Through the Lens of The Three Little Pigs
nttcom
1
1.7k
AIコーディングの次。コードレビューと理解負荷を解消して組織の開発生産性を高める
moongift
PRO
2
1.9k
オートロックマンションなのに、各部屋は施錠なし!? 攻撃者が組織内ネットワークで大暴れする理由 / The Front Door Is Locked, but the Rooms Are Wide Open: Why Attackers Move Freely Inside Enterprise Networks
nttcom
1
1.6k
ガバメント AI 源内を地方自治体は活用できるのか可能性と課題、期待について
takeda_h
1
250
制約理論(ToC)入門 2026版
recruitengineers
PRO
6
1.8k
取引先から届く 「セキュリティチェックシート」の読み解き方
kamadamakoto
0
120
攻撃と防御で学ぶAI時代のプロダクトセキュリティ演習
recruitengineers
PRO
2
490
侵入は突然に 〜 IoTマルウェアと悪用される家庭の機器 ~ / When Intrusion Strikes: IoT Malware and the Abuse of Home Devices
nttcom
0
1.5k
Pavlokで始める電撃駆動開発
sgrsn
0
170
Featured
See All Featured
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
160
Side Projects
sachag
455
43k
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
200
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9.2k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.3k
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
650
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.5k
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
460
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
190
Technical Leadership for Architectural Decision Making
baasie
3
470
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.5k
Practical Orchestrator
shlominoach
191
12k
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++