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
Kotlin Contribution Guide
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
kobito-kaba
December 06, 2017
Programming
320
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Kotlin Contribution Guide
Kotlinへのコントリビューションを2パターン例に上げて、どんな感じでやるのか説明します。
kobito-kaba
December 06, 2017
More Decks by kobito-kaba
See All by kobito-kaba
新規プロジェクトでやってよかったことまとめ
kobitokaba
1
920
Youtube like BottomNavigation
kobitokaba
0
270
Modularizing and Refactoring Android App with Clean Architecture
kobitokaba
0
300
Slice Your App
kobitokaba
2
1.3k
Inside Jetpack
kobitokaba
2
170
Generating and Transforming Kotlin code
kobitokaba
0
140
Conference Tourism
kobitokaba
0
300
Inside Jetpack Architecture Components
kobitokaba
0
250
Kotlinもう一歩
kobitokaba
8
17k
Other Decks in Programming
See All in Programming
エンジニア向け会社紹介/Findy Company Profile
findyinc
6
360k
気圧・高度・GPSを記録&可視化するアプリ「Koudo」を作った話
hjmkth
1
360
AI時代の仕事技芸論〜ソフトウェア開発で「遊ぶように働く」職人的熟達のすすめ(スクフェス仙台 2026バージョン)
kuranuki
0
650
技術記事、 専門家としてのプログラマ、 言語化
mizchi
14
7.5k
ランチタイムLT会3周年!ランチタイムLT会を3年間続けられたお話
y0hgi
1
140
Apache Hive: Toward a Cloud Native Lakehouse
okumin
0
130
【やさしく解説 設計編・中級 #4】ルールの寿命と、システムの年輪
panda728
PRO
2
140
ITヒヤリハットを整理してみた ~ライフサイクルと原因から考える再発防止策~
koukimiura
1
110
20260623_Loop Engineeringで自分の分身の問い合わせBotを作る
ryugen04
0
220
自作OSでスライド発表する
uyuki234
1
3.8k
Honoでのサプライチェーン侵害対策 〜 3つのライブラリに学ぶ
yusukebe
7
1.9k
鹿野さんに聞く!『TypeScriptコードレシピ集』で磨く実践力
tonkotsuboy_com
4
1.1k
Featured
See All Featured
Crafting Experiences
bethany
1
220
Code Reviewing Like a Champion
maltzj
528
40k
The untapped power of vector embeddings
frankvandijk
2
1.8k
Art, The Web, and Tiny UX
lynnandtonic
304
22k
Making Projects Easy
brettharned
120
6.7k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
67
56k
Testing 201, or: Great Expectations
jmmastey
46
8.2k
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
1
230
WENDY [Excerpt]
tessaabrams
11
38k
We Have a Design System, Now What?
morganepeng
55
8.2k
Building Flexible Design Systems
yeseniaperezcruz
330
40k
Joys of Absence: A Defence of Solitary Play
codingconduct
1
410
Transcript
Kotlin Contributing Guide 森 洋之(ヤフー株式会社) GDG神戸 Android Oreo with Kotlin&Android Studio
3.0勉強会
今日話すこと ・Kotlinが公式になったし ・この機会にContributeしてみませんか ・かんたんだよ!
Kotlin、公式の開発言語になりました ・ふじゅうぶんな ・Java8対応を待つよりも ・Kotlinをつかったほうが ・ずっと快適
各地のセミナーで大人気の話題です
せっかくなので、Contributeしてみませんか
Oh, OK daddy! 写真:アフロ
But, How... 写真:アフロ
開発環境のセットアップ
開発環境のセットアップ ※開発環境のセットアップについては、 すべてREADMEに書いてあります JetBrains/kotlin
必要なもの ・JDK JDKの1.6, 1.7, 1.8がすべて必要です。 JDK 1.6 for Mac for Others(要ログイン) JDK
1.7 Oracle(要ログイン) JDK 1.8 Oracle ・IntelliJ IDEA Community Editionで大丈夫 IntelliJ IDEA ・Apache Ant 1.9.4〜(たぶんもう入ってる)Apache Ant Project
JDK 1.6〜1.8 環境変数も設定します JAVA_HOME="path to JDK 1.8" JDK_16="path to JDK
1.6" JDK_17="path to JDK 1.7" JDK_18="path to JDK 1.8" java_homeコマンドを使うと楽です JAVA_HOME = `/usr/libexec/java_home -v 1.8`
fork, clone わりと時間かかります JetBrains/kotlin
dependenciesの更新 わりと時間かかります ant -f update_dependencies.xml ant -f build.xml
IntelliJで開く IntelliJ IDEAのプロジェクト用ファイルが含まれているので、 そのまま開くことができます。
Kotlin pluginのインストール 最新のKotlin pluginをインストールする
Project Structureの設定 Project SDKの設定、 SDKsにJDK 1.6, 1.7, 1.8を追加
Run! ビルドしたKotlin Pluginの入ったIntelliJ IDEAが起動するので、いろいろ試せる。
Contributing
issueを修正する ・issueはYouTrackで管理されているので、ここから未解決のものを探して修正するのが早い ・すぐに修正されるので、手を挙げてから始めたほうが、悲しい思いをしないで済むかも ・新規featureの提案も歓迎されるけど、 mergeには時間かかると思う
試しに2つ、issueを見てみましょう ・KT-20023 Java to Kotlin変換に関するbug ・KT-17204 Quickfixを追加してほしいfeature
Ok, Let’s try! 写真:アフロ
概要 @Nonnull(when = When.ALWAYS) @TypeQualifierDefault(ElementType.TYPE_USE) public @interface MaybeTypeuse { }
↑このJavaコードをktファイルにコピペしたら、 ↓こうなる @TypeQualifierDefault(ElementType.TYPE_USE) annotation class MaybeTypeuse この場合の@Nonnullは意味があるやつなので、消すべきじゃない KT-20023
概要 ・Java to Kotlin変換の関連ファイルは、j2kフォルダ内にある ・テストは、testDataフォルダ内に 変換前のJavaコード、変換後のKotlinコードを置いて、 生成する KT-20023
KT-20023 まずテスト j2k/testData/fileOrElement/issues/ before kt-20023.java after kt-20023.kt 変換前Javaコード 変換後Kotlinコード
KT-20023 kt-20023.java kt-20023.kt Before After これが、こう変換されること、という内容のテストになる
KT-20023 ・run “Generate Tests” ・テストコードが生成されます ・run “J2K Tests”で実行されます
KT-20023 実装 ・Java to Kotlin変換の関連ファイルは、j2kフォルダ内にある ・JavaToKotlinConverter#elementsToKotlin() ・Converter#convert() あたりを探る ・デバッグも使えるから、楽に探れます
KT-20023 JavaToKotlinConverter#elementsToKotlin() 中間生成物を作って 結果をまとめる
KT-20023 Converter#convert() ※コピペするか、ファイル単位で変換するかで、途中経過が違う
KT-20023 Converter#convert()
KT-20023 AnnotationConverter#convertAnnotations() 特定のアノテーションを削除している
KT-20023 AnnotationConverter#convertAnnotations() 削除すべきアノテーションのなかにある
KT-20023 AnnotationConverter#convertAnnotations() アノテーション型の場合は削除しない ここを こうしてみる
KT-20023 Run!
Ok, Next! 写真:アフロ
KT-17204 概要 open class Plant{ var size:Int = 0 fun
grow(size :Int):Unit{ size += size //val cannot be reassigned } } ↑ こういう場合に、 this.size += sizeとするQuickFixほしい
KT-17204 概要 ・Kotlin pluginの関連ファイルは、ideaフォルダ内にある ・QuickFixに関するものは、src/org.jetbrains.kotlin.idea.quickfix ・テストは idea/testData/quickFixにQuickFixでの変換前後のKotlinコードを置いて、生成する
KT-17204 まずテスト idea/testData/quickFix/ before addThis/basic.kt after addThis/basic.kt.after 変換前 変換後
KT-17204 addThis/basic.kt addThis/basic.kt.after Before After これが、こう変換されること、という内容のテストになる
KT-17204 ・run “Generate Tests” ・テストコードが生成されます run “All IDEA Plugin Tests”
※すごい時間かかる
KT-17204 ・Kotlin pluginの関連ファイルは、ideaフォルダ内にある ・QuickFixに関するものは、src/org.jetbrains.kotlin.idea/quickfix 1. 必要なQuickFix用のクラスを作成 2. そのQuickFix作成用のファクトリクラスを作成 3. QuickFixRegister内で、対応するエラーに対して、ファクトリクラスを登録する
KT-17204 QuickFix用のクラス作成 KotlinQuickFixActionを継承する
KT-17204 QuickFix作成用のファクトリクラスを作成
KT-17204 QuickFixRegister内で、対応するエラーに対して、ファクトリクラスを登録する
KT-17204 Run!
Very easy! 写真:アフロ
〜おわり〜 写真:アフロ