Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
PermissionsDispatcherにPRをマージしてもらった話
Search
Tomoya Miwa
June 26, 2018
Programming
1
530
PermissionsDispatcherにPRをマージしてもらった話
Tomoya Miwa
June 26, 2018
Tweet
Share
More Decks by Tomoya Miwa
See All by Tomoya Miwa
Re:VIEWで書いた「Compose で Android の edge-to-edge に対応する」をRoo Codeで発表資料にしてもらった
tomoya0x00
0
420
Compose 1.7のTextFieldはPOBox Plusで日本語変換できない
tomoya0x00
0
380
できる!ComposeでCollapsingToolbar
tomoya0x00
0
970
Compose の LazyColumn パフォーマンス改善で取り組んだこと
tomoya0x00
0
2.3k
ComposeのMutableStateってどうやってLocal Unit Testすれば良いの??
tomoya0x00
0
1.1k
意外と簡単?Navigation rail導入のお話
tomoya0x00
0
1.5k
Kotlin Coroutines Flow を触ってみた話し
tomoya0x00
2
840
Android for Carsのお話し
tomoya0x00
1
1.1k
熟成されたアプリのmulti module化(halfway)
tomoya0x00
2
940
Other Decks in Programming
See All in Programming
git worktree × Claude Code × MCP ~生成AI時代の並列開発フロー~
hisuzuya
1
570
AIと”コードの評価関数”を共有する / Share the "code evaluation function" with AI
euglena1215
1
170
#kanrk08 / 公開版 PicoRubyとマイコンでの自作トレーニング計測装置を用いたワークアウトの理想と現実
bash0c7
1
770
LT 2025-06-30: プロダクトエンジニアの役割
yamamotok
0
760
Quand Symfony, ApiPlatform, OpenAI et LangChain s'allient pour exploiter vos PDF : de la théorie à la production…
ahmedbhs123
0
190
Claude Code + Container Use と Cursor で作る ローカル並列開発環境のススメ / ccc local dev
kaelaela
10
5.3k
Startups on Rails in Past, Present and Future–Irina Nazarova, RailsConf 2025
irinanazarova
0
110
Agentic Coding: The Future of Software Development with Agents
mitsuhiko
0
100
ペアプロ × 生成AI 現場での実践と課題について / generative-ai-in-pair-programming
codmoninc
1
18k
AI時代の『改訂新版 良いコード/悪いコードで学ぶ設計入門』 / ai-good-code-bad-code
minodriven
14
5k
プロダクト志向なエンジニアがもう一歩先の価値を目指すために意識したこと
nealle
0
130
Google Agent Development Kit でLINE Botを作ってみた
ymd65536
2
250
Featured
See All Featured
How to Ace a Technical Interview
jacobian
278
23k
Fantastic passwords and where to find them - at NoRuKo
philnash
51
3.3k
Why You Should Never Use an ORM
jnunemaker
PRO
58
9.4k
The Power of CSS Pseudo Elements
geoffreycrofte
77
5.9k
Building Applications with DynamoDB
mza
95
6.5k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
161
15k
Raft: Consensus for Rubyists
vanstee
140
7k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
KATA
mclloyd
30
14k
Measuring & Analyzing Core Web Vitals
bluesmoon
7
510
Designing for humans not robots
tammielis
253
25k
Building an army of robots
kneath
306
45k
Transcript
PermissionsDispatcherにPRをマージしてもらった話し tomoya0x00 shibuya.apk #26
簡単に⾃⼰紹介 tomoya0x00 Twitter, GitHub, Qiita Android, Embedded system, BLE/BT, iOS
DeNA Co., Ltd. Automotive Business Unit.
初めてまともにOSSのPRを書いてマージしてもらった これまでもtypo修正とかはあったんだけど… 皆様がPRを出すきっかけになれば 技術的な話しはほとんどしません
PRのきっかけ
PRのきっかけ KotlinでStateMachineのライブラリを作ろうと思った もしannotation processingでつくるならKotlinPoet触った⽅が良いかなーとつぶやいた
ある⼈から"KotlinPoetを使ってるプロジェクトが︕コン トリどうです︖"と、replyが届いた
それがPermissionsDispatcher
とりあえずissuesを⾒てみる
None
contributionwelcome タグがあるのでみてみた
⼀つめ Kotlin generation doesn't keep types of Array or ArrayList
PermissionsDispatcherで⽣成したコードで引数の型が保持されないケースがある 難しそう KotlinPoetに依存して起きているみたいな事がコメントに書かれている︖ PermissionsDispatcherの動きを知るためにも、がーっと⾒てみた
あきらめた どうやら現在はKotlinPoet的にも⼝が⽤意されてないのでできないっぽい 調査する過程でPermissionsDispatcherの動きは何となくわかったのでOKとする
あきらめることも⼤事
次いってみよう
⼆つめ Fragment's onActivityResult() is not called when requesting SYSTEM_ALERT_WINDOW permission
Fragmentで @NeedsPermission(Manifest.permission.SYSTEM_ALERT_WINDOW) の結果が受け 取れない FragmentではなくActivityのonActivityResult()が呼ばれてしまう activity.startActivityForResult() -> fragment.startActivityForResult() とすれば良い SYSTEM_ALERT_WINDOWに対応していたのを初めて知った・・・
再現確認してみよう
そもそもビルドが通らない︕
そもそもビルドが通らない︕ ⽣成したコードで Fragment.getActivity().hoge みたいなコードがあるけど、 Fragment.getActivity() は nullable なので Support Library
の v27 から︖ とりあえず !! で逃げる コード⽣成する側で nullable 判定して処理分岐はちょと⼤変そうだったので後回し
とりあえず、再現確認はできるようになった
ふと、コードを眺めていて思った
もしかしてこれ、Kotlin版だけの問題なんじゃね︖
もしかしてこれ、Kotlin版だけの問題なんじゃね︖ Java版とKotlin版は完全にソースが別 どちらも基本的にはKotlinで書かれている Java版はJavaPoetでコード⽣成 Kotlin版はKotlinPoetでコード⽣成 issueで指摘されている問題、試して⾒るとJava版では発⽣しなかった
Java版をベースにKotlin版を修正
がっとPRつくってなげる WWDCのキーノート中にやってた・・・
さっそくレビューして貰えた !! の件は気になるけど、あとで対応しようねーという流れでマージして貰った
祝︕マージ
実際にやってみて - その1 いつもとは違う脳みそを使った気がする 初めて⾒るソースの理解には時間がかかる でも、進める内にある程度理解できるようになって楽しかった︕
実際にやってみて - その2 英語ツラい がんばる Google翻訳も使う メインコントリビューターの⽅々は最悪⽇本語でやりとりできるのでハードル低い つぶやきに反応してくださったり
実際にやってみて - その3 「オープンソースは別腹」という⾔葉が少し実感できた 普段お世話になっているOSSに(少しでも)貢献できたのは嬉しい︕
今後
新たなるissue
新たなるissue Handling support fragment's getActivity() !! をどうにかしよう、というissue 要はnullチェックを追加すれば良い 楽勝じゃん︖
楽勝じゃん︖と思ったら
テストか必ず失敗する
テストか必ず失敗する Java版はcompiling-testで実際にコード⽣成し、それのユニットテストを実施している このcompiling-testがWindowsだとうまく動かないことがわかった classpathの区切り⽂字がOSごとに異なるのが考慮されていない ただし、headなら動く・・・が、リリースされていない
ようやくスタート地点にたてた︖
ありがとうございました︕ Let's send PR!