サムネイル画像でも内容を判断しやすいように、商品画像を更新してみました。
インク5色、ボディ6種、浸透印ロゴを追加、全体的にバランスを調整しました。
一部の店ではインク固定のためロゴを削除してあります。
オプションがアイコンになり、全体的にスッキリとした商品画像ができたと思います。

深夜のPHP修正対応祭りだワッショイ
2026年10月22日23時に公開された、PHPの重大な脆弱性に対するセキュリティ修正に対応しました。
対応方法としては、基本的にアップデート(upgrade)コマンドを投げるだけなのですが、その上で走るシステムに影響が皆無というわけでもありません。
当初はPHP8のみのパッチ配布ということで、どうしようかと悩んでいましたが、リポジトリremiで公式に7.4、他にも有志が5.xのパッチを用意してくれたので、感謝感激雨霰です。
少し手こずったものの、対応できるサーバーに修正パッチを当てました。
PHP-fpmで苦戦したサーバが1台あるのですが、なぜかconfのinclude_pathが効かず.user.iniで対応していたのですが、パッチ当てたあとは.user.iniを読みに行かず、confのinclude_pathが復活という奇妙な現象がありました。
理解はしてませんが、対応できたので良しとします。
POASシステムは全て対応済みです。
ところで、対応できない古すぎるサーバが1台…、どうしよう?
今回の問題に全く気づかず放置されたままのサーバもあるでしょうし、オンラインゲームがサ終を決定した情報も流れてきていますので、なかなか影響が大きい問題になりました。
もう少しバージョンの鮮度を上げていかないとダメですね。
POAS最新版反映
POAS(印刷注文管理システム)の最新版が全ての稼動システムに反映されました。
プリントライYahoo!店:LINEリッチメニュー設定
「プリトライ Yahoo!店」のLINE公式アカウントにメニューを設定してみました。

あった印房:LINEリッチメニュー設定
「あった印房」のLINE公式アカウントにアクセスできない不具合がやっと(一年振りぐらいに)解消しまして、取り急ぎリッチメニューを設定してみました。
何度かストア担当にやってもらってもうまく行かず、結局サポートに泣きつきました。
あった印房:Yahoo!ショッピング:サイト説明更新
「あった!」がうれしい、ネット版印鑑タワー「あった印房」は登録件数十二万七千件!
お名前を検索して書体を確認してからご注文いただけます。 特殊な文字(異体字・旧字体)にも対応しています。
ふりがな指定の“有料オプション”を準備中です。 希望する“読み”が未登録の場合は、お手数ですが注文前にご連絡ください。
あった印房:Twitter:自己紹介更新
印影を確認してから注文できる、認印専門「あった印房」 です。
6mm:780円(込858円)・10/9mm:920円(込1012円)
14時までのご注文で即日発送。
神奈川県横浜市緑区からお届けします。
未登録の名前があれば、是非教えてください。
実在・非実在(漫画・アニメ・VTuber等)不問
開発の覚え書き
色々構築していると、微妙に手続きがバラバラだったりしていけませんね。
メモしておきましょう(こればっか)
とりあえずPHPで思うことを。
コントローラ単体で完結させない
基幹クラスはシステム・ユーザ・管理を必ず分離する
DB処理は共通化する
ログは基幹クラスで取る
コントローラから直接ログは叩かないようにする
課題
エラースローの作り方教えて…
クラスのerrを監視するやり方から抜け出せない…
WordPress更新
WordPressのコアに脆弱性が確認されたとかで、取り急ぎ更新を行いました。
ついでにPHPのバージョンも上げました。
更新:「Amazon Pay」の支払手続きをTampermonkeyで自動承認するスクリプト
AmazonPayの承認画面が変更になり、従来のスクリプトでは動かなくなりました。
通常のフォームタグではなく、疑似要素を使用したものになり、時間差で内容が更新されるなど、よくわからない仕様になっています。
いろいろ眺めていたのですが、埒が明かなかったのでAIに丸投げしました。
以下のコードで承認を自動化できます。
// ==UserScript==
// @name クリックポスト(AmazonPay):step2:決済(AmazonPay側)
// @namespace http://tampermonkey.net/
// @version 2026-05-30
// @description 「続行」テキストの外側にあるrole="button"を自動でクリックします
// @author You
// @match https://*.amazon.co.jp/checkout/*
// @grant none
// @run-at document-end
// ==/UserScript==
(function() {
'use strict';
// クリック処理を実行する関数
function tryClickContinue() {
// 画面上のすべての role="button" を取得
const buttons = document.querySelectorAll('[role="button"]');
for (const button of buttons) {
// ボタンのテキスト、または子要素のテキストに「続行」が含まれているか確認
if (button.textContent && button.textContent.includes('続行')) {
// すでに非表示、または無効化されている場合はスキップ
if (button.offsetWidth === 0 || button.offsetHeight === 0) continue;
console.log('「続行」ボタンを検出しました。クリックイベントを発火します。', button);
// クリックイベントの生成と発火(React等のフレームワークによる制御に対応するためバブリングを有効化)
const clickEvent = new MouseEvent('click', {
bubbles: true,
cancelable: true,
view: window
});
button.dispatchEvent(clickEvent);
// 1度実行したらこの周期のループは抜ける(必要に応じて監視を止める場合は observer.disconnect() を実行)
break;
}
}
}
// Next.jsなどのダイナミックレンダリングに対応するため、定期的にDOMを確認
const intervalId = setInterval(() => {
tryClickContinue();
}, 500); // 0.5秒ごとにチェック
// ページ遷移等で無限に動き続けるのを防ぐため、一定時間(例: 30秒)で監視をクリアすることも可能
setTimeout(() => {
clearInterval(intervalId);
}, 30000);
})();
クリックポストの支払いで使用していますが、理論上は他のシステム経由でも動くとおもいます。
