Spring boot劇的ビフォーアフター

91
SpringBoot + Kotlin 劇劇劇劇劇劇劇劇劇劇 @orekyuu

Transcript of Spring boot劇的ビフォーアフター

Page 1: Spring boot劇的ビフォーアフター

SpringBoot + Kotlin劇的ビフォーアフター@orekyuu

Page 2: Spring boot劇的ビフォーアフター

自己紹介• @orekyuu• 京都コンピュータ学院 情報科学科 4 回生• IDE は IntelliJ IDEA が好き

Page 3: Spring boot劇的ビフォーアフター

_人人人人人人人人人_> 突然の宗教戦争 < ̄ Y^Y^Y^Y^Y^Y^Y^Y ̄

Page 4: Spring boot劇的ビフォーアフター

今回する話

Page 5: Spring boot劇的ビフォーアフター

Kotlin は Androidだけじゃないぞ!

Page 6: Spring boot劇的ビフォーアフター

そんな話

Page 7: Spring boot劇的ビフォーアフター

この会場で Kotlinを使っている方会場の 10 割くらいを想定

Page 8: Spring boot劇的ビフォーアフター

Kotlin を Androidで使っている方Kotlin を使ってる方の 8 割を想定

Page 9: Spring boot劇的ビフォーアフター

Kotlin を Android以外でも使っている方

Page 10: Spring boot劇的ビフォーアフター

SpringInitializer の Languageで Kotlin が選べるようになった!

Page 11: Spring boot劇的ビフォーアフター
Page 12: Spring boot劇的ビフォーアフター
Page 13: Spring boot劇的ビフォーアフター

( っ’ ω’c) ほう……

Page 14: Spring boot劇的ビフォーアフター
Page 15: Spring boot劇的ビフォーアフター

( っ’ ω’c) 悪くない……

Page 16: Spring boot劇的ビフォーアフター
Page 17: Spring boot劇的ビフォーアフター

( っ’ ω’c) うごいた!

Page 18: Spring boot劇的ビフォーアフター

( っ’ ω’c) これからは Kotlin だ!

Page 19: Spring boot劇的ビフォーアフター

とはならないよね?

Page 20: Spring boot劇的ビフォーアフター

動いたけど・・・• DI と Kotlin って相性悪そう• Java のフレームワークで Kotlin 使うの怖い• 落とし穴多そう

Page 21: Spring boot劇的ビフォーアフター

( ^q^)Kotlin+SpringBootのうまくいかない所探すぞ〜〜〜

Page 22: Spring boot劇的ビフォーアフター

( ^q^)DI どうすんのよ

Page 23: Spring boot劇的ビフォーアフター

@Injectprivate var hoge: Hoge? =

null

Page 24: Spring boot劇的ビフォーアフター

▂▅▇█▓▒░(’ω’)░▒▓█▇▅▂うわあああああああああ

Page 25: Spring boot劇的ビフォーアフター

@Injectprivate var hoge: Hoge? =

null

nullable になっているのがダサい

値分かりきってるのに書きたくない

Page 26: Spring boot劇的ビフォーアフター

解決策

Page 27: Spring boot劇的ビフォーアフター

lateinit を使おう

Page 28: Spring boot劇的ビフォーアフター

@Injectprivate lateinit var hoge:

Hoge

Page 29: Spring boot劇的ビフォーアフター

Kotlin は DI のこともちゃんと考えられている!

Page 30: Spring boot劇的ビフォーアフター
Page 31: Spring boot劇的ビフォーアフター

( っ’ ω’c) ええやん

Page 32: Spring boot劇的ビフォーアフター

NEXT

Page 33: Spring boot劇的ビフォーアフター

( ^q^)JRebel 使える?

Page 34: Spring boot劇的ビフォーアフター

JRebel とは

Page 35: Spring boot劇的ビフォーアフター

アプリを再起動せずコードの変更を反映できるやつ

Page 36: Spring boot劇的ビフォーアフター

DEMO

Page 37: Spring boot劇的ビフォーアフター

結論 : 問題なく動く

Page 38: Spring boot劇的ビフォーアフター

NEXT

Page 39: Spring boot劇的ビフォーアフター

( ^q^)AOP 大丈夫なの?

Page 40: Spring boot劇的ビフォーアフター

試してみた

Page 41: Spring boot劇的ビフォーアフター
Page 42: Spring boot劇的ビフォーアフター

( っ’ ω’c) 実行!

Page 43: Spring boot劇的ビフォーアフター
Page 44: Spring boot劇的ビフォーアフター

( ^q^)…

Page 45: Spring boot劇的ビフォーアフター

( ^q^)……

Page 46: Spring boot劇的ビフォーアフター
Page 47: Spring boot劇的ビフォーアフター

( ^q^)???

Page 48: Spring boot劇的ビフォーアフター

動いてない

Page 49: Spring boot劇的ビフォーアフター
Page 50: Spring boot劇的ビフォーアフター

Kotlin ではfinal がデフォルト

Page 51: Spring boot劇的ビフォーアフター

open にすれば動く

Page 52: Spring boot劇的ビフォーアフター

NEXT

Page 53: Spring boot劇的ビフォーアフター

@Bean

Page 54: Spring boot劇的ビフォーアフター
Page 55: Spring boot劇的ビフォーアフター

値を返すだけならfun hoge() = 式と書ける

Page 56: Spring boot劇的ビフォーアフター

( っ’ ω’c) ええやん

Page 57: Spring boot劇的ビフォーアフター
Page 58: Spring boot劇的ビフォーアフター

( っ’ ω’c)oh…

Page 59: Spring boot劇的ビフォーアフター

Configuration problem: @Bean method ‘hogeService'

must not be private or final; change the method's modifiers to continue

Page 60: Spring boot劇的ビフォーアフター

訳: open にしろや

Page 61: Spring boot劇的ビフォーアフター

ハマリポイントまとめ

Page 62: Spring boot劇的ビフォーアフター
Page 63: Spring boot劇的ビフォーアフター

基本的にopen にする / しないに気をつければ良さそう

Page 64: Spring boot劇的ビフォーアフター

??? 「わざわざKotlin使う意味あるの?」

Page 65: Spring boot劇的ビフォーアフター

Kotlin を使って嬉しいところ

Page 66: Spring boot劇的ビフォーアフター

CASE 1POJO

Page 67: Spring boot劇的ビフォーアフター

Kotlin のフィールドにはgetter/setter が生えてくる

Page 68: Spring boot劇的ビフォーアフター

class User { private String id; private String name;

public User() {} public User(String id, String name){…} (getter/setter が続く… )}

Page 69: Spring boot劇的ビフォーアフター

class User( var id: String = “”, var name: String = “”)

Page 70: Spring boot劇的ビフォーアフター

getter/setter👋

Page 71: Spring boot劇的ビフォーアフター

CASE 2null の扱い

Page 72: Spring boot劇的ビフォーアフター

Java ではnull への対策どうしてますか?

Page 73: Spring boot劇的ビフォーアフター

JSR-305@Nonnull@Nullable

Page 74: Spring boot劇的ビフォーアフター

@Nullablepublic String hoge( @Nonnull String str1, @Nullable String str2) {}

Page 75: Spring boot劇的ビフォーアフター

fun hoge( str1: String, str2: String?): String?

Page 76: Spring boot劇的ビフォーアフター

アノテーション書いてって言っても書かない人出てくる💢

Page 77: Spring boot劇的ビフォーアフター

Kotlin なら大丈夫👏

Page 78: Spring boot劇的ビフォーアフター

Annotation👋

Page 79: Spring boot劇的ビフォーアフター

まとめ

Page 80: Spring boot劇的ビフォーアフター

ハマリポイント + 資料の少なさVS

Kotlin を使うメリット

Page 81: Spring boot劇的ビフォーアフター

天秤にかけてどっちに傾くか

Page 82: Spring boot劇的ビフォーアフター

僕は Kotlin に傾きました

Page 83: Spring boot劇的ビフォーアフター
Page 84: Spring boot劇的ビフォーアフター

Java から Kotlinに移行中です

Page 85: Spring boot劇的ビフォーアフター

← 今の僕

Page 86: Spring boot劇的ビフォーアフター

用法用量を守って正しく使いましょう

Page 87: Spring boot劇的ビフォーアフター

あ、ちなみに

Page 88: Spring boot劇的ビフォーアフター

就職先探してます

Page 89: Spring boot劇的ビフォーアフター

よかったら声かけてください

Page 90: Spring boot劇的ビフォーアフター

おしまい

Page 91: Spring boot劇的ビフォーアフター

_人人人人人人_> 質問とか < ̄ Y^Y^Y^Y^Y  ̄