なぜKotlinで開発するのか?Kotlinの魅力について語る会
イベント情報
twitter hash tag
参加者
ファ:長島 圭祐 株式会社マネーフォワード
マ:東海林 悠 株式会社マネーフォワード
ア:しゅん アスクル株式会社
ユ:たろう Ubie株式会社
Q. なぜサーバーサイドKotlinを選んだのか?
ファ:Kotlin のどのあたりがいいのか
マ:2つ選択した方針がある
- 新しいものを触りたい!チャレンジしたい。それぞれのチームに裁量がある。
- Ruby ではなく Java に近いフレームワークなので、採用の幅が広がる
ア:2017年から導入を始めている。version 1.2くらいから導入を始めた。
会社説明での反応は良い。
ファ:自分も会社説明をするときに、おっ!珍しいですね!いいですね!!
と良いリアクションをもらえる
ユ:4年前くらいからKotlinを採用している
5, 6人しかいない時から入れている。
Rails のサービスがあり、別のサーバーを使うときに Kotlin を採用した。
社内に Kotlin 好きな社員がいたのが強かった。
Java のエコシステムに乗れるのも良いところだった。
Java vs Kotlin を比較したときに、 Kotlin の方が書きやすかった。
Spring も Kotlin で書きやすくなった。
Q. kotlin の他にどんなプログラミング言語を考えたのか、それを選ばなかったのか?が気になります。
マ:新しい言語にチャレンジするという点で、kotlin を使うチームが立ち上がった
ファ:kotlin でいきましょうと言われてどんな感じでした?
マ:フロント → rails と触って突然 kotlin しましょうと言われて、やったわーい!って感じで、楽しみでした。
ア:Javaのシステムが動いていたので、JVM系のシステムを考えていた。
Java / Scalar / Kotlin が選択肢になったが、新しいものを使いたいので、 kotlin になった
ファ:Scalar もよく聞きますよね
ユ:スタートアップの会社の中で、新しいことをチャレンジするより、慣れている言語の方が良いと感じた。
新しいことにチャレンジする余裕もないので、安心感が欲しい。
いざとなったらJavaに戻れる安心感が強かった。
今と昔で違うのは、言語としての成長もあるが、kotlinが好きなメンバーが増えたことが強い。
マ:強い SQL のフレームワークがないのは詰まる部分もあった。
Kotlin より Spring フレームとどう向き合っていくかが問題。
最初は、Rails のデバッグ方式に引きづられて、IDEでの開発に慣れない部分があった。
ア:Spring フレームワークに任せられる部分が多かったので、あまり詰まったところはなかった。
ファ:Spring フレームワークが充実しているので、いいですよね。
ユ:マイグレーション周りは、 Java 界隈のデファクトスタンダードのフレームワークに乗ったので、あまり悩みはなかった。
ORM マッパーどうするんだって話はある。昔は生のSQLを書いていた。ORMマッパーを使うと、それぞれの仕様に依存してしまうので、ORMマッパーへの理解が必要になる。
SQLになると煩雑になりがちだが、間違いはないので、よかった。
ファ:新しいことへの学習コストを減らすということで、SQLを取り入れているんですね。
Q. Kotlin を使ってみてよかったこと・困ったこと
マ:意思決定をしてからの開発速度は上がった。型・IDEが強いので、Rubyのように困ることが減った。
IDEに慣れていない部分があって、ターミナルを開きたくなることが何回もあったのが、困ったこと。
ア:簡潔にかけるのがとても良い。Java のコードを Kotlin に移行したらコード量が半分になった実例がある。
Java のモダンな書き方もできる。null 周りもスッキリできる。意図した通りに書くことができたのがよかった。
Java のライブラリを使った時に Java っぽい書き方をする必要があるので、その時に困った。
ファ:Java <> Kotlin で書きやすくなるところはどうですか?
ア:データクラスがなくなるのが強い。
ファ:Java のライブラリを使うと null の問題が出てくるのですが、どうされていますか?
ア:ある程度は仕方がない部分になる。
ユ:collection の拡張関数がたくさんあるのが良い。
DB から持ってきたものを collection で欲しい情報に書き換えれるのがいい
Spring の validation / annotation は、Java を基準にしているので、 Kotlin では書きづらい。
Java のライブラリを使うときに、 null が出てきた場合は、 null じゃないとしっかり明記する。
マ:Intelli J を使うことが多いです。Kotlin 書くときに vscode 立ち上げようとはならない。
補完が強いので、トラックパッドを触ることが増えた。
ア:他の IDE を触る選択肢がなかった。Kotlin x Intelli J の相性がとても強かった。
ユ:他のツールを覚えるのがしんどいので、フロントエンドを書くときも Intelli J を使っています。
Q. 他の言語と比較した Kotlin のよさ
マ:Ruby と比較すると、同一のことをする時に、同じような書き方ができる。
ファ:Ruby は似たような関数がたくさんあるが、Kotlin は、ある程度絞られているので嬉しいですよね。
ア:コンパイル時に保守性が高まるのはとても良い。
ファ:動的言語を書いてきましたけど、静的言語は、ある程度安心してリファクタできるのいいですね。
ユ:データクラス便利なのはいいですね。
Q. 今後Kotlin に期待していること
マ:Kotlin の裾が広がることがあれば嬉しい。これから Kotlinが使う企業が増えることで、これから盛り上がっていくことを期待してます。
ア:Kotlin の完成度はたまりつつあるも、サーバーサイド Kotlin と言われることがあるので、サーバーサイドでもできるぞ!ってところが一般的になると嬉しい。
ユ:1つ目は、マルチプラットフォームで、ネイティブ・ブラウザ・サーバーサイドで使えると言われていて、あらゆるアプリケーションができると嬉しい。
2つ目は、賢くて、強制力のあるいいフォーマッターがあると嬉しい。
Q. リンターは何を使われていますか?
ユ:ktlint を使っています。
ア:detect を使っています。
ファ:Intelli J で、detect の設定もかけるのが良い。
マ:ktlint と detect を併用しています。
Q. 他の言語を使おうとするとどうしますか?
ユ:最近だと typescript で GraphQL の API を作ったりしている。言語の縛りもなく色々チャレンジしている。