TSKaigiにプロポーザルが採択されました🎉

2024/03/20 追記

採択されました🎉 聴講者の期待に応えられるように全力で頑張ります💪

また、これに伴い記事のタイトルを「TSKaigiにプロポーザルを提出しました」から変更しています。

TSKaigi

2024年5月11日にTSKaigi 2024が開催されます。

柔軟な型の表現力と強力なエコシステムを持つTypeScriptは、Webフロントエンドアプリケーションの開発のみならず、インフラ構成管理やサーバアプリケーションの開発にも利用されています。

TSKaigiの公式サイトにも下記の記載があるように、様々なバックグラウンドを持つエンジニアと横断的な交流ができそうでとてもわくわくしています。

私たちの願いは、フロントエンドからバックエンド、インフラに至るまで、多様な分野のTypeScriptエンジニアたちが集い、普段は交流の少ないエンジニアたちが、それぞれの得意分野や最新の知見を交換し合う交流の場を創り出すことです。
- https://tskaigi.org/call-for-proposals

プロポーザルを提出した背景

サーバサイドTypeScriptのメリット = フロントエンドとの協働?

ところで、TypeScriptによるサーバアプリケーション開発のメリットとして「フロントエンドと同じプログラミング言語やツールで開発できるため、設定ファイルやソースコード、知識を共有できる」という点が挙げられることが多いと感じています。確かに、パッケージ管理やLinter/Formatter、言語仕様についての知見はその開発対象を問わず共有できます。

しかし、OpenAPIやProtobufで定義したスキーマから様々なプログラミング言語の型定義やクライアントが生成できるように、今日ではプログラミング言語を揃えなくても十分な開発者体験を得ることができます。また、例えば自動テストに対する戦略がそれぞれで異なるように、各々の専門性や独自性は高く、共有できる知識は限定的です。

ビジネスの変化に柔軟に対応するTypeScript

では、サーバアプリケーション開発をTypeScriptで開発するメリットは他に無いのでしょうか?冒頭でも述べた通り、私はTypeScriptの魅力を「柔軟な型の表現力と強力なエコシステム」にあると考えています。

事業を取り巻く環境は常に変化しますが、それに応じてシステムに要求される機能や品質も変わり続けます。TypeScriptで開発されたアプリケーションでは、型の運用方法を柔軟に変化させることで、型によってビジネスロジックを厳格に検査する堅牢なシステムへ変化させることも、実行時の入力値や状態に応じて柔軟に対応するシステムへ変化させることもできます。さらに、同じシステムの中でも機能やモジュールによって異なる型の運用方法を選択することもできます。

私は、TSKaigiでの登壇を通じて、サーバアプリケーション開発にTypeScriptを用いることが様々な可能性を持っていることを伝えたいと考えています。例えば、現職 (カケハシ)では、実務における複雑性を解決する鍵として、fp-tsやEffectなどの関数型プログラミングの概念を柔軟に取り入れたライブラリが大きな役割を果たしました。

これは決して全てのサーバアプリケーション開発に当てはまるような選択肢ではありませんが、もしこのプロポーザルが採択された際は、サーバサイドTypeScriptが持つ幅広い可能性の一つを一人でも多くの方にお伝えできれば幸いです。

プロポーザル

タイトル

複雑なビジネスルールに挑む:正確性と効率性を両立するfp-tsのチーム活用術

課題

複数のエンティティが絡み合ったビジネスルールの検証

特にtoBサービスを開発する皆様、こんな悩みを抱えたことはありませんか?

「顧客がExcelCSVで入稿した複雑な入力データを、正確かつ効率的に検証しなければならない…」

toBサービスでは、数々のエンティティの関係性について、顧客の業界特有のビジネスルールや法令に基づいた検証を実現しなければならないことがあります。もちろん、検証結果が正確であることは必須ですが、顧客に何度も再入力させないためには複数のエラーをなるべく一度に返却しなければなりません。

数多くのビジネスルールの検証結果を、正確かつ効率的に合成する良い方法はないでしょうか?

解決策

fp-tsの柔軟な関数合成・エラー合成機能

この発表では、複数の医療系SaaSを展開するカケハシにて、エンタープライズな顧客の組織階層を管理・配信する基盤システム「OGAS」の事例を紹介します。「Excel入稿ファイルからツリー形式のデータ構造を組み立てる」という複雑な要件に対し、fp-tsの柔軟な関数合成・エラー合成機能で立ち向かい、検証ロジックの正確さと効率性を両立させることができました。

fp-tsをチームで活用するために

さらに、この発表ではfp-tsをチームで活用するための工夫も紹介します。fp-tsは日本語の情報が少なく、neverthrowなどと比べて抽象度が高いため、しばしば敬遠されることがあります。しかし、OptionやEitherだけではなく、これらを柔軟に合成できるpipeやflow、Validationなどの仕組みを活用することで、複雑なビジネスロジックに立ち向かうことができます。私達は、一日二回のモブプロや、すぐに使える社内レシピ集などを通じ、幅広い背景を持つメンバーが活躍できる環境を実現しました。