「Smarty」に関する日記

アンパンマンDBとドラゴンクエスト10のプレイヤーイベントを検索および通知するサイト

アンパンマンDB(記事更新)

近頃最新っぽい情報軍にレンタルDVDの情報を出せなくなっていて気付くのが遅れてますが、とりあえず次回のDVDの情報を入れました。
例によって収録内容は予測によるものです。
TSUTAYAの商品情報ページでは、『アンパンマンとみんなのえがお』みたいな画像が見えてますが、断定はできないし、どれと差し替えになるのかもわからないので、ひとまずは機械的な予測を使っています。

ドラゴンクエスト10のプレイヤーイベントを検索および通知するサイト

メール文面やロジックを特に持たない実質的な静的ページもSmarty脱却して、TGWSと関連サイト全てでSmartyとお別れできました!
厳密には、もう少し様子を見て本当にSmartyが使われていないことを確認するまではSmarty本体のコードは残しますが。
本当に必要最小限のコードしか動かない状態になったので、表示も早くなっていると思われます。

ドラゴンクエスト10のプレイヤーイベントを検索および通知するサイト

とりあえずトップページをSmarty脱却成功。
こういった、元の機能をそっくり維持したまま中身をごっそり入れ替える修正は、元の機能を一通りカバーする自動テストを作って、テストに全部合格するように組むのですが、今回は自動テストしやすい構造になっていなかったので、そこんところをどうにかするところからのスタートでした。
これで自動テストしやすい書き方に移行しやすい土台はできたので、今後は他のページも修正が加速する…といいなぁ。

ドラゴンクエスト10のプレイヤーイベントを検索および通知するサイト

Smarty脱却のための作業中…だけど、思わぬところでエラーが起きて難航中…。

TGWS内部処理

他のことに忙しくてなかなかできていなかったコードの整理、久々にやりました。
アンパンマンDBと日記で使わなくなったSmarty関連のコードを中心にごっそり消えて、なかなかすっきりしました。
とはいえ、Smartyを使っている場所はまだまだあるので、Smarty自体をすっきりさせるのはなかなか道のりが長そうです。

Smarty

Smarty脱却を進めるため、脱却しても動作が変わらないことを確認するためのテストコードをいろいろ作成していました。

ドラゴンクエスト10と日記

ドラゴンクエスト10(ミフミン)

哭声のアイテム(名前忘れた)
昨日ぶち抜いた槍を掲げて、聖守護者のクエストはクリア。
そして、途中まで進めていたレベル上限解放クエストも、無事クリアしました。
昨日戦ったボスと同様、ブレス攻撃が苛烈だったので、今日もレンジャーで行きました。
ブレス以外の攻撃も全部強烈だったのですが、ブレスの頻度が高いので、ブレスを無効化し続ければ半分くらい無駄行動にさせられるのです。
それに加えて、柱のある地形なので、柱に引っ掛ければかなり長い間拘束できるというのもポイントでした。
というわけで、とりあえずミフミンのレベル上限が120→122になりました。

ボスの画像は写真置き場でどうぞ。
写真置き場「2022-03-20」

日記

内部的なリニューアル、一般用ページは完了しました。
Smartyを使っていたところを普通のPHPに置き換えるというのもやっていて、だいたい日記ページで1割前後早くなったようです。
管理ページのリニューアルが中途半端な状態なので、「古いコード残ってんぞ!」ってエラーを吐き続けながらこの日記を書いているわけですが…。

うん、日記に限らずなんですが、Smartyやめたいんですよね。
使ってる場所が多すぎて手を付けきれていないだけで。

ドラゴンクエスト10のプレイヤーイベントを検索および通知するサイト

先日のSmartyの件が大丈夫じゃなかったので修正。
Smarty本体とは関係ないところでエラーが発生していました。
tgws.plusドメイン配下のサイトじゃないからすっかりチェックを忘れていました。

ドラゴンクエスト10とSmarty

ドラゴンクエスト10

ルイーダの酒場
ゾーマのイベントの全キャラで制覇。

あと、バトエンのイベントをちょっと進めました。
ほとんど運任せなのに拘束時間が長めなのがちょっとね…。
この辺りは次期バージョンでテンポよくなるそうなので、その点に期待。

Smarty

動作確認ができたのでバージョンアップ。
今まで出ていたうるさいエラーも沈黙しました。
自動テストをもっとしっかりできていればこの辺も遠慮なくできるはずなんだけどなぁ…。

Smarty

今使っているバージョンのSmartyが最新のPHPではWarning出すようなので、ちょっとバージョンアップとか、別のテンプレートエンジンへの切り替えとかを検討してみました。
今どきの流れで、SmartyもComposer対応とかしているようです。
ただ、テンプレート不要な場所でも問答無用で読み込む設定になっているようなので、Smartyは従来通り手動でrequireしようかと思います。
他のテンプレートエンジンと言えば、Twigが有名で、Skinnyとかいう日本初の軽量なエンジンもあったり、そもそも生のPHPでいいんじゃないかって意見もあったりしますね。
ひとまず、今のところは、アンパンマンDBみたいに比較的規模のある場所ではSmarty、ゲーム記みたいに生のHTML主体の場所ではテンプレートエンジンを使わないという方向でいこうと思います。
Smartyは最新バージョンに上げるという前提でね。

テンプレートエンジン

もしかしたらSmartyとかじゃなくPHPをそのまま使ったらいいんじゃないかと可能性が。
昔、これを試みたことがあったのですが、変数の受け渡しがうまくいかず頓挫しました。
しかし案外簡単な方法でできそうだったのです。
既にSmartyを使っている部分は変更しませんが、これからはSmartyを使わないという選択肢も入れていきましょう。

日記

新日記の開発中。
同じURLでこっそりテストしようとか思っていたのですが、色々と非現実的だったので、やっぱり別のテスト環境を用意することにしました。
アンパンマンDBなどと同じようにSQLiteとSmartyを使いますが、より単純な使い方をする予定です。
あまり本格的なシステムにはしません。

日記

日記のプログラムにもSmarty使おうと思っていたのですが、設定ミスにより色々不都合なことが起こっていたので、この機に全体的に直しておきました。

無題

これまでずっとsmartyではバージョン2の記法で書いてきたのですが、実はうちで使っているのはバージョン3だったのでもっと書きやすい気泡があったのでした。
foreachとかずっと{foreach from=$array item=value}なんてことやってましたよ。
バージョン3では{foreach $array as $value}というPHPに近い表記も可能なのです。
とりあえず見つけ次第新しい表記に直していこうと思います。

無題

やっぱりSmarty使うことにしました。
変数の割り当てやヘルパー関数の用意などを考えると、新規に自分でテンプレートエンジンを作っていると時間がかかってしまいそうなのです。
私が作りたいのは「スマートな設計のプログラム」ではなくて、「しっかり動くプログラム」なのです。
理想を追うあまりいつまでたっても何も動かなくては何の意味もないのです。

無題

アンパンマンDBバージョン3で、デザインとロジックの分離、デザインを複数用意したいという希望からテンプレートエンジンのSmartyを導入していたのですが、どうにも今回はSmartyにあまり利点がないような気がしてきました。
Smartyは高速なテンプレートエンジンですが、その高速化の根拠はテンプレートをPHPコードにコンパイルして、ほとんどの場合単にPHPファイルをインクルードするだけで済ませてしまいところにあります。
それだったらむしろSmartyなど間に介さず直接インクルードすればもっと速くて手っ取り早いわけです。
Smartyはデザインとロジックの分離のため、テンプレートファイル中では極力PHPコードを実行できないようにしてあります。
これはデザイナーが余計なコードを書いてプログラムをバグらせるのを防ぐという点では素晴らしいのですが、個人開発では単に自分一人が気をつければ済むだけの話です。
そもそも、PHPそのものが最初からテンプレート的な使い方をできるように設計されていて、Smartyはそのテンプレート的な使用法に特化したものに過ぎないのです。
そう考えると、Smartyはただのインクルードより設定が大変なだけでメリットがあまりないなぁ…と。

無題

アンパンマンDBバージョン3開発中。
Smartyのインストールに手間取っています。
公式のサンプルが古いPHP用だったりクラスのオートロードがうちで設定しているものと衝突したり、簡単そうに見えてなかなかうまくいかないものです。

タイトルジェネレータをTwitter対応にしました。
いつの間にかTwitterに投稿するためのURLが変更されていたので最新のものを使っておきました。