T Toutadminドキュメント

二つの版、一つの製品

Toutadmin には二つの実装があります。一方は Node.js の上で、もう一方は PHP の上で動きます。 二つの製品でもなければ、簡易版と完全版でもありません。同じ 51 の業務スペース、 同じ 142 テーブルの構造、同じ 16 言語、同じ画面です。この ページは、両者を本当に分けているものを述べます。そしてそれは、ごくわずかです。

なぜ二つなのか#

企業向けの製品は、企業がすでにいる場所に置けなければなりません。サーバーと systemd と管理者を持つ会社もあれば、月四ユーロの共用レンタルサーバーと FTP しか持たない会社もあります。Node 版は前者に、PHP 版は後者に向き合います。後者を断ることは、 管理の道具を最も必要としている半数の会社を断ることでした。

まったく同じもの#

項目NodePHP
業務スペース5151
データベースの表142142
13111311
画面の言語1616
翻訳キー27652792
任意モジュール77
Webhook のイベント88
API の資源99

構造が同じなので、データベースは変換なしで一方から他方へ移ります。片方を 止め、app.sqlite とファイルのフォルダーを写し、もう片方を起動するだけです。 パスワードもそのまま使えます。どちらの版も同じハッシュ形式を読むからです。これが同等性の 最も正直な試験であり、通っています。

違うところ#

いくつかのアドレスの形#

Node 側は 531 経路、PHP 側は 513 経路。この差は不足ではありません。 同じ機能を、より短く書いてあるだけです。

  • API。Node は九つの資源を一つずつ宣言します (/api/v1/collaborateurs/api/v1/services……)。PHP は一つの 引数つき経路でまとめて提供します。九つとも応答し、ルートは九つすべてを告げ、テストが 一つずつ呼び出してそれを確かめます。
  • 導入。Node は五段階で案内し、PHP は一ページと一回の送信に収まります。 尋ねる情報は同じ五つ。言語、前提条件、会社、年次有給の日数、管理者アカウントです。
  • 横断的な権限。Node は権限ごとに経路を持ち、PHP は引数つきの経路 /admin/droits/{flag} 一本です。

この二十八の形の違いは記憶で語られてはいません。tests/test_parity.php が 一つずつ実際に動かして確かめます。

定期的な見回り#

Node は自前の時計を持ちます。サーバーが常駐しているので、自分で目を覚まします。PHP は 要求のあいだしか生きていないので、同じ八つの処理が tools/cron.php を通り、 レンタルサーバーの定期実行から呼ばれます。業務のコードも結果も同じで、きっかけだけが違います。

日付#

Node は V8 に組み込まれた Intl で日付を書きます。PHP も intl 拡張があれば同じで、同じ ICU を使い、一字まで同じ結果になります。拡張がないときは曜日と 月の名前が翻訳辞書から来ます。日付は正しく訳されたままですが、要素の並びが一部の言語で 変わることがあります。

違って当然と思われて、実は同じもの#

項目どちらの版でも
QR コード(二要素認証)PHP 側は手書きの符号化器。Node 側が使う library と、十六とおりの文字数でバイト単位まで一致を確認済み。
バックアップの書庫どちらも外部依存なしで tar.gz を作り、中身も SHA-256 も同じ。
IMAP の経理用受信箱どちらも製品の中に IMAP クライアントを持つ。
PDF、CSV、取り込み製品の中で書かれ、出てくるファイルも同じ。
監査記録ハッシュの連鎖も同じ。一行でも書き換えれば鎖が切れるのは、どちらも同じ。
HTTP の安全方針同じヘッダー、nonce を使う同じ CSP、そして欠かせない JavaScript を持たない点も同じ。

どちらを選ぶか#

あなたの状況
共用レンタルサーバー、FTP、コマンドラインなしPHP —— まさにこの場合のために
自分のサーバー、systemd、管理者がいるNode
すでにどちらかの運用を知っているそちら。同等性が、選択をやり直せるものにしています。
同時に使う人が多いNode —— 常駐する一つのプロセス、開いたままのデータベース
迷っているPHP —— 手入れする部品が少なく、Node への移行も結局はファイルの複写

同等性はどう保たれているか#

それは心がけではなく、検査です。変更のたびに四つの照合を通します。

  1. 経路 —— 両方から抜き出して突き合わせる。食い違いは必ず文書化された差でなければならない。
  2. 関数 —— 各モジュールが外に出す名前を、モジュールごとに突き合わせる。
  3. 構造 —— 両方のデータベースから表と列を読み出して突き合わせる。
  4. 画面 —— 両方の版を並べて起動し、本物のブラウザーで一ページずつ辿り、応答コードと構造を比べる。

この四つの照合は、実際に欠陥を見つけてきました。うち二つは両方の版にありました。 だからこそ意味があります。測らない同等性とは、気づかないうちに失われた同等性のことです。

さらにテスト一式があります。Node 側 802 件、PHP 側 572 件、合わせて 1374 件です。

Toutadmin ドキュメント —— 2026-09-13 に生成。 ソフトウェアから独立した単体のサイトです。