Slide 1

Slide 1 text

Kotlinのリストのmap関数のコード 自動生成されてるって! @RyotaMurohoshi 2018/08/25(土) Kotlin Fest LT

Slide 2

Slide 2 text

Kotlin 1.3にて 符号なし整数値型が登場予定! ※現状はまだExperimental

Slide 3

Slide 3 text

ソースコードを覗いてみましょう! https://github.com/JetBrains/kotlin/tree/v1.3-M1/libraries/stdlib/unsigned/src/kotlin

Slide 4

Slide 4 text

UInt

Slide 5

Slide 5 text

UShort

Slide 6

Slide 6 text

No content

Slide 7

Slide 7 text

ほぼ一緒じゃん! ※ ここチョイ笑いするとこですよ

Slide 8

Slide 8 text

ところでちょっと気になるコメントに 気が付きましたか?

Slide 9

Slide 9 text

UInt

Slide 10

Slide 10 text

拡大すると・・・

Slide 11

Slide 11 text

ここ!!!

Slide 12

Slide 12 text

符号なし整数値型のコード 自動生成されてる! ※ ここ「へー」っていうことですよ!

Slide 13

Slide 13 text

`kotlin/generators`ディレクトリの `builtins/generateBuiltIns.kt`をみてね! https://github.com/JetBrains/kotlin/blob/v1.3-M1/generators/builtins/arrayIterators.kt `ranges`や`iterator`も生成されているよ!

Slide 14

Slide 14 text

ところで、Kotlinのstdlib・・・

Slide 15

Slide 15 text

https://github.com/JetBrains/kotlin/tree/1.2.60/libraries/stdlib Standard LibraryのReadMeには・・・

Slide 16

Slide 16 text

https://github.com/JetBrains/kotlin/tree/1.2.60/libraries/stdlib Standard LibraryのReadMeには・・・

Slide 17

Slide 17 text

そう、stdlibにも自動生成されたコードが! ※ ここ「へー」っていうことですよ!

Slide 18

Slide 18 text

どんなコードが自動生成されている? みんながよく使うアレも自動生成されている!

Slide 19

Slide 19 text

これ!map拡張関数! みんなが大好きリストのmap関数!

Slide 20

Slide 20 text

map拡張関数の実装も・・・? https://github.com/JetBrains/kotlin/blob/1.2.60/libraries/stdlib/common/src/generated/_Collections.kt#L1217

Slide 21

Slide 21 text

こいつも自動生成!!! ※ ここみんなが大きな声で「へー」っていうことですよ!

Slide 22

Slide 22 text

そう、mapもfilterも 実は、自動生成されているんです! ※ ここ”も”みんなが大きな声で「へー」っていうことですよ!

Slide 23

Slide 23 text

kotlin/libraries/tools/kotlin-stdlib-gen https://github.com/JetBrains/kotlin/tree/v1.3-M1/libraries/tools/kotlin-stdlib-gen

Slide 24

Slide 24 text

kotlin/libraries/tools/kotlin-stdlib-gen https://github.com/JetBrains/kotlin/tree/v1.3-M1/libraries/tools/kotlin-stdlib-gen Kotlinでのコード生成に興味があったら、読んでみて! @DslMarkerも利用した、コードジェネレータDSL! KDocも、DSLでいい感じに作っている!

Slide 25

Slide 25 text

kotlin/libraries/tools/kotlin-stdlib-gen https://github.com/JetBrains/kotlin/tree/v1.3-M1/libraries/tools/kotlin-stdlib-gen • `src/generators/GenerateStandardLib.kt`がエントリポイント • `src/templates/dsl`以下に、DSLのためのクラス群がある • `src/templates`以下に、DSLを利用したメソッドを実際に生成するクラス群

Slide 26

Slide 26 text

まとめ • Kotlinのコード、自動生成されているよ! • `kotlin/generators/builtins` • `kotlin/libraries/tools/kotlin-stdlib-gen` • stdlibのコード、DSLやコードジェネレーターの参考になるよ! • ドメインがKotlinだから、他の知識なしでも理解が!

Slide 27

Slide 27 text

詳しくはブログで!

Slide 28

Slide 28 text

2018/08/25(土) Kotlin Fest LT @RyotaMurohoshi リストのmap関数のコード 自動生成されてるって!

Slide 29

Slide 29 text

時間が余ったのでみなさん大きな声で 「へーーー!」 って言っください! リストのmap関数のコード 自動生成されてるって!

Slide 30

Slide 30 text

Kotlinかわいい!