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

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

  • 場所:東京ビッグサイト
  • サークル名:MotiPizza
  • 日程:3日目 (12月31日)
  • スペース番号:西す-05b
  • 頒布物:きつねさんとおぼえる!Clang おかわり
  • ページ数: 110ページ
  • 値段: 1部 800円
  • 部数制限: 無し

本書の概要

LLVMのC/C++/Objective-C/Objective-C++フロントエンドであるClangの解説本の2冊目(おかわり)です。

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

1冊目の「きつねさんとおぼえる!Clang」ではインフラとしてのClangを紹介するために各機能を簡単に説明しました。 今回は各機能の中でもLibClangとLibToolingに関してもう少し詳しく説明しています。 LibClangでは抽象構文木の走査をRubyバインディングで行うチュートリアルを行なっています。 LibToolingは前回の続きとその応用としてclang-degraderを作成するといった内容になっています。

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

委託については余った場合にのみ考慮しますが、増刷の予定はありません。 電子書籍化についても今のところ予定はありません。 (いろいろ落ち着いたら今までのまとめとして取り組むかもしれません)

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

章構成

  • はしがき
  • はじめに
    • 本書の構成
    • 本書の目的
    • 本書内の記載について
    • お断り
  • 環境構築とClang の使い方
    • 本章の概要と構成
    • 環境
    • インストール
      • ビルドに必要なパッケージのインストール
      • LLVM/Clang のビルド/インストール
      • パスの設定
    • ツールの種類と確認
      • clang
      • clang-check
      • clang-format
      • clang-modernize
  • LibClang AST の概要
    • Clang の抽象構文木
    • LibClang とは
    • LibClang における抽象構文木の構造
    • 抽象構文木の操作関数
      • インデックスと翻訳単位の操作
      • 翻訳単位とカーソル間の操作
      • ソース位置と物理ファイル位置間の操作
      • ソース位置とカーソル間の操作.
      • ソース位置とソース範囲間の操作
      • カーソル間の移動
      • カーソルの文字列表現
      • カーソルの種類
      • 型に関する操作
      • コメントの取得
  • LibClang チュートリアル
    • LibClang の言語バインディングについて
    • LibClang のクラスとRuby のクラスの対応
    • 翻訳単位を作成する
    • 抽象構文木を走査する
    • 注釈関数を作ってみる
    • ファイル位置を指定してカーソルを取得する
    • 定義と宣言を取得する
    • typedef された型を参照する
    • マクロ展開の情報を取得する
    • コメントを取得する
  • LibTooling おかわり!
    • まえおき
    • 復習しましょう
      • LibTooling ってなんだっけ?
      • 前回のおさらい
    • 今回は何するの?
      • ベースとなるリファクタリングツール
    • リファクタリング情報をファイル出力する
      • YAML::Output で出力を試す
      • TranslationUnitReplacements に変更する
      • MatchCallback とNullptrDegrader の定義
      • main 関数とoutputRepacementsYAML の修正
      • コンパイルと実行
    • 指定した範囲のみ適用する
      • Degrader クラスとFixer クラスの修正
      • CommandLine ライブラリ
      • オプションのパース
      • コンパイルと実行
  • あとがき
  • 著者/関係者一覧