SlideShare a Scribd company logo
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のバグを見つけて直してもらった話

More Related Content

More from Hiroshi Kikuchi

今更聞けない? Androidのテストのいろは
今更聞けない? Androidのテストのいろは今更聞けない? Androidのテストのいろは
今更聞けない? Androidのテストのいろは
Hiroshi Kikuchi
 
新規Androidアプリ開発において何より大切なこと
新規Androidアプリ開発において何より大切なこと新規Androidアプリ開発において何より大切なこと
新規Androidアプリ開発において何より大切なこと
Hiroshi Kikuchi
 
モバイルアプリ開発をグッと楽にするKotlinの便利なところ3選
モバイルアプリ開発をグッと楽にするKotlinの便利なところ3選モバイルアプリ開発をグッと楽にするKotlinの便利なところ3選
モバイルアプリ開発をグッと楽にするKotlinの便利なところ3選
Hiroshi Kikuchi
 
JUnit5とAndroidのテスト
JUnit5とAndroidのテストJUnit5とAndroidのテスト
JUnit5とAndroidのテスト
Hiroshi Kikuchi
 
KotlinJSって正直どうなん
KotlinJSって正直どうなんKotlinJSって正直どうなん
KotlinJSって正直どうなん
Hiroshi Kikuchi
 
画面状態を抽象化してテスタブル設計ライフを送ろう
画面状態を抽象化してテスタブル設計ライフを送ろう画面状態を抽象化してテスタブル設計ライフを送ろう
画面状態を抽象化してテスタブル設計ライフを送ろう
Hiroshi Kikuchi
 
テストコードをアプリケーションコードと同じ階層に置きたい
テストコードをアプリケーションコードと同じ階層に置きたいテストコードをアプリケーションコードと同じ階層に置きたい
テストコードをアプリケーションコードと同じ階層に置きたい
Hiroshi Kikuchi
 
Android thingsやってみた
Android thingsやってみたAndroid thingsやってみた
Android thingsやってみた
Hiroshi Kikuchi
 
どうしてコードはレガシーになるのか
どうしてコードはレガシーになるのかどうしてコードはレガシーになるのか
どうしてコードはレガシーになるのか
Hiroshi Kikuchi
 
Androidの世界を離れて異文化留学してみた
Androidの世界を離れて異文化留学してみたAndroidの世界を離れて異文化留学してみた
Androidの世界を離れて異文化留学してみた
Hiroshi Kikuchi
 
なるべくコードを書かないAndroid開発
なるべくコードを書かないAndroid開発なるべくコードを書かないAndroid開発
なるべくコードを書かないAndroid開発
Hiroshi Kikuchi
 
開発チームにKotlinを導入した話
開発チームにKotlinを導入した話開発チームにKotlinを導入した話
開発チームにKotlinを導入した話
Hiroshi Kikuchi
 
3分で作る Kotlin Friendly な API
3分で作る Kotlin Friendly な API3分で作る Kotlin Friendly な API
3分で作る Kotlin Friendly な API
Hiroshi Kikuchi
 
Designing Auto Generated Codes
Designing Auto Generated CodesDesigning Auto Generated Codes
Designing Auto Generated Codes
Hiroshi Kikuchi
 
C#でiPhone & Androidアプリ!
C#でiPhone & Androidアプリ!C#でiPhone & Androidアプリ!
C#でiPhone & Androidアプリ!
Hiroshi Kikuchi
 
Ideatter : Tech-on2011決勝でのプレゼン資料
Ideatter : Tech-on2011決勝でのプレゼン資料Ideatter : Tech-on2011決勝でのプレゼン資料
Ideatter : Tech-on2011決勝でのプレゼン資料
Hiroshi Kikuchi
 

More from Hiroshi Kikuchi (16)

今更聞けない? Androidのテストのいろは
今更聞けない? Androidのテストのいろは今更聞けない? Androidのテストのいろは
今更聞けない? Androidのテストのいろは
 
新規Androidアプリ開発において何より大切なこと
新規Androidアプリ開発において何より大切なこと新規Androidアプリ開発において何より大切なこと
新規Androidアプリ開発において何より大切なこと
 
モバイルアプリ開発をグッと楽にするKotlinの便利なところ3選
モバイルアプリ開発をグッと楽にするKotlinの便利なところ3選モバイルアプリ開発をグッと楽にするKotlinの便利なところ3選
モバイルアプリ開発をグッと楽にするKotlinの便利なところ3選
 
JUnit5とAndroidのテスト
JUnit5とAndroidのテストJUnit5とAndroidのテスト
JUnit5とAndroidのテスト
 
KotlinJSって正直どうなん
KotlinJSって正直どうなんKotlinJSって正直どうなん
KotlinJSって正直どうなん
 
画面状態を抽象化してテスタブル設計ライフを送ろう
画面状態を抽象化してテスタブル設計ライフを送ろう画面状態を抽象化してテスタブル設計ライフを送ろう
画面状態を抽象化してテスタブル設計ライフを送ろう
 
テストコードをアプリケーションコードと同じ階層に置きたい
テストコードをアプリケーションコードと同じ階層に置きたいテストコードをアプリケーションコードと同じ階層に置きたい
テストコードをアプリケーションコードと同じ階層に置きたい
 
Android thingsやってみた
Android thingsやってみたAndroid thingsやってみた
Android thingsやってみた
 
どうしてコードはレガシーになるのか
どうしてコードはレガシーになるのかどうしてコードはレガシーになるのか
どうしてコードはレガシーになるのか
 
Androidの世界を離れて異文化留学してみた
Androidの世界を離れて異文化留学してみたAndroidの世界を離れて異文化留学してみた
Androidの世界を離れて異文化留学してみた
 
なるべくコードを書かないAndroid開発
なるべくコードを書かないAndroid開発なるべくコードを書かないAndroid開発
なるべくコードを書かないAndroid開発
 
開発チームにKotlinを導入した話
開発チームにKotlinを導入した話開発チームにKotlinを導入した話
開発チームにKotlinを導入した話
 
3分で作る Kotlin Friendly な API
3分で作る Kotlin Friendly な API3分で作る Kotlin Friendly な API
3分で作る Kotlin Friendly な API
 
Designing Auto Generated Codes
Designing Auto Generated CodesDesigning Auto Generated Codes
Designing Auto Generated Codes
 
C#でiPhone & Androidアプリ!
C#でiPhone & Androidアプリ!C#でiPhone & Androidアプリ!
C#でiPhone & Androidアプリ!
 
Ideatter : Tech-on2011決勝でのプレゼン資料
Ideatter : Tech-on2011決勝でのプレゼン資料Ideatter : Tech-on2011決勝でのプレゼン資料
Ideatter : Tech-on2011決勝でのプレゼン資料
 

Recently uploaded

CO2排出量見える化・削減・報告クラウド「アスエネ」サービス紹介_Saleshub.pdf
CO2排出量見える化・削減・報告クラウド「アスエネ」サービス紹介_Saleshub.pdfCO2排出量見える化・削減・報告クラウド「アスエネ」サービス紹介_Saleshub.pdf
CO2排出量見える化・削減・報告クラウド「アスエネ」サービス紹介_Saleshub.pdf
yamamotominami
 
Grokking Simplicity探訪
Grokking Simplicity探訪Grokking Simplicity探訪
Grokking Simplicity探訪
Yoshitaka Kawashima
 
受発注バスターズ説明資料  株式会社batton Saleshub掲載用.pdf
受発注バスターズ説明資料  株式会社batton Saleshub掲載用.pdf受発注バスターズ説明資料  株式会社batton Saleshub掲載用.pdf
受発注バスターズ説明資料  株式会社batton Saleshub掲載用.pdf
ooishi1
 
NIST Cybersecurity Framework 2.0の変更点整理をしよう
NIST Cybersecurity Framework 2.0の変更点整理をしようNIST Cybersecurity Framework 2.0の変更点整理をしよう
NIST Cybersecurity Framework 2.0の変更点整理をしよう
You&I
 
アジャイルの30年(Tree Decades of Agileというブログ記事に関する要約)
アジャイルの30年(Tree Decades of Agileというブログ記事に関する要約)アジャイルの30年(Tree Decades of Agileというブログ記事に関する要約)
アジャイルの30年(Tree Decades of Agileというブログ記事に関する要約)
You&I
 
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 4.0.0対応)
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 4.0.0対応)FIWARE Orion Context Broker コンテキスト情報管理 (Orion 4.0.0対応)
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 4.0.0対応)
fisuda
 

Recently uploaded (6)

CO2排出量見える化・削減・報告クラウド「アスエネ」サービス紹介_Saleshub.pdf
CO2排出量見える化・削減・報告クラウド「アスエネ」サービス紹介_Saleshub.pdfCO2排出量見える化・削減・報告クラウド「アスエネ」サービス紹介_Saleshub.pdf
CO2排出量見える化・削減・報告クラウド「アスエネ」サービス紹介_Saleshub.pdf
 
Grokking Simplicity探訪
Grokking Simplicity探訪Grokking Simplicity探訪
Grokking Simplicity探訪
 
受発注バスターズ説明資料  株式会社batton Saleshub掲載用.pdf
受発注バスターズ説明資料  株式会社batton Saleshub掲載用.pdf受発注バスターズ説明資料  株式会社batton Saleshub掲載用.pdf
受発注バスターズ説明資料  株式会社batton Saleshub掲載用.pdf
 
NIST Cybersecurity Framework 2.0の変更点整理をしよう
NIST Cybersecurity Framework 2.0の変更点整理をしようNIST Cybersecurity Framework 2.0の変更点整理をしよう
NIST Cybersecurity Framework 2.0の変更点整理をしよう
 
アジャイルの30年(Tree Decades of Agileというブログ記事に関する要約)
アジャイルの30年(Tree Decades of Agileというブログ記事に関する要約)アジャイルの30年(Tree Decades of Agileというブログ記事に関する要約)
アジャイルの30年(Tree Decades of Agileというブログ記事に関する要約)
 
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 4.0.0対応)
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 4.0.0対応)FIWARE Orion Context Broker コンテキスト情報管理 (Orion 4.0.0対応)
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 4.0.0対応)
 

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