【入門編】 Project References (composite) – TypeScript実践ガイド

こんにちは!TypeScriptの世界へようこそ。
大規模な開発現場で「ビルドが遅い……」「修正した箇所と関係ないところまで壊れる……」なんて悩みに直面したことはありませんか?

そんな時、僕たちベテランがこっそり切り札として使うのが「Project References(プロジェクト・リファレンス)」という機能です。今日は、この少し難しそうな名前の機能を、とびきり優しく紐解いていきましょう。

—

1. なぜ「小分け」にする必要があるの?

想像してみてください。あなたは今、「超巨大な百科事典」を一冊で作ろうとしています。

ページ数が1万ページを超えたとき、たった一箇所「誤字」を直すために、また1万ページ全部を最初から読み直してチェックしますか? そんなの、日が暮れてしまいますよね。

TypeScriptも同じです。プロジェクトが大きくなると、小さな修正でも「プロジェクト全体」をチェック(ビルド)しようとするため、時間がかかりすぎてしまいます。

そこで登場するのが Project References です。
これは、「百科事典を章ごとに分冊する」という考え方です。

  • 「料理の章」だけ修正したら、料理の章だけチェックすればいい。
  • 「歴史の章」は、料理の章が更新されたときだけ、そっと参照して確認すればいい。

このように「依存関係」を整理して、必要な場所だけを賢くビルドするのがこの機能の真髄なんです。

—

2. 実践:どうやって設定するの?

難しく考える必要はありません。`tsconfig.json` に「このプロジェクトはあっちのプロジェクトに頼っているよ!」と教えてあげるだけです。

例えば、`shared`(共通パーツ)というプロジェクトを、`app`(メインアプリ)から参照する場合を考えてみましょう。

手順①:共通パーツ側(shared/tsconfig.json)

まずは、「自分は分割の一部として動くよ」ということを宣言します。これが `composite: true` です。

{
“compilerOptions”: {
“composite”: true, // これが重要!「分割して管理されるプロジェクト」の合図です
“declaration”: true, // 外部から中身を見れるように型定義ファイルを生成する設定
“outDir”: “./dist”
}
}

手順②:メインアプリ側(app/tsconfig.json)

次に、メインのプロジェクトで「sharedフォルダを参考にしているよ」と伝えます。

{
“compilerOptions”: {
“composite”: true
},
“references”: [
{ “path”: “../shared” } // ここで「shared」という別プロジェクトを指定!
]
}

これだけで、TypeScriptは「あ、`app`をビルドするときは、先に`shared`をチェックすればいいんだな」と理解してくれます。賢いですよね!

—

3. なぜこれが現場で愛されているのか

現場のエンジニアがこの機能を重宝する理由は、単なる「ビルド速度」だけではありません。

  • 「責任の境界線」がはっきりする:

どの機能が何に依存しているかが明確になるため、コードがスパゲッティのように絡まり合うのを防げます。

  • 心理的な安心感:

「このコードをいじったら、プロジェクト全体が壊れるかも……」という恐怖から解放されます。影響範囲が限定的だからです。

  • 段階的な移行:

一気に全部を分割する必要はありません。「まずはここだけ切り出してみようかな?」と、少しずつ整理整頓していけばいいんです。

—

最後に:つまずいたあなたへ

ここまで読んで、「なんだか難しそうだな…」と感じたかもしれません。でも大丈夫です。最初は誰だってつまずきます。

TypeScriptの設定は、まるで「お部屋の整理整頓」です。一度にすべてを完璧にする必要はありません。まずは小さなフォルダを一つ作って、`composite: true` を書いてみる。それだけで、あなたはもう「大規模開発の第一歩」を踏み出しています。

もしエラーが出ても、それは「ここを直せばもっと良くなるよ!」というTypeScriptからの親切なアドバイスだと思ってください。

困ったときは、いつでもこの基本に立ち返ってくださいね。あなたの開発ライフが、少しでも快適でワクワクするものになりますように!

それでは、また次回の冒険でお会いしましょう!

コメント

タイトルとURLをコピーしました