Open9

なぜKotlinで開発するのか?Kotlinの魅力について語る会

イベント情報

https://moneyforward.connpass.com/event/242696/

twitter hash tag

#mf_td

参加者

ファ:長島 圭祐 株式会社マネーフォワード
マ:東海林 悠 株式会社マネーフォワード
ア:しゅん アスクル株式会社
ユ:たろう Ubie株式会社

Q. なぜサーバーサイドKotlinを選んだのか?

ファ:Kotlin のどのあたりがいいのか

マ:2つ選択した方針がある

  1. 新しいものを触りたい!チャレンジしたい。それぞれのチームに裁量がある。
  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が好きなメンバーが増えたことが強い。

https://twitter.com/KiriminOfficial/status/1524324104203272192?s=20&t=s8dPWjrtvWRIZK-8XeqEEA

マ:強い 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 じゃないとしっかり明記する。

https://twitter.com/luccafort/status/1524329704379260928?s=20&t=YwkIe65ZoYnfr9oMgMLA9Q

マ: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 を作ったりしている。言語の縛りもなく色々チャレンジしている。

ログインするとコメントできます