Kotlin

Kotlinでビット操作

Kotlinでビット操作を行うときのメモ。 よく使うビット操作をユーティリティメソッドとして以下にまとめました。 object BitwiseOperation { // numのiビット目の値(0もしくは1)を取得する fun getBit(num: Int, i: Int): Int = (num and createMask(i, i)).…

MockKでモックオブジェクトが生成できない条件

MockKでString型のモックオブジェクトを生成しようとしたところ、以下のエラーが発生しました。 io.mockk.MockKException: Can't instantiate proxy for class kotlin.String String型のモックオブジェクトが生成できないことを知らなかったので、スタックト…

JUnit 5の@TestInstance(Lifecycle.PER_CLASS)を指定したクラスでのモックオブジェクトの生成とスタブメソッドの設定は別の場所で行う

JUnit 5 × Kotlinで@BeforeAllや@AfterAllを使いたかったり、Parameterized Testで@MethodSource用のstatic相当なメソッドを宣言したかったりするときなどは、対象のクラスに@TestInstance(Lifecycle.PER_CLASS)を指定します。 このアノテーションを指定した…

AndroidのActivityやFragmentで文字列と文字列リソースを一括して扱うためのsealed classの作成

Androidで文字列を扱う場合、以下の2パターンのいずれかであることが多いと思います。 クライアント側で定義した文字列リソースを使用する サーバー側から受け取った文字列を使用する これらをActivityやFragmentで一括して扱うために、以下のようなsealed c…

KotlinではComparableインタフェースを実装したクラスのオブジェクト同士を比較演算子で直接比較できる

タイトル通りの内容ですが、地味に初めて知ったので備忘録として。 Dateクラスを例として 比較演算子はcompareTo()メソッドに変換される? 比較演算子は「compareTo()メソッド + 期待される値の範囲」の組み合わせに変換される

Kotlinでよく使う記法をSwiftで記述する方法

久々にiOSアプリのコードを書く機会があったのですが、「KotlinのあれってSwiftではどう書くんだっけ?」となる場面が結構多かったので、順次まとめていこうと思います。 Smart Cast nullチェックによる早期return when式 値に対応するenumの取得 Sealed Cla…

asyncAll()という拡張関数を作ってKotlinのリスト操作の中で並列処理を実行する

前回の記事でawaitAll()を使ったリスト操作の中で並列処理を実行した結果の待ち合わせについて書きました。 tkhs0604.hatenablog.com その中で、並列処理を実行するときに毎回map { async { hoge() } }と書くのは辛いと思ったので、asyncAll()という拡張関数…

Kotlinのリスト操作の中でCoroutinesのasync()で並列処理を実行した結果を待ち合わせる方法

タイトルが非常に分かりづらくて申し訳ないです🙇‍♂️ Kotlinのリスト操作の中でネットワーク通信のような時間のかかる処理を並列に実行したい場面があったのですが、Coroutinesを使ってその結果を待ち合わせる方法が最初分からなかったので、本記事はそのメモ…

KotlinでCustom Viewを作成するときのコンストラクタの書き方

KotlinでCustom Viewを作成するときのコンストラクタの書き方がよく分からなかったので、これを期にKotlinのコンストラクタとCustom Viewについて調べてみました。 Javaに慣れているエンジニアからすると、Kotlinのコンストラクタの書き方は若干とっつきにく…

「Kotlin Fest 2019」で発表しました!

昨日開催された「Kotlin Fest 2019」のLT枠で発表してきました! kotlin.connpass.com 昨年の「Kotlin Fest 2018」のときは「金沢アカペラタウン」というイベントに出演していて参加できなかったので、1年越しの悲願達成となりました。 まさか発表側として参…

Kotlinで値オブジェクト用のクラス作成

見様見真似でKotlinで値オブジェクト用のクラスを作成してみたらいろいろと学びがあったので、そのメモです。 値オブジェクトの定義 自然数を表現するNaturalNumberクラス ①data class を利用したクラス宣言 ②initブロックを利用したプロパティのバリデーシ…

「集まれKotlin好き!Kotlin愛好会 vol.14」で発表しました

ウォンテッドリー株式会社で開催された「集まれKotlin好き!Kotlin愛好会 vol.14」で発表してきました! 卓球台もある最高のオフィスでした笑 love-kotlin.connpass.com 前回参加したのはクックパッド株式会社で開催されたvol.5でした。いわゆるつよつよな方…

Jetpack Composeを利用したコンポーネント作成からレイアウト生成までの流れ

Google I/O 2019でJetpack Composeというツールキットの発表がありました。 現時点ではまだpre-alpha版ですが、Jetpack Composeを利用してどのようにコンポーネントを作成し、それらを組み合わせ、レイアウトを生成するかについてデモアプリのソースコードを…