2022年2月の日記

<2022年03月 2022年01月>

PHPUnit

ちゃんとクラスになっている部分はテストできるのですが、サーバーから呼び出されるPHPファイルに直接あれこれ書いているものは、なかなかテストしづらいのです。
ちゃんと「呼び出すファイル」と「ロジックを書いているファイル」を分けていればいいのですが、小さいプログラムを手っ取り早く実行できるようにしようとすると、やっぱり呼び出すファイルに直接書いた方が早いし解りやすかったりするのです(Hello Worldするためだけにフレームワークのあちこちを飛び回るようなプログラムは書きたくない)。
こういうのをなんとか自動テストの仕組みに乗せるにはどうしたらいいかと考えたのですが、結局テストって入力に対する出力を見るだけなので、入力に使う変数($_POSTなど)を差し替える、出力をバッファリングして捕まえる、というのがある程度の落としどころかなと考えています。

TGWSAdmin

大きすぎる画像を自動縮小する機能を作成。
Twitterに上げられるのは5MBなので、それに合わせるようにちょっとずつ縮小します。
事前にファイルサイズを確認して縮小しておく必要が無くなって楽なのです。

PhpTestTemplateGenerator

mifumi323/PhpTestTemplateGenerator
昨日の日記で行っていたPHPのテストのテンプレートを自動生成するプログラムを作ってみました。
まあ、このプログラムの方はPHPじゃなくてC#でできているんですが。
あと、画面上で編集してから保存したかったり、一部分だけ抜き出して既存のテストコードに付け加えたかったりしたので、GUIになっています。
何もないところからの全自動生成ならCUIの方が有利なんですが、後付けで様子を見ながらの作業なので、状況が見える方が都合がいいのです。
一応一般公開していますが、自分用のツールなので、他の人にとっての使い勝手は知りませんし、実行ファイルの配布もなしです。

PHPUnit


テストコードを書いていない部分が多いものの、ゼロからテストコードを書く部分はしんどすぎるので、全部の機能に対して、テストの最初の一歩となるテンプレートを作ってみることにしました。
テンプレートのままでは未完成なテストなので、Incompleteばっかり出ますが、逆に言えば、このIncompleteを手掛かりにテストを作っていけばいいということになります。

それいけ!アンパンマン ドロリンとバケ〜るカーニバル


ゲスト声優とビジュアルが発表されましたなあ。
ビジュアルの方はテレビ放送の方で先に公開されていたようですが。
楽しみであります。

PHPUnit

PHP8.1に上げたらエラーがいっぱい出たというのも、CIが落ちるようになったのも、テストが充分であればある程度防げたはずのことだったのです。
ということで、自動テストのカバレッジを上げる方向で、クローリングではテストできない編集機能周りを中心に、テストコードを増やしていこうと思います。

アンパンマンDB

そこそこできてると思ってた新管理画面がまるでできてなくて途方に暮れてる。

PHP8.1

とりあえずエラーが取れたので、CIが落ちる方を暫定対応。
落ちるテストをしなくしたというだけの、本当に解決にならない対応なんですけどね。
テストしなくなった対象のコードを使わなくする方向で根本対応を検討中です。

PHP8.1

ひとまず、今エラーが出ている部分は修正終わり。
Anpanatorはデプロイ方法の都合で明日に修正が反映されます。

PHP8.1

致命的じゃないけどどえらい数の細かいエラーが出ていました。
ちょっとアンパンマンDBの管理にも支障が出そう。

PHP8.1

バージョン上げました。
今のところは、致命的なエラーなどは起きていないようです。

PHP8.1

とりあえず、自動テストでCI自体が落ちるのと、サーバー由来のどうしようもないやつ以外はエラーが起こらなくなってきました。
自動テストの方は、エラーの前提から崩すことができるし、どうしようもないやつはバージョンにかかわらずどうしようもないので、そろそろ本番環境で上げてしまってもよさそうです。

PHP8.1

開発環境でもテストプログラム自体が落ちる件を再現できました。
どうやら、アンパンマンDBの古いコードのカバレッジを取ろうとしていると、落ちるようです。
まあ、新たに開発することがない以上、継続的にテストをしても仕方がないと言えばないのですがね…ただテストをなくして落ちなくするより、古いコード自体をなくしてそもそもテスト不要にするのが正攻法だと思われます。
放置案件になりかけてる新管理画面にいよいよ着手せねば…。

PHP8.1とドラゴンクエスト10(ミフミン)

PHP8.1

管理画面を中心に修正。
あと、あえてエラー抑止している部分を、ちゃんと抑止するようにしました。
NOTICEなんて半端なことはせずに例外としてぶん投げたいんですよね。

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

いよいよミフミンで…

不思議の魔塔 次のフロアへの階段
新生不思議の魔塔に挑戦!
うん、ストーリーは進んでないんです。
以前とは通常階の進み方もボスも大きく変わっています。
10階ぐらいまではわかりやすい謎解きなんですが、それ以降は、持ってないものを後出しで要求されてそのたびに作りに戻る感じになっていました。
とりあえず30階あるうちの20階までクリア。

ストーリーコンテンツじゃないのでネタバレもへったくれもないと思いますが、数が多いんで他の写真は写真置き場でご覧ください。
写真置き場「2022-02-13」

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

PHP8.1

とりあえず、エラーは一通り直したつもり…。
ただ、アップしてからエラーが発覚することもあり、油断せずに様子を見ておこうと思います。
あと、普通のエラーを直しても、CIが落ちるのは未解決なので、そちらの対処も考える必要がありそうです。

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

ウェブニー
バレンタインイベント、最終結果が出ました。
私がまだ進めていないストーリーに登場する、ウェブニーです。
こういうキャラクターに会うためにも、一番進んでいるミフミンでストーリーを進めたいわけですが、タイトルを見ての通り、今日はァォィョッュの方を進めたのです。
別に全員均等に進めたいわけではなく、単にその日その日の気まぐれです。

ダークネスマリン
進めたのはメインストーリーではなくサブクエストの方。
別に後回しでもいいと言えばいいのですが、メインストーリーがはるかに進んだ後に昔のサブクエストをやると、旬を逃した感が強くなってしまうので。
魔剣士のクエストは、5話あるうちの3話分までやってバシッ娘の回数消費したので、4話目の途中まで進めています。

飛べる回数が尽きた後は、回数無制限で飛べる五大陸範囲でできる、ジュレットの配信クエストなどをやっていました。
こちらは、時間の関係で、5話あるうちの4話目まで終わらせて、最後のボスを残すのみです。
写真置き場「2022-02-12」

PHP8.1

開発用サーバーが動くようになったので、本格的にPHP8.1移行を始めました。
バージョンアップでもひとまず動作は変わらないように、些細なエラーでも修正していきます。
ちょっと数が多すぎてCI自体が落ちている状況ですが…。

PHP8.1

勢いに任せて開発環境をPHP8.1にアップデート。
しかしかなりエラーが起こっているのです。
動作が変わってしまっている部分もあったので、しっかり直してから本番環境に反映せねば。

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

TwitterLib

mifumi323/twitter-lib - Packagist
うちのサイトで自作して使っている薄いラッパー、2年ぶりぐらいにアップデートしました。
サイト内ではちょくちょく機能追加してたんですが、一般公開用は全然だったので。

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

Twitter API v2が使えるようになった関係で、引用リツイート数もわかるようになったので、注目のツイートの計算方法を変えてみました。
Twitter公式で見えるリツイート数は公式RT+引用数なので、それに合わせた形です。
TwitterLibのアップデートは今回のことを見越してのことでしたが、諸々の都合で、結局TwitterLibの方は過去の更新だけを公開しました。

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

半裸でみたらし団子に乗って空を飛ぶ不審な男
ミフミンの分のクエストをいろいろこなしてきました。
最後だけ残っていた海賊の職業クエストが、まず終わりました。
それから、なんか移動がめんどくさかったどこでもスキルふり直しのクエストも済ませました(写真はその移動途中を激写したもの)。
あと、クリアには至っていませんが、聖守護者の導きも、ボス戦がありそうな段階の手前までは進めました。
写真置き場「2022-02-08」

funyakとミフミンのDQ10メモとドラゴンクエスト10(しろいコキン)

funyak

[変更]FunyaMapObjectの当たり判定結果の格納を後半にまとめる
[変更]FunyaMapObjectのadjusterからの結果反映を全面的にRealizeCollisionに移動
昨日言っていた、後半への移動です。
これで、壁との当たり判定の共通当たり判定化への準備は整った!!

ミフミンのDQ10メモ

内部的な挙動の変更ですが、写真置き場の検索アルゴリズムを、自動テスト可能な形に整えました。

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

ボス戦ばっかりで日記に直接載せられる写真がないのですが、レベル条件解放クエスト(118→120)と、装備枠拡張クエストをクリアしました。
ネタバレ写真バッチ来い!って人は以下のリンクからどうぞ。
写真置き場「2022-02-06」

funyakとアンパンマンDBとドラゴンクエスト10(ァォィョッュ)

funyak

[変更]FunyaMapObjectの接触有無の変数宣言を最後に移動
また長期放置案件になりそうだったので、ほんのちょっとだけど開発進めましたよ。
funyakの当たり判定は前半と後半に分かれていて、前半が判定部、後半が判定結果反映部になります。
最終的には前半と後半の間に共通当たり判定を入れたくて、そのためには、前半は共通当たり判定の準備に徹して極力「判定」を減らし、後半は共通当たり判定結果を「判定」する処理を増やす必要があります。
で、今は、前半で判定結果を反映しやすい形に整えるのもやっていて、前半の責務が多すぎる状態なのです。
ただ、これが結構判定と絡めながら複雑な形でやっていて、単純に処理を後半に移動してもうまくいかないのです。
だから、整える部分を後半に移動できるように、前半部自体をさらに前半と後半に分けられるようにコードの順序を入れ替えた、というのが今日の修正なのです。

今日やったのは、目的と手段を思い出すのが主目的だったので、本当に形式だけの修正になっているのですが、おかげでこの先の方針も見えてきました。
忘れないうちに続きをやれば、今度はしっかりと意味のある修正をできると思います。

アンパンマンDB

管理画面でのことですが、レンタルDVDの'22シリーズの新しい命名規則に対応しました。

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

王家の迷宮
王家の迷宮を進めたり、メインストーリーを進めたり、クエストをクリアしたり。
王家の迷宮は2階層クリア。
メインストーリーは、アンルシアの破邪の秘技を全部覚えたところまで。
それ以外のクエストは、メインストーリーで寄った場所のクエストをいくつか。
他の写真は以下の検索で(ネタバレあり)。
写真置き場「2022-02-05」

PHPUnit

カバレッジの変遷を自動で記録する仕組み作成中。
カバレッジが高いと、ある程度網羅的にテストができている証拠なので、高めておきたいのですが、何も考えずに開発していくとどんどん下がるんですよね。
下がっているのに気付いて対策を講じたり、上がっていくのを見て喜んだりなど、変遷を残しておくと、何かと使えると思うのです。

PHP7.4

PHP8にする前に、PHP7.4でもまだ動いていない部分がありました。
自動クロールで検出できない管理画面です。
PHPはバージョンが上がるにつれてセキュリティも向上していくのですが、そうすると当然、今はもうあてにできなくなった古いセキュリティ規格は打ち切られていくわけです。
そうはいっても他との兼ね合いで上げられないものは上げられないので、代替手段を探しています。
セキュリティ下げる形の話なので、これ以上詳しくは言いませんが。

PHP8とドラゴンクエスト10

PHP8

最終的には8.1まで上げてしまいたいので、もう8の動作チェックを始めています。
NULLチェックが7の頃よりさらに厳しくなって、NOTICEやらWARNINGが出ています。
ただ、ERRORやExceptionレベルのはなかったようで、その点は一安心です。

ドラゴンクエスト10

キング・ツリー
第10回アストルティア・クイーン総選挙!
毎年恒例バレンタインイベント開始です。
ひとまず、全員分クエストは終わらせました。
毎日投票に行くかどうかは気分次第。
こういうイベントで余計なネタバレ踏まないためにも、メインストーリーは進めておきたいんですがねぇ…。

セラフィ・リナーシェ・ナンナの像
景品の像も3キャラで全種類網羅しました。
衣装はダルメシアンモチーフで、特にバレンタインとは関係なさそうです。

PHP7.4

自動テストで見つかるエラーは完全対処。

<2022年03月 2022年01月>