見出し画像

JavaエンジニアがKotlinを触ってみた感想

※本記事は、各担当記事を広報チームが代行して公開しています。
この記事はSkillnote Advent Calendar 2024の12日目の記事です。

はじめまして、スクラムチームスパナの早川です。

Skillnoteではバックエンド側の開発言語をKotlinとしております。
私自身はSkillnoteに入社するまではKotlin経験がなく、基本Javaエンジニアでした。
本日はKotlinを学び始めて、わりと初期に感じた感想などを思い出しながらまとめたいと思います。

簡単な自己紹介
前職はSierで、基本的にバックエンドエンジニアとして、Java+Oracleでの開発経験が主でした。プライベートでは、栃木県に引越をしまして、現在はフルリモートで開発をしております。


そもそもKotlinとは

近年、GoogleがAndroid開発における言語としてKotlinを公式にサポートすることとなり、何かと耳にする機会が増えた言語かと思います。

Kotlinはオブジェクト指向プログラミング言語であり、Javaとの互換性を持つという特徴があります。

そのため、Java VM上で動作するにあたり、プロジェクト内にJavaとKotlinが混在していても問題なくコンパイル・実行が可能で、既存ソースについては従来通りJavaで、新規ソースについてはKotlinで実装されているような会社もあるかもしれませんね。

というように、KotlinはJavaと親和性が高く、Java開発者からは比較的学習コスト低く始められる言語であると言えます。

Kotlinを触ってみた感想

「JavaとKotlinの差異」等で検索すれば差異に関する記事は色々とhitするかと思いますが、ここでは私自身が特に印象の深かったKotlinの言語仕様について記述していこうと思います。

Collection操作が強力

一番の感想としてはKotlinのCollection操作が強力という点になります。
JavaでもJava8からラムダ式を使って拡張for文を書くことが出来るようになりましたが、KotlinはCollection周りの操作がJavaのそれに比べて更に強力で逆にどれを使うのが最適か迷うぐらいです。

またKotlinはコードを短く簡潔に記述できます。もし気になったら調べて頂ければと思いますが、以下のcollection操作関数が便利と感じました。
Ø  any, all
Ø  maxByOrNull(minByOrNull)
Ø  partition
Ø  zip

Null Safety

KotlinではNullPointerExceptionのリスクを低減するために型にnull安全性を定義することが可能です。

以下例示の関数は引数で与えられたnameを出力するだけのシンプルな例ですが、null safetyな実装と言えます。

まず引数の型がString? = nullであり、null許容且つ引数省略時はnullとして扱うという宣言になります。

そしてprintlnのステップですが、nameがnullでなかったらnameの文字長を出力、nullの場合は0を出力という実装となります。
これをJavaで書いた場合は、以下の実装となります。

最新のJavaでの記述方法をトレース出来ていないので、もしかしたらもっと良い書き方が出来るのかもしれませんが、上記例では記述量がKotlinの方が少ないことがお分かりになるかと思います。

nullチェックは至る所で必要になるかと思いますので、シンプルに記述できるのはコード量的にも非常にありがたいなと感じています。

ただKotlinを初めて触った際には?や!!といった記号が多くて混乱した記憶もあります(笑)

型推論

Kotlinでは変数の型は代入される値に基づいてコンパイラが自動的に推論します。

型宣言時に明示的に型を定義しなくともコンパイルエラーとならないという特性があり、コードの記述量を減らすことが出来ます。

勿論、Map型等、中身がコードを見ただけでは推測しにくいものに関しては、明示的に型宣言をすることもできます。

JavaについてもJava 10から、varを用いて型宣言を不要とすることが出来るようになりましたが、ローカル変数に限った話となりKotlinに比べて柔軟性は低いと言えます。

最後に

以上がJavaエンジニアであった自分がKotlinを触り始めた頃に特に印象深かった言語仕様になります。

最初こそ若干戸惑いはありましたが、今となってはJavaには戻りたくないと思うぐらいです(笑)

Kotlinも広がってきたとは言え、まだまだ未経験の方も多くいらっしゃるかと思います。

Skillnoteでも、入社時Kotlin未経験者も多いですが、開発チーム内でモブワークを取り入れて相互支援しながら開発をしています。また、copilot等によって記述方法の確認もすることが出来ますので、オブジェクト指向言語経験者であれば、Kotlin未経験であったとしてもそれほど心配せずに開発に馴染めるのではないかと思います。

ご興味を持っていただけましたら、カジュアル面談などもやっているので、是非お気軽にお問合せください!

■カジュアル面談Pitta
ウラ凸 - Skillnoteのウラ側へ、カジュアル面談で突撃しよう

■募集ポジション
採用HP

引き続きSkillnote Advent Calendar2024をお楽しみください!