「PHP」に関する日記

次>

バイオハザード レクイエムとAmazonストアフロントとQiita

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



動画投稿しました。
内容は同一です。
ゲーム音声と実況音声の音量バランスは調整したけど全体の音量調整してなかったなァ。
前回は出力設定で無茶して紙芝居になったし、動画作成手順をまとめておかないと。

Amazonストアフロント

アンパンマンDBから爆速で商品情報入れる方法思いついたので試してみた…けど、半分しか保存されてなかった!
どうやらこまめに確定させていく必要があるみたいだ。

Qiita

昔書いた記事の続編、今更書きました。
今アンパンマンDBで使っているコードほぼそのままです。
CSS、今も発展を続けているはずだけど、このCSSももっといい書き方が生まれてるのかなぁ。

あと、もう一つ別の記事も執筆中。
.NETです。

アンパンマンDBとRector

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

来週の放送情報。
ガレットさん着実に登場回数重ねてる?

アンパンマンナイトの情報が出たので。

Rector(Today I Learned)

Rector: Fast PHP Code Upgrades & Refactoring
PHP向けの静的解析。
エラーにはならずとも、リスクになるコードとか、きれいに書けるところなどを徹底的に見つけ出してくれます。
で、修正までしてくれる優れものなのですが、1400も修正箇所が出てきて、さすがにこれを丸投げするのは怖いなということで、--dry-runで様子を見ながら手作業で修正しています。
言うて新機能が追加されるわけでもなけりゃバグが直るわけでもないわりに修正ミスで壊れる可能性があるから労力掛けてまで頑張る必要ないかもしれんな。
古いコードの温床となってるWikiのWordPressへの移行のほうが先でいいかも。

PHP 8.4とプリンセスピーチ Showtime!とカービィのエアライダー

PHP 8.4

試しに検証環境で8.4を動かしてみて、致命的なエラーはなさそうなんですが、ちょっとDeprecatedが出てるので、そのあたりどうにかするためにCSV周り調整中。
標準関数の厄介ごとに巻き込まれたくないので、league/csvを使う方針です。

プリンセスピーチ Showtime!


ぽこ あ ポケモン気になるなーって思ってたけど、先に今持ってるゲームのほうを心残りがないように終わらせちゃおうということで、ちょっと進めました。
今回は人魚のキラリスタのステージ。
ある種の山場と言えるのがキラリスタ救出ステージなんだけど、今回は敵が出るでもなく長丁場になるわけでもなく、結構あっさりしていました。
こっちが飛ばした音符の魚を跳ね返してきたし、キラリスタが事実上のボスだったのでは!?

キラメキストーンコンプにこだわる必要はないかなって思いはしたけど取り逃しがわかりやすかったのと一周が短かったので、一応2周目で全部取っときました。

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

カービィのエアライダー


心残りって程でもないけどエアライダーもタイムアタックとかやってないコースがあったので。
クリアチェッカーはコンプ済みなので、今後もこだわらない程度にちびちびやっていこうかと。

バリューサーバーとAvalonia UI

バリューサーバー

ソフトウェアメンテナンス | メンテナンス・障害 | Value Domain(バリュードメイン)
2月にPHP8.4がうちのサーバーにもついに搭載されるようです。
既にPHP8.5も正式リリースされているので周回遅れ感はあるのですが、Deprecated属性が使えるようになるのは個人的に熱い!
結構既存の機能をDeprecated扱いにして段階的に削ったりしていましたからね。
私の作業のスケジュールとしては、手元のコードを8.3/8.4両対応にして自動テストを回しつつ、正式搭載後に切り替えて段階的に8.3のコードを置き換えていくことになるかな。

Avalonia UI

NuGet Gallery | Avalonia.ReactiveUI 11.3.8
浮き沈みランチャー2用に使おうとしていて、何もコーディングが進まないままほったらかしている間に、Avalonia.ReactiveUIが非推奨になっていました。
で、今後何を使うべきなのかというと、ReactiveUI.Avalonia
同じじゃないですか!!

とりあえず、NuGetで入れなおして名前空間を入れ替えるだけで現状は済みそうでした。
開発が進む前に気付いてラッキーだったのか、前提が変わるまで進まなかったのがだらしないのか…

カービィのエアライダーとドラゴンクエスト10とゲーム記

カービィのエアライダー


ひとまずクリアしました。
周回要素があるのは最初から分かってたし、クリアチェッカーもまだまだ残っているので、クリアはしてもまだまだこれからって感じですね。

(激しくネタバレ込みで語りたい)

伏せたからには遠慮しませんからね!


ロボボのときは「ギャラクティック・ノヴァをちゃんと再現しないとだめだな」とか思ってたけど、本家のほうが純度100%の邪悪じゃねーか!


途中から何度も絡んできてなんだかんだで腐れ縁感じてたノワールデデデくん、何も知らずに滅亡のスイッチ押しに来る善意の第三者に手をかけ続ける哀しい悪役だった…!


ラスボスのギガンテスはとにかくでかい!
どう戦ったらいいのか最初わからんかった。


どのキャラクターでも同じ展開なのはわかってるけど、もうこれロロロ&ラララが完全に主人公でしたね!
かわいくてかっこいいですね!
アドベンチャーズ・オブ・ロロロでしたね!
ラララも同じだけ活躍してたからアドベンチャーズ・オブ・ロロロ&ラララですね!!


ノワールデデデの本体であるゾラごとギガンテスを破壊してしまったので、なんだかんだで愛着感じてたノワールデデデくん…散りました。
バッドエンドですねバッドエンド!
世界を救うという一番大きなことは成し遂げたからノーマルエンド扱いにはなっているけど、気分的にはバッドエンドです。
ここから黒幕をぶちのめして、なんだかんだで好きだったノワールデデデくんも救うトゥルーエンドへ向かうのが周回要素ってわけですね。


2周目になるとさらなる高難度スーパーハードが現れました。
1周目は結局最初から最後までハードで無理なく(ミスなくとは言ってない)進めたんですが、まあ、そういうわけだったんですね。
ちょっと挑戦してみたんですが、やられるたびに強制的にステージの最初まで戻されて、途中セーブもできない仕様が、暇人むk…もとい、時間のある人向けって感じです。
この要素はストーリーのネタバレじゃないから伏せなくていいかなと思ったんですが、よそでネタバレについて苦言を呈した手前、一応慎重になっときます。


そうそう、ロロロ&ラララ2Pカラーも手に入れました。
ロードトリップは途中でライダーの変更ができないっぽいので2周目に使ってみたんですが、どうもキャラごとにクリアが記録される仕様っぽいので、やっぱり別キャラ使おうかと思ってます。
ちなみにこれをネタバレエリアに入れてるのは、左上に入手条件(最初は伏せられている)が書かれているからです。
過去の日記に参戦画像載せてないのも同じ理由。

他の写真は以下から。当然写真一覧にはネタバレがいっぱいあるけど、今回は4ページ目あたりから激しいよ。
カービィのエアライダー(2025/11/24)の写真

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

ドン・モグーラ

  • 土竜大将ブレイカーの称号を得た!

以前から引き続きテリー探しをしていて、途中でミネアからドン・モグーラカードを押し付けられたので、挑戦してみました。
一応アクセはプチドンで完成させていたんですが、そろそろどうにかなりそうな気がしたので、原種チャレンジです。
レベルが高いのは依然天地雷鳴士なんですが、レベルは低くても魔剣士のほうが火力が出るので、慎重を期す必要のある相手以外では魔剣士で行っています。
こいつの場合、混乱と大地揺らしにさえ気を付ければ大崩れする要素はないし、むしろ呼ばれる増援を手早く処理できたり、凍てつく波動でテンション解除できたりする魔剣士が適任でした。
カカロンは呼べないしHPも低くなったのでひやひやする場面がありましたが、終わってみれば無理なく(死なずにとは言ってない)勝てていました。

ゲーム記

ローカル環境で画像登録がうまく動かない件、一応解決しました。
フィル一覧を取得するのにDirectoryIteratorを使っていたんですが、scandirを使うようにしたら直りました。
なんで直ったのかは、皆目見当もつきません。

ドラゴンクエスト10とfnmatch

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

テンの日!
…は、ともかくとして。

あばれこまいぬにひばしら

  • クエスト「天地雷鳴士の式/交わらぬ水魚」をクリアした!

ちょっとずつでもクエスト進めていくよ。
今回はお使いの最後にヨイちゃんからちょっとしたご挨拶があったぐらい。

fnmatch(Today I Learned)

PHP: fnmatch - Manual
ファイル名のパターンマッチに正規表現使うのだるいなーシェルとかで使うような簡単なやつ使えないかなーとか思ってたら、ありました。

Pythonにもあるぞ!
Rubyにもあるぞ!
C言語にもあるぞ!…って、これがたぶん元祖だろうな。

どこでも使われるような当たり前の機能にはちゃんと標準ライブラリがついているんですね。
確か全く別の名前だけど.NETにもほぼ同じやつがあったはず。

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

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

来週の放送情報。
そういやあかちゃんまんは昔かきくけことの絡みもあったな。

アンパンマンワンドロ

提案者本人の希望により、お題ひとつ削除しました。

で、この作業をしてた時に気付いたんですが、先日のTableOfContents修正のタイミングで、ワンドロの企画サイトが動かなくなっていました。
TableOfContentsはPHP8.3以上対応で、ワンドロ企画サイトは設定が8.2のままになっていたのでした。
これはうかつだった…!

TableOfContents

mifumi323/table-of-contents - Packagist
Mifumi323\TableOfContents、Packagistで公開しました。
うちのサイトで使っているものはHtmlBuilderとAutoPageを組み合わせて極限まで楽できるようにしてあるのですが、OSSとしてはそこまでするのは責任範囲広げすぎなので、目次を生成する部分だけを抜き出してきました。

あと、今回はREADMEとかを英語で書くようにしてみました。
作ってる本人が日本語話者なんだから日本語で書いたほうが正確に意図を記述できるというのが私の考えなのですが、それはそうとして、読む側は英語話者が圧倒的に多いわけでして。
ほとんど機械翻訳ですが、同じ意図を伝えられそうかというチェックはしています。

で、うちのサイトに残されたTGWS\TableOfContentsのほうは、Mifumi323\TableOfContentsと同じ部分は抜き去られて、HtmlBuilder&AutoPageとの繋ぎ込みだけの役割になったので、実質行数4行まで小さくなりました。
テスト済みの長いコードが外部に出て行ったので、テストカバレッジは下がりました。

ドラゴンクエスト10とTableOfContents

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

月世界

  • クエスト「大盗賊の伝説/カンダタ月へ行く」をクリアした!

ついに来た!
素朴なからくりで…第二宇宙速度を超えた!!

(なんか月が衝撃的過ぎてボスのネタバレとか些末なことにも思えるけど)

レプティリア

  • 【クエスト】「大盗賊の伝説/カンダタ月へ行く」レプティリアたちをはじめて倒した!

宇宙のガチャコッコ!
姫を助けに行ったら襲い掛かってきたという定番の流れなんだけど、むしろ倒されてからのほうが不憫でした。
カンダタなんちゅうところに飛んでくんねん!

どうやら月に来ただけで終わりではないようで、もうちょっとだけクエストがあるようです。

他の写真は以下から。コスモ○○なモンスターたちも。
写真置き場「2025/10/14」

TableOfContents(PHP)

まだコミットできる状況じゃないのですが、うちのサイトで使っている目次作成機能、PHPのライブラリとして公開するつもりです。
そのままだとTGWS専用機能に依存しているので、そこら辺を抜き取って純粋に目次を作成するだけの機能にしています。

アンパンマンDBとmifumitterとXfolioと日記

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

BGMの追加。

アンパンマンの日なので、「アンパンマン放送37周年おめでとう」を追加しました。

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

mifumitter(非公開ツール)

歴史的な理由で残ってたTwitterAPI1.1&2のデータを新しい形式に変換しました。
古いAPI用の処理ももういらないんですが、うっかり呼び出されてたりするといけないので、いったん非推奨として残して、時間を空けてから完全に削除します。
このあたり、非推奨用の属性として#[\Deprecated]があるんですが、うちのサーバーはちょっとPHPのバージョンが低いので、ドキュメントコメントとtrigger_errorで対応しています。

Xfolio

昔描いたポケモン系 - 松田美文のポートフォリオ
昔Pixivとかに上げてたやつをまとめてみました。
一応ポートフォリオだし、ゲーム作品の紹介とかをしてもいいのかもしれない。

日記

今後Xfolioに何か投稿するたびに日記に書くかもしれないし、日記のカテゴリに追加しておきました。

mifumitterとアンパンマンDBと日記とphpLiteAdmin

mifumitter(非公開ツール)

邪魔なものを見えなくするミュート機能の強化とか、API実質停止で無意味になった機能を消すとかしてた。
自分専用だけど、むしろだからこそ、使い勝手良くしたいんですよね。

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

商品情報の記入とか、タイトルの改行ポイントの指定とかひっそりやってました。

日記

昨日のと関連してですが、リンク先の本来のタイトルとリンクテキストが食い違う場合、aタグのtitle属性に本来のタイトルを入れていたのですが、titleってそういうことに使うものだったっけ?って思っていったんやめることにしました。
ここは今のところ信念ないのでまた方針変更あるかも。

phpLiteAdmin

うちで使っているデータベースはSQLiteで、管理にはphpLiteAdminを使っています。
しかし、数年前に更新が止まっており、最新のPHPに対応していません。
ということで、こっちで勝手に修正しつつ使っています。
今回は、大昔のPHPで使われていたwhileとeachの組み合わせを、foreachに置き換えるなど。

と思ってたけど、今ソース管理のリポジトリ見に行ったら正式版になってないだけで普通に去年まで更新されてたな。

PHPUnit

ここTGWSで使っているテストツールのPHPUnitをバージョン9から10に上げました。
以前11に一気に上げようとして、必要な変更のあまりの多さに撃沈してしまったのですが、10までならひとまず大きなトラブルもなくスムーズに移行できました。
まあ、そのスムーズさで300ファイルほど修正が必要だったんですけどね。
ほとんどが機械的な置き換えで済むシンプルなものだったので、普通の置換やコピペで済ませました。
最近はAIエージェントとかもありますが、変なところで独創性を発揮しちゃうことが少なくないので、AIに求めるのは助言程度にして、今回は自分で作業をしました。

ドラゴンクエスト10とアンパンマン日替わり紹介botとPHPとfunyak

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

幻の海トラシュカ2025
お宝集めて大航海!「幻の海トラシュカ2025」 (2025/7/23)|目覚めし冒険者の広場
お宝集めだ!
今回はなんだか例年以上にラグがひどいみたいで、何が起きてるかわからないうちに何度も海に落ちました。
普段ならラグ読みで早めに回避したりしていたんですが、そもそもいつの間にか画面から自分がいなくなってますからね。
本当は全員分一気に行く予定でしたが、今日のところは一回だけで終わらせました。
報酬集めるならもうちょっと空いてから周回かな。

他の写真は以下から。…って程にも多くないけどさ。
写真置き場「2025/07/30」

アンパンマン日替わり紹介bot


まだ本番環境には反映してないですが、紹介botの本日の情報、短縮表記を試しています。
TwitterAPIの制限が本当に厳しくて、なるべく情報量を落とさない範囲で投稿数を減らしたいんですよね。
で、実際に同じ日付の投稿と見比べてもらえればわかると思うんですが、投稿数を2から1に圧縮できました。
効果あるんだからさっそく使おう…と言いたいところだったのですが…


画像もまとまっちゃうので、その他大勢の合成画像が異様に縦長になっちゃう!
こっちもうまく対応できてから、本番適用と行きたいところです。

PHP(Today I Learned)

文字列(という名のバイト配列)から画像を読み込む関数。
紹介botに出す画像はPNGとJPEGなんですが、将来的にはWebPも使う可能性があるので、imagecreatefrompngとかimagecreatefromjpegとかを一つ一つ使っていたらきりがないなって思ったんですよね。
これなら、ファイルをメモリに読み込むのは自前でやる必要はありますが、ファイルフォーマットは自動で判別していい感じに読み込んでくれるはずです。
とりあえずは、本当に使えるかどうかの確認からかな。

funyak

このプルリク、どうしよう。
セキュリティ上の修正なんだから、本当ならとっとと採用したいところなんですが、これ、ビルドは通るけど実際に実行するとエラーで落ちるんですよね。
動かなかったらもうセキュリティもへったくれもないわけで。
さすがに不採用というわけにもいかないから、自分でエラーをどうにかしてマージかな。

PHPとCSSとアンパンマンDB

PHP

[PHP]DateTimeのtimezone_typeって何だ? #PHP - Qiita
記事投稿しました。
アンパンマンDBで日時の出力をDateTimeそのままjson_encodeしてみたら見たことないプロパティが出て来たんで不思議だったんですよね。
で、json_encodeに限らず出てくるので、題材としては変数の中身を見るためにより広く使われるvar_dumpのほうを挙げた次第です。
それはそうと…

【PHP】Qiita デイリーいいね数ランキング【自動更新】 #LGTM - Qiita
なんか1位になってました。
他誰もいないけどな!
鶏口となるも牛後となるなかれということわざがあるけど、鶏どころか単細胞生物ですな。

CSS

古いスタイルシート整理してました。
レスポンシブ対応前の古いページ用の古いスタイルシートもまだ残しているんですが、さすがに数が少なくなってきたので名前を変えたり。

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

コメントに関するちょっとした機能実装中。
関係あるのは一部の人に限られますが。

TGWS内部処理

ここんとこ自動テストが開始まで時間がかかるようになったので、テスト初期化処理の改善をやっていました。
まずは、一部のテストでしか使わないファイルのコピー処理を実際に使うまで遅延させて、部分的なテストの場合に不要なコピーをしないようにするところから始めました。
ただ、計測したところ、ファイルコピーにはさほど時間はかかっておらず、逆にテストの邪魔になるファイルの削除が時間的には支配的でした。
ファイル検索に時間がかかっているようなので、RecursiveDirectoryIteratorあたり使ったらどうかなーとか思っています。

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

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

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

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

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

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


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

PHP8.3とドラゴンクエスト10

PHP8.3

メテオンもどきのあれ以外は特に問題なさそうだったので、本番適用。
今のところ問題は起きてなさげ。
PHP8.4もリリース間近ですが、しばらくは様子見です。

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

7.2で追加された強ボス一通りやってみました。
まあ基本的には昔の強ボスと同格なので、そんなに苦戦せず。

(ストーリーボスのネタバレなので)

邪教祖サダク強 ショック

  • 【強モード】邪教祖サダク強をはじめて倒した!

大切な家族を失った遺族の弱みに付け込んだド畜生。
こちらのレベルが高いこともあって、特に強さは感じなかった。

スイーツトロル強 ショック

  • 【強モード】スイーツトロル強をはじめて倒した!

飴舐めてるやつ。
強モードになっても飴舐めまくってたけど、まめちしきでは飴への言及なし。

グレイブディガー強 ショック

  • 【強モード】グレイブディガー強をはじめて倒した!

なんかピラミッドの奥で出くわしたやつ。
こいつだけちょっと強く感じた。
超ちからためからのノータイムはげしく斬り裂くで一度死んだ。

魔勇者アンルシア強 ショック

  • 【強モード】魔勇者アンルシア強をはじめて倒した!

本編では地獄の連戦であまりにしつこくしんどかった魔勇者。
強ボスでは闇のころももなく連戦もなく、聞き分けのいいお嬢様でした。
多分ネルゲル強のほうが強い。

キラーマジンガ ショック
そしてこちらが特に関係のないキラーマジンガ。

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

次>