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

<前 次>

アンパンマンDBと更新履歴

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

来週の放送情報。
映画のほうの情報も追加公開されてるけど、それは後日ということで…。

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

リンク情報保存ができました。
ただまあ、実際動かしてみると結構データ量が多くなってしまったので、何かしらもう一工夫したいかな、というところです。

更新履歴

更新履歴のページ、ひっそりこっそり更新しました。
もともと、この更新履歴に表示されないアンパンマンDBの更新履歴にはリンクを張ることで対応していました。
で、同様に表示されていなかった雑多の更新履歴キャラ倉庫の更新履歴にもリンクを張るようにしました。
数も増えてきたので、邪魔にならないように、折り畳みも入れています。

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

テスト効率化の仕組みをさらに強化して、本命だったリンク検索に着手!
今できてるのは、「準備の準備」段階ですね。
テスト効率化は「準備の準備の準備」で。
リンク検索は、「実際にリンクで検索する」が最終目標で、その準備段階として、「リンク情報を保存する」があります。

で、今できたのは、「リンク情報を保存できる入り口の仕組み」というわけです。
次は、リンク情報を保存することになります。
記事本体にはリンク情報そのものではなくリンクのヒントが記録されているので、このヒントを探してリンク先を特定していくのが作業の中心となります。

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

ドラゴンクエスト10(ァォィョッュ、しろいコキン)

ラキ
第12回 アストルティア・ナイト総選挙! (2025/2/25) |目覚めし冒険者の広場
ホワイトデーイベント!
だけど衣装は黒い!!
ラキ君はバージョン7のオープニングムービーでも見かけた子ですね。
私は出会えるまでまだまだ遠いです。

ホワイトショコラ

  • クエスト「ナイトたちの血戦2025」をクリアした!

ミフミン以外はクエストもクリア!
対象モンスターはちゃんと白いですね。
結末はまさかまさかの…!

まあ、ここで結末を言うなんて無粋なことはしませんからね。

他の写真は以下から。
写真置き場「2025/03/03」

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

リスト系の検索構文でワイルドカードが効かなくなっていたので、ひっそりこっそり修正しました。
ちゃんと網羅的にテストしとかないとなァ。
手作業だけでなく自動テストも。
CSVとかで検索対象と検索構文の対応表を作ったら効率よく網羅的なテスト作れるかな。

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

地味なところですが、よく使われる検索結果のキャッシュを記事更新時に自動更新するようにしました。
それと、使わないとわかっているキャッシュを早期に消す対応も。

あと、トップページでの映画カウントダウンを2025年版に差し替えました。
5月末ごろからカウントダウンが始まります。

アンパンマンDBとNeoMupl

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

声優が判明したので記入しました。
ついでに判明済みの他の情報も。

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

昨日の問題に対する対応作り始めました。
検索以外に使うこともできそうな気がしたりしなかったりするけど、どうしようか…。

NeoMupl

11月に作ってたやつ、すっかり忘れてたんで今日リリースしました。

アンパンマンDB

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

レンタルDVD。
今回は忘れないうちにね。

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


一番厄介なリスト系の項目も文字列保持検索に対応して、ひとまず一区切り。
自動テストでも見つけきれなかったやり残しがぼろぼろ見つかったので、もうちょっとしっかり確認してからリリースしようと思います。

「一区切り」という煮え切らない言い方になっているのは、やり残しがあるからということのほかに、今回の対応範囲となる「単なる文字種保持検索」では結局「ばいきんまん」と「バイキンマン」を実用的に区別できないから、なんですよね。
さっきの画像を見ての通り、文字種保持検索を使えば、「バイキンマン」というカタカナを明示すれば、「ばいきんまん」と区別して検索できます。
しかし、キャラDBからボタンで移動できるリンク検索は、文字列の正規化とは別枠であいまい検索をしているので、ここの厳密さに関しては全く手つかずということなのです。
リンク検索は従来のやり方の延長線上だとどうしても「ばいきんまん」と「バイキンマン」を区別しようがないので、根本的に作り直そうかと思っています。

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


テキスト系項目も文字種保持検索に対応。
この辺りは間接的な影響とかもまあまあ多いので、一箇所の変更が複数に波及する部分がありました。

カテゴリ系は、内部的にはテキストマッチじゃないので、文字種保持検索には今のところ対応しない予定です。

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


文字種保持検索、ひとまず一番使うインデックス検索(キーワードだけ入力したら発動するやつ)を対応させました。
この写真でいうと、「Baby」の部分に「baby」で反応するかどうかが変わっています。

キーワードだけ入力の場合はもちろん従来通りあいまい検索になるんですが、ストリクトクエリで新たに追加した文字種保持用演算子を使う(containsなど)と、大文字小文字ひらがなカタカナなども区別するようになります。
このあたりの追加された演算子などは、後日別課題として、詳しい解説ページを作るつもりでいます。

あと、文字種保持検索を実装すると、ルーズクエリの構文側、例えば「キャラ:ブルーベリーちゃん」の「キャラ:」の部分などが、文字種区別するようになるんですが、確認してみたらここはもともと区別してました。
なので、構文の固定文言部分はまあ文字種区別しない検索でも文字種区別で統一してもいいかな、というところ。

今回の対応範囲、一応テストは通っていますが、今は中途半端な状態なので、本番リリースはもうちょっと先になります。

アンパンマンDB

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

来週の放送情報。
再放送ですね。

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

正規化と言いつつ正規化じゃないところ、本当に正規化と言える部分と冪等じゃないエスケープ処理に分割。
このあたり、既存処理の拡張で作るつもりでいましたが、そもそもの実装がまずい部分があったので、新規処理として作成中です。
少しずつ修正して少しずつリリースしていくと、新旧入り混じる期間が出るので、新仕様で旧処理を壊さないためでもあります。

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

正規化が正しく正規化である限りは、正規化したデータを正規化しても正規の状態を保つ、冪等性があるので、元の正規化処理を残したまま、後続処理における「本当に必要だった正規化」を作っています。
受け取った瞬間以降すべての精査、やっぱりやっちまうほうが正攻法だよなってことで。
検索機能に対しては自動テストも組んであるので、ある程度は修正が必要なところも検出できます。

アンパンマンDB

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

「かがやけ太陽!」「氷のせかい」「クレープマン」「すなぼうや」「ガレットさん」「ベビーアンパンマン」「ベビーロールパンナ」「チャポン」「ヒーロー!」を追加しました。
ええ、はい。去年の映画以降、更新し忘れていた分も含めての更新です。
2024年初登場の面々が入っていなかったのは更新忘れ期間だったから仕方ないとして、2013年のクレープマンを忘れていたのは痛恨の極み!
もしかしたら他にも入れ忘れあるかもしれないし、どうにか入れ忘れ検出システム作れないかな。

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

文字種保持検索(ほぼばいきんまんとバイキンマンの区別専用)の実装に取り掛かりました。
…が、あまりに大変すぎたので、いったん白紙に戻しました。
検索クエリを受け取った瞬間にはもう正規化をしていて、正規化された文字種が来ることを想定してその先のすべての処理は作られているんですよね。
この「受け取った瞬間」の正規化をやめて必要に応じて…と考えていたら、受け取った瞬間以降すべての精査が必要になってしまったということです。
ばいきんまんとバイキンマンの区別だけならもうちょっとシンプルにできそうな気もするので、もうちょっとやり方考えてみようと思います。

アンパンマンDB

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

すっっっっっかり忘れてた去年12月のCD。
一応、新曲は一つもないみたいなので、最新曲追っている人にとっては特になくても問題ない1枚となっています。

これも映画で新録あるってわかった時点で作っとくべきだった記事。

こっちは森は枯れても関連のつながりで修正した分。

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

商品DB以外の関連商品項目に、「全部見る」リンクを付けました。
関連商品が多い記事では、商品情報が省略されがちだったんですが、全部くまなく見ることができます!
まあ、そこまでした商品情報を見たい人なんていないと思いますけどね。
むしろ、商品情報を記入するときに取捨選択する手間を省くという、私自身のための機能です。

TGWS内部処理

12月ごろに修正して、ふにゃ1の対応のため伸ばし伸ばしになっていたファイルのアップロード、今日終わらせました。

一番大きいのが、アンパンマンDBのキャッシュシステムの変更。
これまでは、キャッシュが古くなったことに気付けずに古いコンテンツを表示し続けるケースがあったのですが、今度のはキャッシュを場所ごと変えるので、古いのを探そうとしても見つからなくて強制更新されるようになります。

次が、メテオンもどきのシステムのTGWS本体との接続と切り離し。
メテオンもどきは今後更新らしい更新をする気はないので、システムとしては別扱いにしたい一方、エラー処理周りは本体と統一しておかないと、エラーが発覚しなくなって動作しないまま放置される恐れがありました。
なので、エラー処理だけTGWS本体のを使って、他はほぼ昔の状態に戻しました。
もちろん、サービス終了しているので、「正しく終了した状態」に戻したわけですが。

それと、大昔のIE向けに作ったtenuki.jsの削除。
ページ内ナビゲーションの機能を提供していたのですが、今はもう動きません。
なので、同等以上の機能をPHPで作って、サーバーサイドで生成するようにしています。

あとは、コメントの修正。
これが一番数が多かったのでした。

ドラゴンクエスト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環境も対応しておかないと。

<前 次>