不慣れなのりお氏には、コードの修正以前にプルリク出すまでのお作法に苦労したので、その辺まとめておきます。
なお、Spring Boot へのプルリクがマージ・リリースされたのは事実ですがオチがあります。。
- はじめに
- 準備:CONTRIBUTING.adocを読もう
- Code of Conduct(行動規範)
- Using GitHub Issues(Issueの使用に関するルール)
- Reporting Security Vulnerabilities(セキュリティ脆弱性の報告について)★超重要★
- Sign the Contributor License Agreement(ライセンス契約にサインせよ)
- Code Conventions and Housekeeping(コードの規約と保全)
- Working with the Code(IDEについて)
- Cloning the git repository on Windows(WindowsでのGitクローンについて)
- いざ:Issuesを見てみよう
- さいごに(オチ)
はじめに
マージされたプルリクが含まれるリリースは v2.2.8.RELEASE と v2.3.1.RELEASE です。
v2.2.8.RELEASE の方はContributorsに名前も載っていて単純に嬉しいですね。

準備:CONTRIBUTING.adocを読もう
まず最初にやるべきことは、そのままですが CONTRIBUTING.adoc を読むことです。
contribute するにあたっての説明や注意事項が書かれています。一度には頭に入りきらないと思うので、プルリクを出すまでに何度も参照することになると思います。英語が苦手な方は翻訳して控えておいてもいいかもですね。(もちろん常に最新の内容を把握するよう注意が必要ですが。。)
参考までにCONTRIBUTING.adocのコミット履歴です。
簡単に中身を見てみましょう。(意訳が下手だったらすみません。原文を読むか英語できる人に訳してもらってください。。)
Code of Conduct(行動規範)
まず最初に書かれているのはコントリビュータとしてのCode of Conduct(行動規範)です。
詳細はリンク先のCODE_OF_CONDUCT.adocに記載されています。
技術うんぬんの前に、人として、プロフェッショナルとして守るべきことが書いてあります。善良な方々は意識しなくても普段から守られているような内容だとは思います。セクハラするな、個人攻撃するな、プロフェッショナルらしくない行動はするなみたいな感じです。
従わない奴は永久に出禁にしてやる、と書いてあるので目を通しておきましょう。
Using GitHub Issues(Issueの使用に関するルール)
次に書かれているのは Spring Boot のGitHub Issueに関するルールです。ざっくりは下記2点が書かれています。違和感ない普通のルールだと思います。
Reporting Security Vulnerabilities(セキュリティ脆弱性の報告について)★超重要★
次の項ではセキュリティ脆弱性の報告について書かれていますが、これは超重要です。これを誤ると、Spring Boot チームに怒られるだけでなく、コミュニティや全Spring Bootユーザを敵に回すことになるでしょう。。
Sign the Contributor License Agreement(ライセンス契約にサインせよ)
次はコントリビュータのライセンス契約へのサインについて書かれています。ここはワクワクすることも書かれていますね。契約にサインするためのリンクも貼られているのでリンク先にしたがってください。(何やら動的なページだったので念のためここからはリンクは貼らないでおきます)
サインは個人と法人で分かれているので、個人の方は「Sign Individual CLA」の方にサインしましょう。
なお、サインは必須です。サインしていない状態でプルリクを送ると、プルリク上にbuildmasterか何から、CLAにサインしてくださいみたいな自動応答があるのでサインできていなければそこで気付くと思います。(今探したらすぐに見つけられませんでしたが、以前たまたま見かけました)
Code Conventions and Housekeeping(コードの規約と保全)
ようやくこのあたりから技術的なお話になってきます。まずは、おなじみのコーディング規約や保全に関してです。
どれも必須ではないと書かれていますが(本当か?)、従っておくのが無難だと思います。数が多いので、雑めに紹介します。
Checkstyleを実行するためのコマンド
$ ./gradlew checkstyleMain checkstyleTest
Working with the Code(IDEについて)
IDEに好みがなければ、 Spring Tools Suite か Eclipse を奨めるよ、とのことです。(そりゃあそうですよね)
STSやEclipseは昔使っていましたが、IntelliJを使ったら、Eclipse系には戻れなくなりました。。特にアルティメット版に手を出してからは。。STSのいいところをIntelliJに加えたみたいな感じになります。
IntelliJ(IDEA)のアルティメット版が気になる方は、下記紹介ページ経由で購入すれば500円引きになります。(微妙に宣伝すみません)

Building from Source(ソースからビルド)
Java8以上でGradleを使ってビルドできます。Spring Boot では Gradle Wrapper を提供しているので、プロジェクトのルートディレクトリで下記コマンドを実行します。
$ ./gradlew build
Importing into Eclipse(Eclipseにインポートする)
かなり丁寧かつ具体的に書かれているので省略します。 Eclipse Installer を使用する方法と、Buildship でマニュアルインストールする手順が記載されています。
Importing into IntelliJ IDEA(IntelliJ IDEAにインポートする)
Eclipse同様、詳細に説明されているため省略します。先述の Spring JavaFormat IntelliJ Plugin についても触れられています。
Importing into Other IDEs(その他のIDEにインポートする)
Gradleは多くのIDEでサポートされているから、IDEのドキュメント読んでね。
とだけ書かれています。そりゃそうですね。
Cloning the git repository on Windows(WindowsでのGitクローンについて)
どのフォルダにクローンするかにも依るけど、Widnowsのファイルパスの上限(260文字)を超えるファイルがあるかもしれないから、ファイル名長すぎエラーが出たら、Gitのcore.longPathsオプションを使ってね。
$ git clone -c core.longPaths=true https://github.com/spring-projects/spring-boot
いざ:Issuesを見てみよう
準備のCONTRIBUTING.adocだけでだいぶ長くなってしまいました。。Spring Boot のプルリクのお作法が分かったら、さっそくIssuesを見てみましょう。(ネタがある方は自分でissue切るなりすればいいと思いますが、、自分には敷居が高い。。)
もうあんまり書くことないですが、まずは Good First Issue や status: ideal-for-contribution (コントリビューションに理想的)、status: first-timers-only (初回のコントリビューション限定)などの取っ付きやすそうなラベルがついたIssueを見てみてはどうでしょう。
あとは、単純に type: bug ラベルのIssueとか?
さいごに(オチ)
なお、のりお氏のプルリクは実はコードではなく、ドキュメンテーションでした。(Good First Issueとかはドキュメンテーションが多かったです)
プルリクがマージされた通知メールが届いた時は嬉しかったのですが、その後の流れを見てみたら、、マージ後にコアチームの方(?)のコミットがあって、清書されていました。清書の中で、のりお氏の変更は全消しされ、いけいけな文章が追加されていましたとさ。
英語力が足りなかったのももちろんですが、清書の内容と見比べてみると、「注意事項」だけ書いて「じゃあどうすればいいか」を記述できていなかったのが大きな敗因な気がしました。
次回はコードのプルリクを出せればいいなーと思います。(1年半くらい前に、Spring WebFluxのエラーページ周りの小バグとその修正方法を発見したのですが、その時は先に他の方に修正されてしまったようで機会を逃しました、、)
コメント