Upgrade to Pro — share decks privately, control downloads, hide ads and more …

2024年度SecHack365 アシスタントを囲む会

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.

2024年度SecHack365 アシスタントを囲む会

Avatar for HiroyukiYagihashi

HiroyukiYagihashi

August 28, 2024
Tweet

More Decks by HiroyukiYagihashi

Other Decks in Technology

Transcript

  1. 八木 橋 拓之 / yagipy • 株式会社サイバーエージェント AI事業本部 アドテクDiv ProFit-X

    ソフトウェアエンジニア • 広告配信システム(SSP)の開発 • OSS開発 • maintidx (Owner) • ソースコードの保守性を計測する静的解析ツール • Althea (Owner) • 所有権付き参照カウントを備えたプログラミング 言 語 • golangci-lint (Maintainer) • Goの静的解析ツールをまとめて実 行 するツール • etc … @yagipy @yagipy_ 2
  2. 1 . 自身 の成果物について紹介 2 .7 月 時点のスライド 3 .開発の進め

    方 4 .重要視していた観点 5 .おまけ: プログラミング 言 語独 自 の有 用 性の出し 方 3
  3. 使 用 ライブラリ • https://github.com/yagipy/althea • inkwell • llvm-sys(LLVM C

    APIのbinding)のラッパー • structopt • オプションのハンドリング • codespan/codespan-reporting • エラーレポート 6
  4. 開発初期 • Kaleidoscope: Implementing a Language with LLVM • https://llvm.org/docs/tutorial/

    • 10 日 くらいでできる!プログラミング 言 語 自 作 入門 • https://essen.osask.jp/?a 2 1 _txt 0 1 • 低レイヤを知りたい 人 のためのCコンパイラ作成 入門 • https://www.sigbus.info/compilerbook 10
  5. ベースの実装が完成した後 以下 手 順で作成 1 . Altheaに欲しい機能をC 言 語で実装 2

    . 1で実装したソースコードからLLVM IRを出 力 (clangを使 用 ) 3 . 2で出 力 されたLLVM IRをLLVM Language Reference Manualを元に読み解 きつつAltheaに実装( 言 語仕様はここで考える) 後半はLLVM IRを直接書いて実装 11
  6. 重要視していた観点 • 課題が明確かつ重要か • 解決しようとしている課題が具体的に再現できているか( 手 元で再現できるコードなどがあるとベスト) • 課題が解決されることによって誰がどの程度有益か •

    競合はあるか(課題の解決策も含める) • ある場合 • 競合と 比 較して優れている点は何か • 優れている点はどういったユースケースで価値を発揮するのか • ない場合 • なぜないのか(競合調査が 足 りてないケースが多い) • 別のより良い解決策はないか(解決策が妥当か) • 川合ゼミの場合 • プログラミング 言 語でやる必要があるか(ライブラリなどで解決できないか) 13
  7. プログラミング 言 語独 自 の有 用 性の出し 方 • 主要なプログラミング

    言 語が提供している機能に着 目 する • 自 動メモリ管理(GCや所有権など) • グリーンスレッドやスレッド間通信 • ランタイム(スレッドスケジューリングなど) • 型システム • エラーレポート • プログラミング 言 語の構造に着 目 する • トークナイザーとパーサーは独 自色 を出しにくい&機能の差異を作りにくい • AST以後の処理は独 自色 を出しやすい 15
  8. 参考資料 • https://sechack 3 65 .nict.go.jp/achievement/ 2022 / • https://blog.yagipy.me/althea

    • https://blog.yagipy.me/sechack 3 65 -diary • https://github.com/yagipy/althea 17