天の月

ソフトウェア開発をしていく上での悩み, 考えたこと, 学びを書いてきます(たまに関係ない雑記も)

実践!バックエンドTypeScript〜現場から学ぶtsの可能性〜に参加してきた

https://findy.connpass.com/event/360678/

こちらのイベントに参加してきたので、会の様子と感想を書いていこうと思います。

会の概要

以下、イベントページから引用です。

バックエンドでのTypeScriptの利用が注目されている中、国内で実際に採用している企業のナレッジは未だ少ない状況かと存じます。 そこで今回はバックエンド×TypeScriptをテーマに、実際にプロダクトを開発されている皆様に技術選定の理由や運用していく中での工夫をお話しいただきます。 本イベントを通じて、参加者が今後のサービス開発においてTypeScriptを利用する際の実践的な知見を得られるイベントになることを目指します。

会の様子

安定した基盤システムのためのライブラリ選定

最初にkosuiさんから話がありました。

TypeScriptの型の表現力でモデリングすることで、コードや仕様の誤りを型検知で切るメリットがあるため、認証認可をはじめとした状態遷移やデータの絡み合いが複雑なシステムではTypeScriptを使うメリットがあるという話でした。

そのため、TypeScriptを使う際は、型とスキーマを活用することと移植性を高く保つことと型推論が緩めなクラスや扱いが難しい例外機構と距離を取ることを指針としているということでした。

具体的に使用するスキーマ検証ライブラリとしてはエンティティや値オブジェクトなどの定義やスキーマ検証ライブラリとしてはZodがおすすめだそうですが、選択肢はかなり広いということです。
また、WebフレームワークはHono、DB接続はPrismaではなくKyselyを継続的に利用しているということでした。

CPU boundな処理に対しては、コンピューティングリソースを分類するシンプルな解決策を取っているということです。

新卒エンジニアがフルスタックTS環境で開発してみた話

続いて高橋さんから発表がありました。

TypeScriptを使えばフロントエンドもバックエンドも両方とも開発できるため、チームで協力がしやすく、ZodやPrismaを使うことでAPIスキーマ定義やスキーマ定義も容易だということでした。

一方で、スキーマ定義が初期は非常に大切だということで、そういったときにもTypeScriptは設計の甘をやコンパイルエラーを「使いにくい型」として表現してくれるところはすごく良いと感じたそうです。

読書会から始める関数型ドメインモデリング

続いてKurasawaさんから発表がありました。

kurasawaさんは関数型ドメインモデリングの読書会を通して、共有されたモデルという目的に向かって、

  1. ドメインを理解する
  2. ドメインモデリングする
  3. モデリングから実装を導く

というステップで進めることを学んだそうで、共有されたモデルを作るために実装上の都合や技術的成約をモデリングに持ち込まないようにすることと、コードで共有されたモデルを文書化することで実装とモデルの差異をなくす重要性を実感したということでした。

kurasawaさんは、書籍で紹介されていた手法に対して馴染ができたり、実装の話とモデリングの話を分けて考えることができたそうです。

Scaling Fast with confidence

最後にRodrigoさんから話がありました。

Rodrigoさんの会社ではフルスタックなチームを作れるようにするために、TypeScriptを採用したそうですが、TypeORMを採用したことによるLibrary Dependencies RiskやDecorator Coupling Risksと戦いながら、TypeORMからの脱却を徐々にはかっている最中だということでした。

また、Monolith Scalabilityの問題に対処するために、マイクロサービスへの移行を行ったということでした。

会全体を通した感想

TypeScriptどうこうというよりはもう少し抽象的な話が多かったので、思っていたよりTypeScriptの話は聞けなかったのはやや残念でした。

ただ、kosuiさんの発表はなんかとりあえずデファクトスタンダードに乗る身としては考えさせられる部分が多く、非常に面白かったです。