2022年の個人のOSS活動のふりかえり
はじめに
挨拶と自己紹介
こんにちは、 kamiazya です。
普段は、エンジニアチームのリーダーをしています(GitHub にもう少しだけ詳しく書いてあります)。
前職でキャリア形成のために趣味で作ったもの GitHub で公開し始めたことをきっかけに、今でも OSS 活動を続けています。
新年、あらためて OSS とどのように向き合うかを考えるため、私の 2022 年の OSS 活動への実績をまとめ、ふりかえりを実施しました。
もともと誰に向けて書いた文章というわけでもないのですが、OSS 活動自体に関する文書は少ないので、何かしらの参考になればと思い公開することにしました。
OSS に興味がある人やエンジニアとしてのキャリアについて考えている人、OSS で自分のプロダクトを運営している人など、誰かしらの参考になれば幸いです。
ふりかえりの前提
-
ts-graphvizという GitHub Organazation を運用しています。
- TypeScipt で Graphviz を扱いやすくするためのライブラリや関連するソフトウェア・ツールを提供しています。
- 他にも npm ライブラリをいくつか公開しています。
- 代表作に関する記事: インフラ構成図を React で描けるツールを作った -- Zenn
ふりかえりの目的
2022 年の OSS 活動のふりかえりを実施し、2023 年の方針などを検討する材料にする。
OSS 関連の実績
ts-graphviz 関連
npm ライブラリ
ダウンロード数(Weekly)
昨対比、 13 倍に増加した。
- 去年(2022-01-08 - 2022-01-14)
- 6,190
- 今年(2022-12-31 - 2023-01-06)
- 82,587
リリース
9 月から 8 件のリリースを実施した。
-
v1.0.0(2022-09-18)
- AST 中心のアーキテクチャへの移行
-
@ts-graphviz/parser
パッケージの統合
-
- README の刷新
- 日本語版も用意した
- AST 中心のアーキテクチャへの移行
- v1.0.1(2022-09-21)
-
v1.1.0(2022-09-24)
- モデルコンテキスト API をリリース
-
v1.2.0(2022-09-25)
- AST からモデルを出力する関数を提供開始
-
v1.2.1(2022-09-26)
- ビルドが失敗し、うまく動作していなかった箇所を修正
-
v1.2.2(2022-09-29)
- ビルドが失敗し、うまく動作していなかった箇所を修正
-
v1.2.3(2022-10-19)
- CommonJS 向けのビルドがうまく動作しない問題を修正
- NodeRefGroup の AST がうまくレンダリングできない問題を修正
-
v1.3.0(2022-12-12)
- adapter モジュールを提供し、Graphviz を実行可能にした
-
@ts-graphviz/node
やts-graphviz/deno
のパッケージを統合
-
- Deno v1.28 から提供された npm モジュールのインポート機能を使い、Deno での実行を可能にした
- adapter モジュールを提供し、Graphviz を実行可能にした
また、リリースによって npm ライブラリ・リポジトリの統廃合した。
-
@ts-graphviz/parser
をts-graphviz@1.0.0
で統合、元のリポジトリはアーカイブした。 -
@ts-graphviz/node
とgithub.com/ts-graphviz/deno
をts-graphviz@1.3.0
で統合し、元のリポジトリはアーカイブした。
プロジェクト利用実績
GitHub 内で package.json に ts-graphviz が記載されているリポジトリを調査した。
ビッグネームを含むさまざまなプロジェクトから依存されるようになった。
企業・組織編
個人
他にも色々あったが、未完成や用途がわからないプロジェクトなどは除外している。
利用数
2023-01-07 時点の Used by の数値は、855 だった。
GitHub Star
主要なものだけ抽出(今年アーカイブしたものも含む)。
setup-graphviz
GitHub Action
リリース
-
v1.1.0(2022-08-18)
- パッケージマネージャーでインストールするライブラリのバージョンを指定できるようにした
利用数
2023-01-07 時点の Used by の数値は、680 だった。
GitHub Star
その他
npm ライブラリ
リリース
-
typedoc-plugin-mermaid@v1.7.0(2022-03-31)
- Markdown ファイルから mermaid ブロックを解析する機能を追加
-
typedoc-plugin-mermaid@v1.8.0(2022-04-07)
- Mermaid のバージョンを指定するオプションを追加
-
ink-highlight@v1.0.0(2022-04-07)
- Ink 3系をサポートするようにアップデート
-
typedoc-plugin-mermaid@v1.9.0(2022-07-16)
- typedoc 0.23 に対応
GitHub Star
主要なものだけ抽出。
Ulauncher プラグイン
リリース
- ulauncher-vivaldi-profiles(2022-03-24)
GitHub Star
実績のふりかえり
- ts-graphviz は前回のリリースが 2021-07-04 だったので、1 年以上リリースに時間がかかってしまった
- 2022-01 くらいには同じコンセプトで開発開始していたが、設計や実装を進めるうちに保守性の課題が大きくなり当時の実装を捨てた経緯がある
- ts-graphviz を利用するプロジェクトが徐々に増え、AWS や GraphQL などのビッグネームのプロジェクトに依存されたことをきっかけに利用が増えた
- ts-graphviz 以外のプロジェクトへの貢献量は少なかった
- TypeScript 以外の言語でのなんとなく増やしたいと思っている程度でとどまってしまい、具体的な活動はあまりできなかった
- Python で Ulauncher プラグインの開発をしただけだった
- プロジェクトの利用実績やユースケースの調査など、エンジニアリング以外にもプロダクトオーナーとして README でのソフトウェアの見せ方にもこだわった
- 見せ方を工夫した ts-graphviz や Rediagram のプロジェクトでは Star の伸びがよかった
- 年内で 13 件のリリースを実施でき、(バラツキはあるが)1 ヵ月に 1 回以上のペースでリリースできた。
KPT
Keep
- OSS 活動自体
- 仕事の負荷が高まり OSS 活動のできない時期があったが再開し、リリースも行えた
- 新しいソフトウェアのリリース
- Ulauncher のプラグインのみだが、新しいものを作らない年にはならなかった
- 新しい領域でのソフトウェア開発
- 上記に関連して、今まで Web や Graphviz、可視化などの領域を中心に開発してきたが、Ulauncher など新たな分野でソフトウェアを開発できた
- プロダクトの見せ方の工夫
- エンジニアリングとは別に、プロダクトの見せ方を工夫し、利用を促進した。
- ユースケースの分析
- ユーザーの利用状況を分析し、プロダクト自体やプロダクトの見せ方に反映できた。
- これにより、ts-graphviz の GitHub Star の伸びが改善された。
Problem
- TypeScript 以外のプロジェクトが少ない
- 他の人が使えるレベルのソフトウェアを TypeScript 以外の言語で公開できていない
- OSS 活動のための時間確保
- 仕事の繁忙期や今まで OSS 活動していた時間で晩酌するなど、OSS 活動をする時間が減った
- プライベートの開発が得意領域に閉じている
- 挑戦的な活動ができていない。
- どちらかというと実験で終わってしまっている。
Try
- プライベート時間での OSS など開発時間の確保
- 週で 5 時間は確保できるように
- DeepDive できていない領域でのソフトウェア開発
- Linux のパッケージ開発
- TypeScript 以外の言語を使う
- など
- プロダクトの利用状況などがトラッキングできるように工夫する
- GitHub の Used by などで利用数やユースケースが分析可能なプロダクトづくりを心がける
おわりに
今年の OSS 活動を通じて一番印象的だったことは、Appollo GraphQL や AWS CDK のプラグインが私の開発しているライブラリを使ってくれたことでした。
個人的には GitHub アカウントをエンジニアの名刺のようなものだと考えているので、今後のキャリアによい影響を与えてくれるのではないかと思いニヤニヤしています。
今回実施した実績のふりかえりや KPT の内容を元に 2023 年の活動内容や方針を検討し、よりよい OSS 活動ができるように取り組んで行く所存です。
応援・支援のお願い
OSS 活動を今後も続けていくにあたり、皆様の応援や支援をいただけるとたいへんうれしいです。
最後まで見ていただきありがとうございました。
Discussion