---
title: Nibiru とは？
description: Nibiru の 90 秒ツアー — MMVC が何を意味するか、何が同梱されているか、誰のためのものか。
---

**Nibiru** はモジュラー MVC PHP フレームワーク — *MMVC* — であり、本格的なフレームワークの規律を犠牲にせずに **ラピッドプロトタイピング** を実現するために作られました。頭の中に収まるほど小さく、[ショーケースページ](/ja/showcase/projects/) にある本番アプリを支えるほど強力です。

名前はバビロニア天文学への敬意です：**Nibiru** はバビロンの主神マルドゥクと結びついた天界の交差点でした。フレームワークも同じ考え方で動作します — モジュール、コントローラー、ビュー、データが交わる単一の点です。

## 同梱されているもの

| | |
|---|---|
| **ルーティングとディスパッチ** | URL パターン + SEO URL のパース、ソフト 404、アクションの自動解決。 |
| **MVC ＋ もう 1 つの M** | コントローラー、ビュー（Smarty）、モデル、加えて第一級の **モジュール**：トレイト、プラグイン、インターフェース、設定、Observer パターン。 |
| **マルチデータベース** | ネイティブ MySQL、PDO、libpq 経由の PostgreSQL（`psql`/`postgresql`）、ODBC、すべて統一された `Db` アダプターの背後に。 |
| **フォーム** | 28 種類以上のフィールドタイプを `Form::addInputType…()` と div のレイアウトヘルパーで流暢に構築。 |
| **ページネーション** | URL を意識（`/controller/action/page/N`）、テンプレートヘルパー付き。 |
| **認証** | セッションベース、AES 復号化された認証情報、`Users` モジュールが事前構築したログインフォーム。 |
| **CLI（`./nibiru`）** | モジュール、コントローラー、プラグインの scaffolding、マイグレーションの実行、キャッシュのクリア、CMS ページの管理。 |
| **Composer 対応** | Smarty 3、PHPMailer、Guzzle、Laminas Diactoros、OpenAI クライアント、Elasticsearch クライアント、QR コード、バーコード、ブロックチェーンツール。 |

## MMVC の本当の意味

ほとんどの PHP フレームワークは Model–View–Controller を提供します。Nibiru は 2 つ目の **M** を追加します：**モジュール**。

モジュールは自己完結した単位で、以下を含むことができます：

- `IModule` を実装するメインクラス（オプションで Observer パターンの `SplSubject`）、
- 再利用可能な動作のための **トレイト**、
- コントローラーに注入される無状態サービスのための **プラグイン**、
- 契約を表す **インターフェース**、
- [レジストリ](/ja/core/registry/) によって自動発見される `.ini` ファイルとしての **設定**。

モジュールは疎結合を促進し、`application/controller/` を汚染することなく "users"、"billing"、"shop"、"tpms" などを独自のフォルダに保持できます。

```
application/module/users/
  ├── users.php             # メインクラス（IModule、SplSubject を実装）
  ├── interfaces/           # 契約
  ├── plugins/              # 無状態サービス（User、Acl…）
  ├── settings/             # レジストリが自動ロードする .ini 設定
  └── traits/               # 再利用可能なメソッド
```

## リクエストライフサイクル、ひとことで

```mermaid
flowchart LR
  A[index.php] --> B[core/framework.php]
  B --> C[Dispatcher::run]
  C --> D[Router::route]
  D --> E[Auto::loader<br/>モデル + モジュール]
  E --> F[applicationController.php]
  F --> G[navigationAction]
  G --> H[customAction?]
  H --> I[pageAction]
  I --> J[Display::display<br/>Smarty レンダリング]
```

すべてのリクエストは `navigationAction()`、次に（オプションで）一致した `_action`Action、最後に `pageAction()` を実行します。コントローラーファイルが見つからない場合、Nibiru は設定されたエラーテンプレートをレンダリングします — *ソフト 404*。

:::tip[Laravel や Symfony から来ましたか？]
コントローラー、ビュー、モデルは馴染みやすいでしょう。違いは：

- **サービスコンテナなし** — Nibiru は **シングルトン**（`Config`、`Router`、`Registry`、`Dispatcher`）に依存。
- **Eloquent / Doctrine なし** — モデルは `Model::__construct(false)` によってデータベーススキーマから自動生成されます。
- **Blade や Twig ではなく Smarty** — でも筋肉記憶は同じです。
:::

## Nibiru は誰のためか

- 今週末に動作する Web アプリを出荷したい **ハッカーとプロトタイパー**。
- メガフレームワークの重さを背負わずに本番アプリを保守する **ソロ起業家と小規模チーム**。
- 初日から PostgreSQL、MySQL、CLI を使いたい **PHP に興味のあるチーム**。

準備はできましたか？ [Nibiru をインストール →](/ja/start/installation/)
