Slide 1

Slide 1 text

hoplite、使ってみ ませんか? 〜自作Maven Pluginを添えて〜 @i-whammy

Slide 2

Slide 2 text

自己紹介 - @i-whammy - ソフトウェアエンジニア - 好きなプログラミング言語 - Kotlin - Clojure - 好きなXPのプラクティス - テスト駆動開発 - 好きなロードバイクのブランド - Chapter2 - Colnago

Slide 3

Slide 3 text

あるところに、KotlinのConfiguration用ライブラリ (メンテナンスが止まっている)があった。

Slide 4

Slide 4 text

そこでhoplite、使ってみませんか? https://github.com/sksamuel/hoplite

Slide 5

Slide 5 text

> Hoplite is a Kotlin library for loading configuration files into typesafe classes in a boilerplate-free way. = 設定ファイルを型安全なクラスとしてロードできる、 ボイラープレート不要な、Kotlinのライブラリ

Slide 6

Slide 6 text

sample.properties Sample.kt

Slide 7

Slide 7 text

主な機能 - 多様なファイルフォーマット対応 - Json, Yaml, Toml, Hocon, Java Properties - リッチなDecoder - ファイル上の値をJDKの型、値にマッピング - e.g.) "true", "t", "1", "yes" -> true - e.g.) UUIDの文字列 -> java.util.UUID - 実行時のエラー出力が分かりやすい - Kotlin objectよりData Classの方が扱いやすい(主観です) and so on

Slide 8

Slide 8 text

みんなもhopliteでHappy config life!

Slide 9

Slide 9 text

No content

Slide 10

Slide 10 text

……本当にそれでいいのか?

Slide 11

Slide 11 text

メンテナンスが止まったライブラリって 未然に気付けないのか

Slide 12

Slide 12 text

それに近いことはできる

Slide 13

Slide 13 text

versions:display-dependency-updates plugin - MavenのVersions Pluginの一つ - pom.xmlに記載されたバージョンより新しいアーティファク トが利用可能な場合教えてくれる

Slide 14

Slide 14 text

No content

Slide 15

Slide 15 text

「アップデートがあるアーティファクトと その最新のバージョン」は分かるが、 「そのアーティファクトが 最後にいつリリースされたか」は分からない

Slide 16

Slide 16 text

それらしいものは見つからなかった

Slide 17

Slide 17 text

なきゃ作ればいい

Slide 18

Slide 18 text

https://github.com/i-whammy/mvn-outdated

Slide 19

Slide 19 text

今できること - Projectで利用しているアーティファクトの中で、リモートリポジトリ上に 最後に公開された日付が分かる - 優先順位はpom.xml内のタグに従う - (本当はもう少し細かいルールがあるが、今はここまで) - 最後にリリースされた日付から一定期間経過したアーティファクトの一 覧が分かる - 今は1年を固定の閾値にしている - 今後は閾値をオプションで可変にする予定

Slide 20

Slide 20 text

デモします

Slide 21

Slide 21 text

結論 maven-pluginを自分で作ると面白い

Slide 22

Slide 22 text

No content

Slide 23

Slide 23 text

参考 - https://github.com/npryce/konfig - https://github.com/sksamuel/hoplite - https://www.mojohaus.org/versions/versions-maven-pl ugin/display-dependency-updates-mojo.html - https://github.com/i-whammy/mvn-outdated