大規模なWebサイトの構築や保守において、**テンプレートファイルと仮想URLとの対応関係を明示する一覧ファイル(マッピングファイル)**を用意するケースは少なくありません。
特に階層構造を持つ多数のテンプレートファイルを扱う場合、この一覧を手作業でメンテナンスするのは困難です。
この記事では、そうした課題を解決するために作成した Python製のテンプレートマッピング自動生成スクリプト を紹介します。
✅ このスクリプトでできること
例えば、以下のような構造を持つサイトを対象に:
/siteA/
├── templates/secure_area/
└── settings/template_map.php(← 出力ファイル)
templates/secure_area/
以下にある .php
ファイルを走査して、以下のようなルールで template_map.php
を自動生成します:
- パスは
'secure_area/xxx.php'
の形式で一覧化 - 各テンプレートに記述された パンくずナビゲーションの文言を解析し、コメントとして付加
- パンくずがないファイルにも
//
の空コメントを明示的に追加 - コメントの位置はインデントで揃えて読みやすく整形
- 深い階層にあるファイルほど上位に表示し、同階層内はA-Z順
📁 想定ディレクトリ構成(ダミー)
/project-root/
├── siteA/
│ ├── templates/secure_area/
│ └── settings/template_map.php
├── siteB/
│ └── ...
└── siteC/
🧾 出力されるPHPファイルの例
<?php
// テンプレートファイルと画面構造のマッピング(パンくず付き)
return [
'secure_area/user/index.php', // ユーザー情報
'secure_area/user/password_change.php', // ユーザー情報 > パスワード変更
'secure_area/user/notification_settings.php', // ユーザー情報 > 通知設定
'secure_area/data/download.php', //
];
- パンくずが存在する場合 →
//
に続けて>
区切りで表記 - パンくずがない場合でも
//
を表示 - コメントは右揃えで整列
🧠 処理の特徴
- BeautifulSoup を用いて
.php
ファイル内の HTML を解析 <div class="c-breadcrumb">
の内容からパンくず要素(<li>
)を抽出- 最上位(トップリンク)は無視し、それ以降を
>
で連結 - パンくずがないテンプレートも検出し、明示的な空コメントを出力
- 出力は カンマを含めた整列済みのPHP配列形式
🔧 実行環境
- Python 3.x
beautifulsoup4
ライブラリ
インストール:
pip install beautifulsoup4
▶ 実行方法
python3 generate_template_map.py
各サイトごとに settings/template_map.php
が出力されます。
🔢 ソートルール
- 階層が深い順(例:
secure_area/user/settings/index.php
の方が上に) - 同階層内は アルファベット順
これにより、細かい画面やサブページが上位にくるため、構造の見通しがしやすくなります。
💡 応用アイデア
- コメント部分だけを別形式で出力(JSONやCSVなど)
- パンくずが取得できなかったテンプレートのみ抽出してレビュー対象に
- 特定のセクション(例:
download/
,admin/
)だけを別マップとして出力
✅ まとめ
このスクリプトは、テンプレート構成の視覚化と保守性を向上させるために非常に有効です。
特に以下のようなニーズがある場合には導入をおすすめします:
- 多層構造のテンプレートを扱っている
- パンくず設計とテンプレート構成の整合性を保ちたい
- ページ構成表やURL設計の自動生成のベースにしたい
手作業では煩雑になるテンプレート管理を自動化・体系化する第一歩として、ぜひ活用してみてください。
コメント