2024年5月の日記

<2024年06月 2024年04月>

アンパンマンDBとTgwsMark

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

来週の放送情報。
再放送ですね。
確かロールケーキちゃんの歌に他の人が一切合わせてくれず自分一人で全部歌いきる話だったかと(覚え方の偏りがひどい)。

TgwsMark

ソースコードを調整して、テストも入れて、Packagistに公開…一応したのですが、ちょっと微妙な感じ。

名前空間が「MifuminLib\TgwsMark」で、Packagistのパッケージ名が「mifuminlib/tgwsmark」で、GitHubのリポジトリ名が「mifumi323/TgwsMark」なんですよね。
スラッシュとバックスラッシュとか大文字小文字の違いは、それぞれのネーミングの制約故ですが、「MifuminLib」と「mifumi323」の違いは気持ち悪いです。
問題の前半部分だけで考えると、他のパッケージは、名前空間「MifuminLib」、パッケージ名「mifumi323」、リポジトリ名「mifumi323」でした。
他のパッケージに合わせるならパッケージ名を「mifumi323/tgwsmark」にすればよさそうですが、そもそもこの不一致の発端は、「MifuminLib」という名前空間の妙な前半部分なわけです。
この前半部分、「美文のライブラリ」の意味でつけているのですが、この部分、本来はベンダー名を表しています。
つまりこれ、名前空間的には、「美文のライブラリさんが作ったTgwsMark」という意味になります。
まあ、「PHPUnit\PHPUnit」みたいに、関連する製品群をそれぞれパッケージで提供するためにチーム名的に本人じゃない名前を付けることもありますが、MifuminLibは単に私が作っただけってやつですからね。
なので、いっそのこと全部「mifumi323」に統一しちゃおうかなとか思ってます。
その場合、他のパッケージと不一致になってしまうけど、そこんとこはどうすべきか…。

浮き沈みランチャーとTgwsMark

浮き沈みランチャー

早めに実装したいと言ってから一年が経過しました。
複製機能のほうは実装しました。
「ファイルの場所を開く」のほうが、実は今日やりたかったことの本命です。
で、昨年やりたいと言っていたもう一つ、「削除前に尋ねる · Issue #32 · mifumi323/FLaunch」が手つかずで残っています。
まあこれも、手を付ければあっという間なので、明日にでも実装して適当なタイミングでリリースするかな。

TgwsMark

この日記やアンパンマンDBで使っているMarkdown風の変換機能、オープンソース化しようと企んでいます。
特段すごい技術でもなく、取り立てて需要があるわけでもないですが、見せていい部分を一般公開して、TGWSのサイト側のプログラムの規模をちょっとでも縮小したい意図があります。
サイト内のコードはなるべくサイト独自のものだけに絞りたいというわけですね。
あと、アンパンマンDBのJSON/CSV出力でもTgwsMark記法がそのまま出てくる部分があるので、オープンソース化に伴って、マニュアルを整備したいという考えもあります。

普段この手のライブラリを作るときには「Mifumin○○」みたいな名前を付けがちなんですが、今回はTGWSから抜き出したことに意味があるので、名前に「Tgws」を入れています。
他には、「Markdawn」とか「Markqown」とか、Markdownをもじった名前も考えたのですが、単なるタイポと思われるのも癪なので、部分的に似てるけど明らかに別物とわかる名前にしました。

ちょっと手元での移行作業に時間がかかっていて、今のリポジトリにはREADMEぐらいしかありませんが、近日中に整備して、Composerで入れられるようにしたいと思っています。

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

個別DBの検索結果のページに、CSV出力機能をつけてみました。
まだ実装途中なので変なCSVが出がちですが、どうせ設定をいじるかURLを直接指定するかでしか出てこない機能なので、未完成のやつをすでに公開しています。
https://tgws.plus/anpandb/anime?search=&sort=-access&view=csv

アニメDBに限って言えば、アニメエピソードCSVダウンロードもあるのですが、そっちは基礎情報だけで、目的や機能がちょっと違うやつです。

Repeat Task


グループ別絞り込み表示に対応させてみました。
グループ専用の記入項目を増やすのもなんだか面倒だったので、タスク内容のテキストの冒頭に「グループ名:」の表記があれば、表示側でグループに入れます。
各グループの表示切替は、CSSのみで行っているため、サーバーとの通信が発生しないのはもちろん、JavaScriptオフでも動くし、動作も瞬時です(やろうと思えばアニメーションすら入れられる)。

プリンセスピーチ Showtime!


スーパーヒーロー-1。
基本的な立ち回りは剣士や忍者と同じような近接攻撃だけど、重い物を持ち上げたり、空を飛んでシューティングゲーム風にぶん殴ったりもできます。
バスをかさにしたり道にしたりするあたり、なんというか、スーパーヒーローを感じます。
シューティング面でキラメキストーンのかけらを取り逃したけど、2回目で無事コンプ。

そして3Fの通常ステージが全部終わったので、ボス。

(一応ボスネタバレなので)


ねこちゃん!
1F、2Fとボス戦をやってきて気付いたのですが、このヤミラージュボスたちって紫色のエネルギー体が本体で、それに舞台道具をつけて仮面をかぶせている感じなんですね。
このボスでいうと、腕や尻尾などが大道具、目がこのボス“プロジェクターキャット”のモチーフであるプロジェクター、それを覆っているのが仮面、そして、牙の隙間から覗いているのがエネルギー体、ということですね。


正直、どうやれば勝てるのかわからんままくるくる回ってたらなんか勝てました。
最初に出てくるヒヨコを攻撃して爆弾に変えるのは必須手順で間違いなさそう。
普通の腕や尻尾の攻撃を避け続けていると次の段階に移行するけど、腕に反撃すると早く次の段階に移行できる、というのもありそう。
この段階では、ヒヨコ爆弾は何をしても爆発しません。


第二段階の暗闇に映像の手を映し出して叩きつけてくる攻撃、これが分からないんですよね。
もちろん何もせず突っ立っていたらダメージを受けます。
ジャンプをしたら、直撃を受けたように見えてもなぜかダメージを受けません。
この段階が反撃チャンスなのは間違いなさそうなんだけど、ここで何をやれば反撃なのかがわからないまま勝利しちゃったんですよね。
叩きつけを回避してくるくる回ってたらヒヨコ爆弾が爆発して本体を引きずり出せたという感じ。
見た感じだと、叩きつけ自体で爆発したわけじゃなくて、ピーチのくるくるで弾き飛ばされてボスのどこかに当たって爆発した感じなんですよね。
本体のある顔にぶつけたのか?それともこの段階にしか現れない映像の手にぶつけたのか?


第一第二ときたら、第三段階もあるわけだけど、ここはいつものキラメキの力を注ぎこむターン。
この第三段階までのセットを三回繰り返せば勝利ってわけですね。


うーん、爆発の瞬間の写真では中央で爆発してるから、やっぱり顔に当てたのかなぁ。


ともかく、これで3Fをクリアしたので4Fへ。
通常階を全部解放したのか、エレベーターが開通しました。
やり始めてからずいぶん時間が経ちましたが、いよいよ終盤のようですね。

他の写真は以下から。毎度毎度写真が多いのは、どれを日記に使うかわからないから事あるごとに撮っているという事情です。
プリンセスピーチ Showtime!(2024/05/27)の写真

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

新ストリクトクエリの実装、何とか完了しました。
昨日の時点でリストとペアリストの内部実装を刷新できたので、あとはこれを適用するだけだと思ったのですが、思いのほか難儀してしまいました。

文字の正規化の扱いが一貫していなくて、正規化すべきところで正規化されなかったり、逆に正規化しすぎたりというのが一つ。
一応、正規化には冪等性があるので、正規化しすぎに関しては無駄以外の実害がないのですが、正規化ができていないと、一致するものも一致しなくなります。

それから、検索の高速化のために、結果をキャッシュしておく機能もあるのですが、キャッシュが効きすぎて、新ストリクトクエリ未実装のころの結果をいつまでも返していたというのも一つ。
これに気付かず、正しいSQLを長いこと調査続けてました。

ほかにもいろいろ細かい理由はあったのですが、大きなのはこのくらい。
エイリアスと個人メモに関しては、検索の前処理で特別扱いするだけで、検索の中身は何も特別ではないので、普通の文字列検索と同じように簡単に実装できました。

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

リストとペアリストの内部実装、新ストリクトクエリに対応可能な形に修正完了しました。
これにより仕様が微妙に変わってしまいましたが、実用上大きな差は現れないのと、新ストリクトクエリで同じことを再現できるようになる予定なので、まあこれで良しとしておきます。
やっとリストとペアリストの新ストリクトクエリ実装のスタートラインに立てました。

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

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

来週の放送情報。
ドリアン王女も輝いてしまうのか。

ドラゴンクエスト10(おきがえリポちゃん)

竜王のよろいセット
おきがえリポちゃん ~ 竜王のよろいセット ~ (2024/5/22)|目覚めし冒険者の広場
毎月の貸衣装。
今月はいかついフルフェイスの鎧ですね。
こんな強そうでも単なるおしゃれアイテムなので守備力は1。
後ろで飛んでるドラキーは貸衣装とは関係なく、竜王イベントの報酬です。

竜王のよろいセット
女性用は太腿がはだけています。
どうして顔までしっかり守るのに脚の守りをおろそかにしちゃうの!!
もともと守備力1だけど!!!!

竜王のよろいセット
最近いかつい斧も買ったのですが、偶然にも雰囲気が似ていて、違和感なくマッチしていました。

Repeat Task

自分用に作ってたツール「Repeat Task」、日々のタスクを管理するやつなんですが、1日に複数回やるようなタスクにも対応させてみました。
もともとタスクが復活するサイクルは、何日ごととか何曜日とか、日付単位になっていて、最短が「毎日」でした。
でも、1日に何回か様子を見ておきたいタスクなんかもあるのです。
しかしながら、現状のアルゴリズムはサイクルのチェックが1日刻みなので、今日のタスクが1回終わっていれば、次回は強制的に翌日以降になります。
このチェックの刻み幅を変えるのはこのツールの最大の前提をひっくり返すことになるので、避けたいところでした。
なので、タスクの切り替え時間(例えば、朝6時に新しいタスクになるとか)を、うまいことずらしてやることで、2回目以降が残っていれば、今日のタスクは終わってない扱いにできるようになりました。

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

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

死去に伴う更新です。

ドラゴンクエスト10(全員)

シャントットの像・庭
【2024再演】FFXIコラボイベント「シャントット博士来たる」 (2024/5/15)|目覚めし冒険者の広場
コラボイベント。
FFXIまだ続いてたんだ…。
イベント内容は以前のままで、プレイヤー陣営だけ強さインフレが進んでいたので、マンドラゴラ強も秒で消し飛びましたね。
新報酬のシャントット像は、とりあえず高笑いさせときました。

他の写真は以下から。
写真置き場「2024/05/22」

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

リストとペアリストのストリクトクエリ、旧仕様を当面残すため、内部仕様を変更しても影響を受けにくい仕組みを作っていました。
この仕組み、将来的には新仕様に一本化するタイミングで消すことになるんですが、これやっとかないと新仕様の実装が面倒になりますからね。
で、この2つを同時に作業進めているのには訳があって、まあ想像はつくと思うんですが、内部的には似たようなことをやっているんですよね。
リストは単に文字列のリスト、ペアリストはA→Bみたいな文字列の組み合わせのリストで、検索では、それぞれの文字列に対して検索をかけられるだけでなく、アンパンマンDB内のどの記事にリンクしているかでも検索できます。
「登場作品を探す」で使っている検索ですね。
これ、まあまあ無理やりな感じで共通化しているのですが、新仕様ではもうちょっといい感じに共通化しようかと思っています。

プリンセスピーチ Showtime!


カウガール-2ステージ。
あちこちぶつかりまくって死んだり、樽を明後日の方向に投げまくってキラメキストーン逃したり、結構散々でした。
こないだまで調子よかったんだけど、やっぱりカウガールステージは苦手…!
ただまあ、何週をやっていればさすがに慣れました。
というわけで、とりあえずこのステージもコンプ。


そして、キラリスタ救出ステージ。
相変わらずカウガールのアクション苦手で、一度負けてしまいましたが、こちらは何とか一周で全キラメキストーン&衣装回収できました。

これで、3Fは残すところ1ステージ&ボスのみ。
初めて扱うことになる格闘です。

他の写真は以下から。
プリンセスピーチ Showtime!(2024/05/20)の写真

ドラゴンクエスト10とあずきミュージアムと日記

ドラゴンクエスト10(全員)

竜王
竜王城の決戦・再演 (2024/5/9 更新)|目覚めし冒険者の広場
昔やってたイベントだけど、報酬新しいのが出てるので、やってみました。
今回は全キャラサポート仲間でやりました。
プレイヤーと行くと不測の事態が起きるし、完全に一人でやるのはほぼ無理ゲーなんで。

他の写真は以下から。ミフミンは写真撮ってない。
写真置き場「2024/05/19」

あずきミュージアム


行ってきました。
館内は写真スポットを除き撮影禁止なんで、写真は少なめです。
小豆だけに特化した展示ではなく、関連する食物や、伝搬の歴史、栽培地域の文化など、幅広く取り扱っていました。
あとは、ミュージアムレストランであずき御膳を食べたり。

日記

従来、こう言った観光系の日記は「思い出」カテゴリに入れてたんですが、思い出ではあるけどカテゴリとしてはちょっとずれてるなと思ったので、「観光」というのを作ってみました。

アンパンマンDBとPHP-CS-Fixer

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

リストの現行のストリクトクエリのテストを作成。
新記法にする前に、内部処理を変える必要があって、旧記法でも同じ内部処理を使う必要があるので、内部処理を変えても旧記法が通用することを確認するためのテストが必要なのです。

PHP-CS-Fixer(Today I Learned)

PHP-CS-Fixer/PHP-CS-Fixer: A tool to automatically fix PHP Coding Standards issuesには、ドキュメントコメントでもないくせにドキュメントコメントぶっているただのコメントを本当のただのコメントに戻す機能があります。
/** ただのコメント *//* ただのコメント */

しかし、/** @var ADBValueList $adb_value */みたいに、ローカル変数の型を指定しているコメントまで、ただのコメント扱いされてしまいます。
Intelephenseでは、ちゃんとローカル変数のドキュメントコメントも認識してくれるので、PHP-CS-Fixerにぶち壊されると困るのです。

そこで使うのが以下のオプション。

Rule phpdoc_to_comment - PHP Coding Standards Fixer
ドキュメントコメントをただのコメントに戻す処理の制御ができます。
今回の件なら、ignored_tagsオプションにvarを入れれば、@varのドキュメントコメントだけは見逃してくれるようになります。

アンパンマンDBとdotnet

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

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

dotnet(Today I Learned)

dotnet build コマンド - .NET CLI | Microsoft Learn

ソリューションでこのコマンドを実行するときに --output オプションを指定すると、出力パスの不明なセマンティクスが原因で、CLI から警告 (7.0.200 のエラー) が出力されます。 このオプションは、ビルドされたすべてのプロジェクトのすべての出力が指定されたディレクトリにコピーされるため、この --output オプションは許可されません。これは、複数のターゲットを持つプロジェクトと、直接および推移的依存関係の異なるバージョンを持つプロジェクトと互換性がありません。 詳しくは、「ソリューション レベルの --output オプションがビルド関連コマンドで無効に」を参照してください。

dotnet buildコマンドを--outputオプションと一緒に使うと、出力先を変えられるわけですが、プロジェクト名を指定しないでこのオプションを使うと、ソリューション内に複数あるプロジェクトが全部同じディレクトリに出力されて、全部交ざっちゃって困るよねって話。
実際には、エラーで止まったりせず、警告を出して指定された出力先に出力されるようです。

PHPUnit

PHPUnit自体の機能とは特に関係ないんですが、うちのサイトの自動テストでは、HTMLの表示とかのテスト(結合テストに近いところ)もある程度やっていて、出力結果の保存とかもやっているんですね。
テストやるたびに、たとえ何の変更もなくて何の問題もなくても、何百ページ分ものHTMLファイルが出来上がります。
たとえ何の変更もなくて何の問題もなくても、改めて毎回テストをやること自体は、回帰テストといって、とても有意義なのですが、回帰テストは正しいか正しくないかだけわかれば充分なので、何が出力されたかまで細かく残す必然性はありません。
とはいえ、たとえ何の変更もなくても問題が起きることがあるから、回帰テストが必要なわけで、回帰テストに落ちたときだけは、何がおかしくなったのかを残す必要があります。
なので、普段邪魔になるからと言って、一律で保存をやめるなんてことはしないほうがいいでしょう。
だからといって、テストに落ちたときだけ保存するという器用なこともなかなか難しいわけで。
ということで、出力結果を破棄するオプションを作って、それをON/OFFすることで、保存するかどうか切り替えるようにしてみました。

アンパンマンDB

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

ストリクトクエリの新記法、リストとペアリストの件が全く進まないまま、エイリアスと個人メモが手付かずなのが発覚しました。

それはそうとして、画像のシステムを変更することを考えていて、ファイル名のつけ方をいい感じに思いついたので、試しに実装してみました。
まだ全面的に適用しているわけではないので、一般ユーザーに見える場所では登場はしていないのですが。

アンパンマンDB(みんなのタグ)

これまで新機能を実装するたびに「プレビュー1」から数字を上げてきていたのですが、毎度毎度これをやっていると細かい改良がだるくなるので、「プレビューN」で一本化しました。
もう細かい機能実装は事前にも事後にも告知なく随時リリースしていきます。
プレビュー版って本来そういうことですからね。

あと、みんなのタグの管理強化の準備の実装の準備を実装したりして、管理機能自体は別にまだ強化してません。

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

ストリクトクエリの新記法、単に冗長な記述を取り除くだけの形で、エイリアス、真理値(ON/OFF)、択一カテゴリ、複数カテゴリ、日付、数値、読みを対応しました。
残るは、リスト、ペアリストだけです。
この2つは、結構大きめな拡張を予定していて、旧記法を当面の間残すことを考えると、旧記法も中身を新記法と同じにする必要があります。
この辺りはさすがにちょっと大変になるかも。
あと、新記法の対応が完全に終わってからになりますが、ストリクトクエリの説明ページも作ろうかと思っています。

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

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

ストリクトクエリの件、みんなのタグ、一行テキスト、複数行テキスト、タイトル、商品単体リンクの項目について、実装完了しました。
旧ストリクトクエリも当面の間は使えるようにしますが、使われてなさそうなら一定期間後にこっそり廃止します。
これで残るは、エイリアス、真理値(ON/OFF)、択一カテゴリ、複数カテゴリ、日付、リスト、ペアリスト、数値、読みだけとなりました。
…いや、多いな。

ドラゴンクエスト10

魔法の迷宮ボスモンスター「タイムマスター」登場! (2024/5/2)|目覚めし冒険者の広場
タイムマスター実装!

『おでかけ超便利ツール』タイムマスターリリース記念スペシャルキャンペーン! (2024/5/2) |目覚めし冒険者の広場
タイムマスター実装記念!

キャンペーンはタイムマスターと関係ない福引にも適用されるので、お出かけ便利ツール福引引きました。
今回は、リースブランコプリズムとしぐさ書・怒り心頭が当たりました。
写真撮っときゃよかったな。

アンパンマンDBとFNチェンジャー2

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

ストリクトクエリ、独自実装の方向で作ってます。
「:」で分割する方向性はそのまま。
分割内容に「:」を含みたい場合は、「\」でエスケープ。
分割内容に「\」を含みたい場合も、「\」でエスケープ。
例えば、「#test:test」を検索するストリクトクエリは、「user_tag:+:test\:test」になります。
エスケープしていない場合は、正しく解釈できないので、「user_tag:+:test:test」は無効です。
この分割ルールは早々にできましたが、分割結果をどう使うかっていうのは項目の種類ごとに実装が必要なので、そっちはまた追々ということで…。

FNチェンジャー2

今更ながら、ウィンドウ最下部についているプリセットの読み書きUI、何の説明もないのでわかりにくい気がしてきました。
自分用ツールなので分かりにくくても私には支障はないのですが、仮にもみんな向けに公開しているわけですから、一応改善はしておいたほうがいい気がしてきたので、課題立てておきました。
実はこう見えてOSSなので、コントリビュートしたい人は作ってみてもいいんですよ。

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

ストリクトクエリの件、区切り子じゃないコロンをどうするかでちょっと悩んでます。
str_getcsvは区切りとして扱わない区切り子を考慮してくれますが、そのためには「"」など囲み記号が追加で必要になるんですよね。
単なるCSV(ここではCharacter Separated Values)であればそれでいいんですが、アンパンマンDBの検索構文では、ルーズクエリ・ストリクトクエリ両方に共通する文法で、スペースや「"」を含む単語は「"」で囲むという仕様があって、クオートの仕様がぶつかってしまいます。
一応ぶつかったところで、どちらにもエスケープ処理はちゃんとあるので、「"」で囲んだものを「"」でエスケープして「"」でさらに囲むみたいなことをすれば、不具合なく取り扱えるはずですが、ちょっとさすがにややこしいかなと。
ストリクトクエリの囲み記号を「"」以外にするか、そもそもstr_getcsvを使わずに完全に独自仕様にするか…。

あと、ストリクトクエリをパースするのとは逆に、ストリクトクエリを構築する機能もアンパンマンDBにはあるんですが、str_getcsvの逆をやる関数が実はPHPには今ないんですよね。
CSVの構築にはfputcsvがありますが、これはファイルに出力されてしまいますし、末尾に余計な改行も追加されます。
多分どうにかする方法はあるとは思うのですが、そこまでしてPHPの標準関数使うべきかな…と思ったり。

やはり独自仕様にする…かなぁ。

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

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

来週の放送情報。
カッパチーノは21世紀に入ってから登場したメンバーの中ではかなり好きなほうなので、楽しみであります。

ドラゴンクエスト10

毎月10日はDQXで遊ぼう! ~DQコスプレパーティー2024~ (2024/5/1)|目覚めし冒険者の広場
テンの日。
DQコスプレ装備なんて持ってないけど冷やかしで見に行くだけ行ってみようかなと思ったら、人が多くて重すぎて写真も撮らずに退散してきました。

ドラゴンクエスト10(ァォィョッュ)

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

テンの日で渡されるカードをテリーに押し付けるために個人的に毎月恒例の魔法の迷宮周回していたんですが、道中スキップのために入れたプチドラゴンカード、今日初めて使ったっぽいです。
まさか初めてだったとは思わず、こちらも写真は撮っていませんでした。
ァォィョッュはブレス耐性100%なんでドラゴンの攻撃ほとんどスルー出来ると思ってたんですが、「息」と名の付かない火では普通にダメージを受けました。
危ないというほどの場面はなかったけど、予想外のダメージ受けたなァ。

アンパンマンDBと日記

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


善は急げで+-つけてみました。
しかしこうして見てみると、一行が長くなって折り返された時の見せ方にまだ改良の余地がありそうですね。

関係ないですが、検索のストリクトクエリもいくらか改良を考えています。
一般ユーザーにも教えている範囲では、みんなのタグの「user_tag:user_tag:○○:○○」があるんですが、最初の「user_tag:user_tag」の部分が見るからに冗長ですね。
本当は最初のトークンと次のトークンは意味が違っていて、最初が項目名、次はそれをどう扱うかというインターフェース指定なんですが、みんなのタグを含め、インターフェースを複数持つ項目はないから、実は項目ごとにインターフェースはすべて固定なのです。
なので、この冗長性を排除したいというのが一つ。
第二に、これは実用上ほぼ問題ないんですが、「○○」の部分にコロンを入れられないという地味な問題もあります。
あと、第三として、リスト項目をより細かい条件で検索できるようにするといった、純粋なグレードアップもしたいところですが、ストリクトクエリのトークン数は現状固定なので、まあまあ難しいのが現状です。
このあたり、第一の冗長性は当然廃止するとして、第二・第三の問題は、str_getcsvを使えばいい感じにトークンに分解できると思うので、これでトークン数可変で処理するようにすれば、まとめて解決できるんじゃないかと思っています。

日記

たまーに無題のまま日記投稿しちゃうことあるので、投稿前に無題チェックを入れるようにしてみました。
シンプルにJavaScriptで題を判定してconfirmしています。

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

昔のアンパンマンDB(アンパンマンDB3)では、編集画面でプレビューすると、どの項目が編集されたか、編集内容を編集前と編集後で比較表示できるようになっていました。
しかし、今のバージョン(アンパンマンDB4)になって、項目の取り扱い方が大きく変わったため、比較表示機能は失われてしまいました。


復活させました。
今回、編集内容の表示機能を復活させるに当たって、以前より見やすくしてみました。
編集前後を並べるのではなく、diffコマンドみたいに差分のあった行を色分けして強調表示しています。
欲を言うならもっとdiffコマンドに寄せて、追加行に+、削除行に-をつけたりするとかあってもよかったかもしれないですね。

これを作るに当たって使ったライブラリは、編集データの文字列化に使うsymfony/yamlと、できた文字列の差分表示に使うsebastian/diffの2つ。
差分表示のほうははJavaScriptでやっちゃおうかなとか思ってたんですが、しっくりくるものがなかったので、結局どっちもPHPでやりました。

symfony/yamlは、構造化されたデータを複数行のわかりやすくdiffの取りやすい文字列に変換(シリアライズ)してくれます。
diffを取りやすいというのがポイントで、JSONだと配列の要素の後ろ(または前)にコンマがつくかつかないかが要素の順序で変わったりして、実質変化のない行まで差分になってしまうのですが、YAML形式だとそういうのが起こりにくくなっています。
ただし、構造化されていないただの文字列を渡すと、JSON形式の一行の文字列にまとめられてしまうので、この場合だけはシリアライズ処理をせずにそのままdiffに渡します。

sebastian/diffは、おそらくPHPUnitにも使われている、行単位の差分検出ライブラリです。
シンプルに使えば、一発でいい感じのdiff文字列を出してくれるのですが、HTMLページに表示するにはdiff文字列ではちょっと都合が悪いので、配列形式のデータを一度出してもらって、そこから自力でHTMLを作るようにしています。
差分行の色は、GitHubと同じ色にしました。

プリンセスピーチ Showtime!


マーメイド-1「メロディ・オブ・オーシャン」攻略。
音波信号で魚類を隷属させる支配的衣装、もとい、きれいな歌でおさかなさんに助けてもらえる友好的衣装です。。
一回目は見逃しがあったのと、最後のミニゲームで失敗して一発コンプリートは逃したのですが、二回目で取り切れました。
最後のミニゲームは拠点防衛型シューティングゲームと思えば…というか、本当にスピード感がシューティングゲームなんよ。

他の写真は以下から。
プリンセスピーチ Showtime!(2024/05/07)の写真

プリンセスピーチ Showtime!

放置してたピーチ、進めました。


パティシエ-2『ナイトメアパーティへようこそ』
パティシエは、見た目にもふんわりした相手(お菓子)の、ふんわりした正解ラインをぴったり当てるゲームなので、ちょっと苦手。
また、見た目完成しても、決定ボタン押すとか所定の場所に運ぶとかして結果にコミットしないと成功扱いにならないので、コミット漏れで失敗扱いされることもしばしば。
とはいえ、今回は普通に成功させていればキラメキストーンが全部手に入るやつだったので、一発でコンプリート。


そしてキラリスタ救出ステージ。
さっきのステージもそうだったんですが、敵も味方もおいしさ命で、味さえよければ分かり合えるやつら。
真っ当にお菓子作り対決を挑んできて、美味しさで浄化されていったのでした。
これも一発コンプリート。


本編とは関係ないけど、アクションリハーサル怪盗。
パティシエとは違う理由でこれもまた苦手ジャンルだったのですが、アクションリハーサルは覚えゲーなんで、何度もやってるとさすがに慣れました。
ということで、これまた一発…じゃないけど、報酬コンプリート。

他の写真は以下から。道中とセリフが中心。
プリンセスピーチ Showtime!(2024/05/06)の写真

相楽園


神戸元町あたりにある日本庭園。
行ってきました。


今の時期はつつじが見ごろだそう。


期間限定で旧ハッサム住宅が内部公開中。
1995年の兵庫県南部地震(阪神淡路大震災)で被災したのを修復したそうで、当時崩れた煙突が資料として展示されていました。


庭園としてはこんな感じ。
伝統的な日本庭園の向こうに神戸の街並みが見えます。

あとは、旧小寺家厩舎前で懐かしソングの野外コンサートやってました。
大体昭和の歌だったけど平成もちょっと交ざってました。

ドラゴンクエスト10(しろいコキン)

しろいコキンのモンスターバトルロードはひどいもんだったので、今度は装備をしっかり整えていきました。
しろいコキン本人もまだ装備できない高レベル装備に、バトルロードでよく出会う攻撃への耐性盛り盛りで。

アナザーGへの昇格試験の写真は昨日貼ったので割愛。
ミフミンのとき以上にバフデバフに本気出した編成で行ったので、敵が世界樹の葉を使おうとするころにはもうすさまじい火力が出る状態に。
終盤は復活を間に合わせない速攻で終わらせたのでした。

最強殺戮マシーン マヒ
そのままアナザーF昇格試験も突破。
ありえない攻撃力を誇るこいつですが、実はヘナトスによる攻撃力低下への耐性に穴があり、こちらのスクルトによる守備力上昇も併せて、名ばかりの最強殺戮マシーンにしてやったのでした。

地上に現れた双竜 マヒ
そして現在の最終到達点のアナザーEへ。
そもそも今回の耐性盛りはこいつ対策主軸で、ついでにアナザーG対策にもなっていたものなので、こいつも楽勝。
…と言いたかったところなのですが、こいつは攻撃の半分が耐性で軽減できない物理攻撃で、物理攻撃で落とされてブレス耐性が吹き飛んだところにブレス攻撃を畳みかけてくるようなこともあり、意外と簡単ではありませんでした。
そうはいっても対策は対策で役立ってくれたので、ミフミンァォィョッュのときよりはスムーズに事が進みました。

これでクエストが出ないバージョン7アンロック要素は終わったので、あとはクエストやストーリーをぼちぼち進めていく感じかな。
急ぎたい理由もひとまずなくなったから放置してたピーチもそろそろ進めたい。

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

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

来週の放送情報。

ドラゴンクエスト10(しろいコキン)

そんなの絶対ムリーズ
しろいコキンもモンスターバトルロード上限解放してみようかなと思ったんですが、装備とかスキルとかいろいろひどい状態で、とりあえずスキルとバッジだけどうにかしてチャレンジしたものの、負けてしまいました。
やはり装備をいいのに入れ替えるか。
メンバー全員、防具は共用できるので、武器より防具に金かけたほうがよさげ。
とはいえ、武器も結晶用流用とか季節イベント用の最低性能のやつとかだったので、こっちも金かけすぎない程度には新調します。

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

コメント周り、データベースからとってきたままの連想配列で持ちまわしていて、ちゃんとしたコメント用の型がなくて不便だったので、新たに型を作っています。
既存のシステムは連想配列前提で組まれているのでそれを新しい型に置き換えていくのは、それはそれでしんどいのですが、できてしまえばだいぶ扱いやすくなる予定です。
内部的な処理の都合なので、一般ユーザーにとっては特に変わらないですけどね。

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

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

映画サントラと同日発売のDVD情報記入しました。
「みんな大好き!?ばいきんまん」収録の『ばいきんまんとマジカちゃん』は同じタイトルで2つあるのですが、今のところどっちなのか特定できる情報がないので、曖昧リンクのままにしてあります。

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

地上に現れた双竜
モンスターバトルロードアナザーE開放。
昇格試験相手の地上に現れた双竜は、ドラゴンの見た目通りブレス攻撃が苛烈なのに加えて、亜空間判定の理不尽広範囲なテールスイングが強烈な相手。
なのに、ブレス対策が全くせず、物理対策も大してできてない状態で挑んでしまい、ァォィョッュのとき以上にひどいゾンビゲーになってしまいました。
今回ばかりはいったん退いて対策してから仕切り直しかなと何度も思ったのですが、なんかァォィョッュのとき以上にギリギリで何度も踏ん張ってくれて、どういうわけか一発クリアできてしまいました。

他の写真は…残り一枚しかないのでここで出しちゃえ。

地上に現れた双竜の赤い方
片方倒して余裕ができて、ついでに必殺技でマヒも入ったので撮れた写真です。

<2024年06月 2024年04月>