TSKaigi

トーク

fast-checkとneverthrowのPBT+Result型で堅牢なビジネスロジックを実現する
セッション
fast-checkとneverthrowのPBT+Result型で堅牢なビジネスロジックを実現する
DAY1 / 16:30 〜 17:00アセンドトラック

トークの主題

本セッションでは、サーバーサイドTypeScript開発におけるビジネスロジックの堅牢性向上を目指し、fast-checkによるプロパティベーステスト(PBT)と、neverthrowのResult型を組み合わせた手法について解説いたします。従来のテストに比べて幅広いパターンをテストしつつ、Result型で確実にエラー処理を強制する方法をコードを交えてお話しします。

トークの背景

Web開発において、ビジネスロジックのテストやエラーハンドリングは、信頼性を高める上で重要な要素です。
元々バックエンドの開発言語としてPythonを採用していましたが、TypeScriptへの移行を検討し、TypeScriptの型システムを活用して、ビジネスロジックの品質保証を強化する方法を模索しています。
Typescriptの柔軟かつ強力な型システムはビジネスロジックの信頼性を高めるための有力なツールとなり、動的言語であるRubyやPythonに比べて、型レベルでの品質保証が可能となります。
今回はTypescriptによるビジネスロジックの品質保証をさらに強力にするのPropetry-based Testing(PBT)とResult型を組み合わせた手法を紹介します。
fast-checkを用いたPBTは、多種多様な入力ケースを自動生成することで、隠れた不具合を網羅的に検出する効果が期待されます。一方、neverthrowのResult型を導入することで、エラー処理を明確にし、例外処理の乱雑さを解消できます。

トーク内容

  • fast-checkとPBT
    • PBTと従来のテスト手法との比較
    • fast-checkの概要と基本的な使用方法
  • neverthorwとResult型
    • Result型によるRailway Oriented Programmingの概念
    • neverthrowのResult型の活用
    • エラー分岐や例外処理を明確にするための実装パターン
  • fast-checkとneverthrowを組み合わせた具体的なコード例
  • 今後の展望とさらなる応用可能性の検討
上田慶祐

上田慶祐

グロービング株式会社 / クラウドプロダクト事業部CTO

学生時代の個人開発者から新卒でPwCコンサルティングを経て現職 コンサルティングのソフトウェアとAIによる「産業化」を目指し、コンサルもわかるエンジニアとして複数プロダクトの開発をリード フロントエンドからバックエンド、インフラまで全方位で対応。TypescriptはフロントエンドのNuxt.js、バックエンドのNest.js、インフラのCDKと手広く活用中。

https://zenn.dev/kueda