Technology
サーバーサイドKotlinの可能性
2022-6-29
近年サーバーサイドの開発言語としてKotlinに注目が集まっています。Kotlinというプログラミング言語はAndroidのアプリ開発での活用が最も一般的に認知されていますが、サーバーサイド開発においても積極的に導入するスタートアップや大手テック企業(Adobe、AWS、Expedia等)の事例が増えています。またiOSおよびAndroid双方に対応したマルチプラットフォームモバイル(Kotlin Multiplatform Mobile)SDKの提供やJavaScriptへのトランスパイルなど、Kotlinはフロントからサーバーサイドまで活用範囲が広いプログラミング言語です。弊社ROUTE06(ルートシックス)においても、サーバーサイドKotlinの検証及び導入を進めており、本記事ではサーバーサイドKotlinの可能性についてご紹介していきます。
Googleがファーストクラスに選ぶプログラミング言語Kotlin
Kotlinは元々Java言語の統合開発環境として有名なIntelliJ IDEAを手がけるJetBrains社によって開発されたプログラミング言語です。Kotlinが最初に公表されたのは2011年7月ですが、GoogleがGoogle I/O 2017にてAndroid開発においてKotlinのファーストクラス採用が公表されたことで大きく話題になりました。それまでJava主体のAndroid開発においてもモダンなプログラミング言語を利用できるようになり、Googleが提供する統合開発環境のAndroid StudioにKotlinが標準搭載となったため開発環境構築の手間が削減されたこと等によって普及が加速しています。GitHubにおけるパブリックリポジトリを集計分析しているブログ及びリポジトリからKotlinの利用者が増加トレンドを確認することができます1。
Kotlinの構文や記述自体はJavaよりもシンプルで端的なものですが、コンパイル後にJVM(Java virtual machine)上で動作することが特徴です。Javaで有名なフレームワークのSpring等がKotlinをサポートしており、これまで長年Javaのエコシステムで蓄積された知見にアクセスできることがKotlinの魅力にもなっています。またKotlinは他のJVM言語よりもJavaとの互換性が高く、既存アプリケーションがJavaで開発されていたシステムにおいて新規機能部分をKotlinで記述するなど、双方のコードを共存させることが容易です。JavaからKotlinで記述されたプログラムを実行することができ、またKotlinからJavaのクラス継承やライブラリを呼び出すことができます。上記のように比較的新しいプログラミング言語でありながら、Javaでの開発経験の長い開発者にとっても受け入れやすい言語になっています。またKotlinはNull Safety仕様であり、Javaで有名なnull参照エラーを早期に発見しやすい点などもJava開発者から評価されているポイントです。
Google社でもKotlinは積極的に活用されており、Google マップ、Google Home、Google Play、Google ドライブ、メッセージなど現在60 以上のアプリケーションがKotlinで実装されています。例えば Google Home では、2020 年 6 月時点においてコード全体の約 30% が Kotlin で記述されており、新機能についてはすべて Kotlin での開発が推奨されています。新機能開発を Kotlin に移行した結果、とあるクラスの作成においてJava では 126 行の手動による記述が必要だったのに対してKotlin ではわずか 23 行の記述で済んだことに加え( 80% のコード量の削減)、前述のNull Safety仕様によってアプリクラッシュの最も大きな原因であったNullPointerExceptionsを33%低減できたなど、その実績を公表しています2。
サーバーサイド言語としてのKotlinへの注目の高まり
上記の通り、KotlinはAndroidのアプリケーション開発での活用が多いものの、サーバーサイド開発でもその活用に注目が集まっております。最大のポイントは前述の通り、Javaとの互換性及び相互運用性にありこれまでJavaで開発されてきた国内外のアプリケーションがKotlinに移行しています。海外ではAWSやAdobe、Atlassianなどのテック企業からDoorDashやING、Expediaなどの事業会社までサーバーサイドKotlinの活用は幅広く、国内でもYahooやLINEなどの大手IT企業に加えて日本経済新聞社などの大手事業会社でも活用事例が出てきているのが現状です。Kotlinコミュニティは開発ロードマップにおいて、今後もサーバーサイドKotlinのJVM対応を優先分野と位置付けており、Javaエコシステムとの互換性という面でのメリットが強化されていくことも期待されています3。
特にサーバーサイド開発ではJavaで最も有名なWebアプリケーション開発のフレームワークであるSpringを活用できることが大きな利点とも言えるでしょう。SpringはJavaコミュニティで最も有名かつ実績のあるフレームワークの一つであり、マイクロサービスアーキテクチャやサーバレスアーキテクチャなど最新のトレンドにも対応しています。Springが世界中のJava開発者達に支持される理由の一つとして、依存性注入(Dependency Injection)を容易に行えるIoC containerと呼ばれる機能があり、それを活用することで作成中のオブジェクトとオブジェクト生成及び実行を分離しやすくなるため、コード間の依存性制御によるテストシナリオを削減だけでなく、コード自体がシンプルになるためシステム全体の保守性を担保しやすくなります。モダンなプログラミング言語でありながら、世界中の開発者達によって長い年月をかけてブラッシュアップされてきたリソースを活用しやすいこともサーバーサイドKotlinの大きな魅力になっています4。
またJetBrains社のIDEであるIntelliJ IDEAをKotlin言語の開発でも活用できることも魅力の一つになっています。IntelliJ IDEAは統合開発環境としてもともとファイル/テキスト検索やリファクタリングなどに優れた機能を持っているだけでなく、Kotlin をファーストクラス言語と位置付けており、Kotlin固有のプロジェクトテンプレートやデバッグ機能など十分なサポートが得られる環境が用意されています。IntelliJ IDEAはVISA、SAMSUNG、BMW、Twitter、Expediaなどの世界中の大手企業で利用されており、Java 開発者の 4 人に 3 人が IntelliJ IDEA を利用しているなど圧倒的なシェアを誇る統合開発環境です5。
Kotlinは大手企業のシステム開発においてJava後継となり得るのか
日本の大手企業及び大手システムインテグレータにおけるシステム開発の現場においては、現状でもJavaが最も利用されてきたプログラミング言語の一つであり、新しいアプリケーションやサービスの開発においても多くの場合Javaが採用されています。実際に大手企業においてシステム開発及び運用保守に関するRFPや各種システムテスト要件、セキュリティ診断などにおいてもJava及びJVM利用を前提としたチェック項目などがあることも一般的です。
今後大手企業においてシステム開発の内製化を進めるにあたっても、特にアジャイルに顧客体験を磨き込むことが求められるデジタルサービスにおいては、スタートアップやWeb系メガベンチャー企業に在籍しているようなソフトウェアエンジニアの採用及び類似スキルを活用できる環境などが求められるため、モダンなプログラミング言語への対応が求められます。システムの内製化対応が遅れている大手企業においては、そういった新しい開発環境への転換及び受入体制が整っていないこともデジタル人材の採用に苦戦している要因の一つになっています。
そういった現状を踏まえ、Kotlinという言語に改めて着目してみると、大企業おける開発内製化やアジャイル開発を推進していくための技術選定として、合理的な選択肢の一つであると考えられます。大手企業においてはGoやRubyなどの現行とは異なる言語及び技術思想に対応するよりも、現状のJavaリソースとも共存可能であり、近年人気が高まっているKotlinをサーバーサイド開発にも活用する方が社内外の関係者にも受け入れられやすいことが想定されます。前述の日経新聞社において日経IDの認証・認可や課金・決済といったプラットフォームの開発においてサーバーサイドKotlinが活用されていることなどからもその期待は高まります6。
滑らかなトランスフォーメーションのためのROUTE06の技術選定
Java自体が世界中の開発者コミュニティによって今この瞬間も進化を続けているプログラミング言語であるなかで、近年人気が高まってきているKotlinとある意味マイクロサービス的に繋がって共存しながら、双方のリソースやコードがマージされていくような進化を遂げているプロセスなどからは、新しい技術と従来のインフラをうまく活用することが求められるデジタル・トランスフォーメーションにおいても参考になる知見が得られるのではないでしょうか。
ROUTE06(ルートシックス)では自社で開発運営するソフトウェアサービスの技術選定においては、ソフトウェアエンジニアの採用育成及び開発効率を考えたモダンな開発言語やアーキテクチャを最も重視しているものの、今後も大手企業の既存システム及び開発ベンダーとの中長期でのシステム連携や共同開発などを視野に入れた意思決定を行なっていきたいと考えています。日本全体のエンタープライズソフトウェア開発がより発展していく観点からもサーバーサイドKotlinの可能性には注目しているため、Kotlinをはじめとした新しい技術と大手企業の開発現場の繋ぎ役となれるような情報発信や啓蒙活動なども積極的に行なっていく方針です。
著者について
遠藤 崇史(えんどう たかふみ)。東北大学大学院情報科学研究科を卒業後、株式会社日本政策投資銀行、株式会社ドリームインキュベータを経て、株式会社スマービーを創業、代表取締役CEOに就任。アパレル大手企業への同社のM&Aを経て、株式会社ストライプデパートメント取締役CPO兼CMOに就任。株式会社デライトベンチャーズにEIRとして参画後、ROUTE06を創業し、代表取締役に就任。