Slide 1

Slide 1 text

C++ 開発が少し便利になる、 最近の Visual Studio の機能 鈴木 遼 2024-02-09 C++ MIX #9

Slide 2

Slide 2 text

• Visual Studio は頻繁にアップデート(VS 2022 17.0 → 現在 17.8) • 利用者コミュニティでの投票 (vote) にもとづく、ユーザビリティに直結 するアップデート・拡張機能も増えている • 新しい機能に気付かないままの使い方をしていませんか? • 今日から試せる、最近の Visual Studio の新機能・拡張機能を 7 つ紹介 このスライドの内容

Slide 3

Slide 3 text

1. コーディング用の合字フォント

Slide 4

Slide 4 text

• 日本語環境の VS のデフォルトのフォントは、いまだに MS ゴシック • 英語環境では、VS 2022 から Cascadia (カスケーディア)がデフォルト • → MS が 2019 年にリリースしたフォント。合字(リガチャ)の有無に応 じて Cascadia Code と Cascadia Mono がある Cascadia Code Abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ 1234567890.:,; ' " (!?) +-*/= 1. コーディング用の合字フォント (1)

Slide 5

Slide 5 text

• 合字は、特定の文字の組を、洗練された 1 つのグリフで表現する • 人によって好みは分かれるが、元の文字数の広さのまま 1 グリフを大きく 表現できるため、可読性が向上すると考えられている 通常 合字 1. コーディング用の合字フォント (2)

Slide 6

Slide 6 text

• Cascadia は日本語環境の Visual Studio 2022 に含まれている • メニュー > ツール > オプション > 環境 > フォントおよび色 から変更 1. コーディング用の合字フォント (3)

Slide 7

Slide 7 text

2. ドキュメント コメントの入力補助

Slide 8

Slide 8 text

• 「///」を入力すると、Doxygen(ドキシジェン)や XML スタイルの ドキュメント コメントの入力が補助される • 引数や戻り値、関数の説明を記述するためのテンプレが自動的に挿入 2. ドキュメント コメントの入力補助 (1)

Slide 9

Slide 9 text

• XML スタイルと Doxygen コメント、どちらの内容もツールチップによる ヒント表示に反映されるようになった(以前は XML のみ) 2. ドキュメント コメントの入力補助 (2)

Slide 10

Slide 10 text

• メニュー > ツール > オプション > テキストエディター > C/C++ > コー ドスタイル > 全般 から、Doxygen または XML スタイルのコメント入力 補助を有効化 2. ドキュメント コメントの入力補助 (3)

Slide 11

Slide 11 text

3. コンパイラ メッセージの色分け

Slide 12

Slide 12 text

• C++ のコンパイルエラーや警告は行数が多く、重要な情報を見つけにくい • error や warning などのキーワードに反応して行を色付けする拡張機能 3. コンパイラメッセージの色分け (1)

Slide 13

Slide 13 text

• 拡張機能 VSColorOutput64 を、Visual Studio Marketplace または Visual Studio の拡張機能マネージャーからインストール • インストール後、メニュー > ツール > オプション > VSColorOutput64 から設定画面を開き、各項目の色を変更できる 3. コンパイラメッセージの色分け (2)

Slide 14

Slide 14 text

4. スペルチェッカー

Slide 15

Slide 15 text

• コードやコメントに含まれる英単語のスペルミスを波線で表示 • 修正候補から選択して、同じ名前を一括修正することが可能 4. スペルチェッカー (1)

Slide 16

Slide 16 text

• VS 2022 17.5 から標準搭載。メニュー > 編集 > 詳細 > スペルチェッカー を切り替える から有効無効を切り替えられる • メインツールバー上のボタンからも切り替えられる 4. スペルチェッカー (2)

Slide 17

Slide 17 text

5. クラスのメモリレイアウト可視化

Slide 18

Slide 18 text

• 実装したクラスや union, ビットフィールドが、期待したメモリレイアウト になっているかを確認するのは手間がかかる • クラスのサイズとアライメントがツールチップ上に表示 • メンバのオフセットを可視化できるツールが追加 5. クラスのメモリレイアウト可視化 (1)

Slide 19

Slide 19 text

struct Object2 { int b; short a; short c; double d; }; struct Object1 { short a; int b; short c; double d; }; 5. クラスのメモリレイアウト可視化 (2)

Slide 20

Slide 20 text

struct Float4 { float x, y, z, w; }; struct alignas(16) Float4A { float x, y, z, w; }; 5. クラスのメモリレイアウト可視化 (3)

Slide 21

Slide 21 text

union FloatUint { float f; unsigned i; }; struct HeightFieldPixel { int height : 16; unsigned materialIndex0 : 7; unsigned tessellationFlag : 1; unsigned materialIndex1 : 7; unsigned unused : 1; }; 5. クラスのメモリレイアウト可視化 (4)

Slide 22

Slide 22 text

6. 適切なインデントでのコピー

Slide 23

Slide 23 text

• コードをコピーして外部アプリ(Slack や Teams)に貼り付けると、 インデントがそのままコピーされて不便だった 6. 適切なインデントでのコピー (1)

Slide 24

Slide 24 text

• インデントの基準位置から範囲選択してコピーすると、 以降のインデントを適切に除去してコードがコピーされるように 6. 適切なインデントでのコピー (2)

Slide 25

Slide 25 text

7. 画像ファイルのパスをプレビュー

Slide 26

Slide 26 text

• 画像処理や、ゲーム・アプリのプログラムで、 画像ファイルのパスや画像の URL をハードコードすることがある • どのような画像を指しているかは、画像ファイルを開かないとわからない 7. 画像ファイルのパスをプレビュー (1)

Slide 27

Slide 27 text

• 拡張機能 Image Preview をインストールすると、画像のパスを指す文字 列・コメントへのマウスオーバーで、実際の画像とそのサイズを表示 現在は拡張機能だが、VS の公式機能 になることが計画されている。 7. 画像ファイルのパスをプレビュー (2)

Slide 28

Slide 28 text

まとめ 紹介した機能 対応バージョン 1. コーディング用の合字フォント VS 2022 2. ドキュメント コメントの入力補助 VS 2019 16.6 3. コンパイラ メッセージの色分け VS 2019- 拡張機能 4. スペルチェッカー VS 2022 17.5 5. クラスのメモリレイアウト可視化 VS 2022 17.8 (レイアウト: 17.9) 6. 適切なインデントでのコピー VS 2022 17.7 7. 画像ファイルのパスをプレビュー VS 2022 拡張機能 Visual Studio が、よりビジュアルに!