Kotlin における trailing comma(末尾カンマ) について

アスクルの こたにん (@Kotanin0) です。

2020年のリリースですが、Kotlin 1.4からtrailing commaが実装 されました。
trailing comma とは 末尾カンマ と訳されるもので、関数などの引数のリストの末尾にあるカンマのことを指します。

fun usingComma(
    first: String,
    second: String,
    third: String, // <- ココのカンマのことを trailing comma(末尾カンマ) と呼ぶ
)

めちゃくちゃ細かい仕様ですが、Kotlin1.4からは、このtrailing commaを記述できるようになりました。

続きを読む

MyBatisで大量データを扱う

こんにちは。ASKULのほかほかごはんです。最近は商品データに関するバッチ開発を担当しています。

バッチ開発では、社内外へデータを連係する際に大量のデータをDBから取得し、csvなどのファイルに加工する機会が多くあります。 本記事では効率的にQuery結果をハンドリングする方法として、 MyBatisの ResultHandler と Cursor を紹介します。

なお、弊社ではSpring Boot上でMyBatisを利用しています。 本記事のサンプルコードもその前提で紹介させていただきます 🙇‍♂️

続きを読む

MyBatis 動的SQL の trim が便利なので使い方のまとめ(ついでにコード読んでみた)

アスクルの こたにん (@Kotanin0) です。

アスクルでは、O/Rマッパーに MyBatis3 を使っています。
MyBatis は、単純なCRUD操作だけでなく、 動的SQL という便利な拡張構文があります。

たとえば、本の情報を管理するテーブルから、本の一覧を抽出したいSQLがあったとします。

  • 本のタイトルを指定しなければ全件SELECT
  • 本のタイトルを指定していればWHERE句を入れてSELECT

と、本のタイトルの指定有無でif文を書きたいような場面では、次のようにif要素を利用すると解決できます。

<select>
    SELECT * FROM BOOK
    <if test="title != null">
        WHERE title LIKE #{title}
    </if>
</select>

MyBatis3動的SQL は、上のようなif要素をはじめとして、次の9種類の要素が用意されています。

  • if
  • choose
  • when
  • otherwise
  • trim
  • where
  • set
  • foreach
  • bind

その中でもtrim要素がとても便利だったので、今回はtrim要素に限定して紹介していきます。

続きを読む

Kotlin 1.6ではList.minus(List)の処理速度がデフォルトだと若干遅くなってしまうという話

こんにちは。ASKULのほかほかごはんです。今回はKotlin1.6におけるCollection操作についての記事になります。

List1からList2の要素を除去する場合、Kotlinでは次のように書けます。

val result = list1 - list2

このコードはKotlin 1.6ではこう書いたほうがパフォーマンスがよくなります (とIntelliJ先生が教えてくれました 😇)

val result = list1 - list2.toSet()

しかし、Kotlin 1.5まではこのコードについてIntelliJがアドバイスをくれることはなかったはずです 🤔

これは、Kotlin 1.6の minus が Kotlin 1.5 以前とは異なり、次のように実装されているからです。

続きを読む

Kotlin で DX がめちゃくちゃ改善されました

この記事は、Advent Calendar 2021 / Qiita主催「開発者体験:DXをめちゃくちゃ改善した話」 2日目の記事です。

はじめに

こんにちは。しゅん(@MxShun)です。

私は昨年アスクルに入社し、中小事業所向けサービス「ASKUL」と大企業向けサービス「SOLOEL ARENA」を統合することで売上1兆円企業をめざす取り組み「PJ Trylion(プロジェクト・トライオン)」でサーバサイド Kotlin を書き始めました。

今回の記事では、アスクルで Kotlin を書き始めて、DX、とりわけ開発者体験がめちゃくちゃ改善された話をしたいと思います。

続きを読む

ASKUL Engineering BLOG

2021 © ASKUL Corporation. All rights reserved.