Slide 1

Slide 1 text

Sansan株式会社 部署 名前 「2024年版 Kotlin サーバーサイド プログラミング実践開発」の復習 Sansan技術本部 After Kotlin Fest 2024 LT Night @Sansan 技術本部 Bill One Engineering Unit ⼩式澤 篤

Slide 2

Slide 2 text

写真が入ります ⼩式澤 篤 (Atsushi Koshikizawa) Sansan株式会社 技術本部 Bill One Engineering Unit 2016年 BtoC 業界の会社へ新卒⼊社し、主にサーバーサイドや全 ⽂検索システムを担当。2022年に BtoC 業界から Sansan へ中途 ⼊社。⼊社以来 Web アプリケーション開発エンジニアとして Bill One の開発に従事。主に請求書受領領域の開発を⾏っていた。 現在はエンジニアリングマネジャーとしてマネジメントするとと もに、 Bill One の品質向上を推進している。 @lastarrow21 @lasta

Slide 3

Slide 3 text

会社概要 2 表参道本社 神山ラボ Sansan Innovation Lab 社 名 Sansan株式会社 所在地 表参道本社 東京都渋⾕区神宮前5-52-2 ⻘⼭オーバルビル13F グループ 会社 Sansan Global Pte. Ltd.(シンガポール) Sansan Global Development Center, Inc.(フィリピン) Sansan Global (Thailand) Co., Ltd.(タイ) ログミー株式会社 株式会社ダイヤモンド企業情報編集社 クリエイティブサーベイ株式会社 株式会社⾔語理解研究所 1519名(2024年2⽉29⽇時点) 従業員数 2007年6⽉11⽇ 設 ⽴ ⽀店:⼤阪、名古屋、福岡 サテライトオフィス:徳島、京都、新潟 拠 点 寺⽥ 親弘 代表者

Slide 4

Slide 4 text

働き⽅を変えるDXサービス 請求 ⼈や企業との出会いをビジネスチャンスにつなげる「働き⽅を変えるDXサービス」を提供 ビジネスフローにおけるさまざまな分野でサービスを展開 名刺管理 名刺DX 営業 営業DX 契約 法務DX 経理DX 個⼈向けDX 法⼈向けDX 必要な情報を すぐに⾒つけられる 情報の管理がしやすく すぐに共有できる 情報を分析・活⽤しやすく データに基づいた判断ができる SansanのDXサービスの活⽤で変わる働き⽅

Slide 5

Slide 5 text

請求書受領から、⽉次決算を加速する インボイス管理サービス「Bill One」 あらゆる請求書をオンラインで受け取り、 企業全体の請求書業務を加速する インボイス管理サービスです。

Slide 6

Slide 6 text

「2024年版 Kotlin サーバーサイド プログラミング実践開発」の復習

Slide 7

Slide 7 text

の前に

Slide 8

Slide 8 text

おことわり

Slide 9

Slide 9 text

😷

Slide 10

Slide 10 text

- 前⽇から熱を出して参加できませんでした - 1ヶ⽉以上前から参加に向けて予習等準備していたので悔しい - タイトルには「復習」とあるが実際には参加していない - ⽵端さんの 登壇資料 および 登壇後のブログ が素晴らしく学びになる - 今からサーバーサイド Kotlin を導⼊しようと考えている⽅、今サーバーサイ ド Kotlin を実践している⽅は、この資料はどうでも良いので⽵端さんの資料 と 書籍 を読むことをおすすめします Kotlin Fest 2024 参加できませんでした 😷

Slide 11

Slide 11 text

Kotlin Fest 2024 参加できませんでした 😷 サーバーサイド Kotlin を導⼊済みのプロダクト Bill One の実情との⽐較をメインに紹介します - 前⽇から熱を出して参加できませんでした - 1ヶ⽉以上前から参加に向けて予習等準備していたので悔しい - タイトルには「復習」とあるが実際には参加していない - ⽵端さんの 登壇資料 および 登壇後のブログ が素晴らしく学びになる - 今からサーバーサイド Kotlin を導⼊しようと考えている⽅、今サーバーサイ ド Kotlin を実践している⽅は、この資料はどうでも良いので⽵端さんの資料 と 書籍 を読むことをおすすめします

Slide 12

Slide 12 text

「2024年版 Kotlinサーバーサイド プログラミング実践開発」と Bill One の実情との⽐較

Slide 13

Slide 13 text

Email Cloud Load Balancing Backend Cloud Run Database Cloud SQL Static Files Cloud Storage Cloud Tasks API Gateway Cloud Load Balancing API Client User Logging Error Reporting Cloud Build Bill One Entry Management / Developer Tools Cloud Functions Monitoring Authentication Login Screen Frontend / BFF Cloud Run Pub/Sub Bill One のアーキテクチャ概観 約7割が Kotlin

Slide 14

Slide 14 text

おすすめされていたもの 他に挙げられていたもの Bill One で採⽤しているもの Web アプリケーション フレームワーク Ktor Micronaut gRPC-Kotlin (※) Ktor DI フレームワーク Koin Dagger 2 Kodein (なし) O/R マッパー jOOQ Exposed Ktorm (なし) テストフレームワーク Kotest Spek JUnit 5 Kotest (⼀部のみ) 最近のサーバーサイド Kotlin で使えるフレームワーク (※) gRPC-Kotlin は 厳密には Web アプリケーションフレームワークではないが、 Web インタフェースの⼀種として紹介

Slide 15

Slide 15 text

- Kotlin 製のマイクロサービスでは全て Ktor を採⽤している - 軽量で柔軟性が⾼く、起動速度も早く、学習コストが低い - 多くのメンバーが Kotlin 未経験から参画できている - Ktor でも起動時間に影響が出るはある - Java Agent をベースとしたライブラリの導⼊ (参考) - コード量の肥⼤化 - JetBrains 社製で Kotlin のアップデート追従性も安定的、ライブラリ群の バージョンアップコストが⽐較的低い - 10以上のマイクロサービスで採⽤しているがすべて Ktor 2.3.x - 資料作成当時、ほぼ最新のバージョン - とはいえメジャーバージョンアップは⼤変だった Web アプリケーションフレームワーク - Bill One の実情

Slide 16

Slide 16 text

- “ ⽐較的新しいフレームワークのため、エコシステムやサードパーティの プラグインは発展途上 ” - 基本的な開発時は問題ないが、独⾃の AOP 的なプラグインを作成したい場 合、ドキュメント不⾜感は否めない - “ Spring のようなフルスタックフレームワークではないため、⽤途に応 じて他のフレームワークとの組み合わせも必要 ” - 裏を返すと Spring Framework へのロックインは無いため組み合わせ⾃由 - Ktor: Project Generator (Spring Initializr のようなもの) がオンラインおよび IntelliJ IDEA 組み込みで⽤意されているため、初めてアプリケーションを構築す る際も迷いにくい Web アプリケーションフレームワーク - Bill One の実情

Slide 17

Slide 17 text

- Bill One ではモジュール間の依存関係をコーディング規約で定義している のみで DI フレームワークを利⽤していない - ドメイン層の単体テスト + API 単位の単⼀モジュールテストが主 - テストごとに PostgreSQL DB スキーマを1から⽣成している - 規約とテストコードの共通化でテスト実⾏時の安全性を担保している - もし使うとしたら、個⼈的には⽵端さんも推奨している Koin が最有⼒ - マルチプラットフォームに対応していて Android 開発者でも馴染みがある - DI コンテナは設定が複雑化しやすいが Koin はシンプル - Guice は⾟かった思い出が…… - Spring Framework 経験者であれば通常の開発に困らなさそうな記法セット DI フレームワーク - Bill One での実情

Slide 18

Slide 18 text

- ブログでも話題に上がっていたが Bill One でもクエリ DSL を⽤いず、ほ ぼ⽣の SQL を書いている (SQL マッパー型) (参考) - O/R マッパーはどこまで⾏っても SQL の知識が必要となる - どのような SQL を発⾏しているか⼀⽬瞭然でチューニングもしやすい - マイグレーションは flyway を利⽤している - O/R マッパーに限らず Kotlin (JVM) アプリケーションを構築する際は Kotlin 製のライブラリだけではなく Java 製のライブラリも候補に上がる - Exposed は 2024/8 にバージョン 1.0 のリリースを⽬指しているので、今 後盛り上がりを⾒せるかもしれない - jOOQ と Exposed はコード⽣成の利⽤有無に依存 - O/R 未導⼊の場合はこの2つの動向をしばらく追っておくと良さそう O/R マッパー - Bill One の実情

Slide 19

Slide 19 text

- Bill One ではほとんど JUnit 5 + MockK + AssertJ + Ktor Server Test - 1マイクロサービスのみ Kotest への移⾏が進⾏中 - JUnit と並⾏して動作可能 - テーブルテストを始め開発者体験が向上している “ 様々な記述⽅法が⽤意されているので、プロジェクトによって⼀定の⽅針 決めは必要 ” - 事前にルールを整備している - Test Style は FunSpec へ統⼀ - Kotest Matchers / Assertions は利⽤せず AssertJ を利⽤ - …… テストフレームワーク - Bill One の実情

Slide 20

Slide 20 text

サーバーサイド Kotlin の現状と今後

Slide 21

Slide 21 text

“ サーバーサイドの選択肢として Kotlin が⼀番⼈気という状況ではない “ - 「Kotlin愛好会」や「Server-Side Kotlin Meetup」といったコミュニティはあるが、 まだまだ他の⾔語やフレームワークと⽐べると発展途上 - ⼀⽅で、 Kotlin Fest 2024 のスポンサー企業群にて、主として Mobile で採⽤し ている企業とサーバーサイドで採⽤している企業はおおよそ半々 (※) - ⾔語としてもフレームワークとして発展が期待できる技術 サーバーサイド Kotlin の現状と今後 (※) あくまで本資料の作成者の主観

Slide 22

Slide 22 text

サーバーサイド Kotlin やってきましょう! 🙌

Slide 23

Slide 23 text

Sansan 技術本部 募集ポジション紹介 https://media.sansan-engineering.com/

Slide 24

Slide 24 text

No content