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

KC3「Re: ゼロから始めるサーバーサイドKotlin」

トリナー
September 06, 2020

KC3「Re: ゼロから始めるサーバーサイドKotlin」

KC3 2020で発表した「Re: ゼロから始めるサーバーサイドKotlin」のスライドです。

トリナー

September 06, 2020
Tweet

More Decks by トリナー

Other Decks in Programming

Transcript

  1. About me • トリナー @toliner_ (Twitter), @toliner (GitHub) • justInCase(@justInCaseHoken)でKotlin書くバイトやってます

    • ♥ Windows 10, JetBrains IDE, Kotlin, ASUS, Firefox • ゲーム: R6S, Apex, Factorio, Arknights, SINoALICE, etc…
  2. お品書き • Kotlin入門 ◦ IntelliJ IDEAでのプロジェクト作成 ◦ Kotlin文法 • サーバーサイドKotlin

    ◦ フレームワーク・ライブラリ等 ◦ 簡単なプロジェクトを作ってみる
  3. Kotlin文法 お品書き • 基本構文 ◦ 関数・変数 ◦ 制御構文 ◦ クラス

    • 応用構文 ◦ ラムダ式 ◦ 拡張関数 ◦ コルーチン
  4. Kotlin 基本文法 – 関数 • Kotlinはクラス外(パッケージレベル、トップレベル)に変数・関数を 記述可能。 • Kotlinの関数は fun

    名前(引数): 返り値の型 {} という形で記述する ◦ Kotlinにおいて、型定義は全て後置 • 何も返さない場合、返り値にはUnitという型を用いる ◦ Javaのvoid相当 ◦ 返り値の型がUnitの場合、省略可能
  5. Kotlin 基本文法 – 変数 • 変数の宣言には、valとvarを用いる。 ◦ valは再代入不可、varは再代入可。 • val

    変数名: 型 = 初期化式 の様に記述する。 ◦ 特別な場合を除き、変数は必ず宣言時に初期化しなければなら ない。 • 多くの場合、変数の型宣言は省略する事ができる。
  6. Kotlin 基本文法 – 制御構文 • Kotlinに存在する制御構文はif式, when式, for文, while文の4つ。 •

    forは少し特殊で、CやJavaスタイルのforは存在しない。 ◦ JavaやC#におけるfor-each構文に相当する物のみ。 • Ifとwhenは式なので、値を返す事ができる。
  7. Kotlin 基本文法 – クラス • 基本的にはJavaと似ているが、コンストラクター周りが特殊 • プライマリコンストラクターはinit {}という形で宣言する •

    セカンダリーコンストラクターは constructor(引数): 別のコンスト ラクター() という形で書ける。 • なお、Kotlinでコンストラクタを書くことは稀である。 • Kotlinにおいて、クラスのフィールドをプロパティと呼ぶ。 ◦ プロパティはJavaのフィールドと異なる性質を持つ。
  8. Kotlin 基本文法 – クラス - プロパティ • Kotlinにおけるプロパティは、Javaのフィールド + Setter/Getter

    の組み合わせである。 ◦ C#のプロパティに近い。 • カスタムSetter/Getter, プロパティの委譲, 委譲を用いての遅延初 期化等ができる。 • クラスのプライマリーコンストラクタでプロパティを宣言できる。
  9. Kotlin 応用構文 – ラムダ式 • Kotlinにおいて、関数は第一級オブジェクとして扱われる。 ◦ つまり、Int等のプリミティブ(っぽい)型や、ユーザー定義型の オブジェクトと同等に扱える。 ◦

    具体的には、関数に対する関数呼び出しや、関数を引数に取る 関数、関数を返す関数、関数のプロパティ等を作れる。 • 「関数オブジェクト」を作成する構文がラムダ式。
  10. Kotlinの応用構文 – ラムダ式 • ラムダ式自体は、 { 引数リスト -> 中身 }

    という形で記述する。 • ラムダ式においては、関数とは異なり最後の式の値が返り値として 扱われる ◦ returnは不要。微妙に分かりづらい事がある。 • 引数が1つの場合、引数リストは省略可能 ◦ その場合、引数の名前はitとなる。
  11. Kotlinの応用構文 – 拡張関数 • 拡張関数は fun レシーバーの型.名前(引数リスト): 返り値の型 とい う形で記述できる。

    • 拡張関数にも当然型は存在する。 ◦ レシーバーの型.(引数リスト) -> 返り値の型 という形で記述 • 拡張関数の拡張関数の拡張関数の拡張関数なんていうアホな物も作 れる
  12. Kotlinの応用構文 – コルーチン • コルーチンの詳細説明は長くなるので割愛します。 • 非同期処理である事と、以下の事のみ覚えてくれれば大丈夫 • コルーチンで非同期処理をする関数は、suspend修飾子を付けなけ ればならない。

    • Suspend修飾子が付いた関数をsuspend関数と呼ぶ。 • 通常の関数内でsuspend関数は呼べない。 • Suspend関数内で通常の関数とsuspend関数は両方呼べる。 • Suspendのラムダ式も作れる(引数リストの前にsuspendと書く)
  13. Kotlinのサーバーサイドフレームワーク • Spring/Spring Boot ◦ Javaでも有名で人気なフレームワーク。Kotlin用の拡張モジュ ールが存在。 • Ktor ◦

    実質Kotlin公式のフレームワーク。 • Http4K ◦ Ktorの対抗馬っぽいサードパーティーのフレームワーク。某ベ ンチマークの性能ではKtorより上。