きつねさんとおぼえる!Clang

コミックマーケット84で「きつねさんとおぼえる!Clang」を頒布します。

  • 場所:東京ビッグサイト
  • サークル名:MotiPizza
  • 日程:3日目 (8月12日)
  • スペース番号:東ペ-04a
  • 頒布物:きつねさんとおぼえる!Clang
  • ページ数: 102ページ
  • 値段: 1部 700円
  • 部数制限: 無し

本書の概要

LLVMのC/C++/Objective-C/Objective-C++フロントエンドであるClangの解説本です。

Clangはその完成度の高さと、GCCに匹敵する程の性能の高さから非常に注目されています。 一方でClangにはコンパイル中に得られた様々な情報を提供する機能があり、Clangそれ自体がLLVMのようなインフラとして使われる側面があります。

本書では純粋なコンパイラとしてのClangではなく、インフラとしてのClangが提供している機能について解説しています。 時間の都合上、応用的な内容までは紹介できず、チュートリアル的な内容となっていますが、Clangを使ってどのようなことができるかというのは十分にわかるかと思います。 これまでのLLVM本よりも専門的な知識を必要としない内容になっているので気軽に読めるかと思います。

委託・増刷や電子書籍化について

委託については余った場合にのみ考慮しますが、増刷の予定はありません。 電子書籍化についても今のところ予定はありません。

補足

今回から新キャラクタが登場しています。 本書にはこれまでのキャラクタを含む、設定資料集が付いていますので是非ご覧下さい。

きつねさんとおぼえる!Clang

章構成

  • はしがき
  • はじめに
    • 本書の構成
    • 本書の目的
    • 本書内の記載について
    • お断り
  • 環境構築とClang の使い方
    • 本章の概要と構成
    • 環境
    • インストール
      • ビルドに必要なパッケージのインストール
      • LLVM/Clang のビルド/インストール
      • パスの設定
    • ツールの種類と確認
      • clang
      • clang-check
      • clang-format
  • はじめてのSanitizer
    • Sanitizer とは
    • Sanitizer の種類
      • Undefined Behavior Sanitizer(UBSan)
      • Integer Sanitizer(ISan)
      • Address Sanitizer(ASan)
      • Thread Sanitizer(TSan)
      • Memory Sanitizer(MSan)
  • LibClang
    • LibClang とは
    • LibClang でできること
    • 翻訳単位について
    • トークンの取得
      • 処理の流れ
      • サンプルプログラム
      • 実行結果
    • 抽象構文木の走査
      • 処理の流れ
      • サンプルプログラム
      • 実行結果
    • 診断情報の取得
      • 処理の流れ
      • サンプルプログラム
      • 実行結果
    • コード補完情報の取得
      • 処理の流れ
      • サンプルプログラム
      • 実行結果
    • コンパイルデータベース
      • 処理の流れ
      • サンプルプログラム
      • 実行結果
  • LibTooling
    • LibTooling とは
    • ビルド環境の構築
    • Clang AST の概要
      • clang-check でast をdump してみる
    • LibTooling で簡単なツールを作る
      • コマンドラインオプションのパース
      • ClangTool を生成して実行する
      • コンパイルと実行
      • 独自のFrontendAction を作成する
    • RecursiveASTVisitor でAST の情報を出力する
      • RecursiveASTVisitor の作成
      • ASTConsumer の修正
      • コンパイルと実行
    • LibAstMatchers で特定パターンのAST を捕捉する
      • AST matcher
      • clang::ast_matchers::MatchFinder
      • clang::ast_matchers::MatchFinder::MatchCallback の作成
      • コンパイルと実行
    • RefactoringTool でコードを書き換えてみる
      • RefactoringTool の生成と実行
      • MatcherCallback にReplacements を渡す
      • MatchResult からAST のノード情報を取得する
      • Replacement を生成する
      • コンパイルと実行
  • ClangPlugin
    • ClangPlugin とは
    • ClangPlugin で簡単なプラグインを作成する
      • PluginASTAction の作成と登録
      • コンパイルと実行
  • 設定資料集
  • あとがき
  • 著者/関係者一覧