Android Developer Toolsのバグを
見つけて直してもらった話
@kikuchy
Who?
● @kikuchy
● 菊池 紘
● 株式会社Diverse(ミクシィグループ)
● 新規アプリの開発が凍結されました
● 求む、Androidエンジニア!!(iOSエンジニアも)
突然ですが
Android Lintのバグを踏みました
val header: Map<String, String> = request.requestHeaders
header.forEach { (key, value) ->
addHeader(key, value)
}
↓
Android Lint reports "Error: Call requires API level 24 (current min is 21):
java.util.Map#forEach [NewApi]" for calling kotlin.collections.Map#forEach.
Android Lintの挙動が変
● kotlin.collection.Map#forEachが、java.util.Map#forEachと勘違いされている
● java.util.Map#forEachはJava 8から
● すなわちAPI Level 24からしか使えない
● ので、「minSdkVersion 21のプロジェクトで使うな」とLintが怒り出した
こまる
直せる人に直してもらおう
やったこと
● 類似のバグ報告をパクってレポートを出す
● 社内の人に呼びかけて⭐をつけてもらう
● 問題が再現する小さなプロジェクトを用意して添付する
類似のバグ報告をパクってレポートを出す(1)
● まずどこに報告したら良いのか調べる
http://b.android.com/
● 大項目を選ぶ
○ 今回はAndroid Lintの問題なので Android Developer Tools > Lint
● 似たようなバグがないか探す
○ 今回は “Call requires API level” “NewApi” とかで探した
○ もし同じバグが見つかったら ⭐して神棚にドロイド君を祀る
● 今回は似たようなレポートが見つかった
○ Iterable.forEachがJava8のforEachだと思われてしまう問題
類似のバグ報告をパクってレポートを出す(2)
● 英語の作文能力がなくても大丈夫
● タイトルはコピペして一部を変えただけ
● 本文フォーマットも大抵似たようなもの
○ 環境
○ 再現したコードスニペット
○ エラーメッセージ
● 出した
○ https://issuetracker.google.com/issues/70965444
社内の人に呼びかけて⭐をつけてもらう
● ずるい?
● 自分たち以外が同じバグに遭遇し、このレポートがその人の目に止まり、
さらにその人が⭐を付けてくれる確率はいかほどか…
● 自分たちで⭐を付けるしか、直してもらえる可能性を上げる方法がほぼ無い
問題が再現する小さなプロジェクトを添付する
● 「問題が再現するサンプルプロジェクトをくれないか」と言われたので
● 新規プロジェクトを作って、zipで固めて、レポートに添付
● 最初から用意しておけばよかった
まとめ
● SDKにバグを見つけたら
○ 類似のバグ報告をパクってレポートを出す
■ 他のレポートの体裁をパクっても怒られない
○ 社内の人に呼びかけて ⭐をつけてもらう
■ ⭐の数はパワー
○ 問題が再現する小さなプロジェクトを用意して添付する
■ できるなら最初から添付しておいたほうが良い
宣伝(1)
DroidKaigi 2018のiOSアプリをKotlin/Nativeで作ってます!
https://github.com/kikuchy/DroidKaigi2018iOS
宣伝(2)
弊社DiverseはDroidKaigi 2018の
プラチナスポンサーです!
なぜか同人誌を配布しますので、
是非お立ち寄りください!!
PDFでも公開します。
宣伝(3)
● DiverseではAndroid(Kotlin, Java), iOS(Swift), サーバー(Ruby, Kotlin)
開発ができるエンジニアを募集中です
● 特に新規事業のiOS開発チームリーダー募集に注力中
● 自分の力でサービスを成長させることに興味がある方、
お話させてください!
DM to @kikuchy or https://diverse-inc.co.jp/recruit/
Android Developer Toolsのバグを見つけて直してもらった話

Android Developer Toolsのバグを見つけて直してもらった話