ローソンデジタルイノベーション テックブログ

ローソンデジタルイノベーション(LDI)の技術ブログです

KotlinでDateの操作を簡単にするライブラリをつくってみる(その1)

f:id:ldi-contributor:20210916070736p:plain


開発者Gです。
初投稿です。

長年使ってきたC#からKotlinを含むJava系の言語を使い出して久しいですが、Javaのクラスライブラリは使い勝手やら仕様やらで???となって悶絶することが多いです。

特にDateやCalendarなど、使用頻度の高いクラスはコード記述量が多言語に比べて多いだけでなく、罠も多いので本当に悩ましいと感じています。

Javaの標準APIやApache Commonsでも状況を改善する試みはみられますが、個人的にはイマイチ。

やっぱり、たとえそれが「開発者Gのオレオレライブラリ」と言われようが、自分が納得するには自分で作るのが一番ですね。

というわけで、Dateの操作を簡単にするライブラリを作成する連載記事を書きたいなと思います。


今日は頭出しだけ。

テーマ

SimpleDateFormat
  • 文字列をパースしたときに望ましくない結果になるという、あまりシンプルではない罠と向き合います。
Calendar
  • 日付を初期化する際の面倒くささと向き合います。
  • 月を指定する際に1月は0、2月は1、...を指定するというユーザビリティ無視のクラス設計と向き合います。
  • 日付や月を加算・減算する際の面倒くささと向き合います。

アプローチ

最近のプログラミングではC#の拡張メソッドと同様の機構としてKotlinは拡張関数、Swiftはextensionが利用できます。

これらは既存のクラスに対して後付けで機能を追加できるので、ライブラリ作成者にとっては重要なツールです。

今回は拡張関数をメインに採用します。

次回予告

シンプルそうでシンプルではないSimpleDateFormatの罠(仮)

乞うご期待。