弁護士ドットコム株式会社 Creators’ blog

弁護士ドットコムがエンジニア・デザイナーのサービス開発事例やデザイン活動を発信する公式ブログです。

TSKaigi2025 協賛&参加レポート

こんにちは。技術広報のsakutaroです。

2025年5月23日(金)・24日(土)に開催された TSKaigi2025 に、弁護士ドットコムは Silverスポンサー として協賛しました。
本記事では発表した内容と参加したエンジニアによるセッション視聴レポートを振り返りいたします。

最後にイベント告知もありますので、ぜひ見ていってください。

クラウドサイン エンジニア ツノが登壇!

クラウドサイン事業部でフロントエンドに携わるエンジニアのツノさんが、CfP枠で採択され、登壇しました!🎉

セッション情報

  • セッションタイトル:VueUse から学ぶ実践 TypeScript
  • セッション概要:VueUse(Vue.js用の人気ユーティリティライブラリ)のコードベースから、TypeScript の型機能の実践的な使い方を紹介します。TypeScript の基本を理解している方を対象に、実際のOSSから学べる型システムの利用例をお伝えします。

発表のその場で、VueUseの作者であるAnthony Fu さんが最前列で視聴されるというサプライズがありました!!
これは、TSKaigi2025の最高のイベントだったと感じています。

TSKaigi2025セッション視聴レポート

ここからは現地に参加されたエンジニアメンバーによるセッション視聴レポートを紹介をご紹介いたします。

堅牢なデザインシステムをつくるためのTypeScript活用 by @takanoripe

デザインシステムについて特定のフレームワークなどによらない原則的な考え方や安定的運用のためのノウハウについてのセッションでした。
デザインシステムの構成要素やその目的、実際の現場で起きているルールの逸脱など丁寧な議論で適切なガイドレールが必要であることを示して、型システムの活用が有効だという流れが印象的でした。
特に、BrandedTypeによってデザイントークンをコンポーネントのpropsとして取り扱う際により安全にハンドリングする手法は自分のチームでも取り入れてみようと思いました。
また、継続的な開発運用に重要なドキュメントについても、JSDocのコメントを丁寧に書くことでLLMにも対応しやすい可能性に触れられていて、デザインシステム全体に対して幅広い視点を得られました。

機能的凝集の概念を用いて複数ロール、類似の機能を多く含むシステムのフロントエンドのコンポーネントを適切に分割する by @omotidaisukijp

プログラミングにおける重要な指標である凝集度についてフロントエンドでの考え方を示したセッションでした。
システムプログラミングの文脈やバックエンドのコードは多く凝集について語る資料がある一方、フロントエンドでは珍しいので興味を持って聴講しました。
具体的なコード例はとてもわかりやすく、フロントエンドあるあるなリファクタリングしづらいコードを示すことで凝集度を適切に保つ必要性がよくわかる発表でした。
適切な凝集度を考える具体的な判定方法やその実装方法についても触れられていたので、すぐに試してみたいと思えました。

AI Coding Agent Enablement in ypeScriptT by @yukukotani

エージェントに自走させるための工夫について話されていました。
特に個人的に面白かったのが、高度な型を解決する能力が低いためにドメインモデルや関数シグネチャの定義までは伴奏した後に実装してもらう話や、 Linter のカスタムルールを LLM に実装させる話で、積極的に業務にも取り入れていきたいと思いました。

技術書をソフトウェア開発する - jsprimerの10年から学ぶ継続的メンテナンスの技術 by @azu

azu.github.io

毎週拝見させていただいている JSer.info を運営されている azu さんの登壇ということで聞かせていただきました。
技術書をソフトウェア開発と同じように継続的にメンテナンスしつづけられている理由についてこのセッションでは話されていました。
変化の激しい JavaScript について書かれた技術書 jsprimer を更新し続けるに当たって、様々な Linter や分析ツールを駆使していたり、オープンソースとしてコミュニティを最大限活かすための仕組みが綿密に設計されていることを知り、ソフトウェア開発の手法は応用可能なことを学びました。

TypeScriptとVercel AI SDKで実現するLLMアプリケーション開発:フロントエンドからバックエンド、そしてChrome拡張まで by @Kesin11

この発表は、Vercel AI SDK を活用することで、多様なLLMプロバイダーの差異を吸収し、フロントエンドからバックエンド、さらにはChrome拡張機能までLLMアプリケーション開発を容易にする方法について解説するものでした。
当初はLLM開発のハードルが高いと感じていましたが、AI SDKが提供する抽象化レイヤーや useChat のような便利なhooksにより、思ったよりも簡単に実装できそうだと感じました。
この手軽さなら、これまで優先度が低かったLLMを活用したアプリケーション開発に挑戦してみたいという意欲が湧きました。特に、テンプレートが充実しており、すぐに開発を始められる点は魅力的です。

TS特化clineプログラミング by @mizchi

https://tskaigi.mizchi.workers.dev/

この発表は、TypeScriptに特化したAIコーディングエージェントを効果的に活用するための具体的なプロンプトエンジニアリングや開発手法について解説するものでした。
LLMは万能ではなく、得意なことに絞って使わせる必要があり、期待値をコントロールしつつ、TDDや型定義、コメントによる仕様記述といった従来の良い習慣がAIとの協調においても重要だと感じました。今後は、LLMの特性を理解した上で、出力例の提示やインラインプロンプトといったテクニックを試し、得意なタスクに絞ってAIコーディング支援を活用していきたいです。また、テストや型定義を整備することで、AIによるコード生成の精度向上を目指そうと思いました。

スキーマと型で拓く Full-Stack TypeScript by @Altech_2015

私はバックエンドエンジニアということもあり、FullStack TypeScriptの現状が知りたく拝聴しました。
結論から話すとGraphQLの成熟とFullStack TypeScriptの優位性を知ることができました。私はGraphQLについてはリリース当初に触れた程度で終わっており、現在どうなっているのかは分かっていなかったのですが、GraphQLエコシステムが成熟したことでスキーマ駆動開発を行うことができ、FullStack TypeScriptとの相性の良さとスピード感をもって開発ができるという点を知ることができました。
GraphQLのスキーマ定義を元にコードを生成することができ、開発時にはTypeScriptによる型チェックによる早期フィードバックも可能で、さらにCursorやDevinといったAIエージェントとの相性も良いと、現代Webアプリケーションにおいて最適解の一つかもしれないなと考えました。
一点、JavaやRubyと違いNode.jsの例外処理が (標準では)弱いと感じており、その点が気になっていました。その点が気になり、次のトークを拝聴することにしました。

fast-checkとneverthrowのPBT+Result型で堅牢なビジネスロジックを実現する by kueda

RustやSwiftではResult型、Haskell・ScalaではEither型として採用されている考え方を使って堅牢なビジネスロジックを実現するというトークです。
話を聞かせていただいた印象としては、採用箇所を見極めないと効果を発揮しづらい、あるいは逆に開発体験を損ねる可能性もあるという感想でした。他の言語と違い標準ライブラリとして定義されていないため、どうしても限界があると感じました。
トークでもこの点に言及されており、現実的な答えとして全てのドメインには適用せずにドメインロジックを中心に適用すると話されており、私も同じ結論に至りました。
こちらのトーク以外でもResult型の発表をされている方がいらっしゃったり、トークの内容でResult型に言及したりと貧弱な例外処理機構のアンサーとしてResult型を採用したいというのがコミュニティの意見なのかなと考えています。
現在個人でTypeScriptのアプリケーションを作成していますが、そこで採用してみようと思えた発見のあるトークでした。

複雑なフォームを継続的に開発していくための技術選定・設計・実装 by @izumin5210

アプリケーションを開発する上で避けて通れないフォームの実装に関するセッションでした。
フォームとバリデーションのライブラリを使う一般的な実装方法だけでなく、複雑化したフォームの場合にオブジェクト指向のように扱えるMobXについて紹介されており、見たことがない実装方法だったので勉強になりました。また、ライブラリ自体の使いやすさやテストのしやすさ、ロジックの分離などの様々な観点で設計していくことの大切さを学びました。今後自分で技術選定したり、設計する際の引き出しが増えたセッションでした。

"良い"TSのコードを書く為のマインドセット by @kei_english_ca

エンジニアとして海外で活躍されてきたKeiさんが実際に感じた優秀なTSエンジニアの共通点を共有していただきました。
その共通点というのが、取得する値の型を信じて型アサーションなどを使い、コードの実行を優先するUsability (実用性)と丁寧なエラーハンドリングなどを駆使して実行時とコンパイル前が同じ型になるようなコードを優先するSoundness (健全性)のバランスを考えながらコードを書くことです。エラーが発生するケースなどを常に想定し、プロジェクトやチームの状況など場面に応じてどこまで健全性を高めたコードを書くのか、どこまで許容するのかという判断基準を持つことの重要性を感じました。今後は、背景にあるリスクやトレードオフを意識して、UsabilityとSoundnessのバランスを考えてコードが書けるように努力していきたいです。

The New Powerful ESLint Config with Type Safety by @antfu7

talks.antfu.me

ESLint v9.0.0 から Flat Config が正式に採用され、TypeScript の型安全の恩恵をフルに受けられるようになったことが、Anthony Fu さんが作成したツール群とともに紹介されていました。
セッションで取り上げられていた ESLint Config Inspectoreslint-typegen を使ったことがなかったので、非常に興味を持ちました。 また、Biome や Oxlint などの Lint ツールとの関係にも言及があり、今後の TypeScript 周りのエコシステムの進化にワクワクしています。

転生したらTypeScriptのEnumだった件~型安全性とエコシステムの変化で挫けそうになっているんだが~ by @yamanoku

yamanoku.net

資料を見れば全体像は把握できると思いますが、勢い重視のライトニングトークで会場は爆笑の渦に包まれました。 オフライン開催だからこそ刺さる内容だったと思います。(TSKaigi2025 のセッションが配信されたときは、ぜひ視聴してください。) 講演では、TypeScript で問題視されがちな Enum にスポットライトを当て、「なぜ問題と思われるのか」から「今後の Enum の展望」まで幅広く語られており、とても学びが多かったです。

【イベント告知】6月6日(金)に「TSKaigi 2025事後勉強会 —— まだまだ型りたい」を開催します!

smarthr.connpass.com

TSKaigi 2025に参加して、「もっと語り合いたい!」と感じた方々に朗報です! TSKaigi 2025のスポンサーである株式会社SmartHR様と一緒に共催イベントを行います。

当日は、60分間で11本の5分間トークをお届けするLightning Talksを実施します! TSKaigi 2025を通じて得た知見や気づき、TypeScriptについて共有したいことがある方は、ぜひ登壇をご検討ください! もちろん、「話を聞いてみたい」という方のご参加も大歓迎です✨

ぜひ、おこしください!!