TSKaigi2024に参加しました
エンジニアチームの往蔵・和山です。
今回は、2024年5月11日に開催されたTSKaigi2024に参加しましたので、そのレポートをお届けします!
TSKaigiとは
TSKaigiとは、日本最大級のTypeScriptをテーマとした技術カンファレンスです。Specteeでは、開発にTypeScriptを使用しているチームが多いこともあり、私たち2人をはじめ、多数のメンバーが参加しました!
印象に残っているセッション(往蔵)
私の印象に残っているセッションは、TypeScriptとGraphQLで実現する型安全なAPI実装のセッションです。
このセッションでは、バックエンドとフロントエンドの両方の観点から、型安全なWeb APIをGraphQLで実装する方法について紹介されていました。TypeScriptとGraphQLの相性や、それを取り巻くエコシステムについても詳しく説明されました。
フロントエンドの視点
フロントエンドでは、GraphQLの「必要なフィールドを指定し、必要な情報のみを取得できる」という機能と、型安全に開発することを両立させる難しさについて述べられていました。その解決策として、GraphQLの「Fragment Colocation」の紹介がありました。この技術を使うことで、各ページで必要な情報のみを取得しつつ、型安全に開発することができます。
サーバーサイドの視点
サーバーサイドでは、スキーマとリゾルバが一対一で対応している場合に、本来は要求されていないフィールドまでリゾルバが取得してしまうという課題が取り上げられました。この問題を解決するために、フィールドごとにリゾルバを設定できる機能について説明がありました。この方法により、効率的なデータ取得が可能となり、APIのパフォーマンス向上が期待できます。
今後の展望
私たちのチームでもGraphQLを用いて開発を行っていますが、今回のセッションを通じて、さらなる最適化の可能性を見出すことができました。これからもGraphQLを活用しながら、最新の技術をキャッチアップしつつ、開発を進めていきたいと思います。
印象に残っているセッション(和山)
私の印象に残っているセッションはTypeScript 関数型スタイルでバックエンド開発のリアルです。
このセッションでは、TypeScriptを使い、関数型プログラミング寄りの実装でシステム構築を行った経験から、従来の実装とどこが異なるのか具体例を示しながら関数型を取り入れるメリット・デメリットについて解説されていました。
ドメインレイヤー関数型のポイント
TypeScriptで関数型プログラミングを取り入れるときは以下のポイントを抑えると良いというお話がありました。
オブジェクト構造を型で表現する(classではなくinterface)
オブジェクトの変更を、関数適用+イミュータブル/明示的に表現する
成功・失敗をResult<T, E>型で扱う
I/O分離を適切に行う
なおResult型で扱うにはライブラリが必要になります。 TypeScriptであればresult-type-tsが候補になります。
関数型を使うことのメリット・デメリット
関数型プログラミングを取り入れるうえでのメリットとデメリットについても解説されていました。
メリット
従来の開発よりも、堅牢になったと感じる
エラーの処理漏れ・想定外の不具合が少ない(Result型の効用)
型保証の領域が広がったことによりユニットテストの数が減った(保守コスト低減)
デメリット
短期的な開発スピードは良くも悪くも影響がない(速くなったわけではない)
オンボーディングが大変(新規開発者へのレイヤー実装説明と、コードレビューによる補佐のコストが上がる)
感想
関数型を取り入れることで、よりシステムが堅牢になるメリットがある一方で、開発スピードは従来の開発手法とが大差ないことが大きな気づきでした。
導入するときはチーム全員でメリット・デメリットを考慮したうえで選択したいと思いました。
全体の感想
TSKaigiを通して、TypeScriptが持つ可能性について様々なセッションを聞くことができました。
ここで得た知見をチームに還元し、より良いプロダクト開発に活かしていきたいと思います!
最後に、noteの更新情報やスペクティの最新情報は公式Xにて発信しています。ぜひフォローをお願いします!
次回もお楽しみに!