🛤️

OSSに関わるようになったきっかけ、Reactライブラリを開発するまでの道のり

2024/12/28に公開

歳をとっていることがバレてしまうかもしれませんが、私がOSS開発の世界に足を踏み入れた経緯について書いた記事を紹介します。

https://blog.axlight.com/posts/how-i-got-involved-in-oss/

以下、ChatGPTによる翻訳です。


はじめに

この記事では、私がオープンソースソフトウェア(OSS)開発に関わるようになった道のりを振り返りたいと思います。

初めてのOSS貢献

2000年頃、初めてOSSに貢献しました。それはNetBSD/mac68k用のEthernetドライバでした。C言語で書かれており、今振り返ると、自分でもコードをほとんど理解できません。

以下のリンクをWebで見つけました:

http://cvsweb.netbsd.org/bsdweb.cgi/src/sys/arch/mac68k/nubus/if_netdock_nubus.c?rev=1.35&content-type=text/x-cvsweb-markup

Chicken Scheme

次のOSSのフェーズはSchemeとの関わりでした。貢献は小さなものでしたが、いくつかのライブラリに手を加えました。

そのうちのひとつがこちらです:

https://wiki.call-cc.org/eggref/5/crc

JavaScript

2012年、初めてJavaScriptライブラリをオープンソース化しました。この頃からGitHubを使い始めました。

リンク:

https://github.com/dai-shi/continuation.js

これは、SchemeのエッセンスをJavaScriptに取り入れることを目指したライブラリでした。ただし、目標としていたすべての機能を実現することは諦めざるを得ませんでした。

その後、Node.js、特にExpress.js向けのライブラリをいくつか開発しました。

例えば:

https://github.com/dai-shi/social-cms-backend

この時期、JSDOMのようなOSSプロジェクトにパッチを送ることもありました。

また、ライブラリに加えて、小さなアプリも開発しました。

例えば:

https://github.com/dai-shi/codeonmobile

このアプリはAngular.jsで構築しました。

Meteor

2015年、Meteorに注力するようになりました。

例えば:

https://github.com/dai-shi/meteor-blaze-google-maps

この頃からBSDライセンスからMITライセンスに切り替えました。

React

2016年、Reactのライブラリを開発し始めました。

これが最初のライブラリだったと思います:

https://github.com/dai-shi/react-compose-state

これは、グローバルな状態管理への道のりの始まりだったと思います。私は関数コンポーネントで状態を使いたいと考えていましたが、Reduxは多くの場合(大半のケース?)やり過ぎだと感じました。このライブラリを使った人はいませんでした。みんなはrecomposeを使っていました。

その後も多くのライブラリを開発しましたが、どれもあまり注目を集めることはできませんでした。

React Hooks

2018年、React Hooksが発表されました。この新しい概念に基づいて何かを開発するには絶好のタイミングだと感じました。このチャンスを真剣に受け止め、ほとんどの時間をこれに注ぎました。

新しい活動の一つとしてブログ記事を書くようになりました。注目やフィードバックを得るのに役立ちました。

React Hooksに関する私の興味は主に以下の2つの分野でした:

  • コンカレントモードを考慮したグローバル状態管理
  • データフェッチのためのSuspense

この期間中、多くのライブラリを開発しました。その中には、現在も積極的に保守され、プロダクションで使用されているものもあります。

Poimandres

2020年、Poimandresという開発者コレクティブに参加し、Zustand、Jotai、Valtioの開発を始めました。

詳しくは他のブログ記事をご覧ください:

https://zenn.dev/dai_shi/articles/2985e3d7beb01a
https://zenn.dev/dai_shi/articles/f770b771b75f73
https://zenn.dev/dai_shi/articles/25eb34b1f1926b

現在の状況

現在、基本的にフルタイムのオープンソース開発者として活動しています。しかし、まだスポンサーシップだけでは十分ではないため、生活費を稼ぐためにフリーランスの仕事を続けています。オープンソースに専念できるだけの収入を得ることが次の目標です。

もう一つの目標は、コミュニティと共にエコシステムを進化させることです。たとえばJotaiのコア部分のような小さな部分は私一人で保守できますが、Jotaiの統合ライブラリのようなエコシステム全体を維持するには協力者が必要です。コミュニティを組織することは私にとって大きな課題です。

Discussion