bookkotlin

Kotlin in Action

Who's the author?

kotlin fest organizerのNagasawa tarou san, 元LINE DevRelのFujiwara satoru san, ...翻訳. 2023年のLINEのハッカソンインターンでSatoru sanが関わっていて、懇親会2? 3?次会でkotlin in actionの翻訳について聞いてて、当時はkotlinがまだ日本に浸透してなくて、翻訳を出すとなった時に話がきた(と言っていた気がする。)で、もう絶版になっちゃってると

2025/11 追記 Satoru sanにkotlin fest 2025で挨拶して、M3のことや同僚(元ボスのmiyota san)のことを話した。

Contents / Memories

kotlinの哲学のところで、「相互運用性を重視し、実用主義で、簡潔で、安全な言語である。」とkotlin language の lead designerのandrey breslavが言っていて、Javaとのinteropも問題ないし、productionアプリケーションでも採用できるし、null safetyで安全で、いかんせんsyntaxがかなり綺麗でその通りだなと思った。

Kotlinを初めて触ったのは新卒研修の新卒hackasonで、当時新卒チームで同じだった中国出身で北京大->東大に留学に来ていた、LINE Messaging Platform配属(もうやめてしまったが)のJinと、あーだこーだ言いながらSpring Bootを書いていた。You should not use !! とかレビューしてた記憶.

Javaでの検査例外はボイラープレート で笑った。 NumberFormatExceptionは非検査で強制されない。BufferdReader.close()は検査例外のIOExceptionスローするけど、閉じる時に意味あるアクションなくね?と。 故にkotlinの例外ハンドリングは、Arrow入れてEitherで扱ったり、OfficialにあるThrowable前提のResult使ったり、2.4?ではRichErrorなるものが登場しそうなど、プラクティスがいっぱいあるもののベストがないという感じになっているのも否めないが。 個人的にJavaのthrowsに検査例外書くのもあまり好きではないので否定的ではない。

あと、Javaを書いてKotlinの拡張関数欲しいなぁと思うことが多々あって、でも諦めてたけどkotlinでextensionだけ実装してJavaから呼べることにハッとした。

fun String.capitalize(): String {
    // custom process
}
var = StringUtilKt.capitalize("kotlin")

呼び出し側で、"文字列".capitalize()で呼べるのが振る舞いを拡張しているsyntaxになるがそれはできない。third party classに実装追加が簡単に追加できる点は保たれるけど呼び出し側はあんまり恩恵受けられてないのでラッパーとあまり変わらない.

Javaとのinteropはプラットフォーム型があるのでちょっと罠がある。

第2部の見出しが"Kotlinを愛でる"とあったのでこの言葉の出自がわかった。

kotlin in actionは第2版でているので、時間ある時に読みたい. というか和訳したい.

第1版 https://amzn.to/40EM045

第2版 https://amzn.to/40EP6Ff