今年も例年通りGitHubの活動を振り返った。
2021年のコントリビュート
今年はTiDBのissueをいくつか潰した。 どれもテストコードのリファクタリングだったけれど、今までコードでコントリビュートしたことがほとんどなかったので少しは成長した感がある。 ただし機能追加のPRは出せなかった。
github.com/pingcap/tidb
OSS
今年は結構「使える」OSSを作ることができた。
しっかり業務で毎日つかうものを作ることができた。たまに他社の方から使用報告してもらえるので嬉しい。
「世の中のツールで解決できない業務中の不便は自分で解決する」という@fujiwaraさんや@k1LowさんみたいなOSS活動にあこがれているのでもっと頑張りたい。
逆に言うとtracer
みたいなOSSをみると「自分も同じ不便感じていたので自分でしゅっとつくれないとだめだな…」という気持ちになった。
github.com/budougumi0617/nrseg
GoのアプリにNew Relic APMを導入する時とても便利なCLIを作った
New RelicのSegmentを埋め込む自動生成ツール。
機能追加したいけれど中がぐちゃぐちゃなのでリファクタリングしないといけない。
github.com/budougumi0617/action-newrelic-segment-lint
[Go] 新規追加した関数にNew RelicのSegmentを入れ忘れていたら警告するGitHub Actionsを作った
New RelicのSegmentが入っていなかったらPRでエラーを報告するGitHub Actions。
これはチームのプロダクトのGoのリポジトリ全部に入っている。便利。
github.com/budougumi0617/cmpmock
gomockでモックメソッドの引数をいい感じに設定できるcmpmockを作った
gomock
使う時のutil。
プロダクトでそこそこデカイ構造体を使ったテストコードを書くのに重宝している。
github.com/budougumi0617/action-pr-size-checker
テストコードなどは除外してからPRのサイズを警告するActionsを作った
dangerなどはテストコードも含めてPRのサイズをチェックする。
テストコード削らないとPRをレビューしてもらえないのは本末転倒なので自作した。
これもチームのプロダクトのリポジトリのほとんど追加している。
github.com/budougumi0617/nrzap
[Go] go.uber.org/zapでNew Relic logs in contextをするためのライブラリを書き始めた
New Relicの公式ライブラリはzapに対応していないのでラッパーを作った。 これもチームのプロダクトのほとんどで使っている。github.com/budougumi0617/list_func
New RelicでPythonのaiohttpサーバを使うと自動でSegmentが入らないので設定を作るツール。
私のPythonのスキルが低いのであまり作りこめていない。PythonでもASTいじるのは楽しい。
Dotfile
https://github.com/budougumi0617/dotfiles
そこまでいじっていない。最近はほとんどJetBrains IDEで開発するようになってVimをあまりいじっていないのもある。
不要なブランチをお掃除するエイリアスでmain
ブランチも特別視するようにした。
goto
コマンドの記事をみて使うようにした。ただリポジトリの移動はghq
+ fzf
でやってるので日常的にはあまりつかっていない。
年末年始に業務PCを新しくするのでそこで少しいじるかもしれない。
その他今年作ったリポジトリ
created:>=2021-01-01 is:publicで絞った結果
github.com/budougumi0617/sample_tbls_actions
ER図を自動生成するActionsのサンプルリポジトリ。詳しい説明は社のブログに書いた。
個人のアウトプットとしては今年一番便利説ある。
Activity
2021年のコミット履歴。
https://github.com/budougumi0617/
Publicなコミット = 693コミット
- 2017年 1,051コミット
- 2018年 1,286コミット
- 2019年 1,357コミット
- 2020年 1,063コミット
例年に比べてほとんどOSS活動をしていなかった。技術書典で執筆していないのも関係あるだろう。
プライベートの時間がほぼなくなってしまったので、こんなもんだろう感はあるがもう少し来年はコミット数ふやしていきたい。
前述のOSSのとおり、プロダクトで使えるものを量産したので質的には確実に良くなっていると思う。
Public + Privateなコミット = 4,589コミット
- 2017年 1,801コミット
- 2018年 2,192コミット
- 2019年 3,095コミット
- 2020年 3,584コミット
数は増えている。来年はチームのスケールや生産性向上も考えたいが、自分のコミットも増やしていきたい。
個人的にプログラマの信用貯金は結局コードを書いて貯めるものだと思っている。
まとめ(KPT)
KPTを書く前に去年のKPTのTryは以下だった。
去年のTry
- 業務で貢献してprivateコミットを増やす
- OSSに対して機能追加のPRを6個以上出す
- 素振りプロダクトでReactを触ってみる
- 素振りプロダクトでo11yまわりの技術をいろいろ触ってみる
Reactは「選択と集中」的にまったく触らなかった。o11yに関してはNew Relicに絞ってたがいくつかOSSも作ったしNRQLもよく書いたりできたと思う。 OSSに対する機能追加のPRはだせなかった。
Keep
- 実用的なOSSを作ることができた
- GitHub starが50ほど増えた(findyの月間star数を累計)
- メジャーOSS(TiDB)のissueをいくつかcloseできた
日々の開発の不便をみつけてOSSで解決するのは今後も継続していきたい。
サードパーティのOSSのissueやPRでいろいろやり取りしたのは貢献以上に意味があった。
メンテナでも意外と知らないことあるんだな?みたいに距離を縮めることもできた。
Problem
- Feature requestに対するPRをつくることができなかった
- 新しい言語に挑戦したりしなかった
- privateなコミットが減ってしまった
去年の目標に対して結果がほとんどでていなかった。
普段からよくOSSにはお世話になっているわけでもっと普段使っているOSSのコードを読んだりして身近からコミットするチャンスを探さないといけなそう。
スキマ時間に使ったことがないツールの機能追加を頑張るというのは難しいものがあった。
Try
- 仕事の不便を解決するOSSを2つ作る
- next.js+GraphQL+Hasuraあたりで何かつくる
家庭の事情でプライベートな時間がほとんどない&&春までは執筆がある。
夏くらいにはもう少しプライベートの学習時間を増やしていきたい。
また、フロントエンド界隈の話題に全然ついていけていないので、習作でよいので何かつくりたいなと思う。
終わりに
毎年振り返っているが、今年は少しアウトプットに手応えがあった年だなと思った。 来年はもうちょっとstar集めたり、Golang Weeklyなどに取り上げられるツールがつくれたらなと思う。
しかし「プライベートな活動」==「publicなコミット」っていうのはわかりにくいものである。