OSSコントリビュートハッカソンを開催しました
ソニックガーデンでは、毎月1回プログラマメンバーで、ハッカソンをしています。テーマやルールは毎回変えながら、1日かけて開発をして最後にみんなで集まって作ったものの発表をします。 発表後、テーマごとに評価項目を設定し、投票を行い上位のチームには景品が送られます。
先月は、OSSコントリビュートハッカソンというテーマで実施しました。 非常に面白い内容で、OSSのテーマだけに公開することがとても良いと思ったので、記事にしています。 評価項目は、公益性・インパクト・それ欲しかったの3つでした。
9組の実装したPull Request(以下、PR)や発表内容の資料などを発表順に簡単にまとめて紹介していきます。
tochi さん
Bootstrap 5 support for Gretel
https://github.com/kzkn/gretel/pull/30
Supported the M1 mac. by tochi · Pull Request #50 · cloud-gov/caulking https://github.com/cloud-gov/caulking/pull/50
Rails のパンくずリストを簡単に実装できる gem の Gretel で Bootstrap5 に対応できるようにするためのPRです。ちなみに Gretel はもともと別の方が作成された gem でしたが、現在はソニックガーデンの kzkn がメンテナーとなってメンテナンスしている gem です。
soura & yoshito チーム
Gretel の設定ファイルの自動生成 or 設定省力化
https://github.com/soura-mas/gretel/pull/1
上と同じく Gretel gem へのPRです。Gretel ではパンくずの構造を設定ファイルで管理するのですが、それをより効率的に管理できるようにしたいという内容でした。こちらは、大きななので1日では完了しなかったようですが、方向性としてはうまくいくところまで進められたようです。
aki77 & kontikun & tokita チーム
Windi CSS prefix 対応
https://github.com/windicss/windicss/pull/534
SGメンバーも注目しているCSSフレームワークの Windi CSS に、 prefix をつけて正しく動くようにPRをしています。さらに、社内のプロジェクトで Windi CSS を導入して、 Bootstrap と一緒に稼働できるように実装を進めていました。
hiropon さん
react-big-calendar のscrollToTimeオプションとminオプションの同時指定時の不具合修正
https://github.com/jquense/react-big-calendar/pull/2051/
React のカレンダー表示ライブラリの特定のケースでの不具合修正のPRを出しました。納品のない受託開発で利用していた際に発見したライブラリの不具合を修正したものです。
jiro さん
dekiru gem のデータ移行処理実装用のDSLにトランザクションなしオプションの追加
https://github.com/mataki/dekiru/pull/23
Rails でよく使う機能をまとめたソニックガーデンメンバーでメンテナンスしている dekiru という gem へのPRです。その機能に、サービスを運用している中でデータ修正をスクリプトで実装する場合に便利なDSLがあり、もともとはトランザクションをかけて処理をする仕組みになっています。大量データを処理する場合はトランザクションをかけないほうが良い場合もあり、そのパターンでも使いやすいようにオプションを追加しています。
kzkn さん
Change Log URL of rubygems
https://github.com/kzkn/rubygems-changelog-url-action
RubyGems の仕様に ChangeLog を定義できる項目があるのですが、現状設定されていない gem が多いです。以前 kzkn が Github Actions で gem を追加した際に、ChangeLog を取得する仕組みを作ったが、設定されていない gem が多く処理効率が良くなかったようです。
そこから、ハッカソンの当日は、設定されていない gem に簡単にPRをおくれるようにする情報をまとめる仕組みを実装しました。
OSSコントリビュートしたことのない人もはじめてのコントリビュートのきっかけになる情報なので、ぜひOSSコントリビュートしてみて欲しいとのことです。
rubygems に changelog_uri が設定されていないものリスト
shunichi さん
Rails の date_select に day_format オプションを追加
https://github.com/rails/rails/pull/43567
Rails の間違ったコメントや不要なコードの修正
https://github.com/rails/rails/pull/43566
ActiveRecord::Enum に I18n のメソッド追加
https://github.com/rails/rails/pull/43568
dekiru に Capybara のアニメーション待ちヘルパーの追加
https://github.com/mataki/dekiru/pull/24
Rails にPRをだしてマージされた shunichi が、ハッカソンでまたいくつかRailsにPRを出しています。それぞれ、ソニックガーデンのメンバーも欲しかったやつだねという話をしていました。
bassar さん
CarrierWave で画像の width, height でバリデーション https://github.com/carrierwaveuploader/carrierwave/pull/2592
Rails の画像アップロードのライブラリの CarrierWave をより便利にするPRです。OSSコントリビュートを良くしている shunichi がペアプロをしてサポートをすることで、生まれて初めてのOSSコントリビュートをしました!
mat_aki さん
dekiru にメンテナンススクリプト generator を追加 https://github.com/mataki/dekiru/pull/25
ソニックガーデンでは、データメンテナンス用のスクリプトを追加するときは慣習的に scripts ディレクトリ以下にファイルを置いて、dekiru のデータ修正DSLを使うことが多いです。より簡便にできるように generator を dekiru gem に導入するPRを送りました。
以上が、ハッカソンの発表内容でした。
ふりかえりとして、参加して面白く、日頃からお世話になっているOSSに貢献することもでき、メンバーによっては初めてOSSにコントリビュートすることもできたので、良い機会でした。定期的に開催することで、日頃からアイデアを集めることもできるようになるので、またOSSのテーマで実施しようと思っています。