「アンパンマンDB(記事更新)」に関する日記

次>

アンパンマンDBとのんびりナマライザとドラゴンクエスト10

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

来週の放送情報。
なんかクッキー食って終わりになりそう。

のんびりナマライザ

この課題、対応せずに終了です。
AIにやらせりゃどうにかなるとは思うけど、そもそも対応する価値が薄そうだったからね。
これで開発はいったん終わり。
今後アクセス解析で新しいことをしたかったら新アプリとして作りたいね。
1から作り直しは毎回前作と同等まで引き上げるのが大変だけど、それこそ目標となるお手本が既にあるので、AIにやらせる価値が高そう。

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

大型アップデート情報 バージョン8.1 (2026/10/16 更新)|目覚めし冒険者の広場
バージョン8.1!
ということで、お役立ち系のクエストを早々に済ませてきました。

バッグの山

  • クエスト「ウワサのどうぐかばん工房/かばん職人たちの独り立ち」をクリアした!

道具持てる数が110になるクエスト。

ガーデナとライオッド

  • クエスト「ガンバライオンの戦士たち/限界突破! レベル140」をクリアした!

最大レベルが143になるクエスト。

(クエスト内容ネタバレ)

盗獣バッグウェル

  • 【クエスト】「ウワサのどうぐかばん工房/かばん職人たちの独り立ち」盗獣バッグウェルをはじめて倒した!

道具袋拡張のほうは、かばんを盗まれる事件が多発して、かばん職人パックが過重労働に陥っている背景で、パックが先輩職人のトートに弟子入り志願する話。
で、素材探しやらなんやら手伝っていたら出てきたのが、犯人の盗獣バッグウェル。
戦闘開始前に主人公もかばんを奪われて、道具なしの戦闘になりました。
まあまあ強かったものの、バージョン8スペックで殴ればどうにかなる程度。
時々強めな技は飛んできたかな。

限・界・突・破!! ダーッ!

  • 【クエスト】「ガンバライオンの戦士たち/限界突破! レベル140」ライオッドをはじめて倒した!

レベル上限解放のほうは、前回のクエストで記憶を取り戻し、敵側の種族だったライオッドさんと直接対決。
こっちは本気で強い!
とはいえ、従来の最大レベル140で固めて、真っ当な職業編成で行けば、まあどうにかなりますね。
殴ったら正気に戻ったので、連れ戻しました。

ミフミンとしろいコキンは即日やったのですが、どっちのボスもかなりタフだったので、ァォィョッュの挑戦は後日。
サポも含めパーティ組まない縛りなんで、「よわい」モードでも超長期戦が想定されるんですよね。
MPもめちゃくちゃ消費するだろうし、魔法戦士とかレンジャーとか、自力でMP回復できる職業育ててからやろうかなぁ。

他の写真は以下から。
写真置き場「2026/10/16」

アンパンマンDBとSVGGraph

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

来週の放送情報。
「おうじ」のところは本当は漢字。
記事データ本体のほうは修正済みです。

SVGGraph

SVGGraph - a PHP SVG graph library
PHPのグラフ描画ライブラリです。
うちでは管理画面の一部にグラフを表示していて、Rindow Math Plotを使っていたんですが、もっといいのがないかと探して見つかったのがSVGGraphです。
SVG形式で出せるから、拡大縮小に強く、中身が文字列なので自動テストもしやすい!

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

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

来週の放送情報。

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

コニーちゃん
しろいコキンのバージョン3開始!
3オープニングの六種族の祭典わりと好きなんで王族の方々とゆっくりお話ししていたら時間がっ!
ムービーは日を跨ぎそうな感じです。

他の写真は以下から。
写真置き場「2026/10/02」

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

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

来週の放送。
周年記念ですな。

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

おきがえリポちゃん ~ シンクギアウェア ~
[DQXショップ] おきがえリポちゃん ~ シンクギアウェア ~ (2026/9/24)|目覚めし冒険者の広場
今月の貸衣装。
なんか一部で頭にお弁当箱とか言われてた模様。

他の写真は以下から。
写真置き場「2026/09/25」

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

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

予定通り、「#メロンパンナ誕生祭2026」追加です。

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

リリィアンヌ

  • クエスト「幸運を呼ぶサロン/2人のクライアント」をクリアした!

物騒なことしようとしてるように見えるけど、武器をしまい込んでるだけです。
せっかくなので髪色クエスト全部クリアしました。
このクエスト以降に追加された髪色はほぼ課金かな。

アサナギ

  • クエスト「悪夢より来たるもの/いにしえの呪文」をクリアした!
  • クエスト「悪夢より来たるもの/夢見る男のお宝伝説」をクリアした!

また物騒なことしようとしてるように見えるけど、武器をしまい込んでるだけです。
アサナギくん大活躍のクエスト2連発。
ミフミンで過去にやったので細かいことはいまさら語らないですが…と言いたいところだったけどいにしえの呪文のほうは過去日記が見つからなかったので語っちゃおう。
夢に関するクエストでは毎度毎度変顔をアップで見せつけられるのですが、今回は顔を隠す服装(というか覆面)だったのでセーフ。
ボスはまあ、焼け付く息を吐いてきたこと以外に特に印象はなかったかな。
ちなみに、エルフだとアサナギくんの反応が変わると聞いたんですが、プクリポだとドガ(夢見る男のお宝伝説のドワーフ)に対するのと大して変わらない淡白な反応でしたね。
ナシームの洞くつで迷いに迷いまくったのが今回一番大変なところでした。

他の写真は以下から。ボス戦も。
写真置き場「2026/09/21」

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

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

「#ロールパンナ誕生祭2026」を追加しました。
結構毎年のやつですね。
例年通りならメロンパンナも2日後に来るかな。

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

ドラゴンクエスト10のプレイヤーイベントを検索および通知するサイト
メールログイン機能を公開して、RC2版になりました。
何がRCなのかもはやよくわかりませんが、今回はログイン機能自体と、メール通知登録画面の自動記入に絞って実装しています。
あんまり一度に多くをリリースしようとすると差分確認が大変…というか、順次リリースしていきたい機能もあるんでね。

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

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

来週の放送情報。
ドキンちゃん、昔も氷の女王につかまってなかったっけ?

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

お月サマー

  • クエスト「神の月の感謝祭2」をクリアした!

二人とも秋イベントクリアした!
これで今回の季節イベントは全キャラおしまいかな。

他の写真は以下から。
写真置き場「2026/09/18」

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

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

秋の装いのオルフェア

  • クエスト「神の月の感謝祭2」をクリアした!

秋イベント「神の月の感謝祭2」 (2026/9/10)|目覚めし冒険者の広場
秋イベント、ひとまずァォィョッュで行ってきました。
お祭りスタッフ、前回と全く同じミスをしている…?

2026秋イベント庭具と衣装
今回の新規報酬はぽんぽこ装備。
後ろから見ると尻尾もあります。
ァォィョッュには青く染めたほうがいいかな、とも思ったけど、今の黄色も青の補色となって引き立ててくれるかもしれない。

お月サマー
お月サマー、盛り上げたらもっと派手な格好にならなかったっけ?
逆に脱げていくんだったかな?
ともかく、いい感じに収集アイテムも手に入ったので、ァォィョッュの分はひとまずこれで終わり。

他の写真は以下から。尻尾とか他の家具庭具の写真もあるよ。
写真置き場「2026/09/17」

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

商品DBの抜け漏れデータの記入中。
本当はプリちぃ★ビーンズのデータ集まったんでそれも記入しようかと思っていたんですが、そこまでは手が回りませんでした。

ユーザー機能とPHPUnitとアンパンマンDB

ユーザー機能

動作確認できたので、リリース。
ちなみに、Twitter側の連携済みアプリ一覧からは消えませんでした。

PHPUnit(TGWS内部処理)

PHPUnit、バージョン10から一気に最新の13まで上げました。
前回はコードの修正がまあまあ大変だったのですが、今回はテストコードのほうは一切変更なしで動きました。
ただ、設定のデフォルト値などが変わって、カバレッジの設定がphpunit.xmlに入っていると、カバレッジなしで実行するにはコマンドライン側で--no-coverageを明示してやらないと一切動いてくれなくなりました。
あとは、PHPUnitが内部的に使っているsebastianbergmann/diffが、うちで使っていたバージョンと競合して、一緒にバージョンアップしなきゃいけないぐらいですね。

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

個人メモの自動保存、リリースしました。
ただ、使い方の説明とかがまだ一切ないので、(preview)は外さないでおきます。
一応今のところは快適。

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

情報提供の反映。

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

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

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

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

情報屋ザップ

  • クエスト「ジェニャの未来/黄金のパラディン」をクリアした!

やりかけで放置してたクエスト進行。
情報屋ザップさん、もしかして怪しげな裏ワザとかいろいろ知ってたりしません?

他の写真は以下から。
写真置き場「2026/09/11」

アンパンマンDBと日記

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

来週の放送情報。
おじさんが…赤ちゃん!?

日記

管理側の機能ですが、JavaScriptを使って日記の情報をTwitter用にコピーする機能があって、それに記載する画像情報をもっといい感じにする修正を行いました。
1日に複数の作業を行った場合、全然違うジャンルの画像が出てきて、それをTwitterに貼り付けるわけですが、ALTに小見出しも自動で付けるようにして、ジャンルをわかりやすくしました。
まあ、そんな今日に限って画像一枚もないんですがね!

(せっかくなので、該当部分のソースコードでも)
function copyArticleInfo(id) {
    var article = document.getElementById('diary-' + id);
    if (!article) return;
    var titleElem = article.querySelector('.diary-title');
    var title = titleElem ? titleElem.textContent : '';
    // perma-linkクラスのaタグからURL取得
    var permaLinkElem = article.querySelector('a.perma-link');
    var url = permaLinkElem ? permaLinkElem.href : '';
    // 日付取得と「○○日の日記」生成
    var timeElem = article.querySelector('time.diary-date');
    var diaryLabel = '';
    if (timeElem && timeElem.dateTime) {
        var date = new Date(timeElem.dateTime);
        var month = date.getMonth() + 1;
        var day = date.getDate();
        diaryLabel = month + '月' + day + '日の日記。';
    }
    // 直前の見出しを画像titleに前置(details内は除外)
    var headingText = '';
    var images = [];
    Array.from(article.querySelectorAll('h3, img')).forEach(function (el) {
        if (el.closest('details')) {
            return;
        }
        if (el.matches('h3')) {
            headingText = el.textContent.replace(/\(.*$/, '').trim();
            return;
        }
        if (el.tagName !== 'IMG') {
            return;
        }
        var imgTitle = el.title || '';
        images.push({
            src: el.src, // 絶対URL
            title: headingText ? ('【' + headingText + '】' + imgTitle).trim() : imgTitle
        });
    });
    var data = {
        content: url + "\n" + diaryLabel + title,
        images: images
    };
    var json = JSON.stringify(data, null, 2);
    navigator.clipboard.writeText(json);
}

結構地道にforEachで回してます。
クエリセレクタでやろうとすると思ったよりややこしいパズルになってしまったんで。

アンパンマンDB

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

バイキンメカ情報追加。

昨日の件へのデータ側からの対応として、リンクがない項目の記事化を進めていて、その中で実は記事が既にあるけど名前が違っていてリンクされていなかった項目がこれ。
他の完全新規になる記事は、数が多いのと、あくまでリンク用でほとんど中身がないので、ひっそりこっそり更新です。

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

管理メモの未記入スタッフ、大幅に機能拡張しました。
もともとリンクがない項目を見つけ出すためのページだったのですが、どこに記入された項目なのか、いくつ記入されているのかがわかるようになり、記入の優先順位をつけやすくなりました。

アンパンマンDBとキャラ倉庫とJC-GP20XBK

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

来週の放送情報。
そうめん…残暑だからまだ季節か。

キャラ倉庫

Bot対策しつつアクセスログから人気のページを集計するための仕組み、作ってみました。

(技術的な話)
mw.hook('wikipage.content').add(function () {
    const id = mw.config.get('wgArticleId');
    if (id === 0) {
        return;
    }
    const d = new Date().getTime();
    setTimeout(async () => {
        try {
            const url = '/a.md?' + id + '-' + d + '-' + (new Date().getTime());
            await fetch(url, { method: 'HEAD' });
        } catch (error) {
        }
    }, 5000);
});

グローバルスクリプトのMediaWiki:Common.jsに処理を書くことで対応しています。
このスクリプトでやるのは、集計に使えるリクエストをサーバーに送ってアクセスログに残させるところまでです。
実際の集計は、後日、これとは別に作ります。

まず前提として、ここではJavaScriptを使って行います。
私の個人的なこだわりとして、JavaScriptを使わずに済むなら使わずに済ませたいのですが、MediaWikiの時点でJavaScript使いまくっているので、相対的にデメリットは少ないかなと。
そして、Botはページ本文だけ見に来て、JavaScriptの実行まではしないことがほとんどですからね。

mw.hook('wikipage.content')は、コンテンツロード後に関数が発動するする仕組みです。

で、最初にページIDを取って、有効なページのときだけ処理を進めるようにしています。
特別ページなど、記事じゃないページを集計しても仕方ないですからね。
ちなみに、このMediaWiki:Common.jsのページも記事IDを持つ立派な記事なので、みんながこのスクリプトを見に行くと、スクリプトが人気ページになります。
まあ、これは今後実際に集計する仕組みを作るときに除外すればいいだけの話かな。

処理が進んだら、時刻を記録してタイムアウトを仕込んで、サーバーにリクエストを送ります。
このときのリクエスト先URLは、できるだけ短い名前にした静的ファイルのa.mdに、パラメータでページIDとタイムアウト前後の時間を加えています。
URLに時刻を含めることで、リクエストせずキャッシュからレスポンスが返るのを防ぎつつ、URLと実際のリクエスト時刻を照合してリクエストの整合性を検証できるようにしています。
タイムアウト仕込む前とタイムアウト後の時刻両方を含むので、ちゃんと待ったかどうかの検証もできます。
Botが昔見つけたURLをもう一度叩いても期限切れなので意味がないというわけですね。
もちろん、人間のアクセスでも、ちゃんと読まずに一瞬で通り過ぎた場合は集計対象になりません。
なお、ただのタイムスタンプなので明確な悪意があれば偽装は容易ですが、そんなことする意味もないので、偽装するやつはいないという想定です。

ちなみに、わざわざ有効な静的ファイルを用意しているのは、MediaWikiの手を煩わせないためです。
静的ファイルがあればそれを直接読むように設定してあります。
もしファイルを置かなければ、MediaWikiに処理が渡り、a.mdというありもしない記事を探した挙句、本来必要のないエラーログを残して404エラーを出すことでしょう。
そうさせないための、静的ファイルです。

そして、サーバーへリクエストを送る際は、HEADメソッドで送ります。
目的はあくまでも「リクエストを送ること」までなので、レスポンスは要らないし、ましてやリクエスト先のコンテンツなんかも全く必要ありません。
なので、コンテンツを返さないHEADメソッドが無駄がなくてよいということになります。
厳密に言うと、レスポンスヘッダは返ってきますが、不要なので受け取らずに捨てています。
Botはむしろリクエスト先の中身が欲しいので、GETメソッドでリクエストするでしょうが、HEADメソッドではないので集計対象にはしませんし、もちろんリクエスト先のa.mdの中身は無意味なものしか入っていません。

一応、a.mdの中身は下記リンクから見えるようにしておきますが、本当に意味のないことしか書いていませんし、これを読んだところで人気ページ集計には寄与しません。
a.md

というわけで、まとめると、こうなります。

  • 文字化け対策:ページIDを使って確実にページ特定
  • Bot対策:時刻をパラメータに含めて検証&普段使わないHEADメソッドでリクエスト
  • 負荷対策:静的ファイルにHEADメソッドでリクエスト

JC-GP20XBK(ゲームコントローラ)

なんかPCが一挙手一投足ごとにタスク切り替えだのゲーム起動画面だのが出てきておかしいなと思ったら、ゲームコントローラが誤作動していました。
USBケーブル差しなおしたら改善したので、どうやら繋ぎっぱなしだったケーブルが外れかけて接触不良を起こしていたようです。

アンパンマンDBとX-Robots-Tag

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

はい、前回のを正式な情報に修正して、最新DVDの情報も入れました。
秋号はたぶんイレギュラーないかと。

X-Robots-Tag(Today I Learned)

Robots meta タグ、data-nosnippet、X-Robots-Tag の設定 | Google 検索セントラル  |  Documentation  |  Google for Developers
X-Robots-Tag ヘッダー - HTTP | MDN
最近キャラ倉庫やらDQPEの関係で外部からアクセスしてくるロボットの挙動を制御する必要が出てきて、調べていたら出てきた概念がこれ。
HTTPヘッダにX-Robots-Tagを付けて返すことで、HTMLのMETAタグに頼らずロボットの挙動を指示できるというやつです。
もちろん、METAタグと同様に、無視するロボットは無視しますし、なんなら比較的新顔で、標準化すらされていないので、METAタグより強制力は劣るものとみられます。
しかし、METAタグの書けない非HTMLコンテンツにも付けられますし、robots.txtより個別に細かく指定できます。
今からすぐに対応する必然性はなさそうですが、ちょっと存在だけは覚えておこうかと。

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

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

来週の放送情報。
これは終始楽しい夏まつりになりそう。

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

ここもロボットが変なアクセスしがちなので、キャラ倉庫ほどじゃないけど、統計が程よくなるような調整を準備中。
今のところ、調整で変なバグが発生しないようにテストを整えたところです。

浮き沈みランチャー2

開発また滞っていますが、また改善したい部分が。
検索してから実行すると、次に画面を開いたときも検索結果が出るのですが、一度実行したものを何度も連続で実行することは少ないし、そもそも仕組み上、実行した項目は上に上がってくるから検索の必然性は減るし、画面を開くときは表示状態を毎回リセットしたほうがいいかなって感じました。
前作はこの辺の仕様どうだったかな…。

アンパンマンDBとキャラ倉庫

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

なんか面白そうなバイキンメカ見かけたので。

キャラ倉庫

とりあえず、例の行儀悪いbotはCloudflareのブロック機能で弾いても来るのやめないので、あえてrobots.txtだけ許可して、どこも見るなって名指しの指示だけ見えるようにしておきました。

# 行儀の悪いbotは拒否
SetEnvIfNoCase User-Agent "meta-externalagent" bad_ua=on
RewriteCond %{ENV:bad_ua} on
RewriteCond %{REQUEST_URI} !^/robots\.txt$
RewriteRule ^(.*)$ - [F,L]
User-agent: meta-externalagent
Disallow: /

さて、普通に書いたrobots.txtを無視しやがるあいつが従ってくれるか…。

アンパンマンDBとドラゴンクエスト10とバイオハザード レクイエム

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

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

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

古代オルセコ闘技場に落ちてる武具

  • クエスト「仮面のバトルマスター/剣となる者」をクリアした!

バトマスクエ完了。
写真は道中に落ちてたやつで、クエストとは関係ありません。

(一応ボスネタバレ)

闘士セインズ
再戦セインズ君。
昨日と同じノリで舐めプしてたら地味にダメージが蓄積してきたんで、最後は一気に倒しました。

ブランドンビースト
黒幕さんの愛玩動物ブランドンビーストちゃん。
あんまり舐めプできるような余裕もなさそうなので、即座に殴りました。
まあ、レベル差もあるんで、普通に戦えば、普通に一方的。

他の写真は以下から。
写真置き場「2026/08/14」

バイオハザード レクイエム

2026_08_14_23_40_45.png
新しい血液検体ゲット!
他に特に進展はないです。
そろそろストーリー進めたいな。
レクイエムの弾量産できるようになったからボス戦は近いと思うけど。

音声の録音は、設定調整などしたので、だいぶ聞こえやすくなりました。
まあ、その分私自身の活舌の悪さもクリアに聞こえるようになっちゃいましたが。

他の写真は以下から。
バイオハザード レクイエム(2026/08/14)の画面写真集

アンパンマンDBと手柄山温室植物園とドラゴンクエスト10

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

最近の放送に出てたので。

手柄山温室植物園


先日手柄山平和公園行ってたときに見かけたけど時間の都合で見送ってたやつ。
食虫植物展やってました。
常設の温室は、先日までの地獄のような酷暑を思い出す暑さでした。
いつぞや行った水族館と同じく、地元に寄り添った展示もありました。

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

ジェイコフ

  • クエスト「仮面のバトルマスター/バトリンピック・予選編」をクリアした!
  • クエスト「仮面のバトルマスター/バトリンピック・決勝編」をクリアした!

4年近くも放置していたバトマスクエ、進めました。
バトリンピックの選手たち、全員一撃で沈んでいった…。
敵のバトマスは今でもすてみ使うのね。

本当はバトマスクエ最後まで終わらせるつもりでしたが、持ち物がいっぱいになってしまったため中断です。

他の写真は以下から。
写真置き場「2026/08/13」

美文のキャラ倉庫と浮き沈みランチャー2とアンパンマンDB

美文のキャラ倉庫

様子見ながら記事いくつか更新。
修正が必要ない記事なら「移行作業中」カテゴリを外すだけなので、今後はもっと早く多く修正できると思います。
一応こうやって更新情報は列挙できるけど、一度に多くに記事を修正することになるし、一つ一つの細かい報告はしないほうがよさそうですね。

浮き沈みランチャー2

とりあえず、軽めだけど見た目の印象が大きく変わる2件を対応。

完了を待たずに閉じる件は、以下のように、明示的にHideしてから、投げっぱなしasyncしています。

private void OnContextRunAsAdminClicked(object? sender, RoutedEventArgs e)
{
    if (GetSelectedItem() is { } item && DataContext is MainViewModel mainVm)
    {
        Hide();
        mainVm.ExecuteItemAsync(item, runas: true);
    }
}
internal async void ExecuteItemAsync(Item item, bool runas = false)
{
    await Task.Run(() => ExecuteItemCore(item, runas));
}

private void ExecuteItemCore(Item item, bool runas = false)
{
    // 省略
}

スクロールのほうは、単純にScrollViewerで囲っているだけです。

<ScrollViewer VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Disabled" AllowAutoHide="False">
  <!-- 省略 -->
</ScrollViewer>

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

来週の放送情報。
公式サイトは「フルーツのしま」名義だったけど、前例や放送された次回予告からすると、「フルーツ島」のほうが正しいはず。
確実な正解は次週を待て!

次>