こんにちは!Pay for Business チーム インターン生の嶋村です! 2022年3月より Rails エンジニアとして長期インターンに参加しています。
先日、会計Plus チームのpockeさんにサポート頂きながら初めての OSS コントリビュートに挑戦しました。今回はその経緯と内容について紹介したいと思います。
成果物
まずは成果物の紹介です。
Rails Guides のドキュメントを訂正し、無事マージされました!
Rails Guides の管理は Ruby on Rails 本体のリポジトリで行われているので、なんと Rails 本体のコントリビューターになりました!嬉しい!!
経緯
事の発端はpockeさんのインターン生チャンネルへの投稿です。
大学からの帰宅時にふと見かけ、「(もう19時だけど返信して大丈夫かな…でも絶対やりたい、誰かが手を挙げる前に…!)」とドキドキしながら手を挙げました。そんな不安も裏腹にpockeさんからは手早いレスが頂け、翌日に事前説明 MTG を開催することになりました。これぞ Speed。
MTG
MTG は事前にご用意いただいた資料を基に進みました。
不安と緊張とワクワクではち切れそうだったので修正内容については MTG 前に調べ上げており、 pockeさんの資料と僕の事前学習の甲斐あって、MTG での内容確認やコントリビュートするにあたっての説明はとてもサクサク進みました。
MTG では以下のようなことを教えていただきました。
- Pull Request にはテンプレがあるのでそれに従えば大丈夫。
- 詳細なコントリビュート方法については Contribution Guide があるのでそちらを参照すると良い。
- 例えばコミットメッセージについては「5.13 Commit Your Changes」を参照。
- 英訳に関して、DeepL 等翻訳ツールの結果を参考にしても良い。
- 英語の得意な方にレビューをもらうと良い。
- もし不自然な英語だったとしても Review 時に指摘してもらえるはず。
- Issue は立てた方が良い?
- 今回は軽いドキュメントの修正なので大丈夫。
- Reviewer はどなたを指定する?
- おそらく権限がないので、自動で指定されるか誰かが見てくれるはず。
修正内容
今回のコントリビュート内容は「変更に追従しきれていなかった Range#to_s のドキュメントを訂正する」です。
時は遡り2021年、Ruby 3.1 にて、 to_s
メソッドへのパフォーマンスチューニングが行われました。Rails では to_s
メソッドへ format 引数を渡せるよう、 ActiveSupport でオーバーライドしていたため、このままではその恩恵を受けることができませんでした。そこで Rails 7 では to_s
メソッドのオーバーライドの順次廃止を決定、to_s
へ format 引数を渡すことは非推奨となり、代わりに to_formatted_s
とそのエイリアス to_fs
の利用が推奨されるようになりました。
当該の変更はこちら
Rails Guides も変更を受け大部分が訂正されていたのですが、 Range オブジェクトのみ to_s
のまま残されていました。
↓ 修正前のスクリーンショット
コミット・Pull Request
前述の MTG が想定よりはやく進み、pockeさんから「時間もあるのでせっかくなら」と提案いただき、その場で Pull Request の作成をすることになりました。該当ファイルの探索から訂正作業、コミット、Pull Request の作成まで事細かく丁寧にサポートしていただき、サクサクと作業を進めることができました。
修正の結果、Pull Requuest 作成時点では以下のような表現となりました。
Active Support defines `Range#to_fs` instead of `to_s` so that it understands an optional format argument. (以下略)
バックバクの心臓を抱え「Create Pull Request」ボタンを押し、その日の MTG は1時間ほどで終了しました。
レビュー
Pull Request 作成から数十分後、Rails コミッターの方から英語表現に関して、「以下の表現の方が良さそうだ」とのレビューを頂きました。
Active Support defines `Range#to_fs` as an alternative to `to_s` that understands an optional format argument. (以下略)
「なるほど確かにこっちのほうが正確かも」と思いながら普段通り修正コミットを追加しようと思ったのですが…。
改めて Contribution Guide を見ると
One of the things that we may ask you to do is to "squash your commits", which will combine all of your commits into a single commit.
Rails では「全てのコミットをひとつにまとめる」ことをお願いしています。
との記載がありました。確認大事。
その下には操作方法も書かれていたので、ガイドの通りに --amend
オプション付きでコミットしてから force-push をすることで、無事綺麗に1commit に収めることができました。
(実は怖くてダミーリポジトリで何度も練習しました笑)
マージ
その日の夕方に修正をコミットし、再レビューをお願いして PC を閉じました。
翌朝、さてどうなったかなと確認してみると、無事マージされていました!感謝のメッセージが綴られていたので、僕からも絵文字で出来る最大限の感謝(🎉 ❤️)をお返ししました。
また、Rails Contributors にも無事名前が載りました。感激…!
最後に
業務・講義・趣味でも普段から頻繁に使っている Ruby on Rails のリポジトリに名前を残せたことは本当に光栄です。小さな変更ではありましたが、僕にとっては OSS 活動のとても大きな第一歩になりました。これからも OSS 活動に挑戦していきたいです。
改めて、お力添えくださったpockeさんにこの場を借りて感謝申し上げます。ありがとうございました!
マネーフォワード福岡拠点では、エンジニアを募集しています!🍜
福岡開発拠点のサイトもあるのでぜひみてください!🚀
https://fukuoka.moneyforward.com/
マネーフォワードでは、エンジニアを募集しています。 ご応募お待ちしています。
【会社情報】 ■Wantedly ■株式会社マネーフォワード ■福岡開発拠点 ■関西開発拠点(大阪/京都)
【SNS】 ■マネーフォワード公式note ■Twitter - 【公式】マネーフォワード ■Twitter - Money Forward Developers ■connpass - マネーフォワード ■YouTube - Money Forward Developers