htmlファイルを一括変換するコンバータ
これは、いわゆるコンバータです。Copilotに以下の2つの質問をしてみました。(11/2024)
※私はLaravelユーザなんで、すべてlaravel用語になってます。Djangoユーザの方は置き換えて読んでください。
「htmlファイルをLaravelのbladeテンプレートにコンバートする方法を教えて」
1.ファイル拡張子を変更する: まず、.htmlファイルを .blade.phpファイルにリネームします。
例えば、index.html を index.blade.php に変更します。
2.Bladeディレクティブを使う:
・Bladeのコメント: を {{– コメント –}} に置き換えます。
・Bladeの変数: HTML内のPHP変数を {{ $variable }} の形式にします。
・Bladeの制御構文: PHPの や のような構文を @if, @foreach などのBladeディレクティブに置き換えます。
3.Bladeコンポーネントとレイアウトを活用する: レイアウトテンプレートを使って、共通部分を layouts.app
のような親テンプレートに分けることもできます。
「手作業ではなく、自動的に変換してくれるwebアプリはありますか?」
はい、自動的にHTMLをBladeテンプレートに変換するWebアプリは存在します。例えば、以下のようなツールがあります:
1.HTML to Blade Converter: このツールはHTMLコードをBladeテンプレートに変換するためのオンラインツールです。
2.Bladeify: HTMLコードをBladeテンプレートに変換するためのWebアプリです。簡単に使えるインターフェースが特徴です。
今はこの方法が一般的なのでしょう。あとは、あらかじめbladeテンプレートになっているもの(MITライセンス or 有料)を探してダウンロードする。BCH+は違うタイプのもので、複数のhtmlから共通部分を探してbase,child,subviewに分離する一括変換型のコンバータです。
御託を並べてもしょうがないので、実際に試してみてください。
※2025年8月16日に再び尋ねたところ、CopilotもDOMを解析してコンバートできるとのこと。実際に試してみたら確かにできる。ゲゲゲ。はぁ~ってな感じでしたが、参考にするべきところもあり、ホント興味深い。ユーザ視点でみると、いろいろな選択肢がある方が便利なワケですから、これでいいんだと思います。9月4日にGeminiに聞いたら、こちらもできる。最近のシステムアップデートでできるようになったそうです。つかみは早かったけど、あっさり抜かれた感。しょうがないね。
+の意味
はじめはLaravelだけが対象で、BCHでした。いろいろなhtmlファイルをダウンロードしてテストしていたときに、誤ってDjangoのテンプレート(拡張子が.htm)を混ぜてエラーがボロボロでてきて。。。
中身見て、何じゃこれは??? 調べたらDjangoのもの。直観的に似てるなーと思って、調べてみたらSmartyの流れを汲んだものと判明。で、Djangoにも対応しました。だから「+」です。
Laravel版からDjando対応は、約1週間(細かい検証なしで10時間程度)でできたので、他のフレームワークで似たような構造を採用しているものにも対応できると思ってます。Laravel用に作ったつもりが、いくぶん汎用的な作りになっていったようです。偶然ですけどね。
※2025年9月5日にGeminiに尋ねたところ、Bladeテンプレートと似た構造を持つものに対応しているそうです。ってことは、BCH+も以下のフレームワークに対応可能にできるはず、ですよね?
Ruby on Rails (Ruby): ERB (Embedded Ruby)
Flask (Python): Jinja2
Next.js (JavaScript/React): JSX/React Components
ASP.NET Core (C#): Razor
それぞれの画面の機能紹介
これ使う人は、いわゆるプロの人たちなんで、細かい解説は省きます。直観的に使えるはずです。
サンプルのテスト結果
ホントは作者が違う50テンプレートを、完全にコンバートできてから公開しようと考えてました。そこまでできれば、いろんな書き方のクセを吸収できると思ったからです。
でも、私は趣味で開発しているだけで、BCH+でコンバートしたテンプレートを実際の開発に使うことがないため、これが世の中の役に立つのかどうか判断できません。それに、この先開発を続けるにあたり、いろいろと悩みがでてきたので、BCH+が皆さんから支持されるアプリなのかを聞きたくて、中途半端でも公開することにしました。
・Append
・MS-Copilot
・ChatGTP
・Startbootstrap-personal
・Constra-bootstrap-vsc
・Star-admin2
・Light-bootstrap-dashboard
・Bootstrap-dashboard-2.1.1-vsc
・Material-dashboard
・CoolAdmin-master
これ以外にも、約15テンプレートをダウンロードしてあります。順次テストして、OKなものから追加します。
オリジナルに手を加えてるところ
基本的にはオリジナルを尊重し、極力手を加えてません。以下の5点だけです。
1.'_'に置換する
ファイル名に使われている'-'を'_'に置換しています。
フォルダ名に'.'が使われている場合、コンバート後のファイル名は'.'なしになってます。
Bootstrap-dashboard-2.1.1-vsc
↓
bootstrap_dashboard_211_vsc_1.blade.php
2.インデント
コンバート結果のインデントを独自に振り直してます。
3.一行にまとめる
2行に別れた外部リンクを一行にまとめてます。
<script src="../../vendors/bootstrap-datepicker/bootstrap-datepicker.min.js">
</script>
↓
<script src="../../vendors/bootstrap-datepicker/bootstrap-datepicker.min.js"></script>
4.コメントなどの削除
コメント、空白行(改行)、IEに依存するコンディショナルコメントを削除してます。
5.@yield('external_link')
外部リンクがある場合、差分あるなしに関係なく付けてます。
オリジナルをそのまま使うことはないだろうし、拡張性を考えるとあった方がいい(Djangoの考え方ね)。