2025年12月31日水曜日

2025年も残りわずか!

みなさん。こんばんは。
2025年も残り4時間を切りました。私は今から 2026 年までにふりかえり記事を書き切ることを今年最後の目標としました。この投稿とは別で書きます。

さて、目標記事の方は個人の GitHub の活動をふりかえる記事にしたいと思いますので、こちらでは簡単にその他どんなことがあったのかふりかえります。
(さっさと目標の方を書くべきですが、他のことも今年のうちに書いておきたいので…)

CEDEC2025運営委員をやりました!

まず始めに 2025 年はなんといっても CEDEC ですね。
念願だった運営委員をやりました!CEDEC2025 のサイトにもちゃんと載ってますね。感無量。ちなみに、ふりかえりは社内向けに結構ちゃんと書いて、社内勉強会でも発表したんですが、ここでは簡単に(公開予定ありません)

やはり、運営委員側になって見えたもの、感じたものがあり、とてもたくさんのインプットを得られ、さらに自分自身の成長や変化に繋がったかなと思います。
自分が CEDEC に始めて参加したのは、たぶん 2011 か 2012 かな。
初登壇したのが 2015。最近も登壇しまして、トータルで5セッションになりました。いろんな意味で CEDEC は私を成長させてくれたなと思います。転職してからしばらく視線が社内に向いていたのですが、最近また外に向き始めていたので非常に良いタイミングだったと思います。

CEDEC2026 のサイトもオープンしてますね。公募も年明けから開始されるようなので、是非みなさんも応募していただければと思います。
自分も登壇者として、また新しいチャレンジができたらなーと思っています。

ブログの再開

次はこのブログの再開ですね。再開したと言っても以前のような週1更新ではなく、不定期ではありますが…
まぁ、ほぼ2年お休みしていた状態からなので良しとしましょう。
CEDEC 運営委員になったから再開したわけではなく、若手のやる気に感化されたんですよね。
あとは AI によってやる気になったおじさんの一人って感じですね。
まだまだオレも若いぞということです。

GitHub

最後に GitHub の活動を。これも AI パワーによって commit が増えた気がします。


(もっと増えたかな?と思ってたけどそれほどでもなかった…去年の自分エライ)
感覚としは、あまり詳しくないものでも取っ掛かりになるものをすぐに得られるようになったことで、こういうのあると便利かも!からとりあえずやってみるが増えた気がします。
今までもできなくもなかったとは思うんですが、詳しくないと調べ方もわからなかったり、言語やツールのセオリーとかもわからなかったりで、最初の一歩が重かった。
それが大分軽くなりましたね。

あと、今まで出勤時にはスマホでゲームだったのですが、今はスマホでコーディングエージェントに指示して OSS 開発をしています。(あ、基本リモートなので出社はほとんどしてないんですけどね)時間(スピードやタイミング)的にも OSS 開発がしやすいなったと感じますね。
どんな活動があったかは、このあと別の記事でふりかえろうと思います。

最後に

2026年は今年よりも記事書けたらなーと思ってます。
それでは、良いお年を。

2025年9月10日水曜日

【GitHub Actions】export-ignore でアクションのサイズを小さくする小技

こんにちは。皆さん GitHub Actions のアクション作ってますか?
では、${{ github.action_path }} はご存知でしょうか? 
github.action_path は composite action の実行中に有効なプロパティで、アクションのリポジトリに含まれているファイルにアクセスするときに便利なやつです。

例えば、私が先日リリースした srz-zumix/labeler-action ではリポジトリにおいてある aqua の設定を使ってツールのインストールを行っています。
ブログズミ: 【GitHub Actions】actions/labeler 互換で on.pull_request 以外でも使えるアクション srz-zumix/labeler-action を作りました
ソースコード的にはこのあたりです。
https://github.com/srz-zumix/labeler-action/blob/main/action.yml#L43

実はこのアクションを作ったときに github.action_path に .git ディレクトリがないことに気づきました。てっきり checkout されていると思っていたのですが、実際には git archive されているようでした。

あまり使う機会はないかもしれませんが、git archive はリポジトリの内容だけを保存できる機能で、GitHub 上だと「Download ZIP」にあたります。


ところで、.gitattributes の export-ignore はご存知でしょうか? Git - Git の属性 (export-ignore)
これは archive に特定のパスを含めないようにできる属性です。例えば、成果物を提出する時なんかに便利な機能です。



さて、ここまで来たら想像がつきますよね?
そうです。アクションのリポジトリでも export-ignore を設定することで、アクションを使うときにダウンロードしてくるサイズをちょっと節約できます。


ちなみに、composite action 以外の action でも archive が展開されるのは同じです。
TypeScript でアクションを作ってる方は多いと思いますが、アクションが実際に使うのはコンパイル後の .js ファイルです。ソースである .ts ファイルやテストコードなどアクションの実行には不要なファイルがそこそこあります。
このようなアクション実行時に不要なファイルを export-ignore してみるのはどうでしょうか。試しに自作アクションで導入してみました。
srz-zumix/post-run-action


御覧頂いているように、不要なファイルを除外しつつ、問題なくアクション実行できています。

今回試した post-run-action はもともと小さなリポジトリなので、export-ignore の恩恵はほとんどないとは思います。ただ、ソースが大きかったり、テストデータが大きかったりする場合は多少変わってくるかもしれません。



今回はちょっとした小技の紹介でした。
(ちなみに export-ignore を確認したときに知ったのですが、export-subst でなんか面白い使い方できないかなぁと思った)

ではでは。

2025年9月1日月曜日

【GitHub Actions】actions/labeler 互換で on.pull_request 以外でも使えるアクション srz-zumix/labeler-action を作りました

actions/labeler 便利ですよね。
でもちょっと困ったことがありました。
過去の PR に対してルール適用をしようと思ったところ、ブランチ名ルールが pull_request イベント前提のコードになっていて、workflow_dispatch で PR 番号指定して実行したときに設定どおりにラベル付けできませんでした。

この問題の修正 PR を出してはいるんですが反応がないので、自分で作りました。

srz-zumix/labeler-action
使い方は actions/labeler とほぼ同じです。
labeler の設定ファイルと同じ設定ファイルが使えます。
labeler-action は `dot: false` には対応していないのですが、ラベルの色設定に対応しています。labeler はラベルがない場合にラベルを作成してくれはしますが、色がグレーになってしまうのでちょっと不便でした。

色指定は以下のようにします。
ci:
- any:
  - changed-files:
    - any-glob-to-any-file: '.github/*'
- color: '#7c0bb2'

aqua:
- changed-files:
  - any-glob-to-any-file: 'aqua.*.yaml'
- color: '#1E90FF'

documentation:
- changed-files:
  - any-glob-to-any-file:
    - 'docs/*'
    - README.md
都合が良いことに color の設定があっても actions/labeler では無視されてエラーにはなりません。

ちなみに labeler-action はツールを呼び出しているだけで処理の実体は srz-zumix/gh-label-kit にあります。こちらも私が作っているもので、GitHub のラベル関係の操作を行える gh-extension となっています。
この拡張機能の1機能として labeler コマンドを実装しています。
したがって、gh-label-kit を使っていただければ GitHub Actions を使わず、ローカル環境からでもラベル設定が可能になります。
その他にも gh 標準には(今のところまだ)ない機能が揃っているので是非使ってみてください。

また、今回は gh-extension を gh extension install するのではなく、aqua を使用してインストールしています。これは self-hosted runner のことをちょっと意識しています。
aqua はまだ使い始めて間もないので、もっと便利な使い方を実践していきたいです。


以上です。ではでは