Slide 1

Slide 1 text

GitHub Actionsを TypeScriptで作ろう! Sansan株式会社 上司陽平(じょーし)

Slide 2

Slide 2 text

2 © Sansan, Inc. ⾃⼰紹介 じょーし Sansan株式会社 @paper2parasol - インボイス管理サービス「Bill One」のソフトウェ アエンジニア兼SRE - 負荷試験による性能改善、IaC化と⽂化醸成、機能 開発などを担当 - 有志メンバによるCI/CD改善チームを運営し、⽇々 の開発者体験の向上に取り組む - GitHub Actionsの実⾏時間を可視化するOSS 「GitHub Actions OpenTelemetry」を個⼈開発 - 好きなものはラーメンとCloud Run

Slide 3

Slide 3 text

GitHub Actionsを作って わかった知⾒をまとめました

Slide 4

Slide 4 text

4 © Sansan, Inc.

Slide 5

Slide 5 text

GitHub Actionsの開発ツールは TypeScriptに偏っている

Slide 6

Slide 6 text

GitHub Actions公式リポジトリ

Slide 7

Slide 7 text

60%(45/75)

Slide 8

Slide 8 text

カスタムアクションは TypeScriptと相性が良い

Slide 9

Slide 9 text

そんな理由を紹介していきます

Slide 10

Slide 10 text

カテゴリ TypeScript 他⾔語(Go, Java, Ruby…etc) 公式サポート GitHubが提供するGitHub Actions Toolkitをフルに利⽤できる 唯⼀の⾔語。⼊⼒・出⼒・ログ・エラー・シークレット・フ ァイルI/Oなど“全部⼊り”のAPIが揃う。 Toolkitが無いので、環境変数や GITHUB_OUTPUTファイルなどを⾃分で 扱う必要がある。GitHub Actionsの仕様を 理解して、ツールを⾃作する必要がある。 実⾏速度 パッケージ済みJSをrunnerが直接実⾏する。CIで並列マトリ クスを回しても“ほぼ即起動”。 基本Dockerコンテナを利⽤する。イメー ジ取得などに時間がかかり、コールドス タートが遅い。 プラットフォーム 追加設定なしでLinux / Windows / macOSすべて動作。 Dockerなら基本Linuxのみ。 GitHub API連携 TypeScriptの型推論・エディタ補完、VitestなどJSエコシス テムのテスト・Lintツールをそのまま利⽤可能。 HTTPリクエストを⼿書きするか、各⾔語 ⽤Octokitを利⽤する。公式SDKがない⾔ 語も多い。 開発体験 TypeScriptの型推論・エディタ補完、Jest/VitestなどJSエコ システムのテスト・Lintツールをそのまま利⽤。公式テンプ レートactions/typescript-actionで即開始可能。 テンプレートや⽀援ライブラリがほぼ無 い。セットアップやテスト戦略を⾃分で 組み⽴てる必要がある。

Slide 11

Slide 11 text

11 © Sansan, Inc. 公式サポート TypeScript 他⾔語(Go, Java, Ruby…etc) − GitHub Actions Toolkitをフルに 利⽤できる唯⼀の⾔語。 − ⼊⼒・出⼒・ログ・エラー・シ ークレット・ファイルI/Oなど “全部⼊り”のAPIが揃う。 − Toolkitが無いので、環境変数や GITHUB_OUTPUTファイルな どを⾃分で扱う必要がある。 − GitHub Actionsの仕様を理解し て、ツールを⾃作する必要があ る。

Slide 12

Slide 12 text

12 © Sansan, Inc. 実⾏速度 TypeScript 他⾔語(Go, Java, Ruby…etc) − パッケージ済みJSをrunnerが直 接実⾏する。 − CIで並列マトリクスを回しても “ほぼ即起動”。 − 基本Dockerコンテナを利用する。 − イメージ取得などに時間がかか り、コールドスタートが遅い。

Slide 13

Slide 13 text

13 © Sansan, Inc. プラットフォーム TypeScript 他⾔語(Go, Java, Ruby…etc) − 追加設定なしでLinux / Windows / macOSすべて動作。 − Dockerなら基本Linuxのみ。

Slide 14

Slide 14 text

14 © Sansan, Inc. GitHub API連携 TypeScript 他⾔語(Go, Java, Ruby…etc) − GitHubが提供するOctokitを利 ⽤可能。 − 型定義付きで安全。 − OctokitはGitHub Actions Toolkit にも含まれている。 − HTTPリクエストを⼿書きする か、各⾔語⽤Octokitを利⽤する。 − 公式SDKがない⾔語も多い。

Slide 15

Slide 15 text

15 © Sansan, Inc. 開発体験 TypeScript 他⾔語(Go, Java, Ruby…etc) − TypeScriptの型推論・エディタ 補完、VitestなどJSエコシステ ムのテスト・Lintツールをその まま利⽤可能。 − 公式テンプレート actions/typescript-actionで即開 始可能。 − テンプレートや⽀援ライブラリ がほぼ無い。 − セットアップやテスト戦略を⾃ 分で組み⽴てる必要がある。

Slide 16

Slide 16 text

16 © Sansan, Inc. actions/typescript-action

Slide 17

Slide 17 text

17 © Sansan, Inc. actions/typescript-actionについてはこのブログでもまとめています!! https://paper2.hatenablog.com/entry/2024/09/22/165319

Slide 18

Slide 18 text

ご清聴ありがとうございました

Slide 19

Slide 19 text

19 © Sansan, Inc. © Sansan, Inc. 請求書受領から、月次決算を加速する インボイス管理サービス