Slide 1

Slide 1 text

運用中の Javaプロジェクトに Kotlinを導入した話 #m3kt どこでもKotlin #3 秋のLT大会

Slide 2

Slide 2 text

自己紹介 ● 木村 正弘 ● 株式会社サイバーエージェント(中途入社4年目) ● アメーバピグ サーバーサイドエンジニア ● ゲームが好き(PSNトロフィーレベル12) ● PlaystationHomeにハマって以来、理想のコミュニティーサービス を追い求めている

Slide 3

Slide 3 text

今日のテーマ

Slide 4

Slide 4 text

もくじ ● 前提 ● 導入の動機 ● 候補 ● 迷い ● 勉強会 ● 比較 ● 本番リリースに向けて ● 導入後 ● 今後の展望

Slide 5

Slide 5 text

前提 ● アメーバピグはサービス開始から8年半 ● サーバーサイドはJava ● 既存のコードは100万行以上 (ー_ー;) ● 自社の技術ブログに書いた内容と重複あり

Slide 6

Slide 6 text

導入の動機 ● 社内でのトレンドはJava→Node.js→Go ● 他部署への人材流出 ● (> 2つの言語をメンテするデメリット)

Slide 7

Slide 7 text

候補 ● Scala ● Go ● Kotlin

Slide 8

Slide 8 text

迷い 候補から絞りきれなかったので 迷いも含めてメンバーを巻き込む

Slide 9

Slide 9 text

勉強会 ● Scala, Go, Kotlin ● 資料はよさげなサイトを使う ● 実習としてWebの掲示板を作成 ● 1言語ごとに振り返り

Slide 10

Slide 10 text

比較 好み プロジェク ト マッチ 社内から の採用 社外から の採用 教育 合計 重み 100% 100% 40% 30% 30% Scala 5 4 4→1.6 2→0.6 2→0.6 11.8 Go 3 3 4→1.6 3→0.9 4→1.2 9.7 Kotlin 4 5 2→0.8 2→0.6 4→1.2 12.6 ● 定量化する ● 説明順序は定量→定性 ● コスト削減になる場合は具体的に書く

Slide 11

Slide 11 text

本番リリースに向けて ● コード的にはpom.xmlの修正だけ ● リスクの少ないプロセスから ● テスト用の機能を追加 ● レイヤー(Controller, Service, Dao)も除々に

Slide 12

Slide 12 text

やらなかったこと(時間があれば) ● サブシステムとして独立させない ● 既存JavaコードのKotlin置き換えはしない ● Gradleの導入はしない

Slide 13

Slide 13 text

導入後 ● 導入がゴールではない! ● チーム内で活発に使われるか ● チームメンバーが興味を持ててるか ● チームメンバーが成長できるか ● 組織の外からみて気になる状態

Slide 14

Slide 14 text

今後の展望 ● JRebel導入(済み) ● Google App EngineでKotlin(新規開発で検証中) ● AndroidでKotlin一気通貫の開発 ○ 通信はRPC ○ ローカルのテストではサーバープロセス上げない ● インラインテストデータ作成ツール

Slide 15

Slide 15 text

ご清聴ありがとうございました