サイバーエージェントに「Kotlin」を採用した自社Androidアプリ開発の舞台裏を聞いてみた

新しいAndroidアプリ開発言語として注目される「Kotlin(コトリン)」。今年からGoogleもこれを正式にサポートすることになった。
それ以前から国内に先駆け、自社サービス開発にKotlinを使ってきたサイバーエージェントの「FRESH!」チームに、Kotlinの魅力、今後のKotlinコミュニティの発展などについて聞いた。

Googleも正式サポートを表明

「いま、Kotlinのコミュニティはかなり盛り上がってますよ!」

開口一番、嬉しそうに語るのは、サイバーエージェントの藤原聖氏だ。

KotlinはJetBrains社が開発した、JVM上で動作する静的型付けのオブジェクト指向プログラミング言語。複雑で肥大化し互換性問題で硬直してきたとも言われるJavaの言語仕様を解消するため、簡素化および安定性と機能性を高めることを狙った新しいプログラミング言語だ。

その存在は以前から知られていたが、2017年5月、サンフランシスコで開催された「Google I/O 2017」で、GoogleがKotlinをAndroidアプリ開発言語として正式にサポートすることを発表したのだ。このカンファレンスに参加していた藤原氏は、そのときの興奮がいまなお収まらない。

株式会社サイバーエージェント 藤原 聖氏
2011年サイバーエージェント中途入社。入社後は、Androidエンジニアとして数々のコミュニティサービスの開発、運営に携わった後、2015年4月より映像配信プラットフォーム「FRESH!」の立ち上げに参画。その後、2016年9月よりメディア統括本部 技術戦略室 テクニカルマネージャーを務める。

「実は2016年のGoogle I/OでKotlinに関して何らかの発表があると思っていたのですが、そのときにはなくて。Googleは開発言語の正式サポートなどはしないのものなのかなと思っていたので、今年のキーノートで発表されて本当にびっくりしました。

すでに世界での利用実績が高まっていることに加え、技術的チャレンジが好きなエンジニアほど、Kotlinを使っているという事実がありました。そうした先進的なエンジニアを今後もAndroid開発に惹きつけるためにも、Kotlinの正式サポート表明が必要だったのではないかと思っています」

藤原氏が嬉しがるのは言うまでもない。Kotlinがまだマイルストーン11という時代からその有用性に注目し、自社のプロジェクトに導入していたからだ。

2015年4月から開発が始まった映像配信プラットフォームフォーム「FRESH!」のAndroidクライアントのKotlinによる実装は、もちろんサイバーエージェント内では初めて、国内外でも早い取り組みだ。現在は「FRESH!」のサーバーサイドの一部もKotlinで書かれている。

Kotlinの導入は燎原の火のごとく急速に広がる気配がある。例えば日本では、Sansanの「Eight」、トクバイの「トクバイ」、エムスリーの「MR君」、Rettyの「Retty」、エウレカの「Pairs」など、Kotlinでの開発を表明するサービスが続々と誕生している。

8,568通り、あなたはどのタイプ?

「いつでもJavaに戻れる」を合い言葉に開発スタート

KotlinがAndroidアプリ開発者に高い関心をもって迎えられている理由は何か。一つは、Javaとの100%互換性だ。

「Androidで使われているライブラリはそのまま使える。また、何か問題があったらJavaにすぐ戻れる。FRESH!のプロジェクトでも、何かあったらJavaに戻ろうというのが藤原さんの口癖でした」

と振り返るのは、2015年4月入社でいきなりKotlinという初めての言語を使うことになった、荒谷光氏だ。

荒谷氏は新卒入社ながら、大学・大学院を通して一貫してAndroid開発に携わってきており、Javaという言語の硬直性についても熟知していた。

「会社でもAndroid開発は続けたかったのですが、どうせやるんだったら新しい言語でやりたかった」と、Kotlinへのチャレンジにワクワクした一人だ。

株式会社サイバーエージェント 荒谷 光氏
内定者時代にアプリ版「Ameba」でのAndroid開発を経て、2015年サイバーエージェント新卒入社。研修終了後の2015年6月より「FRESH!」チームにジョインし、2016年9月より映像配信プラットフォーム「FRESH!」Androidエンジニアリーダーを務める。

2015年の開発当初、参考になる日本語の情報は、2012年の段階ですでにKotlinに着目し、国内でのエバンジェリストを自称する長澤太郎氏(日本Kotlinユーザーグループ代表、エムスリー所属)が発信する情報ぐらいでした。

Kotlinの言語仕様を理解するうえで、藤原氏と荒谷氏が最も参考にしたのは、Kotlinのオフィシャルサイトが英語で発信する情報だった。

「後発の言語なのに、というかそれゆえに、オフィシャルサイトの情報はよく整理されており、丁寧でわかりやすかった。これが世界に急速にユーザーを広める原動力になっているのはたしかです」(荒谷氏)。

Android開発で欠かせない統合開発環境(IDE)「Android Studio」が第一級の言語としてKotlinを推奨し、それをサポートしている点も重要だ。

「Android Studio」はもともとJetBrains社が開発した「IntelliJ IDEA」をベースにAndroid開発に最適化されたものであり、Kotlinとの親和性が高いのだ。

8,568通り、あなたはどのタイプ?

Syntaxがモダンで美しい。NullPointerException回避の工夫も

そしてKotlinの最大の魅力といえば、その言語のモダンさだ。

「なによりSyntaxがモダンで簡潔。その美しさに恋に落ちたというエンジニアもいるぐらいです。Javaだと本質的ではないが、お決まりで書かないといけない構文がたくさんあるのですが、そういうボイラープレート的なものがKotlinにはほとんどありません」(藤原氏)

ほかにもJavaと比較した際の優位性はいくつもある。

例えば、Kotlinにはコレクション操作のためのメソッドがたくさん用意されている。JavaでのAndroidアプリ開発には、Retrolamdaを導入しない限り利用することができなかったラムダ式にもデフォルトで対応している。

さらに、拡張関数、遅延初期化、演算子オーバーロード、エルビス演算子など、Javaにはない便利な文法も多数存在する。メンテナンスの用意さも特筆ものだ。

「Android開発で落ちる原因の大半は、NullPointerExceptionのエラーなんですが、それが発生しないようにあらかじめ設計されている。Kotlinでは変数定義時にその変数がNull許容型かNull非許容型かどうかを定義する必要あるのですが、この厳密な区別のおかげで、NullPointerExceptionを極力回避することができ、誰もがよりメンテナビリティの高いコードが書けるようになります」(荒谷氏)

なにより荒谷氏が気に入っているのは、Kotlinが「プログラムは小説だ」という考え方を忠実に反映できる開発言語だということだ。

「この言葉は、実は藤原さんの口癖。新人研修の時から口酸っぱく言われていました(笑)」

つまりこういうことだ。「私」という一人称で書かれている小説があったとする。ところが途中で主人公が自分を「僕」と呼ぶようになる。人称代名詞の変化は主人公の心境の変化を物語っている。

「プログラムも同じで、ここだけ違う書き方がされていたら、そこに意味があるということなのです。小説と同じで、プログラムはたんに動けばいいのではなく、コードの読み手に明確に意味が伝わるのでなければならない。コードの中のストーリーの変化、Kotlinはそれをうまく記述できる言語だと思います」と藤原氏は評価する。

むろん、現在のKotlinがパーフェクトというわけではない。特にJava互換性における弱点はいまだ残る。

「JavaのライブラリをKotlinで使うときには、その時点では変数がNull 許容型かNull非許容型はわからないわけです。ライブラリのコメントを読んで、これはNull許容型である可能性があると書いてあればわかりますが、そういう記述のないライブラリもある。それを知らずにやると落ちることがある。

これはJavaの仕様を引きずり、JVM上で動かす以上、致し方ない面がありますが、Kotlinの弱点の一つと言えます。ただ、逆に言えば、こうした問題をプログラマに考えさせる言語という言い方もできる。つまり、ここだけは注意してくれというポイントが明示的なんです。それさえ越えればあとはKotlinの自由な世界が広がります」(藤原氏)

活況を呈するKotlinコミュニティ。「助走読本」を共同執筆

Kotlinで書かれた「FRESH!」サービスは、2016年1月にローンチされた。現在は、ゲーム実況、地上波では見られないスポーツ中継、アーティストや芸能人のオリジナル番組、声優・アイドル・2.5次元俳優のステージ生中継、絵師の製作風景など約3,000チャンネルにて、累計13万を超える番組(2017年7月時点)が楽しめる。

「たしかにYouTubeは圧倒的にすごいし、国内ではニコニコ生放送もAbemaTVもサービスとしては先行しています。しかし私には、FRESH!の技術は国内では最先端という自負があります。今後は名実ともにトップを奪いたい。同時にKotlinを使っているプロダクトとして常に世界をリードしていると評価もされたい」と、入社3年目で「FRESH!」のAndroidエンジニアリーダーを務める荒谷氏は言う。

「FRESH!」開発を通して、Kotlinの高い有用性が確認されると、サイバーエージェントグループ内では続々とこれを採用するプロジェクトが生まれてきた。

キャラクターを自作して友だちに送れるスタンプコミュニケーションアプリ「famchatty」はAndroidクライアントの新規開発にあたってKotlinを採用した。

さらに、定額制音楽配信サービス「AWA」、趣味でつながる恋活サービス「タップル誕生」、そして「AbemaTV」などの既存サービスでも、これまでJavaで書かれたコードをKotlinに置き換える作業が始まっている。

「社内のレポジトリにFRESH!のコードを置いていますから、みんなそれを参考にしているみたいですね。私も初期導入にあたってのノウハウを随時社内に発信しています。そもそもサイバーエージェントでは、言語も含めてどんな技術を採用するかはエンジニアに任されています。なのでKotlinも広がってきているのでしょう。

誰かに許可を取る必要はない。もちろんそれで失敗することもあるけれど、たとえ失敗したとしても必要以上に咎められることはありません。自由と責任の両方をエンジニアが担うという風土は、これからも大切にしていきたい」と藤原氏。

かくして、「Kotlinの採用実績においては国内ではサイバーエージェントが一番進んでいる」(藤原氏)という状況が生まれることになった。

藤原氏と荒谷氏は、Kotlinのコミュニティ活動にも熱心だ。例えばこの6月に第一回が開催された「CA.kt」。サイバーエージェントのエンジニア以外も参加するKotlinの勉強会だ。Google I/Oでの発表もあって、定員100名がすぐに埋まる大盛況だった。

「Googleの発表で初めてKotlinを知ったという初心者から、すでに数年の経験のある中級者まで、双方が満足できるような内容にしたのがよかったと思います。最初期の人々が先走るだけではなく、後続の人を常にサポートしていくという態勢が重要。今後もそういう両方の人を意識しながら、コミュニティをマネジメントしていきます。それが今年度の私の抱負ですね」(藤原氏)

これは藤原氏だけでなく、Kotlinコミュニティの草創期を牽引してきたエンジニアたちに共通する思いだろう。

だからこそ、彼ら日本Kotlinユーザグループの面々はこの5月、『Kotlin入門までの助走読本』なる学習書を共同執筆し、それを無償で公開したのだ。

初学者を含むコミュニティへの配慮と同時に、執筆期間がわずか1週間強というスピードには、彼らのKotlinへの熱い情熱を感じざるをえない。

サイバーエージェント「Kotlin」関連リンク

執筆:広重隆樹 撮影:刑部友康

※本記事は「CodeIQ MAGAZINE」掲載の記事を転載しております。

PC_goodpoint_banner2

Pagetop