🫠

MuseScore Studio にプルリクエストを作成してみた

2024/11/19に公開

はじめに

この記事は、東京大学工学部電子情報工学科・電気電子工学科の学生実験「大規模ソフトウェアを手探る」のレポートの一部として書かれたものです。
レポートの全記事をご覧になりたい方は下のリンクよりご覧ください。
https://zenn.dev/cmakescore/articles/6ca173cd570216

この記事について

プルリクエストを作成してから、実際にマージされるまでにやったことの記録です。

プルリクエストを作ってみる

この実験で実装した機能のいくつかは実用的なレベルに到達しました。これをこのまま自分たちだけのものにしておくのはもったいないので、本家の MuseScore Studio に対して自分たちの変更を取り込んでもらえるように、プルリクエストを作成してみましょう!

対応する issue があるか探す

MuseScore Studio の GitHub 上には、記事執筆時点では 2890 個もの issue が存在します。この中から、これから作成するプルリクエストで解決される issue があるか、英語のキーワードで検索して探しましょう。対応するものを見つけたら、 #19121 のような番号をメモしておきます。これは後でプルリクエストを作成するときに使います。
もし対応する issue が見つからなかったら、簡単なものであればプルリクエストの中で説明すれば大丈夫そうです。説明が難しいものや、仕様の議論の必要がありそうなものであれば、新しく issue を作りましょう。

貢献者ライセンス契約に署名する

自分の書いたコードが MuseScore に利用されることを許可したということなどを表明する必要があります。ここでは MuseScore のアカウントが必要になります。アカウント名は、 GitHub の表示名と同じものか、関連性が明らかであるものが望ましいと思います。
内容をよく読んだうえで、ページ下にあるフォームに本名、メールアドレス、国と住所、電話番号を入力して送信します。ここで入力した個人情報は自分自身と MuseScore 開発のチームメンバー(Muse の会社で働いている人)にしか見ることができないので安心して大丈夫でしょう。
https://musescore.org/ja/cla

GitHub に変更をプッシュする

コミットメッセージが分かりやすいものになっていること、コミットが整理されていることを確認して、変更をリモートにプッシュします。

プルリクエストを作成

プッシュしたあとに GitHub で自分のフォークを開くと、以下のような表示がされているはずです。
recent push

ここから「Compare & pull request」をクリックして、プルリクエストを作成します。
あらかじめ入力すべきひな型が用意されています。これに従って、解決される issue の番号、変更の概要などを記し、用意されているチェックリストの内容を確認してチェックを入れます。
実際に作成したプルリクエストがこちらになります。
https://github.com/musescore/MuseScore/pull/25252
https://github.com/musescore/MuseScore/pull/25254
https://github.com/musescore/MuseScore/pull/25255
https://github.com/musescore/MuseScore/pull/25396

ひたすら待つ!

さすがは大規模ソフトウェアなだけあって、常時大量のプルリクエストが開いています。そのぶんレビュー待ち時間もとても長い。私たちの場合は9日くらい待つことになり、実験期間中にはレビューが帰ってきませんでした。
少しでも早くレビューをしてもらいたいときには、プルリクエストを作成したあとに公式 Discord サーバーの Development チャンネルでレビューをお願いするようにメッセージを送ってみるのもいいでしょう。

レビュー内容を踏まえてコードを修正する

上述の通り実験期間中にはレビューが帰ってこなかったので、ここからは残業です。
デザイン上の修正、設計の変更、コミットをまとめるなど、レビューで指示されたとおりに作業をして、同じブランチに再びプッシュします。
修正が終わったら、レビューを再びリクエストしたり、コメントを残したりして、また待ちましょう。修正点がなくなるまで繰り返します。
具体的にどのような変更を行ったかは、書く時間が足りなかったので各プルリクエストでのやり取りを見ていただければわかると思うので省略します。

マージ!

このような手順を経て、記事公開時点では3つのプルリクエストがマージされました。
マージされたプルリクエストは、次のマイナーリリースに含められます。つまり、今回マージされた機能は MuseScore Studio 4.5 で使えるようになっていることが期待できます!

おわりに

実際にコードから変更箇所を特定したりいじったりした記録についてもレポートを書いています。大規模なソフトウェアのコードの辿り方や開発・デバッグの手法などに興味がある方は、ぜひ下のリンクよりご覧ください。
https://zenn.dev/cmakescore/articles/6ca173cd570216

Discussion