Google Issue Trackerにライブラリの不具合報告した話

この記事は、[Android#2のアドベントカレンダー](https://qiita.com/advent-calendar/2019/android-2)の20日目の記事になります。

初めてGoogle Issue Trackerに不具合報告した話になります

# 経緯

[ViewPager2](https://developer.android.com/jetpack/androidx/releases/viewpager2)のβ版を使って色々試していた際に謎挙動に遭遇。
ググっていろいろ調べた結果解決策がなさそうだということが判明しました。

そういえば[Issue Tracker](https://issuetracker.google.com) みたいなのあったなーと思い出し、
そこで不具合報告されてないかと調べてみましたが、
残念ながらそれらしい報告はありませんでした。

それなら自分で報告してしまおうということでIssue TrackerでIssueを作成することにしました。

(ちなみに遭遇した不具合は
`CoordinatorLayout`と`ScrollViewを内包したViewPager2`を使った場合ViewPager2の横スクロールの挙動がおかしくなる 
というものでした)

# Issue作成に必要無なもの

ひとまず `Create Issue` ボタンを押し必要な項目を確認しました

<img width="600" alt="SnapCrab_NoName_2019-12-20_23-59-12_No-00.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41839/7c349f98-8fdb-aa28-c01a-09ab0f09f0a9.png">

必要なのは以下の3つなのがわかりました

* Component 
    * 今回はViewPager2についての不具合報告なのでとりあえず`ViewPager2`と入力します
    * そうすると補完候補にViewPager2のComponentが出てくるのでそれを選択。
* Title
* Description


# 最初の難関

最初の難関。それは英語でした。

恥ずかしながら私は英語が苦手です。
プログラムのエラー文程度ならなんとか読めますし、分からなければGoogle翻訳などを使えばなんとかなります。
ただ、これは英語を**読む**場合の話。

書く場合はどうしたら良いのだろうと一瞬悩みましたが、とりあえずGoogle翻訳に頼ることにしました.

箇条書きで不具合の発生条件と内容を日本語で書き出し、それをGoogle翻訳で翻訳し、その後手直しする という方法で行くことにしました。

# Issueタイトル

本文はできましたがタイトルがまだできていません。
他のIssueのタイトルを見てみると先頭に[ViewPager2]と書いてあるものが多かったのでそれに倣うことにしました。

# Issue作成とその後

ここまでの流れの結果できあがったのが以下のIssueです。

* [\[ViewPager2\] Behavior of horizontal scroll is wrong when using ViewPager2 in CoordinatorLayout \[138668210\] - Visible to Public - Issue Tracker](https://issuetracker.google.com/issues/138668210)

(Issue作ったあとで謎挙動のあったバージョンを書き忘れているのに気づき、慌ててコメントを書いています。)

半日程度でリアクションがありました
> More information on this in:
> http://issuetracker.google.com/124042228#comment3
> http://issuetracker.google.com/124042228#comment7

他のIssueのコメントに似たような報告があるようでそっち見てくれ とのこと

まじかよ。すでに報告あったのかよ。しかもコメントかよ。
など思いながら内容を確認し 「多分そのコメントと同じ問題だと思うよ(震え声)」 とコメントを返しました

## そして次の日
<img width="255" alt="SnapCrab_NoName_2019-12-21_0-29-25_No-00.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41839/8f769250-4b53-2d6a-d1a3-0ab22edb96f6.png">

ん？ステータスがAssignedになった！？
これは対応してくれるということだろうか？
（初めてなのでよくわからない）

## そこから６日後

下のコメントにあったサンプル調査した旨のコメントが来ました。更に調査するとのこと
> http://issuetracker.google.com/124042228#comment7

## 次の日
<img width="305" alt="SnapCrab_NoName_2019-12-21_0-38-53_No-00.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41839/4d177b15-16fb-7503-9893-8019e736a478.png">

あれ？担当者変わった？
ステータスもAcceptedに変わった。調査担当と修正担当は別ということか？
（初めてなのでどういうことかよくわかってない）

## そこから８日後

突然コミットログのようなコメントが来ました。
修正が終わってブランチにコミットされた？ようです。

今回の不具合はViewPager2の不具合というよりその内部で使用しているRecyclerViewに原因があったようです。

## そして・・・

<img width="566" alt="SnapCrab_NoName_2019-12-21_0-53-12_No-00.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41839/3e55561d-8b16-7ce9-7fb0-6d4fc013d994.png">

修正が終わり、当時のrecyclerviewの次期バージョン1.1.0-beta04 に反映されるとのこと。
ステータスもfixedに変わっています。

実際にリリースされたときのリリースノートが以下
https://developer.android.com/jetpack/androidx/releases/recyclerview#1.1.0-beta04
> Fixed a bug where RecyclerView was not disallowing touch intercept when nested pre-scrolling caused a NestedScrollingParent to scroll (b/138668210, aosp/1105373). This benefits libraries such as ViewPager2.


b/138668210が私が報告したIssueですね。 
(こういう場所に報告したissueが載るのはなんだか嬉しいものですね)

ということで修正版がリリースされたことが確認できました。

また、肝心のViewPager2ですが、1.0.0-beta04でRecyclerViewの修正バージョンに依存が更新されたことが確認できました

https://developer.android.com/jetpack/androidx/releases/viewpager2#1.0.0-beta04
> A number of issues were fixed in other components to work better with ViewPager2: RecyclerView, NestedScrollView, and Navigation.



# まとめ

Issue報告ってそんなに難しくなかったよ ということが伝わればいいなと思いこの記事を書きました。
実際、こんなにも拙い英語でも意味は伝わっていたようなので
不具合の内容にもよりますが英語もそこまで問題にはならないかと思います。

今回Issueの作成から修正版のリリースまで1ヶ月と少し程度でした。
これが早いほうなのか遅いほうなのかわかりませんが、参考までに。


1点心残りは自分でもサンプル作って公開してればもっと早く調査とか終わったのかな？という点です。
次回があればサンプルも用意しよう。

以上