LoginSignup
3
2

More than 1 year has passed since last update.

Kotlinについて徹底的に客観的に分析してみた

Last updated at Posted at 2021-12-24

先日開催されたJJUG CCC 2021 Fallにて『Kotlinを研究する』というタイトルで発表しました。
その中でいくつか面白さを感じていただけそうな部分をピックアップして紹介していきたいと思います。

元発表

スライド
https://speakerdeck.com/doyaaaaaken/kotlinwoyan-jiu-suru

動画
https://youtu.be/T6cS67VEGO4

内容概要

現状のKotlinについて徹底的に客観的に分析した内容になります(そういった背景から”研究する”というタイトルにしました)。
基本的には発表は個人的な見解として行うものですが(例:『Kotlinの拡張関数という機能はイケてる!』)、世の中の公開データを元に2021年末現在のKotlinについてなるべく主観を排除して分析してみたら有用な知見になりそうだと感じこのテーマにしました。

ピックアップポイント

1. Kotlinは2016年にv1リリースされた若い言語

他のモダンな言語であるRustやGoよりも後発。
Goは2012年Rustは2015年にv1をリリース。

2. 若い言語なのにも関わらず言語仕様として新しい発明はほぼない

Kotlinが新しく発明した機能・概念はごくわずか。
モダンな他の言語の良い点を取り入れ言語仕様が作られ、”Pragmatic”な言語を目指している(※後述)。

3. "Pragmatic(実用的)"という言語思想

Pragmatic(実用的)な言語を目指して作られており、他のモダンな言語の良いところを取り入れ、簡潔で安全に書けるようにしている。
エレガントさより、有用さを重視している。

”実用的”というのはコーディング中だけでなく開発者体験全体を指しており、例えば以下のような点にも気を使って開発されている。

  • Javaとの相互互換性(=Javaプロジェクトに混ぜられるため少しずつ置き換えができる)
  • Javaの既存エコシステム(例:Javaライブラリ, Maven, Gradle)を利用可能
  • IDEを使った開発者体験(補完・警告等)を重要視
  • 学習コンテンツなどを用意・拡充している

4. 2017年のGoogle I/Oが転機で普及した

2017年のGoogle I/OでAndroidの開発言語としてサポートすることが発表され、それを機に一気に普及した。
(なおちょうどその2年後に、GoogleがAndroidの開発言語としてKotlinを第一言語として推奨する発表をした)

5.Android開発では現在支配的な地位を確立

Android公式ドキュメントによると、上位1,000件のAndroidアプリの80%以上にKotlinコードが含まれているそうです。

6. Android開発以外にもサーバサイド開発でも広く使われている

元々Jetbrains(KotlinやIntelliJを作ったチェコの会社)が社内のJavaアプリケーション(IntelliJなど)コードを置き換えていく用にKotlinを発明しただけあって、グローバルではAndroidに次いでサーバサイド開発でも広く利用されている模様。

ちなみに日本だとNewspicksさんがサーバサイドの主要言語をJavaからKotlinに置き換えたりした事例が2021年にありました。
他のサーバサイドKotlinの国内事例はこちらの記事にもまとまっているようです。

7. 現在はコンパイラの書き直しや、Multiplatform対応を進めている

言語仕様としてはもう成熟しているので、現在はコンパイラの書き直しによるパフォーマンス向上や、Multiplatform対応(JVM以外のプラットフォームでも動かせるようにする対応)に注力している。

まとめ

以上、発表内の重要な点をまとめてみましたが、ぜひご興味わいた方は元スライドのほうもご覧いただけますと嬉しいです!
それでは皆さん、よいクリスマスを!

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2