every Tech Blog

株式会社エブリーのTech Blogです。

8年前にKotlinを採用してたくさん恩恵を受けた話

この記事は every Tech Blog Advent Calendar 2024(夏) 21 日目の記事です。

はじめに

こんにちは、エブリーでCTOをしている今井です。
Kotlin Fest 2024 の開催がいよいよ明日に迫ってきました。
エブリーでは8年前にDELISHKITCHENのアプリを作り始めた時からKotlinを使っており、
今回KotlinFestを通じて、Kotlinコミュニティに貢献できることを嬉しく思っております。

このブログでは、Kotlinを採用した当時の状況や、採用して良かったことに関して振り返ってみたいと思います。

Kotlinの採用

FirstCommitのスクリーンショット
改めてコミットを見たところ、Kotlinを初めて導入したのはなんと2016年のFirstCommitからでした。
当時のバージョンは1.0.3で、その時はまだGoogleの正式なサポートもまだ発表される前1で、
Androidアプリ開発においてまだまだJavaが主流。かつこんなにKotlinが急激に浸透するとは思ってもいませんでした。

また、開発を進めるにあたってもKotlinの導入事例はとても少なく、ちょっとしたことでも調べるのに苦労したことを覚えています。

当時のコードを振り返ると、たくさん拡張関数作って、ActivityやFragmentをシュッと書きたいという
自分なりにKotlinらしく書くことを模索した形跡がありました。

FragmentUtil.kt

fun SupportFragment.inflate(layoutResId: Int, inflater: LayoutInflater?,
                            container: ViewGroup?): View? =
        inflater?.inflate(layoutResId, container, false)

fun Fragment.inflate(layoutResId: Int, inflater: LayoutInflater?,
                     container: ViewGroup?): View? =
        inflater?.inflate(layoutResId, container, false)

MainFragment.kt

class MainFragment : AbstractFragment() {

    companion object {
        @JvmStatic fun newInstance() = MainFragment()
    }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
    }

    override fun onCreateView(inflater: LayoutInflater?, container: ViewGroup?,
                              savedInstanceState: Bundle?): View? =
            inflate(R.layout.fragment_main, inflater, container)
}

これ自体は今思うとまだまだ未熟な書き方も多く恥ずかしい部分も多いですが、
Kotlinを採用したことでの恩恵も多く受けたと思います。

Kotlinの恩恵

Null-Safety

一番の恩恵は確実にNull-Safetyにありました。
当時Androidは自分一人での開発だったためレビューもしてもらえない環境かつ、
その時点での自分のAndroid開発経験も半年ほどと未熟だった中で、
リリース当初からCrashFreeRateが99.9%という高いスコアを出せていたのは、
Kotlinを採用していなければ実現できなかったと思います。

シンプルで短く書ける

また、シンタックスがシンプルで短く書けることも初期の開発速度に寄与していたと思います。
上記で紹介した拡張関数やLambdaなどは使えるところは意地でも使うくらい、ハマってました。
Null-Safetyではどうしてもその中身のチェックに記述が増えがちなところあると思いますが、
SmartCastなどにより、書きやすさを維持したままより安全なコードが書けるも良かったです。

書いていて楽しい

Kotlin自体の機能ではないですが、上記の恩恵などから、書いていて楽しかったというのも、
今思うと恩恵として大きかったと思います。まだまだ未知なものを自分の手で開拓していく感じも面白かったです。

まとめ

エブリーではAndroidアプリの開発当初からKotlinを採用し、Kotlinに支えられてきました。
同様に弊社のあらゆるエンジニアは多くの技術やオープンソースに支えられています。
これらを盛り上げる技術コミュニティに支援をすることは、会社にとってもの技術投資でもあると考えています。
今回のKotlinFestをはじめ、今後も技術コミュニティにも積極的に支援していきたいと考えております!

余談: フルKotlinのアプリでストア総合一位はDELISHKITCHENが初?

Kotlinが採用されたGoogleI/O 2017には現地で参加していたのですが、
ちょうどそのとき日本のストアで総合1位になってました。
今日本で1位のアプリはフルKotlinだというのをGooglerに話したところ、
フルKotlinとか聞いたことない / 多分ランキング初めてなんじゃないか?
と言っていただいたので、個人的には勝手に弊社のアプリが初めてだと思ってますw

GoogleI/O 2017の時のストアのスクリーンショット