Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Kotlin + Javaで始めるAndroid開発

Kotlin + Javaで始めるAndroid開発

KotlinのLT会!Kotlin入門者の集い
https://kotlin.connpass.com/event/52374/

tebasakyu

June 26, 2017
Tweet

More Decks by tebasakyu

Other Decks in Programming

Transcript

  1. Kotlin + Java
    で始めるAndroid開発
    2017.06.26 KotlinのLT会!Kotlin入門者の集い
    @tebasakyu

    View Slide

  2. 自己紹介
    ● 鈴木 誠 (Makoto Suzuki)
    ○ 娘: 遙華(Haruka) 4ヶ月
    ● Monstar Lab, Inc.
    ● Android Engineer
    ● Twitter: @tebasakyu
    ● GitHub: @tebasakyu

    View Slide

  3. Start New Project
    or

    View Slide

  4. 択一だっけ?

    View Slide

  5. Start New Project
    and

    View Slide

  6. 立ち回りの基本
    ● KotlinがJavaからどう見えるのか理解する
    ● Java勢に優しくなる
    ○ PublicなものはJava寄りに記述
    ○ Privateなものは好きに書く
    ● 役割分担
    ○ Utilなどのメンテすることが少ないもの
    ■ 引き継ぎコストを(多少は)気にしなくなる
    ○ テストクラス

    View Slide

  7. どう見える - Null Safety
    class StringUtil {
    companion object {
    @JvmStatic
    fun equals(value1: String?, value2: String): Boolean {
    return TextUtils.equals(value1, value2)
    }
    }
    }

    View Slide

  8. どう見える - 拡張関数
    FileName: ViewExtentions.kt
    fun View.toVisible() {
    this.visibility = View.VISIBLE
    }

    View Slide

  9. どう見える - 拡張関数
    FileName: ViewExtentionsKt.java
    public static void toVisible(@NonNull View view) {
    view.setVisibility(View.VISIBLE);
    }
    Javaからはこのようなクラスとメソッドが用意されている様に見え
    ている。
    ものによっては、あまり便利に使えない場合もある。

    View Slide

  10. PublicでもKotlinしていいところ
    fun newInstance(id: Int) = DetailFragment().apply {
    arguments = Bundle().apply {
    putInt(KEY_ID, id)
    }
    }
    例えば、Fragmentのインスタンス生成を行う関数。

    View Slide

  11. ● 戻り値の型の省略
    ○ DetailFragment#newInstanceの戻り値は自明なので、こ
    れならば省略しても大丈夫。
    ○ “isHoge”関数も同様に省略して良い。
    ■ 名称から見て、Booleanを返すのは自明である。
    ● スコープ関数の使用(apply)
    ○ DetailFragment#newInstanceの内容を呼び出し元が大
    きく気にかけることは無い。そのため、自由に記述しても大
    丈夫。
    ○ 仮に渡す値が増えても、改修内容は複雑では無い。

    View Slide

  12. PublicでもKotlinしていいところ
    fun toUpperCase(value: String?) {
    value ?: return
    value.toUpperCase()
    }
    fun toLowerCase(value: String?) {
    value?.run {
    toLowerCase()
    }
    }
    条件が複雑でなければ雰囲気で分かる

    View Slide

  13. ライブラリ
    ● Javaで書かれたもの
    ○ 概ね自由に使える
    ○ Annotationものにはkaptを忘れないこと
    ● Kotlinで書かれたもの
    ○ Javaから実行する際に公式readmeと記法が異なる場合
    があるので注意されたし
    例:”@JvmStacic”の有無でJavaから実行する際の記法が異なる
    なし:FrogUtil.Companion.pickles();
    あり:FrogUtil.pickles();

    View Slide

  14. コードレビュー
    ● 互いに実施して理解を深め合う
    ○ チームでレベルアップする
    ● 読み方が分からない、分かりづらいポイントは解説する
    ● レビューを通して、コーディングのルールを作っていく

    View Slide

  15. Thank you.

    View Slide