MuseScore Studio にプルリクエストを作成してみた
はじめに
この記事は、東京大学工学部電子情報工学科・電気電子工学科の学生実験「大規模ソフトウェアを手探る」のレポートの一部として書かれたものです。
レポートの全記事をご覧になりたい方は下のリンクよりご覧ください。
この記事について
プルリクエストを作成してから、実際にマージされるまでにやったことの記録です。
プルリクエストを作ってみる
この実験で実装した機能のいくつかは実用的なレベルに到達しました。これをこのまま自分たちだけのものにしておくのはもったいないので、本家の MuseScore Studio に対して自分たちの変更を取り込んでもらえるように、プルリクエストを作成してみましょう!
対応する issue があるか探す
MuseScore Studio の GitHub 上には、記事執筆時点では 2890 個もの issue が存在します。この中から、これから作成するプルリクエストで解決される issue があるか、英語のキーワードで検索して探しましょう。対応するものを見つけたら、 #19121 のような番号をメモしておきます。これは後でプルリクエストを作成するときに使います。
もし対応する issue が見つからなかったら、簡単なものであればプルリクエストの中で説明すれば大丈夫そうです。説明が難しいものや、仕様の議論の必要がありそうなものであれば、新しく issue を作りましょう。
貢献者ライセンス契約に署名する
自分の書いたコードが MuseScore に利用されることを許可したということなどを表明する必要があります。ここでは MuseScore のアカウントが必要になります。アカウント名は、 GitHub の表示名と同じものか、関連性が明らかであるものが望ましいと思います。
内容をよく読んだうえで、ページ下にあるフォームに本名、メールアドレス、国と住所、電話番号を入力して送信します。ここで入力した個人情報は自分自身と MuseScore 開発のチームメンバー(Muse の会社で働いている人)にしか見ることができないので安心して大丈夫でしょう。
GitHub に変更をプッシュする
コミットメッセージが分かりやすいものになっていること、コミットが整理されていることを確認して、変更をリモートにプッシュします。
プルリクエストを作成
プッシュしたあとに GitHub で自分のフォークを開くと、以下のような表示がされているはずです。
ここから「Compare & pull request」をクリックして、プルリクエストを作成します。
あらかじめ入力すべきひな型が用意されています。これに従って、解決される issue の番号、変更の概要などを記し、用意されているチェックリストの内容を確認してチェックを入れます。
実際に作成したプルリクエストがこちらになります。
ひたすら待つ!
さすがは大規模ソフトウェアなだけあって、常時大量のプルリクエストが開いています。そのぶんレビュー待ち時間もとても長い。私たちの場合は9日くらい待つことになり、実験期間中にはレビューが帰ってきませんでした。
少しでも早くレビューをしてもらいたいときには、プルリクエストを作成したあとに公式 Discord サーバーの Development チャンネルでレビューをお願いするようにメッセージを送ってみるのもいいでしょう。
レビュー内容を踏まえてコードを修正する
上述の通り実験期間中にはレビューが帰ってこなかったので、ここからは残業です。
デザイン上の修正、設計の変更、コミットをまとめるなど、レビューで指示されたとおりに作業をして、同じブランチに再びプッシュします。
修正が終わったら、レビューを再びリクエストしたり、コメントを残したりして、また待ちましょう。修正点がなくなるまで繰り返します。
具体的にどのような変更を行ったかは、書く時間が足りなかったので各プルリクエストでのやり取りを見ていただければわかると思うので省略します。
マージ!
このような手順を経て、すべてのプルリクエストがマージされました。
マージされたプルリクエストは、MuseScore Studio 4.5 のリリースに含められ、今回の実験で実装した機能が世界中の MuseScore Studio ユーザーに展開されました。
また、ありがたいことに、 MuseScore Studio 4.5 のリリースビデオでは、私たちのチーム「CMakeScore」の貢献についても触れていただいています。
おわりに
学生実験で取り組んだ成果が世界中のユーザーに使ってもらえるものになるのは、とても嬉しい経験でした。この記事をお読みのみなさんも、普段使っているオープンソースソフトウェアの改善点を見つけたら、修正のプルリクエストを出してみてはいかがでしょうか。
また、この記事では最終段階のプルリクエストを出すところについてご紹介してきましたが、実際にコードから変更箇所を特定したりいじったりした記録についてもレポートを書いています。MuseScore Studio に限らず、大規模なソフトウェアのコードの辿り方や開発・デバッグの手法などに興味がある方は、ぜひ下のリンクより全記事をご覧ください。
最後までお読みいただき、ありがとうございました!
Discussion