この記事は弥生 Advent Calendar 2024の 6日目(シリーズ 2)のエントリーです。
お久しぶりです。イトーです。 私のチームでは多数のシステム、アプリを開発・運用しており技術スタックも多岐にわたるのですが、 今回対応するPJで新たにKotlinを採用してみることにしたので、Kotlinについて少し触れて見たいと思います。
何故Kotlinを採用することにしたのか?
実は当初私はKotlinを採用することはあまり考えていませんでした。 古いシステムのリプレイスも行っていく中で、モダンな感じにしたいなーと思っていたぐらいで。 (私のチームの技術スタックや、利用するAWSのサービスなどはほぼ私が決めていますが、メンバーに意見を聞いて決めることが多いです)
そんな中で、メンバーの一人がKotlin使いたーい! と手をあげてくれたことがきっかけでした。 モダナイゼーションも進めたいし、面白そうだしやってみるかーという感じで話は進みます。
しかしながら何も考えずにGo!とはできないのでまずはKotlinについて調べてみます。
Kotlinってどんな言語?
名前は聞いたことあるなー、Androidでよく使うやつだなー、ぐらいな知識だったので色々調べます。 ChatGPTさんにまずは聞いてみることに。
Kotlin(コトリン)は、JetBrains社が開発した、オープンソースのプログラミング言語です。主にJVM(Java Virtual Machine)上で動作し、Javaとの高い互換性を持ちながら、より簡潔で安全なコードを書くことができるように設計されています。Android開発を中心に、サーバーサイド、Webアプリケーション、デスクトップアプリケーション、さらにはマルチプラットフォーム開発にも対応しています。
主な特徴
・Javaとの完全な互換性
・KotlinはJavaコードを完全に呼び出すことができ、既存のJavaプロジェクトにも簡単に統合できます。
・Javaのライブラリやフレームワークもそのまま利用可能。
簡潔さ
・冗長なコードを減らすよう設計されており、特にボイラープレートコードが少なくなります(例: ゲッター/セッターやnullチェック)。
安全性
・Null安全(NullPointerExceptionを防ぐための仕組み)が組み込まれています。
・コンパイル時にエラーを防ぐための堅牢な型システムを提供。
・関数型プログラミングのサポート
・高階関数、ラムダ式、コレクション操作などの機能を備えており、関数型プログラミングスタイルを容易に採用できます。
マルチプラットフォーム
・Kotlin Multiplatformを使うことで、iOS、Android、Web、デスクトップなどの複数プラットフォーム向けにコードを共有可能。
Android公式サポート
・2017年にGoogleがAndroid開発の公式言語としてKotlinを採用。
・Androidアプリ開発で広く使用されています。
サンプルコードなども教えてくれる、ChatGPTさんすごい。 どうやらJavaで動くが、とっつきやすくした形らしいということがわかりました。
Kotlinについて学ぶ
調べていくと、公式の学習コンテンツがWebブラウザ上で利用できることがわかります。
Koans kotlinlang.org
ブラウザ上で簡易的に動かせる…だと…
ブラウザ上で実際にコードを書いて軽く試せる(あくまでtestという形だが)ので、気軽に学習できる、すごい。 基本的な部分はKoansで学べばだいたいなんとかなりそうです。 英語ですけど。
Kotlinを動かしてみる
手っ取り早いのは上記などですが、せっかくなのでInteliJで動かしてみます。 スクラッチから、その場でKotlinで書いて動かすことができるのでInteliJを起動し、スクラッチからKotlinを選びハローワールド的なことをやってみます。
おおお、動いた。
さらにGitHub CopilotにKotlinのコードを書かせてみて、それをスクラッチで実行してみます。
スクラッチで動かすために少しだけ内容を変更して、実行してみます。
ちゃんと動く。やるやん。(感心) ちなみに、Javaとの完全互換性がありJavaのFW、ライブラリが普通に利用できるためKotlin+Spring BootでWebアプリを作ることができます。 (弊社のアプリもKotlin+Spring bootをベースで構築する予定)
Kotlinの現況、将来性
採用して、すぐにサポートがなくなったりしてしまうと困ってしまうのでこの辺りも調べてみましたがよっぽどのことがない限りしばらく(10年ぐらいは)大丈夫そうだな、という所感。 Androidアプリの開発言語としても採用されているし、開発も活発なのでむしろこれから感があるような印象。 注意点として Java→Kotlin の移行は比較的ラクなことにたいして Kotlin→Java は難しい点。 万が一Kotlinのサポートがなくなったり、開発が停止してしまった場合アプリが大きいと移行が少し大変かもしれません。
結論
そんなわけで学習コストは当然かかりますが、
- Javaよりコード記述量が減り、効率上がりそう
- コードの安全性が高い
- Javaとの互換性がある
- モダン
- 面白そう
などなどの理由により、Kotlinを利用してみることにしたのでした。 さて、Kotlinの勉強もっと進めよう。
社員募集
弥生では一緒に働く仲間を募集しています!
弥生で働くことに興味がありましたら、求人一覧をぜひご覧ください。