先日開催された「Google I/O 2017」にてGoogleの公式サポートが発表されたKotlinですが、サイバーエージェントで初めて使われたのはKotlin M11(マイルストーン11)の時代。
2015年4月から開発が開始された映像配信プラットフォーム「FRESH!」Androidアプリ開発での採用が初めての事例で、Kotlin正式版が発表された2016年2月15日の3週間前に「FRESH!」がリリースされました。
その後も「FRESH!」だけでなく、2017年3月にリリースしたスタンプコミュニケーションアプリ「famchatty(ファムチャッティ)」もAndroidでKotlinを採用、またその他複数のサービスでKotlinの導入が予定されている中、サイバーエージェントではKotlinエンジニア向け勉強会「CA.kt」をスタート。2017年6月15日(木)に開催される第1回には、募集開始から1時間で100名以上の方々にご応募いただくなど、大きな反響をいただいております。
「FRESH!」立ち上げ時に同プロジェクトのAndroidエンジニアとしてKotlinを採用し、現在は技術戦略室で横断的な組織づくりを担当する藤原と、「CA.kt」主催者で「FRESH!」Androidエンジニアの荒谷にインタビュー。(ちなみにトップ画像の2人のポーズはKotlinの「K」を表しているそうです!)
これまでのKotlin開発で得た学びやI/Oで発表された時の思いなどを聞きました。
藤原 聖 メディア統括本部 技術戦略室 テクニカルマネージャー。2011年サイバーエージェント中途入社。 入社後は、Androidエンジニアとして数々のコミュニティサービスの開発、運営に携わった後、2015年4月より映像配信プラットフォーム「FRESH!」の立ち上げに参画。その後、2016年9月より現職。
荒谷 光 映像配信プラットフォーム「FRESH!」Androidエンジニアリーダー。 内定者時代にアプリ版「Ameba」でのAndroid開発を経て、2015年サイバーエージェント新卒入社。 研修終了後の2015年6月より「FRESH!」チームにジョインし、2016年9月より現職。
ーーどのような考えのもと「FRESH!」でKotlinを使うことになったのでしょうか?
藤原:2015年4月に「FRESH!」チームが発足したのですが、その2ヶ月くらい前から個人的にはKotlinに注目していました。2015年2月当時(Kotlin M10)は社内では一切使われていない言語でしたが、サンプルをKotlinで書いたりしているうちにその言語仕様の良さに惹かれました。文末にセミコロンが不要な点やラムダ式が使える点などJavaの冗長な部分を書く必要がないのも良いですし、何よりもJavaとの100%互換性をJetBrainsが最初から一貫して宣言しており、Javaと共存できる点を魅力に感じましたね。
また、2015年4月当時日本でも海外でもAndroid開発でKotlinという選択は良いのではないかと盛り上がっていて、注目されてきたこともあり、導入を決定しました。
ただM11の段階で実サービスへの導入を決めたので、何かあった際にはいつでもJavaに戻れるような準備は万全にしていましたし、何度も検証を重ねました。
荒谷:藤原には配属前にKotlinの話は聞いていました。私もKotlinで開発したことはありませんでしたが、新卒時の全体技術研修では色々な言語で開発していたため “言語の学び方” を習得することができたのでそれがKotlinにも活きたと思います。
配属されてから本格的に勉強し始めたのですが、Kotlinの公式サイトがすごく丁寧で、そこでかなり学びました。また書き方がわからないものはまず先にJavaで書いてから、IDEのツールでJavaからKotlinに変換して理解するようにもしていましたね。
藤原:彼が新卒だったころは私がトレーナーではありましたが、私自身もKotlinで開発するのは初めての経験だったのでチームで日々勉強しながら開発を進めていきました。
荒谷:だから書き方も毎回すごく変わりましたよね。
藤原:Kotlinで開発することを決めたもう一つの大きな理由は、JetBrainsが開発した言語だったからです。AndroidStudioのベースになっている「IntelliJ IDEA」もJetBrainsが作っているものなので、IDEのサポートが100%保証されていましたからね。
ーーちなみに現在「FRESH!」Android開発以外でのKotlinの利用状況はどうでしょうか?
藤原:2016年末くらいから「FRESH!」サーバーサイドでもKotlinが使われ始めているのと、2017年3月にリリースされたスタンプコミュニケーションアプリ「famchatty(ファムチャッティ)」もAndroid版でKotlinが使われています。
その他、複数のサービスでも導入が予定されており、現場メンバーからKotlinに関する相談を受けることも多いです。
ーー思い入れのあったKotlinが、Googleで公式サポートされると聞いたとき、どう感じましたか?
荒谷:私は日本のI/O Extendedで見ていたのですが、日本でもすごく盛り上がりました。
Kの文字が見えたときに「おおおお!」とテンションが上がって、会場内にいたKotlinを使っているAndroidエンジニア達とハイタッチしました。
藤原:I/Oは現地で見ていたのですが、スライドでKotlinのロゴが出るよりも先に「Kotlin」と聞こえて、思わず出た第一声が「え、そんなことあるの!?」でした(笑)
これまでAndroidが公式言語としてJava以外を採用することがなかったため全く予想していなかったんです。AndroidStudioの開発がJetBrainsだからAndroid開発のIDEがAndroidStudioである限り問題なくKotlinを使えるだろうとは思っていたのですが、まさか公式サポートという方法があるんだ、と。Keynoteで発表されるくらいだったので、追加でセッションが発表されたりと思った以上に大々的に取り上げられている点も印象的でしたね。
実は昨年2016年は「もしかしたらKotlinの公式サポートがあるかも!?」と期待していたんです。というのも2016年2月にバージョン1.0がリリースされて、Androidエンジニアが盛り上がっていたので。
I/Oでの発表を聞いて感じたのは、Androidエンジニアコミュニティの盛り上がりもさることながら、Googleは冷静に判断して公式サポートにしたのだということです。Javaとの互換性やIDEのサポートがあること、製品版としてすでに世の中に出ているアプリがあること、そしてOSSであることなど客観的な事実が積み上がってきている中で、合理的かつ冷静に判断したんだろうと感じました。
ーーそれでは「CA.kt」開催に至った経緯や見所を教えてください
藤原:先ほどもお話したように、社内のKotlin需要がだんだん増えてきたのでぜひやろうかなと話を進めていたところに、思いがけずI/Oでの発表があったので当初予定していた開催日を前倒しにしました。
新規サービスを作る際にすでに選択肢としてKotlinが社内で確立されていますし、Kotlinへリプレイスを予定しているサービスもあります。「FRESH!」含めすでに4つくらいのプロジェクトで使われることがI/O発表前からわかっていたので、そろそろノウハウの展開も進めなければと思っていたんです。
Kotlinってすごく良い言語ですが、書き方がたくさんあるんですね。一つの処理を行おうと思っても様々な書き方ができます。たとえば、細かいところだと引数のラムダを中にいれるか外に入れるかとか、nullチェックをどうするかとか。「FRESH!」の開発途中で、私も荒谷もお互いに気づきがたくさんあって都度共有していたのですが、そういう部分を勉強会で還元できればと思っています。
Kotlinは単純に学ぶだけだと、学習サイトも充実していますし、Javaをやったことがあると学習コストも高くないと思います。Spring Framework 5.0においてもKotlinが公式サポートされたこともあり、Androidだけではなく、サーバーサイドでKotlinをどう使うかという点も勉強会の趣旨です。
またCA.ktの第一回目には日本Kotlinユーザグループ代表の長澤 太郎さんも登壇してくださいます。
荒谷:Kotlinに慣れ親しんでいる方々にとっても有意義な勉強会になるのではないでしょうか。登壇者はKotlin歴が長い人たちが多いので、その分興味深い話が聞けると思います。
藤原:運営の私が参加者として聞いても楽しい勉強会になると確信しています。
ーー 最後に、今後サイバーエージェントとしてどのようにKotlinの発展を後押ししていきたいか教えてください
荒谷:私は日本で最初に発売されたHT-03A時代からずっとAndroid開発をしているので、もうAndroid歴7年くらいになるのですが、今まで周りの方々が皆Javaを書いていて、Kotlinを書いている人たちは少なかったのが現状でした。
今回の公式サポートを受けて、もっとKotlin人口が増えれば嬉しいですね。マイナーなバンドを応援していて、やっと彼らがメジャーデビューした時のような気持ちに近いかもしれません(笑)
今後は社内外に関わらずKotlinを勉強する方々の手助けが出来ればと思っています。
I/OでKotlinに関する発表があってから、マイナー時代からKotlinを応援していたメンバー達でJavaからKotlinに移行する初学者のための本を書くことになり、私と藤原でその作業をお手伝いさせて頂きました。
Kotlin入門までの助走読本(PDF) ダウンロードリンク : http://goo.gl/5vUT7o
藤原:その気持ちすごく分かる(笑)I/Oの1週間前にKotlinが好きなエンジニア達と飲んでいたときに、I/Oで発表あるかなと話していて実際発表されたので、気持ち的にはまさに追っかけしていたバンドが武道館でメジャーデビューを発表した時のような(笑)
Kotlinは書いていてとても楽しい言語で、楽しく2年が過ぎたなと感じています。公式サポートを受けてこれから書く方々も増えると思うので、参加者のみなさんと主催の我々で情報交換していきたいですし、双方向に学んでいければと考えています。
現状、世界で一番Kotlin使われている国は日本なのではと個人的に思っているのですが、日本から海外にも積極的にKotlin業界へ貢献していきたいです。