react-native-builder-bobとcreate-react-native-libraryの違い 🧐

:::note info | message
`react-native-builder-bob` と `create-react-native-library` は、どちらもReact Nativeのライブラリ開発を助けるツールですが、役割と提供する機能が異なります。簡単に言うと、`create-react-native-library` はプロジェクトを「生成」するツール、`react-native-builder-bob` は生成されたプロジェクトの「ビルド設定」を提供するツールです。
:::

### `react-native-builder-bob` と `create-react-native-library` の比較 🛠️

| ツール                     | 役割と主な機能                                                                                                                                                                                                                                                               | 目的とフェーズ                                                                                                                                                                                                                                                           |
| :------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **`create-react-native-library`** | 🚀 **React Nativeライブラリプロジェクトの雛形（ボイラープレート）を生成するCLIツール**です。\<br\> • ゼロからライブラリ開発を始める際の初期セットアップを自動化します。\<br\> • iOS（Objective-C/Swift）、Android（Java/Kotlin）、JavaScript/TypeScriptの基本的なプロジェクト構造と設定ファイルを生成します。\<br\> • **内部で`react-native-builder-bob`のテンプレートを利用**することが多いです。\<br\> • サンプルアプリ（`example`ディレクトリ）も同時に生成されます。 | • \*\*ライブラリ開発の開始（初期セットアップ）\*\*フェーズで使われます。\<br\> • コマンド一つで、開発に必要なファイル群やディレクトリ構造を一気に作成し、すぐに開発に取り掛かれる状態にします。\<br\> • まさに「React Nativeライブラリのための`create-react-app`」のような存在です。 |
| **`react-native-builder-bob`** | 🏗️ \*\*生成されたReact Nativeライブラリのビルド設定とプロセスを提供するパッケージ（またはその設定群）\*\*です。\<br\> • 複雑なRollupやWebpackなどのバンドラー設定を抽象化し、ライブラリのビルド、トランスパイル、型定義ファイルの生成を自動で行います。\<br\> • `package.json`の`"main"`, `"module"`, `"types"`フィールドなどを正しく設定するための内部ロジックを提供します。\<br\> • ライブラリの`package.json`に依存関係として追加され、`build`スクリプトなどで利用されます。 | • **ライブラリ開発中のビルド、テスト、最適化**フェーズで使われます。\<br\> • 異なる環境（CommonJS, ES Modules）向けにコードを出力したり、TypeScriptの型定義を生成したりする際に、開発者が個別に設定する必要をなくします。\<br\> • **`create-react-native-library`によって生成されたプロジェクトの「核」となるビルドシステム**と考えると良いでしょう。             |

-----

### 関係性 🤝

`create-react-native-library` は、新しいReact Nativeライブラリのプロジェクトを作成する際に、様々なテンプレートを選択できます。その**テンプレートの一つとして `react-native-builder-bob` の推奨する構造やビルド設定が組み込まれている**ことが多いです。

つまり、

1.  あなたが「新しいReact Nativeライブラリを作りたい！」と思った時、まず `create-react-native-library` を使ってプロジェクトの雛形を生成します。
2.  その雛形の中には、`react-native-builder-bob` が提供する（またはそれに準拠する）ビルド設定やスクリプトが既に含まれています。
3.  あなたは生成されたプロジェクトでコードを書き、`react-native-builder-bob` の設定を利用してライブラリをビルドし、配布します。

-----

### 例え話で理解する 🏭📦

  * **`create-react-native-library`** は、\*\*「新しい家を建てるための、基礎ができていて、設計図も配管も電気も大体準備されている土地付きキット」\*\*のようなものです。あなたは、このキットを手に入れるだけで、すぐに家の建設（ライブラリ開発）に取り掛かれます。

  * **`react-native-builder-bob`** は、その家を効率的に建てるための\*\*「電動のこぎりや電動ドリル、クレーンといった専門的な工具セット」**、あるいは**「家を効率的に組み立てるための作業手順書と、それを自動化してくれるロボット」\*\*のようなものです。キットの中には、この工具セットを使うための指示が既に含まれています。

つまり、`create-react-native-library` は「プロジェクトの箱全体を用意する」役割、`react-native-builder-bob` は「その箱の中身を効率的に動かすためのエンジンやツール」の役割を担っています。

-----

### どちらを使うべきか？ 🤔

  * **ライブラリをゼロから作り始めるなら**: `create-react-native-library` を使います。

      * `npx create-react-native-library my-new-lib` のように実行すれば、自動的にBobの推奨設定が組み込まれたプロジェクトが生成されることが多いです。

  * **既存のライブラリのビルド設定を見直したり、手動でセットアップしているプロジェクトを近代化したいなら**: `react-native-builder-bob` のドキュメントを参考に、そのビルドシステムをプロジェクトに導入することを検討します。

現代のReact Nativeライブラリ開発では、これら二つのツールはしばしばセットで使われる関係にあります。