はじめに
こんにちは! 人材プラットフォーム本部プロダクト開発室 第一開発グループ所属の城間(シロマ)です。 私は 2024 年 4 月に新卒エンジニアとして入社し、現在はオンライン動画研修サービス「ジョブメドレーアカデミー」の新規プロダクト開発に携わっています。
先日、5 月 23 日、24 日に東京都千代田区のベルサール神田にて開催された TSKaigi 2025 にメドレーは Silver Sponsor として協賛しました! TypeScript をテーマにしたこの大規模なカンファレンスには、多様なバックグラウンドを持つ TypeScript エンジニアが全国から集結。
惜しくもブースの抽選には外れてしまいましたが、私も含め弊社からは数名のエンジニアが現地参加し、多くの素晴らしい出会いと学びがありました。 今回は、当日の会場の様子や印象に残ったセッション、そして今、私が感じていることを中心にご紹介します!
会場の熱気と「型にとらわれない」エンジニアたちの交流
今年の TSKaigi 2025 は 2 日間とも天候に恵まれ、61 もの企業スポンサーと「TypeScript を扱う型にとらわれないエンジニア」が集結し、会場は終日、熱気と活気に満ち溢れていました。
場内の様子
スポンサーボード
2 日間に渡り、合計 3 会場でセッションや LT が盛んに行われ、時には立ち見の人が出るほどに盛況していました。
参加者同士でテーマに対してトークする OST(Open Space Technology) や、夜の豪華な懇親会では、セッションでは聞けないような深掘りした技術の話や、各社の開発文化に関する交流が盛んに行われ、当日はおよそ 50 名以上のエンジニアの方々と色々なお話をさせていただきました。
OST のテーマ
懇親会の様子
TypeScript ケーキ
また、今回参加者に配布された公式グッズは、TSKaigi のオリジナル T シャツやトートバッグに加え、各企業が工夫を凝らした遊び心あふれるグッズで盛りだくさんでした。
特に、今回ブース出展のあった 19 社全てを周るスタンプラリー では、全てのスタンプを集めることで豪華景品が当たる抽選に参加でき、会場の賑わいに一役買っていました。
公式ノベルティ(一部)
スタンプラリー
印象に残ったセッション:AI エージェント全盛の時代と TypeScript の可能性
どのセッションも非常に興味深く、時には理解が追いつかないほど最先端の内容でしたが、特に今の私が行う開発と照らし合わせて印象に残ったセッションをいくつかご紹介します。
Day1: AI Coding Agent Enablement in TypeScript
引用元: AI Coding Agents Enablement in TypeScript - Speaker Deck
概要
このセッションでは、人間による介入を最小限に抑え、AI エージェントが大規模な作業をどのように「自走」して実行させるかについて深く掘り下げられました。 なぜ自走が難しいのか?その主な要因は AI エージェントが「任意の TypeScript」のようなあまりにも広い「解空間」で動くため、精度が低くなってしまうためです。 すなわち AI エージェントの精度を高めるためには 「可能な限り解空間を絞る」 ことが基本方針であり、会社やプロジェクト固有の規約、ドメイン知識、デザインなどに基づいて適切に制約を与える重要性が何度も強調されていました。 その解空間を絞る具体的なアプローチとして 「コンテキスト注入」 と 「機械的検査とフィードバック」 の 2 つが挙げられました。
- コンテキスト注入: ドキュメント、規約、ドメイン知識などを LLM にインプットし、「解空間の定義」を与えること。特に TypeScript コード自体をドキュメントとして育てることが、コンテキスト注入に役立つ。
- 機械的検査とフィードバック: LLM が生成したコードが定義された解空間から外れていないか、型チェック、Linter、自動テストといった古典的な手法で検査し、NG の場合はエージェントにフィードバックして解空間へと押し戻すように促す。Linter は次にやるべきアクションを提示しやすく、決定的である点が非常に有効である。
また、TypeScript 開発における型の役割についても興味深い見解がありました。現状、型によってコード生成の精度が上がるという定量的な根拠はまだないものの、「解空間に押し戻す」ためのエージェントへの入力(フィードバック)としては役立つ可能性は大いにあるとのこと。AI はまだ高度な型解決が苦手なので、人間がドメインモデルや関数のシグネチャ(型定義)をしっかり書き、その後の実装をエージェントに任せるアプローチが有効であるという話は、非常に現実的で納得感がありました。
最後に、「エコシステムの未来 - Speed is King」 という言葉が印象的でした。これは、AI エージェントのコード生成が加速すると、開発プロセス全体の速度がボトルネックとなることを示唆しています。具体的には、人間がコードを 30 分かけて書く時代には 1 分程度の静的解析は許容範囲でしたが、AI が同じコードをわずか 30 秒で書くようになると同じ 1 分間の静的解析は AI の作業時間に対して相対的に非常に長く、無視できないボトルネックになるということです。さらにクラウド型エージェントではチャットごとにコンテナが作成される仕組みが主流であり、その際にパッケージマネージャの速度がボトルネックになります。また、AI エージェントによるコード生産量が爆発的に増加すれば、デプロイの機会も増えるためビルド(バンドラー)の速度もボトルネックとして顕在化し、加えて将来的に LLM がコードを生成するタイミング(デコーディング時)ごとに型制約を守ろうとする「制約付きデコーディング」のようなアプローチが進めば、型チェッカーがボトルネックになる可能性も指摘されていました。故に、ツールチェイン全体の高速化が今後より重要になるという示唆は、将来的な開発環境を考える上で非常に重要な視点だと感じました。
Day2: TS 特化 Cline プログラミング
引用元: tskaigi.mizchi.workers.dev
概要
このセッションでは、LLM を活用した「Cline Agentic Coding」の全般について、特に TypeScript に特化した実践的なプロンプトのコツが紹介されました。 まず冒頭に うまくいくうまくいくプロンプトのコツ として、以下が挙げられていました。
- 書きすぎない(再現性ある範囲で詠唱破棄)
- 執拗に出力例を例示する
- 両立条件の矛盾を避ける
- 規模感に合わせて厳しくする
また特に強調されていたのは、テスト駆動開発(Test Driven Development) の重要性です。コード生成時に対応するユニットテストを常に生成し、コード修正時にはテストがパスすることを確認することで、AI エージェントの自己修復能力を高め、放置しても完成する高品質なコードに繋がるとのことでした。
その他にも、次のような実践的なプロンプトの一例が紹介されていました。
- コメントによる自己記述: 各ファイルの冒頭にコメントで仕様を記述することで、再修正時のコード解釈の一貫性を保つ
- In Source Testing: 実装と同じファイルにユニットテストを書くことで、コメント・実装・テストを三位一体で管理する
- types.ts にドメイン型を集約: 中規模以上のプロジェクトでは src/types.ts にドメインモデルを集約し、SSoT(Single Source of Truth)とすることで、ファイル間の整合性を保ち read_file の頻度を減らす
- TS + 関数型ドメインモデリング: 状態の発散を抑えるために class を使わず関数による実装を優先し、代数的データ型でドメインをモデリングする
- ファイル配置規則の明記: モノレポなどのファイル配置規則を明記することで、タスクごとのエージェントの推測コストを減らす
- 詳細指示を docs/*.md に分割: 大規模プロジェクトでは無関係な指示によるノイズを減らすために、詳細な指示をドキュメントファイルに分割し、必要に応じて参照させる
- カバレッジに基づくテストの自動生成: vitest でカバレッジを計測し、最もカバレッジが上がるテストコードを AI に考察・追加させる
- 機械的なマイグレーション: lodash の削除や類似 API を持つライブラリへの置き換えなど、面倒なマイグレーション作業を AI に自動化させる
- URL を読む能力: URL の内容を読み込ませ、要約・保存させることで、Deep Research 的な挙動を可能にする
一方で、うまくいかないプロンプト のパターンもいくつか示唆されました。
- 型だけで設計しようとする: ほぼ確実に無視され、抽象的な設計能力は期待できない
- 非同期例外処理が下手: 思考停止気味に try-catch で握り潰しがちで、大規模開発で破綻の原因となる
- 環境構築が下手: ゼロショットでの環境構築は発散しやすく、手数が仇となり環境を破壊する可能性がある
- モジュールインターフェースが発散: 実装次第で全て export してしまい、モジュール間の契約が肥大化・破綻する
- 「ある」のがよくない(チェーホフの銃の法則): 無関係なリソースを読み込ませると、それを使うことに固執し、大規模コードではノイズになる
- デバッグログを食いすぎる: 自身が生成したプリントデバッグでコンテキストウィンドウを消費し、デバッグコードを放置しがちである
結論として、現状の LLM はコーディングが下手であり、低品質なコードで設計が破綻し自滅する傾向があるとの見解でした。特に、リファクタリングの指針がなく、不要コードの判定やモジュール視点での API 設計が苦手で、ユーザー側でリファクタリングしても元の低品質なコードに書き戻すこともあるという少し厳しい評価が下されていました。 しかし TypeScript と LLM の組み合わせには良い点も多く、GitHub の公開コードが豊富で学習量が多いこと、安全性よりも表現力を選んだピーキーな型システムが自然言語と対応した型のモデリングをしやすいこと、豊富な静的解析手段とユーザー層の厚さがあることなどが挙げられていました。 現時点でのベストプラクティスとしては、PoC/プロトタイプのコード生成(1 ファイル完結 800 行以内が目安)に活用し、人間によるインターフェース設計、失敗パターンのプロンプトへの反映、成功するパターンのドキュメント化、そしてこちらでも Lint ルールの整備についての言及がありました。 そして最後にテスト駆動開発や LLM の得意領域・発達段階を予測する技術、プロンプトエンジニアリングの重要性の増加など Agentic Coding によるプログラミング自体の変質と不変である点について説明され締めくくられました。
感想
これらのセッションを通して、私が携わる新規プロダクト開発において、実践できている部分 と 改善の余地がある部分 が明確になりました。 実践できている点として、全社的に積極的に利用している AI エディタ「Cursor」のプロジェクトルールや自立型 AI エージェント「Devin」の knowledge には、プロジェクトごとに解空間を明確にするコンテキストを与えています。これは、「AI Coding Agent Enablement in TypeScript」で述べられていた「コンテキスト注入」と「解空間を絞る」という考え方に合致していると感じました。また、コードと仕様を記述したドキュメントを同じリポジトリ内で管理し、開発を進めている点も、AI へのコンテキスト注入に貢献していると言えるでしょう。 開発フローにおいても、AI の特性を踏まえた工夫を凝らしています。「AI Coding Agent Enablement in TypeScript」で言及があった「3 回くらいループした末に any とかキャストで誤魔化しがち」という点に対し、例えば API 開発では、まず仕様やテストケースのドキュメントをコードベースと同じファイル内に記述し、次に Request や Response Body を zod を用いて厳密に型を記述します。これらをエンジニアがレビューした後、テストデータのセットアップや記法などをエンジニアが整え、残りを AI で実装を進めます。さらにアプリケーションコードの実装においても、用意したユニットテストが通過するという制約の元 AI に実装させることにより、型解決などに AI エージェントが費やす時間が最小化され、実装フェーズの開発工数を大幅に短縮することに成功 しています。 mizchi さんのセッションで言及のあったテスト駆動開発(Test Driven Development)のスキルは今後もより重要になっていくでしょう。しかし、もう少し先の未来では、弊社メドレーが大切にしている価値観(Our Essential)の一つである「ドキュメントドリブン」に倣い、ドキュメントドリブン開発(Document Driven Development) のスキルがより重要になっていくのではないか、と私は考えています。
具体的なイメージ
さらに「Speed is King」の思想を体現するために、Linter と Formatter には Biome、パッケージマネージャーには Bun を採用するなどツールチェインの速度にはかなりシビアな意思決定をしており、より AI エージェントが生産的に活動できるような体制を整えています。
一方で、改善の余地がある点 も明確になりました。特に双方のセッションで強調されていた「機械的検査とフィードバック」の継続的な改善、すなわち Linter については開発初期から現在に至るまであまり積極的に更新できていないと痛感しています。AI に与えるフィードバックをその場での単発のもので終わらせるのではなく、(人間と同じように)再発防止策を考えさせるように Linter を定期的にアップデートし、より決定的で高速に AI エージェントが機能するような環境をより一層整備していきます。
さいごに
TypeScript の可能性を肌で感じ、熱意ある仲間たちと出会い、技術への情熱を改めて確認できた素晴らしいイベントでした。 メドレーは今後も TSKaigi だけでなく、他の技術イベントやコミュニティの発展を積極的に支援し、参加、貢献していきます。
過去にスポンサーとして協賛した技術カンファレンスの参加レポート記事はこちら!
TSKaigi 2025 の運営スタッフの皆さん、登壇者の皆さん、一緒に盛り上がった参加者の皆さん、本当にありがとうございました!
メドレーではエンジニアを積極採用中です!
メドレーでは領域を問わず、TypeScript を積極的に活用して医療ヘルスケアの未来をつくるプロダクトを開発しています。 TypeScript を活用した医療ヘルスケア領域の課題解決に興味がある方は、ぜひお気軽にご連絡ください!
※カジュアル面談ご希望の際は、<その他> にてその旨をご記載ください