mike-neckのブログ

Java or Groovy or Swift or Golang

Kotlin の基礎を身につけるための学習素材を作ってみた

Kotlin を使ったプログラムを書く場合には以下の要素によってプログラムを書く速さが決まってくる

  • 作るアプリケーションの仕様
  • IDE の操作
  • Kotlin そのものの知識
  • フレームワーク・プラットフォームに関する知識

プログラムを書くのが遅い場合、これらのどれかが欠けている

IDE の操作・Kotlin の知識については定型的なトレーニングによる改善を目的に作られているのが Kata である

Kotlin の Kata については、 JetBrains が Kotlin Koans という学習目的用のマテリアルを提供しているが、入門的な内容でり、中級者になりたい人向けにマテリアルがあってもいいと思っていた

そこで Eclipse Collections Kata のマテリアルをほぼそのまま流用して Kotlin のコレクション API のトレーニングをするマテリアルを作ってみた

github.com

先程書いたとおり、 Eclipse Collections Kata の内容をそのまま使っているので、簡単すぎず難しすぎずくらいの内容で、そこそこのボリュームの問題を JUnit のテストを通していくことで学習していく内容になっている

README にも書いた内容だが、やり方は以下の通り


  1. Release のページから最新のリリースのコードをダウンロードして、解凍する
  2. 解凍してできたディレクトリーを Gradle(マルチプロジェクト) に対応している IDE で取り込む
  3. pet-kata/company-kata の Exercise1 〜 を問題の指示に従い解いてテストを通す
  4. 定期的に課題をやる

例えば、 pet-kata の Exercise1 の最初の問題は次のようなテストコードになっている

@Test
fun firstNamesOfAllPeople(people: People) {
  // Replace a block { mutableListOf() }, with a transformation method on Iterable(= people)
  val firstNames: MutableList<String> = people { mutableListOf() } // people.items...

  val expectedFirstNames: List<String> =
      listOf("Mary", "Bob", "Ted", "Jake", "Barry", "Terry", "Harry", "John")

  firstNames shouldBe expectedFirstNames
}

people に渡されているブロック部分を取り除いて、 people(Iterable<Person>) から各 firstName を取り出して List<String> に変換する問題である

@Test
fun firstNamesOfAllPeople(people: People) {
  // Replace a block { mutableListOf() }, with a transformation method on Iterable(= people)
  val firstNames: MutableList<String> = people.map { person -> person.firstNae }

  val expectedFirstNames: List<String> =
      listOf("Mary", "Bob", "Ted", "Jake", "Barry", "Terry", "Harry", "John")

  firstNames shouldBe expectedFirstNames
}

このように書き直した後にテストを実行すればよい

もし、 People の型の定義がわからない、 Person の定義がわからないなどがある場合は、 pet-model プロジェクトにその定義の書いてあるファイルがあるので、そちらを参照すると良い

また、課題の解き方がわからないなどあったら、下記の URL からドキュメントを読むのが良いと思われる


以上、 Kotlin を雰囲気とかファッションとかで触っている人や、処理したいデータがあるのにいつも操作で手が止まってしまうなどの人は試してもらいたい

また、改善点等があれば気軽に issue または PR を送ってほしい