パブリックAPIとエントリーポイント
明確なライブラリの公開インターフェースを設計します
「パブリックAPIとエントリーポイント」はCoddyKit上の無料Angular Academyレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはAngular Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Angular Academyコースには全4レッスンが含まれています。
Public API の範囲
ライブラリからは、利用者が使うことを想定したものだけを公開してください。public API とは、厳選されたエクスポートの集合であり、それ以外は内部に留めます。Angular ライブラリでは、この公開範囲を public-api.ts で定義します。
バレルとしての public-api.ts
public-api.ts は、利用者がアクセスできるようにするシンボルを再エクスポートします。ここでエクスポートされていないものは、ソース内に存在していても実質的に非公開です。
// projects/ui-kit/src/public-api.ts
export * from './lib/button/button.component';
export * from './lib/theme.service';
// internal helpers are intentionally NOT exported内部実装を隠す理由
ヘルパーを非公開にしておけば、利用者を壊すことなく自由にリファクタリングできます。すべてをエクスポートするよりも、規模が小さく意図の明確な public API のほうが、ドキュメント化、バージョン管理、保守が容易です。
型とトークンのエクスポート
public API にはコンポーネントだけでなく、利用者がそれらを正しく使うために必要なインターフェース、型、インジェクショントークンも含まれます。
export { ButtonComponent } from './lib/button/button.component';
export type { ButtonVariant } from './lib/button/button.types';
export { THEME_CONFIG } from './lib/theme.tokens';セカンダリエントリポイント
大規模なライブラリでは、セカンダリエントリポイントに分割することで、利用者が必要なものだけをインポートできるようにします(tree-shaking も改善されます)。たとえば ui-kit とは別に ui-kit/testing を用意します。
import { ButtonComponent } from 'ui-kit';
import { provideUiKitTesting } from 'ui-kit/testing';セカンダリエントリポイントの作成
セカンダリエントリポイントは、独自の ng-package.json と public-api.ts を持つサブフォルダーです。ng-packagr が自動的に検出し、別のインポートパスとしてビルドします。
projects/ui-kit/
testing/
ng-package.json # marks a secondary entry point
src/public-api.tsメインエントリポイントのマッピング
ライブラリの ng-package.json では、entryFile が public-api.ts を指すように設定します。これにより、ビルドで使用するメインの公開範囲を示します。
// projects/ui-kit/ng-package.json
{
"lib": { "entryFile": "src/public-api.ts" }
}安定性を考慮した設計
public API は契約として扱ってください。エクスポートの削除や名前変更は破壊的変更です。新しいエクスポートは自由に追加できますが、削除する前に非推奨にして、利用者が移行する時間を確保してください。
ディープインポートを避ける
契約となるのは public-api.ts だけなので、利用者は ui-kit/lib/button/internal のような内部パスを決してディープインポートしないでください。バレル経由でエクスポートすると、安定した単一のインポート範囲を維持できます。
サードパーティの型を再エクスポートする
API メソッドが別のパッケージの型を返す場合は、その型を再エクスポートしてください。そうすれば利用者は、その型を記述するためだけに別の依存関係を追加する必要がありません。これにより、公開範囲をそれだけで完結させられます。
公開範囲をドキュメント化する
エクスポートするシンボルに JSDoc コメントを追加してください。利用者に見えるのは public-api の項目だけなので、それらをドキュメント化することで、IntelliSense と明確な使用方法を提供できます。
理解度チェック
利用者がインポートできるものは何によって決まりますか?
振り返り
public API は public-api.ts で厳選して定義し、コンポーネント、型、トークンを再エクスポートします。それ以外は非公開のままにして、自由にリファクタリングできるようにします。大規模なライブラリにはセカンダリエントリポイントを使用し、ng-package.json でエントリファイルを指定し、ディープインポートを避け、公開範囲を安定したドキュメント化された契約として扱ってください。
よくある質問
「パブリックAPIとエントリーポイント」レッスンは無料ですか?
はい。「パブリックAPIとエントリーポイント」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Angular Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Angular Academyコースには全4レッスンが含まれています。
「パブリックAPIとエントリーポイント」で何を学びますか?
明確なライブラリの公開インターフェースを設計します ブラウザで直接実行するハンズオンコードでAngular Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Angular Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのAngular Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。
「パブリックAPIとエントリーポイント」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このAngular Academyレッスンでコードを書いて実行できますか?
はい。すべてのAngular Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- ng generateによるライブラリ作成
- パブリックAPIとエントリーポイント
- ng-packagrによるビルド
- npmへの公開