受託開発で Java から Kotiln に移行する道のり
Merry Christmas!! この記事は Kotlin アドベントカレンダー 25 日目の記事です。 受託開発 で Java から Kotiln に移行する話を書きます。 自社サービスの企業が Kotlin を採用した!という話は良く聞きますが、なかなか受託開発で、という話は聞こえてこないなぁと感じています。 基本的に会社として Kotlin を採用した場合のメリット/デメリット・課題等について自分が検討したことをまとめています。 今回はコードは全く出てきません。
サーバーサイド Kotiln との出会い
Web アプリを開発している自分にとって、Kotlin についてはもともと Andriod の言語なんだなという認識しかありませんでした。 しかし昨年の JJUG CCC Fall2017 でエムスリーの前原さん(現在はエンジニアフェロー)の発表で Kotiln はサーバーサイドでも有効なんだ!!と知りました。
業務でも使いたい!
普段は Java + SpringBoot の組み合わせで Web アプリを開発していますが、KotlinならSpringBootの知見はそのまま活かせるのでかなり良いのでは?と思い、業務でも使いたいなと思い始めました。
Kotiln を採用するメリット
- マスターしてしまえば、開発効率や品質は上昇する
- これに関しては、多くの方が説いてくださっている通りだと思いますので割愛します
- モダンな言語に触れることによるエンジニアのモチベーションアップ
- Scala と比べて、関数型に寄り過ぎず敷居がそこまで高くない
- 今後スマホアプリ開発案件が生まれた場合に、ノウハウが活きてくるのではないか
- Android のファーストチョイス言語は既に Kotlin になっている
- (まだ実験的機能だが)マルチプラットフォーム →IOS でも動く
- 求人への強み
Kotlin を採用する上での懸念点
- 人の学習コスト
- 多くの概念が Java と同じ
- とりあえず Kotlin に置き換えるのであれば学習コストは高くない
- でも、それじゃ Kotlin の恩恵をフルに受けられない
- 「Kotlin らしく書く」という学習は継続的に必要
- 環境構築
- Kotlin 自体のバグ
- 結構ある
- Kotlin の YouTrackやフォーラムを参照
- Java に比べて情報が少ない
- Effective Java 的なものが無い
- 日本語の文献も多いとは言えない → だいぶ増えてきた!
- 正式リリース(Kotlin 自体や、実験的リリースの機能等)前後に変更が入ったりしているので、記事の信憑性が怪しかったりもする
- Java は Oracle(または IBM とか)が商用サポートしているが、Kotlin は?
- JetBrains は今のところ古いバージョンの Kotlin はサポートしていなそう
- 2 系が出たらどうなるかってところ
- 今のところ最新に追従していくしかない。LTS が無いのは受託開発には無理があるか?
- ランタイムの JRE がサポートされていれば問題なし?ここはよく分かっていません、詳しい方教えてください!!
後方互換性 - Kotlin はどの程度、後方互換をしていくつもりなのか?(Java はかなり後方互換なはず)
- JetBrains 社の Kotlin 開発チームの@yanex_ru さん曰く「必要なら破壊的変更するけどできるだけ互換性を持たせたい」
- ある程度のリスクは背負うことになる
言語の将来性
- JDK 問題
- サーバーサイド Kotlin
- 最近よく出てくる「GitHub 急成長言語 1 位 Kotlin!」みたいなのは実際 Android のコードが大半を占めているのだろうと思う
- サーバーサイド Kotlin は盛り上がりつつあるという状況に過ぎないのが現実だと思う
- とはいえ、有名企業がどんどん採用していっている事実もある(Yahoo とかサイバーエージェントとか LINE とか)
- フレームワークのデファクトスタンダードはまだ模索中だと思われるが、やはり Spring が Kotlin をサポートしたこともあり一歩リードか
- Spring と Kotlin は相思相愛!
- JetBrains 製のフレームワークの Ktor というのが全て Kotlin で書かれていて、2 番手といった感じ
- Google
- Android での公式言語として採用されたことにより、今後言語が急激に廃れる可能性は低い
受託開発業務で Kotlin を採用するまでに必要なこと
お客さんからの許諾
- まずはもちろんこれ。お客さんの承諾がありきだと思います。
保守担当者がある程度 Kotlin を身につける
- 作って作りっぱなしということはあまりないと思います。自社で保守も担当している場合、保守担当者がある程度 Kotlin という言語を身につける必要があると考えます。
コーディング規約を考える
自分がやったこと
社内勉強会で Kotlin を紹介する
- まずは社内のエンジニアに Kotlin に興味を持ってもらうのが第一歩です
- しれっと Intellij IDEA を見せる
- 「開発効率化」「バグの減少」とかっていう特徴を擦り込む
各種 Kotlin の本を自分の机や社内の本棚にしれっと置いておく
- 他社 API のモックや検証に使うアプリをしれっと Kotlin で書く
まとめ
ギリギリになってだいぶメモ的な感じになってしまいましたが、以上が自分で検討したことなどです。 残念ながら今のところ採用には至っておりませんが、社内でのKotlinの認知度は着実に上がっております。 だいぶ辛くなってきたので、サーバーサイドKotlinを採用している企業様への転職も考えていますが・・・ 受託開発でJavaからKotlinへの移行を考えている皆様の参考になれば幸いです。
Have a nice Christmas & Kotlin!!