TechFeed Conference 2022 Pick up

Kotlin最新動向2022 ~TechFeed Conference 2022講演より

本記事は、2022年5月に開催されたTechFeed Conference 2022のセッション書き起こし記事「Kotlin最新動向2022(たろう⁠⁠ — TechFeed Conference 2022講演より」を転載したものです。オリジナルはTechFeedをご覧ください。

Kotlinの最新動向2022ということで発表させていただきます。

まず最初に簡単に自己紹介をさせてください。長澤太郎と申します。

ふだんはユビーという会社でソフトウェアエンジニアをやっております。仕事ではバックエンドをKotlinで書くことが多くて、それ以外ではTypeScriptも使いますが、仕事ではおもにKotlinを使っている感じです。

業務外の活動としてKotlinエバンジェリストを自称しまして、こういった講演とか、あるいは書籍の執筆などを通じて、Kotlinの楽しさを世に広めていくようなことをしています。

本日はよろしくお願いします。

繰り返しになるんですけれども、ユビーという会社で働いてます。

ユビー ロゴ

医療の会社なので、人々の健康のために、日々コードを書いています。

Kotlinとは

Kotlinという言語をご存知だと思うんですけども、今から11年前の2011年の夏、JetBrainsによって発表されました。

静的片付けオブジェクト指向言語ということでJavaと同じですね、ジャンルはいわゆるJVM言語のひとつです。JVMというのはJavaのバーチャルマシンです。Javaの実行環境の上で走ることができるプログラミング言語ということで、Javaの既存のエコシステム、資産を使って、後発であるKotlinが、その良さを取り入れて使える言語となっています。

Kotlinとは

Kotlinの特徴その1 - 簡潔さと表現力

簡単に、Kotlinの3つの特徴を紹介したいと思います。

まずひとつが簡潔であるということ、それと表現力の豊かさですね。

たとえば以下のコードでは、拡張プロパティ、拡張関数を使っています。既存の型に対してプロパティやメソッドなどを後から追加することができる機能が備わっています。

簡潔さと表現力

それから演算子オーバーロードです。ここではplusという名前のメソッド、拡張関数を定義してますけど、これを演算子で呼び出すことができるという機能があります。

Kotlinの特徴その2 - NULL安全

それから、Kotlinを語る上では外せないのがNULL安全です。NULLの可能性があるものとそうでないものを厳格に区別することで、いわゆるNullPointerExceptionのようなケアレスミスを防いでくれる機能があります。

NULL安全

Kotlinの特徴その3 - Javaとの相互運用性

3つめはJavaとの相互運用性です。KotlinはJVM言語なので、Javaの実行環境の上で動くんですが、KotlinからJavaのコード、逆にJavaのコードからKotlinのコードをお互いに呼び出すことがとても簡単にできます。

Javaとの相互運用性

マルチプラットフォームへと成長するKotlin

このKotlinですが、2017年にGoogleから「Androidの開発言語として正式サポートします」という発表があって、ここから一気にKotlinの活用が広まりました。

Androidの開発言語として正式サポート

KotlinはもともとはJavaの代替として登場したのですが、いまやJavaScript、Nativeをもターゲットに含めたマルチプラットフォーム言語として成長中です。

マルチプラットフォーム言語を目指す

そのマルチプラットフォームのアプローチとしては、ビジネスロジックみたいなコアなドメイン層の部分はKotlinのコードを書いて、それを各プラットフォームで共有します。

プラットフォーム固有の、たとえばUIのような部分はそれぞれのプラットフォームごとにKotlinで実装します。

以下のコードを見るとわかると思いますが、expectやactualみたいなキーワードを使って抽象と具象を分け、コモン(共有)とプラットフォーム固有のコードを分けています。

プラットフォーム固有のUIなどはそれぞれ実装

サーバサイドKotlin - KtorとSpring

サーバーサイドでもKotlinの活用は徐々に広まっていて、今、Kotlinの有名どころのWebフレームワークとしてはKtorとSpringがあります。

KtorはJetBrainsが作っている、いわば公式のフレームワークなんですが、Kotlinで記述されているため、Kotlinからの使いやすさがひとつの特長として挙げられます。

Ktorとは

(Ktorは)軽量かつフレキシブルなのが特徴です。こういった感じで、いわゆるマイクロフレームワーク、とても小さいのが特徴的です。

Ktorの特徴
Ktorの特徴2

今回は全部を紹介しきれないんですが、⁠Ktorには)プラグインという機構がありまして、これによって拡張性や柔軟性を実現しています。

もうひとつのSpring FrameworkはJavaでもともとおなじみですね。Webアプリケーションフレームワークなのですが、Kotlinも公式サポートしているので、Javaとあまり変わらない感じで使うことができます。

Spring Framework

今、Webを語るうえでGraphQLというのは欠かせないのかなと思うのですが、Netflixが提供しているDGSというフレームワークがありまして、Springの上で動くんですが、アノテーションベースでアノテーションをぺたぺた張っていくことによって、GraphQLを簡単に実現することができます。

DGS Framework

Kotlinは成長中!

言語自体も成長していて、現在の安定版は1.6.21ですが、いくつかおもしろい機能が備わっています。

Kotlinは言語自体も成長中!

そのなかでも一番特徴的なのはこのコンテキストレシーバーというもので、最初に紹介した拡張関数みたいな、1つのレシーバーしか取れてなかったものを複数個取ることができるようになる機能です。

コンテキストレシーバー
コンテキストレシーバー2

まだ実験段階なので、ちょっと荒い部分はあるとは思うのですが、こういったおもしろい機能がどんどん追加されているのが、Kotlinのいま現在の動向といえると思います。

はい、お時間になってしまいましたが、ご清聴ありがとうございました。

おすすめ記事

記事・ニュース一覧