2025年6月23日月曜日

GitHub Search と NotebookLM で自分の活動を振り返る

GitHub Search で昨日何してたっけ?を簡単に
gh-activity-report という gh 拡張機能をちょうど2年前くらいに作っていました。
こちらは GitHub の検索APIを gh search コマンドをつかって簡単に呼び出し、結果をレポートとして使いやすいように加工して出力する gh 拡張機能です。
gh search 使えばできることなので、わざわざ拡張機能を作る必要もないのですが期間の指定を「XX日前以降」とか「今月」とかがめんどくさかったのでこれを作りました。

例えば、昨日以降に更新した PR および Issue を検索する場合はこのようになります。
gh activity-report -d 1
これを gh search で書くとこのようになります。
gh search issues --include-prs --sort updated --author @me --updated ">=2025-04-21"
今日の日付に合わせて、コマンドを実行する必要があるのでちょっと面倒くさいですよね。
自分は下記コマンドで gh ar -d 1 で呼び出せるようにエイリアス設定をしています。
昨日何してたっけ?先週何してたっけ?と良くなるのでとても便利です。
gh alias set ar activity-report
GitHub Search の結果を定時報告に使う
さて、この gh-activity-report ですが gh search の出力フォーマット以外にも対応しています。gh コマンドをよく使っている人は --jq や --template オプションで出力加工ができることをご存知かと思います。 gh ar でやる場合は -- を使います。
gh ar -d 1 -- --json url --jq ".[].url"
単純な加工であればこれで十分ですが、ちょっと凝った出力にするのはやや面倒です。
--format オプションでいくつかパターンを用意してます。下記は一例です。
gh ar -d 1 --format markdown
gh ar -d 1 --format list
自分用に用意したものなので、お好きなフォーマットにする場合は前述のオプションか、json format で出力して結果をテンプレートエンジンなどで加工するとかもできると思います。
(私は kamidana を使った自作の kamidana-action をよく使っています)
gh の --json オプションは欲しいキーを指定しないといけなく、全部が面倒くさいのですが --format json なら簡単に全部出力できます。
gh ar -d --format json
私はこれらを組み合わせて、週報を自動で書かせています。
定期的なふりかえり
もともとこの拡張機能は活動の報告やふりかえりを目的として作成しましたが、これらは評価のためでもありました。
年に1回や半年に1回のタイミングだとどうしても記憶が曖昧になっていたり、直近の記憶が強くなりがちです。何やってたんだっけ?と毎回なります。
拡張機能で半年間の活動を出力させることもできますが、量がすごく多いのでそれで振り返るのもまた大変です。なので、月ごとにふりかえりをして記録をするという手段を取っています。これを自分リリースノートという名前でやっています。
(個人活動の方でも昔やってましたが、今は止まってます・・・)
自分リリースノートは自身の成長を観点としています。記録にはその観点フィルターを通した要約結果が記載されています。
今回、たまたま別の観点でふりかえりをしたいというきっかけがあり、もう一度 PR などの活動を見返す必要があったので、 NotebookLM に手伝ってもらいました。
NotebookLM で自分の活動をふりかえる
NotebookLM のソースとして gh-activity-report の出力を与えてみましたが、既存のフォーマットでは微妙だったので今回それを目的としたフォーマット(lens-with-body)を追加しています。私がブログを休んでいた期間の情報を出力すると以下のようなオプションになります。
gh ar --since 2023-04-01 -l 1000 --format lens-with-body --visibility public
どのようなフォーマットかというと「repository,number,url,state,title,createdAt,closedAt,updatedAt,author,body
」キーの情報を平文でただただ出力しているだけです。(長いので結果は省略)
既存のフォーマットは GitHub にそのまま書きやすい、人が読みやすいものが多かったのですが、今回のフォーマットは情報をダンプしている感じで人が読みやすいとは言い難いです。

出力した結果をソースとしていれて、どのような活動があったかまとめてもらいました。


なんかいい感じです。
AI の登場で情報をまとめて要約することが手軽になりましたね。

最初は全期間の1ソースだけ用意していたのですが、いまいち認識が甘かったので期間を分割して複数のソースとしました。単純にファイルサイズ(トークン数)というわけでもなさそうで、自分の PR の body がほとんど空っぽだったせいもあるような気もしています。
また、期間中の PR が月ごとに何件あったか調べてもらったら、微妙に一致しなかったりしました。

ちなみに、クセで目的とは関係なく挙動の実験をしてたら、このブログを書くのが2ヶ月遅れましたw いろいろ調べてみるのは楽しいのですが、現時点での AI に合わせてもしょうもないのでキリにします。

AI 関連の変化は目まぐるしいので、上手に向き合っていけたらいいなと思ってますね。
私は AI 自体に詳しいわけでもなく、利用者としても初心者レベルなので、どちらも触れていって、自分の引き出しを増やせればと思います。
Gemini ではどうか?
Gemini でも同じことができます。
NotebookLM は json ファイルに対応しておらず、平文化する必要がありましたが Gemini だとそのまま json をソースにできるので楽でした。
目的にあわせて使いやすものを使うのが良いんじゃないかなと思います。
最後に
久しぶりブログ書いたけど、感想文みたいになっちゃいましたね。
最近は gh 拡張とか GitHub Actions のアクションを作ってることが多いので、そのへんも紹介できたらいいなと思ってます。では。

おひさ!

どうも久しぶりです。いつぶりの投稿でしょうか。約2年ぶりみたいですね。。
ここ数年は仕事が楽しくて社内での活動ばかりでした。
…というのも言い訳でして、一度途絶えた習慣を元に戻すのは大変だなと感じてます。
リモートワークになり通勤がなくなったのが一番の影響でしょうか。
出勤途中のスタバで記事を書くというのが習慣だったんですよね。
私物 PC を毎日リュックに入れて通勤してました。たまに会社の PC も持ち帰ることがあったので2台背負って電車に揺られる日もありました。信じられません。

最近は公式ドキュメント読めば OK だったり、 Zenn や Qiita などの記事を見ることや、
AI に聞くことが増え、個人ブログで情報を得る機会がかなり減ってしまいました。
(消しゴムの跡)
このへんはいろいろと思うところもあるんですよね。自分がこのブログを書く意味ってなんだろう、とか。
(テキトーなこと言ってます)

あと、これまでインターネット上の自分は本名の自分と別として活動してました。
まぁ隠してたわけではないですし、それなりの人に = あの人と認知されていることは知ってはいましたが、ここ数年でこの = 認知の範囲が広がったんじゃないかなと思ってます。
今までのように仕事成分抜いて投稿するってのもやりづらいなぁと勝手に感じております。

と、ネガティブな理由を書きましたが、それを書くために再び筆を執ったわけではないです。
最近、若手の活躍や意欲の高さにあてられて、自分も何かやりたくなったからですね
この2年間なにもしてなかったわけではなく、OSS活動はずっとやってきてましたし、公にやったことの話なら問題ないので、また書くことにしました。

書くペースはどうでしょうね?以前のように週一回更新はできないかもしれないですが、2年分の貯金でしばらく頑張ってみましょうかね。こういう形での不定期連載もありだろうか?
まぁまだしばらくこのブログで個人活動を続けようかと思います。今後ともよろしくお願いします。