運用中の JavaプロジェクトにKotlinを導入した話

905af2fcb63aaf3a59659d50458789e1?s=47 mkimura
October 23, 2017

運用中の JavaプロジェクトにKotlinを導入した話

905af2fcb63aaf3a59659d50458789e1?s=128

mkimura

October 23, 2017
Tweet

Transcript

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

  2. 自己紹介 • 木村 正弘 • 株式会社サイバーエージェント(中途入社4年目) • アメーバピグ サーバーサイドエンジニア •

    ゲームが好き(PSNトロフィーレベル12) • PlaystationHomeにハマって以来、理想のコミュニティーサービス を追い求めている
  3. 今日のテーマ

  4. もくじ • 前提 • 導入の動機 • 候補 • 迷い •

    勉強会 • 比較 • 本番リリースに向けて • 導入後 • 今後の展望
  5. 前提 • アメーバピグはサービス開始から8年半 • サーバーサイドはJava • 既存のコードは100万行以上 (ー_ー;) • 自社の技術ブログに書いた内容と重複あり

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

  7. 候補 • Scala • Go • Kotlin

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

  9. 勉強会 • Scala, Go, Kotlin • 資料はよさげなサイトを使う • 実習としてWebの掲示板を作成 •

    1言語ごとに振り返り
  10. 比較 好み プロジェク ト マッチ 社内から の採用 社外から の採用 教育

    合計 重み 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 • 定量化する • 説明順序は定量→定性 • コスト削減になる場合は具体的に書く
  11. 本番リリースに向けて • コード的にはpom.xmlの修正だけ • リスクの少ないプロセスから • テスト用の機能を追加 • レイヤー(Controller, Service,

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

  13. 導入後 • 導入がゴールではない! • チーム内で活発に使われるか • チームメンバーが興味を持ててるか • チームメンバーが成長できるか •

    組織の外からみて気になる状態
  14. 今後の展望 • JRebel導入(済み) • Google App EngineでKotlin(新規開発で検証中) • AndroidでKotlin一気通貫の開発 ◦

    通信はRPC ◦ ローカルのテストではサーバープロセス上げない • インラインテストデータ作成ツール
  15. ご清聴ありがとうございました