> ## Documentation Index
> Fetch the complete documentation index at: https://villagesql.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# 拡張機能またはプラグインとコンポーネント

> MySQLのネイティブプラグインまたはコンポーネントインターフェースを使用する代わりに、VEF拡張機能を構築するタイミング。

VillageSQLはMySQLのトラッキングフォークであり、ドロップイン置換として機能します。MySQLのプラグインおよびコンポーネントインターフェースは、MySQLと同様にVillageSQLでも動作します。VillageSQLは、VillageSQL拡張フレームワーク（VEF）を提供します。新しい機能（カスタムSQL関数、カスタム型、統合など）を追加するには、VEF拡張機能が適切なモデルです。

## どこに配置するか

新しいものを構築する場合は、独自のリポジトリにVEF拡張機能を構築します。プラグインとコンポーネントも機能しますが、VEFが適切なモデルです。詳しくは、[プラグインとコンポーネントの代わりに拡張機能を使用する理由](#why-extensions-instead-of-plugins-and-components)をご覧ください。

VillageSQL Serverリポジトリへのコントリビューション：

|                           |                                                                          |
| ------------------------- | ------------------------------------------------------------------------ |
| VEF自体の改善（新しいフックタイプ、SDK機能） | [サーバーリポジトリ](https://github.com/villagesql/villagesql-server)へのPR         |
| サーバーのバグ修正                 | [サーバーリポジトリ](https://github.com/villagesql/villagesql-server)でのIssueまたはPR |

<h2 id="why-extensions-instead-of-plugins-and-components">
  プラグインとコンポーネントの代わりに拡張機能を使用する理由
</h2>

MySQLプラグインとコンポーネントはVillageSQLで動作します。VEF拡張機能は、さらに多くの機能を提供します。

* **カスタム型** — 新しい列タイプを定義できます。これは、プラグインやUDFではできません。
* **パッケージング** — `.veb`ファイルとして配布され、`INSTALL EXTENSION`でインストールされます。
* **再起動は不要** — 拡張機能は実行時にロードおよびアンロードされます。
* **バージョン管理** — 拡張機能のマニフェストで宣言され、サーバーによって強制されます。

## 新しい拡張機能の開始

[vsql-extension-template](https://github.com/villagesql/vsql-extension-template)をクローンまたはフォークします。これには、動作するHello World拡張機能、マニフェスト形式、および完全なCMakeビルド設定が含まれています。

リポジトリを取得したら、[拡張機能の作成](/docs/ja/mysql-8.4/0.0.4/create)でVEF SDKについて説明します。

## VEFで必要な機能がサポートされていない場合

VEFはまだ発展中です。まだ存在しないフックまたは機能が必要な場合は、次の手順を実行します。

* **[サーバーリポジトリ](https://github.com/villagesql/villagesql-server/issues)に、必要なものを説明するIssueを提出します。**
* **すでに同様のIssueがある場合は、そのIssueに賛成票を投じます。**
* **フックをVEFに追加するPRを提出します。** フレームワークの改善は、サーバーリポジトリで歓迎されます。
