【イベントレポート】TypeScript Developers Meetup 〜フロントからバックまでTypeScript〜

はじめに

こんにちは。コミューンDevHRのあらです。 この記事では2024年5月8日(水)、コミューンのオフィスで開催された4社合同イベント「TypeScript Developers Meetup〜フロントからバックまでTypeScript〜」の様子を紹介します。

イベント概要

今回のイベントは、株式会社ケップル(以下、ケップル)主催のもと、コミューン株式会社、X Mile株式会社、株式会社Helpfeel(以下、コミューン、X Mile、Helpfeel)の4社合同のオフラインイベント形式で開催されました。
この4社はフロントエンドからバックエンドまでTypeScriptで開発を行なっており、各社の登壇メンバーが言語を統一した開発事例とその知見をシェアしました。

当日のタイムスケジュール

各社一人10分ずつLT発表を実施。イベントの最後には登壇者や参加者の皆さんに交流を深めてもらうため懇親会も開催しました。

会場の様子

今回の会場は、弊社オフィスにある芝生エリア。普段は全社会議や外部の方を招いたオフラインイベントなどを開催しています。
当日はあいにくの天気でしたが、約25名の方が参加してくださいました!

Lightning Talk発表

コミューンからは、Software Engineerの角田さん(@buzou_muzou)が登壇。
発表内容を簡単にご紹介します。

コミューン 角田 武蔵さん
「Compiler APIを利用してTypeScriptのAPI型定義からOpenAPI.jsonを作成する」

Communeの開発はWebについてはバックエンド・フロントエンドでTypeScriptで開発を統一、APIの型定義の共有を行なっています。 開発を進める中で発生した課題を解決するためにCompiler APIを使ってOpenAPI.jsonを作成した事例を紹介しました。

発生した課題

・APIの返却値のランタイムでの型の不一致
・モバイルチームとの連携

上記課題を解決するために、Compiler APIを活用してOpenAPI.jsonを作成、スキーマ駆動のAPI開発に着手することになり、Compiler APIを利用してTypeScriptで書かれたAPI型定義からOpenAPI.jsonを自動で作成するスクリプト(Tsunagger)の作成に取り組みました。

Tsunaggerにより、OpenAPI.json作成の自動化に成功したことで、モバイルチームとの連携、Swagger UIでAPI仕様書の自動作成ができるようになりました。またopenapi-request-validatorを用いたAPIリクエストのバリデーションをかけられるようになり、ランタイムでの型の安全性を担保できるようになりました。
一方で、複雑な型定義がされている箇所への対応、Tsunaggerの保守など新たな課題も見えてきたため、引き続き別の方法も検討しながら最適解を見つけていく必要があるとのことでした。

speakerdeck.com

他社登壇者のみなさんのLT発表

ケップルさん、X Mileさん、HelpfeelさんのLT発表の様子もご紹介させていただきます。
発表内容については、掲載URL先をご確認ください。

ケップル 芹田 悠一郎さん
「nullとoptionalとundefind TypeScript統一による型の互換性」

詳細はこちら

X Mile 蛯名 潤さん
「TypeScriptでフルスタックな開発体験をとことん追求してみる

Helpfeel 秦 友幸さん
「TypeScriptに頼りながら作るバリデーター」

詳細はこちら

懇親会

LT発表後には懇親会を実施しました。オフラインならではの交流もあり、他社のエンジニアの方々とLTで発表した内容や所属している企業のこと、開発に関してなど様々な話題について意見交換を行いました。

最後に

登壇した角田さんからイベント終了後に感想をもらいましたので紹介させていただきます。

TypeScriptをテーマにしたイベントに初めて参加しました。現場での実用的なTypeScriptの活用例だけでなく、ややマニアックな言語仕様に関する話が非常に興味深かったです。
懇親会では、私の発表したCompiler APIについて、「初めて知りました」という反応や、「こんな使い方があったんだ」という感想を頂き、大変嬉しく思いました。今後もこのようなイベントがあれば、ぜひ参加したいと思います。

コミューンでは一緒に働く仲間を募集しています。 少しでもコミューンの開発組織や環境に興味がある方はカジュアル面談でお話ができますと幸いです。

docs.google.com