「アンパンマンDB(システム)」に関する日記(5)

<前 次>

ドラゴンクエスト10とアンパンマンDB

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

伝説の三悪魔闘

  • 【コイン】伝説の三悪魔闘をはじめて倒した!

ミフミンも倒せました。
さすがにしろいコキンのほうで何度か戦っていたので、対策はさほど苦労せず。

自分:ハンマー盗賊。とにかく敵の動きを止めまくる。呪文耐性厚め
サポ:扇賢者。回復&バフ&敵のバフ消し。ブレス耐性100
サポ:片手剣魔法剣士。敵がブレイクブレスならこっちはフォースブレイクだ!ブレス耐性100
サポ:スティック天地雷鳴士。呪文耐性補完とネクロゴンドの波動対策。ブレス耐性100

痛恨あるのわかってたのに会心ガードもせず突っ込んで私一人死んだ以外は、危ない場面は一つもありませんでした。

アンパンマンDB(システム)

なんか検索でエラーが起きてて、ちょっと心当たりがあったので調べていたのですが、ライブラリ更新中の一時的なエラーでした。
検索に使っているライブラリが、最新版を指定しているはずなのに古いバージョンが使われているという問題が、開発環境では発生していたんですよね。
今回起こったのは、更新作業中に一瞬ファイルが消えるタイミングにリクエストが重なってしまったからでした。

アンパンマンDBとTGWS内部処理

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

コラムから転記。
顔が違う系が終わって、弱体系始まりました。
「力が出ない」は「顔が欠けて力が出ない」と統合しています。
ここから先は、名前らしい名前のない状態もあるので、そのあたりは臨機応変に。

アンパンマンDB(システム)

個人メモのAJAX化に着手し…しようとしました。
まだ何も入ってないjsファイルを追加してます。

TGWS内部処理

ちょっといろいろ古いコードを整理したのをアップしてました。
まだまだ古いコード一掃できてないですが。

アンパンマンDBとそれいけ!アンパンマン ばいきんまんとえほんのルルン

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

「#2025年はアンパンマンでこんなエピソードが観たい」の追加です。

アンパンマンDB(システム)

PHP: fputcsv - Manual
> escape が空の文字列("")以外に設定されているとき、 » RFC 4180 に準拠しない CSV が生成されたり、PHP の CSV 関数を介してラウンドトリップ(往復変換)でデータが壊れる可能性があります。
CSVが変な理由、これでした。
エスケープ方法設定したらバグるから設定消さなきゃいけないって完全に罠じゃねーか!!
アンパンマンDB以外のCSV出力機能も同じ罠踏んでそうな気がするので、他も確認してから修正版アップしようと思います。

それいけ!アンパンマン ばいきんまんとえほんのルルン


DVD買いました。
家でゆっくり見ても結局何食ってるのかよくわからなかった。

アンパンマンDB

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

収録内容確認したので、収録話更新しました。

コラムから転記。

アンパンマンDB(システム)

CSV出力を調整中。
一覧画面用のHTMLをそのまま表示するようになっているのですが、さすがにそれじゃCSVの意味がないだろうってことで。

HTMLとアンパンマンDBとPHP8.3

HTML

とりあえず主要なファイルは一通りアップ終わりました。

アンパンマンDB(システム)

また発動していないバグ修正。
話数が空欄じゃなくて「0」になっていた場合に、「第0話」とかになってしまうんですが、アンパンマンDB的には「0」も空欄扱いしたいので、空欄の処理に飛ぶようにしました。
さっきのHTMLと一緒にアップ済みです。

PHP8.3

もうそろそろPHP8.4の正式リリースも近そうですが、うちはまだ8.2だったので、ひとまず8.3まで上げることにしました。
とりあえず開発環境での動作は一部のライブラリ以外はコードの修正なしで大丈夫そう。
本番サーバーはオプションを変えるだけだからいいとして、DockerとCI環境も対応しておかないと。

アンパンマンDBとXdebug

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

コラムからの転記。
この程度なら毎日いっぱいやってもいいのにね。

アンパンマンDB(システム)

リストをNULL検索できないバグを修正しました。
ただ、今のところ、何もない項目はNULLじゃなくて空文字列が入っているので、実質的に影響はありません。

Xdebug

Xdebug - Debugger and Profiler Tool for PHP
Xdebug導入しました。
すなわち、Xdebug使わない縛り辞めました。

もともとデバッガとしては、PHP標準のphpdbgを使ってました。
PHPUnitのカバレッジもphpdbgだったんですが、PHPUnit10以降(最新版は11)には使えなくて、phpdbgのために古いのを使う続けるのも厳しいなって思ってました。

カバレッジ計測の選択肢としては、PCOVもあったんですが、あんまり更新されてなさそうだったし、カバレッジ「だけ」というのもどうかと思ったので、デバッグ並びにカバレッジ計測の定番、Xdebugを導入した次第です。

そもそもXdebugを避けてphpdbgを使っていたのは、XdebugはPHP標準に入っていないというのと、カバレッジ計測が遅いという話を聞いたからだったのですが、実測してみると、今はXdebugのほうがphpdbgより1割ほど早く終わりました。

アンパンマンDB

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

昨日のふくろうおじさんの流れで今度はおじいさんを追加しました。

こっちはコラムから転記組。
元気倍率アップ系ですね。
300より200のほうが見た目豪華なのがポイント。

アンパンマンDB(システム)

テストが不安定な問題、直接の原因は一応わかりました。
エラーコード0xC0000005(-1073741819)、アクセス違反です。
アクセス違反なら何でもこのエラーが出るので、このエラーコード一つで真の原因の特定はできません。
傾向として、カバレッジ計測なしだとエラーは起きず、計測ありのときだけエラーが出ることがあるので、カバレッジと何かの競合だと思われます。
落ちる部分のコードがやってることと言えば、同じPHPスクリプトを条件を変えて2回呼び出していることなので、ここで何らかのロックがかかってしまってカバレッジを邪魔しているのでは?と考えています。
完全解決までは、カバレッジ計測の頻度は減らすかなぁ。

アンパンマンDB

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

おそらく1話限りのゲストだと思いますが、追加しました。
こういうのって、たまたま見かけたときに書いておかないと忘れますからね。

アンパンマンDB(システム)

本番環境では多分問題ないんですが、なんだか自動テストが不安定になっています。
最後までテストせず、エラーも出さず、急にすっと終わる感じ。
一応突然終了する地点は絞り込みましたが、別に何でもないテストをやっているようにしか見えないところなんですよね。
毎回発生するわけでもなく、なんだか不気味です。

アンパンマンDB

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

またコラムから転記。
勇気百倍はそれなりに回数あるけどアニメDBの専用カテゴリは作ってなかったな。

アンパンマンDB(システム)

アクセス統計、直ったことが確認できました。

あと、経路別画像ってやつ、作ってます。
総合索引で、マッチした名前ごとに別々の画像を出す機能です。
同じネギーおじさんでも、「な」で探したときと、「ね」で探したときでは期待する姿が違いますからね。

アンパンマンDBとTGWS内部処理

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

アンパンマンの状態いろいろから転記。
今日はひとまずこのひとつだけだけど、変身パターンとかも含めて、この手の記事も増やしていきたいですね。

アンパンマンDB(システム)

アンパンマンDBに限っての話ではないのですが、アクセス統計が6月ごろから全然更新されていませんでした。
まあ、一般ユーザーにもわかる範囲だと結局アンパンマンDBだけではあるのですが。
修正したんで、明日から最近のTOP10とかが動き出すかと思います。
動かなかったらまた調べます。

TGWS内部処理

同じ意図のコードなのに変数名が全然統一されてなくてコピペでコードが動かないことが多かったので、ばらばらな変数名を統一する作業をしていました。
もちろん、全部の変数は無茶なので、よく使う型の変数に限ってですが。
それでも数百ファイルはいじったかも。

アンパンマンDB(システム)

自動テスト方面で出た問題、解決しました。
最初に作ったオブジェクトを次々受け渡していかなきゃいけないんだけど、途中で断絶しちゃっていたんですよね。
本番環境では、断絶しても最終的にデフォルト設定で再生成するから問題にはならないんですが、テストでは、テストケースごとに別オブジェクトを作るのでデフォルト設定じゃダメだったのです。

うーん、オブジェクトオブジェクト言ってても説明になってない気がするのでもうちょっと具体的に言うと、データベース接続オブジェクト(以下、DBO)です。
表示ロジックでは、表示に必要なデータはそろっている前提なので、余計なことをできないように、DBOを渡さないようにしています。
しかし、表示ロジックの最後の最後で、画像タグや記事間リンクなどのリンク処理を行うため、DBOが必要になります。
本番環境では、本番データベース以外に繋がないので、DBOをいくつデフォルト設定で再生成しても問題ありません。
テスト環境では、デフォルト設定でもテスト用データベースに繋がるのですが、テストケースごとに別々の条件に分けたいので、データベースもテストケースごとに作っています。
ここで断絶が起こると、途中までテストケースごとのデータベースだったのが、最後にいきなりテスト環境の共用データベースに繋がることになります。
最初と最後で別々のデータベースに繋がるので、テストが動かなくなるというわけです。

解決には、表示ロジックにDBOを渡さないようにしつつ、リンク処理ではDBOを使えるようにする必要があります。
このため、表示ロジック呼び出し側が、リンク処理を司るオブジェクトに適切なDBOを持たせ、表示ロジックにはリンク処理オブジェクトのほうを渡すようにしました。
リンク処理オブジェクトからDBOを取り出すことはできないので表示ロジックが悪さをすることはできません。
一方、リンク処理オブジェクトは適切なDBOを自分で持っているので、あるべきデータベースを使ってリンク処理を行うことができるというわけです。

アンパンマンワンドロとアンパンマンDB

アンパンマンワンドロ

テーマ追加しました。
提案があったやつです。
初開催のやつは確率アップしていますが、再開催のやつも確率が低いだけで普通に候補にあるので、必ずしも次の開催で選ばれるわけではないです。

アンパンマンDB(システム)

記事一覧のメイン画像、更にもうちょっといい感じの見た目にしました。
環境によっては実感できないのですが、高解像度ディスプレイでは高解像度版の画像が表示されるようになっています。
ただ、この修正をするにあたって、自動テスト方面で問題が出たので、目下対応中です。

アンパンマンDB

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

来週の放送情報。
ねむねむおじさん地味に登場回数伸ばしてんな。

アンパンマンDB(システム)

記事一覧と詳細画面に、メイン画像を表示するようにしました。
実はずっと前からひっそり開発し、こっそりプレリリースしていた機能なんですが、スタイルをまあまあいい感じに調整して、この度デフォルトONにしました。
ただ、更にもうちょっといい感じの見た目にしたいなーとかまだ思ってます。

アンパンマンDB

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

ユーザーから提案のあった「カツ」カテゴリの追加のついでに、全面的に加筆しました。
カツドンマンとか他の記事については、カテゴリだけの細かい修正なので個別に告知せずこっそりひっそり。
あと、揚げ物繋がりの「天ぷら」も。

こっちも情報提供の反映。

これは、字が似てて見分けついてなかったのを、ちゃんと見分けつけましたという更新。
ただ、この2つの間に、「篠原恵美子」という謎の名前の記事が存在するのですが。
どこかで見たのか書き間違えたか、更に詳しく確認する必要がありそうです。

アンパンマンDB(システム)

「別名・別表記」にした項目、扱いをはっきりさせるため、注釈つけました。
大昔にコメントお気軽にどうぞ的なことを表示するために使っていたシステムを作り変えて、注釈の位置に出すようにしています。
なお、コメント欄のほうは、お気軽にどうぞとか言わなくてもお気軽に書いてもらっているので、注釈はつけないことにしました。

アンパンマンDB

アンパンマンDB(システム)

あの後いろいろ調整して、ひとまず完成と言ってよさそうなところまでできたので、公開しました。
間違っているはずのSQLがなぜかテスト環境で動いてしまって、公開した瞬間エラーを起こしたりもしましたが、それも修正しました。
なお、商品DBとコラムは、索引で探すようなものじゃないとか、索引で探せるようなデータ構造にしてないとかの事情があり、総合索引の対象外としています。

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

情報量の変わらない細かい更新なので個別の告知はしていませんが、総合索引で邪魔になる、ふざけた呼び方の類を別の場所に転記しました。
あわせて、ちゃんと呼び名として成立しているものという意図を込めて、「他の呼び方」から「別名・別表記」に項目名を改めました。
今のところ、ふざけた呼び方の転記先は説明文中ですが、これもこれでデータベース化したら面白いかもしれないので、誰かから誰かの呼び方みたいな項目を作れないか、検討中です。
ただまあ、それをやるより、普通の本編&キャラ情報を充実させたほうがよさそうですがね。

アンパンマンDB(システム)

総合索引ほぼ完成。
画像に関しては、画像詳細のページへは飛ばさず、画像も含めて記事へのリンクとして機能させるようにしました。
枠線周りの挙動も、ほぼ私の考えていた通りに実装できました。
ただまあ、「あ」でいきなり「アホラーマン」が出てきたりするので、そういうふざけたのを減らす方向でデータ側の調整が必要ですね。

アンパンマンDBとドラゴンクエスト10

アンパンマンDB(システム)


総合索引の今の見た目はこんな感じ。
一記事を四角いカード状のリンクにして並べて表示しています。
カードの幅は統一するか内容量反映するか、高さは画像があるときとないときで統一するか変えるか、カード内コンテンツの縦位置は上下中央どこに寄せるか、カード内画像のリンクを記事か画像詳細どちらに向けるべきか、カード間の隙間は開けるか詰めるかカード自体を広げるか、検索対象になった文字列の表記はどうすべきか、調整したい部分はまだまだあるのです。

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

  • 【コイン】プチドラゴンをはじめて倒した!

ミフミンまだ倒しとらんかったんか。
今まで強い方とずっと戦ってたってことか。

アンパンマンDB(システム)

総合索引作ってます。
50音順で最初の文字を選んだら、その文字で始まる記事と、文字数を増やして絞り込むリンクが表示されます。
記事は各DBを横断して検索されるため、メカを探しているつもりがキャラのところにいて全然見つからなかった、ということが起こりません。
「か」の後ろのほうにいるカレーパンマンも、「かれ」に絞り込んで素早く近付けます。
別名も認識するので、「ま」から始めても「て」から始めても、鉄火のマキちゃんにたどり着けます。
名前に特化した検索なので、名前さえ知っていれば効率よく到達できますよ。

…という、夢のような機能なんですが、この動画をアップした後、レイアウトを整えようとして、flexレイアウトでドツボにはまってしまいました。
うーん、いい感じの見た目にできそうなんだけどなァ。

<前 次>