こんにちは。Gemcookでフロントエンドリードエンジニアをしている西村です。
Gemcookの業務の一環として@gemcook/react-native-animated-scroll-viewというreact-native用のOSSライブラリを開発し、公開しました。
画面をスクロールした時にヘッダー領域をあわせてアニメーションするのを助けるライブラリです。
なぜOSSなのか
Gemcookでアプリ開発をする中で、実装することが多い機能なので外部ライブラリ化しようというのが開発のきっかけでした。
外部ライブラリ化するだけならOSSではなく、privateで公開する方法もありました。 しかし、私達が普段使用しているReactやReact NativeもOSSですし、その他ライブラリや周辺ツールに至るまでほぼ全てOSSです。
privateに閉じるよりも自分たちへのフィードバックや、コミュニティ・他の開発者への貢献にもなるOSSの方が良いだろうという結論になりました。
開発
開発するに当たってまずはOSS開発チームを結成しました。
週に1度、30分~1時間ほどコードリーディング会を開催してフロントエンドメンバーで意見を交換する時間を設けました。
コードリーディング会によってissue/PRを作成しやすい環境を作成し、誰でもメンテできるような仕組みを目的としました。 また、当然ではありますがグローバルに公開するものなのでIssueやREADME等は英語で記載しています。
OSSにする上で気をつけたこと
OSSとしてライブラリ開発する際に気をつけたことは機能と柔軟性のバランスです。
アプリ内の閉じたコードに置かれていれば、機能を完全に特化しても問題ないですが、 OSSとして広く使われることを想定するのなら柔軟にライブラリ内の様々な機能にアクセスできるべきです。
今回はReactコンポーネントなので、できるだけシンプルに使用できるようにしながらPropsで強くカスタマイズできるような方向性を目指しました。
最後に
@gemcook/react-native-animated-scroll-viewは公開したばかりで現在は v0.1.4 です。 これから改善や機能追加等をOSS開発チームを中心に進めていきます。(もし使用されましたらフィードバック頂けると嬉しいです)
OSS開発やアプリ開発に興味ある方はぜひ一緒にGemcookで働きましょう。