Latest Updates
TECHBLOG
株式会社 XECIN からの最新情報をお届けします。
サービス・採用・イベントなど、さまざまなトピックをご覧ください。
やってみた 2026/11/7
Meta の Astryx を日本語で試したら、変換中の Enter は10部品とも無事で、テンプレート15本はビルドが通るのに白画面でした
GitHubトレンド6位の meta/astryx を使い捨てコンテナで試しました。再現した IME 変換中の Enter と Esc で誤動作した部品はなく、和暦も出ます。一方、ページテンプレート57本のうち15本は StyleX コンパイラなしだと tsc も build も通って白画面でした。Tailwind の読み込み順や gothic テーマの body の塗りにも注意が要ります。
続きを読む →
フロントエンド 2026/11/6
LCP画像の書き方を13通り測った。lazyを外しても16msしか縮まないページと1.7秒縮むページがあり、preloadはCSSより前に置くとFCPが1.1秒遅れた
検証ページを1.6Mbps・RTT150msに絞り、LCP画像の書き方13通りをHTTP/1.1とHTTP/2で測りました。lazyの差は軽いページで16ms、画像の多いページで1.7秒。fetchpriorityはHTTP/2の重いページでLCPを1秒縮めてFCPは変えず、preloadはCSSより前に置くとFCPを1.1秒遅らせました。自社の一覧と記事ページにも当てて判断基準にしています。
やってみた 2026/11/5
agent-browser を試したら、Node 22 では半年前の版が入り、最新版でも古い ref が別ページのボタンを押した
GitHubトレンド10位の vercel-labs/agent-browser を使い捨てコンテナで試しました。Node 22 の npm は engines の都合で黙って 0.27.0 を入れ、クリックは24ケースすべて成功扱いでした。最新の 0.41.2 は隠れたボタンで正しく失敗しますが、リンクで移動したあとの古い ref は別ページの支払いボタンを押しました。
AIエージェント 2026/11/4
AIの成果物をAIに検証させた261回を読み直した。差し戻し15回のうち12回は受入条件が全部通っていて、testゲートは216回中211回skipだった
実装役と検証役を分けたAIエージェントの判定記録261回を集計しました。差し戻しは15回で、うち12回は受入条件が全部通っていました。testとlintのゲートは216回中211回がskip、後から足したゲートは102回中34回赤で、合格後に人が戻した6件はチケット側の事情でした。
やってみた 2026/11/3
AWSエミュレーター floci を Docker なしで動かしてみた。S3→SQS の通知は届き、Lambda は終了コード0のまま失敗していた
GitHubトレンド8位の floci-io/floci 2.4.0 を使い捨てコンテナで試しました。README にある Docker 不要のバイナリは 2.4.0 に添付が無く、README どおりのビルドも失敗。動かすと S3→SQS の通知や DynamoDB の条件付き書き込みは期待どおりで、Docker の無い Lambda は invoke の終了コード0のまま中身がエラーでした。
セキュリティ 2026/11/2
SSRF対策の「内部IPなら拒否」をNode.jsとPythonで7通り書き、12通りの抜け道を流した。接続時のlookupで見る形はIP直書きを9通り素通しし、全部止めたのは1通りだけだった
URLを取りに行く機能の試作で、内部IPを弾くガードを7通り書き、10進・16進の表記や127.0.0.1を指す名前、リダイレクトなど12通りを流しました。Pythonは2130706433を名前とみなして通し、OSが127.0.0.1と読んで繋がりました。接続時のlookupで見る形はIPの直書きを素通しし、全部止めたのは接続の直前でIPを見る形だけでした。
やってみた 2026/11/1
Zig製ヘッドレスブラウザ Lightpanda を Puppeteer につないでみた。100ページで Chromium の約7倍速・メモリ1/23、ただし待ち方と日本語に注意
GitHubトレンド2位のlightpanda-io/browser 1.0.2を使い捨てコンテナで試しました。自作100ページを同じPuppeteerスクリプトで回すと約0.4秒・メモリ約26MBで、Chromium 156は約3秒・約600MB。一方、fetchの既定の待ち方ではJSで後から足す要素がダンプに入らず、スクリーンショットの日本語は--render-fontを渡すまで豆腐でした。
プロジェクト管理 2026/10/31
工数の実績が無いチームでEVMを回してみた。5営業日遅れて終わってもSPIは1.00に戻り、時間で測るSPI(t)だけが0.80で残った
作業時間が記録されたチケットは3,815件中3件で、CPIもEACも出せません。そこで予定日と状態だけでEVMのスケジュール側を回しました。20営業日の計画が25日で終わった表で数えると、同じ日のSPIは数え方で0.83〜0.98に割れ、最終日には1.00に戻り、時間で測るSPI(t)だけが0.80で残りました。
やってみた 2026/10/30
紫微斗数の命盤エンジン ziwei-doushu で出生時刻の境界を突いてみた。同梱Demoはエンジンの真太陽時を通っていなかった
GitHubトレンド5位のRenhuai123/ziwei-doushuを使い捨てコンテナで試しました。回帰テスト10本は21秒で全部通過。ただ同梱Demoのフォームは経度差だけで時辰を決め、エンジン側の均時差・日付またぎ・晩子時の換日を通らないので、2026年の毎分で比べると上海で6.03%の時刻の時辰が食い違いました。
品質保証 2026/10/29
JestとVitestでmockResetの意味が違った。同じテストをJest 30とVitest 2〜5に流したら、片付けたはずのモックに残るものが版ごとに割れた
API は Jest、画面は Vitest という構成で、モックの後片付けを書き分けていました。同じ観測用テストを Jest 30 と Vitest 2〜5 に流すと、mockReset 後の戻り値、restoreMocks で残る記録、前のテストの呼び出し回数が版ごとに違い、beforeEach の1行は Vitest でだけ各テストの後にモックを呼んでいました。
やってみた 2026/10/28
JetBrainsのThinkRailを手元のモックLLMにつないだら、「こんにちは」1通がpi単体の約8.7倍・50KBで届いた
AIコーディング用IDE「ThinkRail 0.2.0」を、通信を切った使い捨てコンテナで自作のモックLLMにつなぎました。同じ「こんにちは」でも、中で動くpi 1.2.0単体は5,816バイト・ツール4個、ThinkRailは50,438バイト・ツール28個。初回の利用データ共有は既定でオン、--no-analyticsでもPostHogへの接続は続きました。
AWS 2026/10/27
AWS_PROFILEと環境変数の鍵が両方あると、CLIとNode.jsのSDKで署名する鍵が逆になる。偽のS3で4つの道具を数えたら、鍵が無いときに諦めるまでも0.01秒から13秒まで割れた
MinIO相手の検証で、Node.jsのスクリプトが環境変数の鍵ではなくAWS_PROFILEで署名していました。偽のS3を立ててAWS CLI・boto3・Node.jsとGoのSDKを当てると、両方あるときにプロファイルを選ぶのはNode.jsだけ。鍵がどこにも無いときに諦めるまでの時間と、確かめ方・止め方も残します。
やってみた 2026/10/26
AIエージェントのskillを入れる前の検査役、NVIDIAのSkillSpectorを試した。日本語の注入文とネット無しで判定が変わった
GitHubトレンド7位のNVIDIA/SkillSpectorを使い捨てコンテナで試しました。uvで約8秒で入り、鍵なしの静的検査は1件約2秒。英語の「Ignore all previous instructions」は拾う一方、同じ意味の日本語は拾わず、OSV.devに届かないと同じskillの判定がDO_NOT_INSTALLからCAUTION(終了コード0)に下がりました。
プロジェクト管理 2026/10/25
残り13本のチケットは「85%の確率で8日以内に終わる」はずだった。モンテカルロ予測を10日後に答え合わせしたら、閉じたのは6本だった
10-15のWBSの記事で残った13本が何日で終わるかを、その日までの1日ごとの完了数からモンテカルロ法で予測し直すと「85%の確率で8日以内」。10日後に答え合わせすると、閉じたのは6本でした。速さを稼いでいたのは開発側のチケットで、残りは人と外部の作業。種類で分けて回し直し、日付の決まった作業を別に置くまでの記録です。
やってみた 2026/10/24
実機なしで2足歩行ロボットを立たせて歩かせた。microduckのシミュレーターで「0.15m/sでは歩かない」に当たった話
GitHubトレンド7位のpollen-robotics/microduckを使い捨てコンテナで試しました。学習用のtorchを入れず283MBのvenvでMuJoCoの体を用意し、本物のrobotdを28秒で立たせられました。ただ付属スクリプト既定の前進0.15m/sでは脚が1秒で止まり、0.25〜0.30m/sにして初めて約0.7〜1m歩きました。
やってみた 2026/10/22
FastAPIが2日半で24回リリースしていたので、全25版に同じコードを流して変わり目を探した
GitHubトレンド7位のFastAPIは、UTCの10月19〜21日に0.147.0から0.159.1まで24回リリースしていました。使い捨てコンテナに0.146.0〜0.159.1の25版を並べ、公式チュートリアルなど4つのコードを流すと、挙動の変わり目は5か所。警告なしで消えた引数や、送らなかったboolがFalseになる変更もありました。
PHP 2026/10/22
PHPの重大脆弱性(php2shell)、管理者がまずやること:バックアップ確認と影響度の見極めから「停止→修正→再公開」まで
PHPの重大脆弱性(CVE-2026-109618/109619)で、Webサイトや業務システムの管理者が最初にやることを整理しました。すぐに暫定対応へ入るためのバックアップの確認、システム影響度とビジネス影響度による優先順位づけ、個人情報の有無と報告義務、制作会社との連絡、対象バージョンの確認、停止から修正・再公開までの流れを、テンプレート付きでまとめています。
PHP 2026/10/22
PHPの重大脆弱性「php2shell」(CVE-2026-109618/109619)、WordPressサイトの担当者が今すぐ確認すること
2026年10月21日、認証なしで外部からプログラムを実行されうるPHPの脆弱性2件(CVSS 9.2)の修正版が公開されました。WordPressなどPHPで動くサイトの担当者向けに、影響の確かめ方、サーバーの種類ごとの対応、すぐ更新できない場合の暫定策、PHP 8.1以前で止まっているサイトの注意点を整理しました。
品質保証 2026/10/21
CSV出力の例示テストは2本とも緑だった。fast-checkで往復を検査したら、反例は毎回「空欄だけの行」に縮み、改行のバグは既定の生成器を100回すり抜けた
受注一覧のCSV出力は、手で書いた例示テスト2本が緑でした。fast-check で「書いて読み戻すと元に戻る」性質を1本足すと、反例は毎回「空欄だけの行」に縮んで別のバグを隠し、改行を囲まない版は既定の生成器で100回中100回すり抜けました。直した順番と、反例を例示テストに昇格させるまでを書いています。
やってみた 2026/10/20
graphifyでFastAPIをオフラインのまま知識グラフにしてみた。READMEの例は曖昧一致で止まり、日本語の質問は0件だった
コードの地図を作るCLI「graphify」0.9.92を使い捨てコンテナで試しました。ネットワークを切ってもFastAPIを15.5秒で9,572ノードのグラフにでき、3回作り直しても出力は同じ。一方でREADMEのpath例は名前の曖昧一致で終了コード3、日本語の質問は一致0件でした。
AWS 2026/10/19
AWS SDKのrequestTimeoutを2秒にしたのに、20秒待っても切れなかった。偽のS3を立ててリトライとタイムアウトの既定を数えた話
障害時にバッチが何秒で諦めるのかを確かめるため、手元に壊れた偽のS3を立ててAWS SDK for JavaScript v3を当てました。requestTimeoutだけでは警告が出るだけで止まらず、送り直しは3回でも、同じクライアントで失敗が25回続くと26回目からは送り直さなくなります。実測した回数と待ち時間、決め直した設定を残します。
やってみた 2026/10/18
opencode v2をモックのLLMにつないで試したら、planエージェントでもshell経由の書き込みは確認なしで通った
APIキーを使わず、opencode 2.0.32を使い捨てコンテナで自作のモックLLMにつなぎました。「こんにちは」1回で送られたのは2回・計24,539バイト。planではwriteが拒否される一方、shell経由の書き込みは確認なしで通り、--autoでは.envの中身がLLMへの要求に入りました。
セキュリティ 2026/10/17
日本語のパスワードは24文字目までしか効いていなかった。bcryptの72バイト上限を4言語7実装で測ったら、照合でも例外を投げるのはPythonの5.0.0だけだった
UTF-8の日本語は1文字3バイトなので、bcryptが見るのは先頭24文字まで。検証環境で依存を上げたら、25文字の日本語パスワードの検証用アカウントだけログインが500になりました。4言語7実装で72バイト超の扱いを測り直した結果と、連結したキーでパスワードの取り分が3バイトになる罠、コスト係数の実測を残します。
やってみた 2026/10/16
AIエージェントのハーネス ruflo をモデル抜きで試したら、npx初回は66秒・1.9GB、initは252ファイルとホームのCLAUDE.mdを書いた
Claude CodeもAPIキーも使わず、ruflo 3.56.10を使い捨てコンテナで動かしました。初回npxは66秒・1.9GB、initは表示の102を超える252ファイルとホームのCLAUDE.mdを書き、MCPは358ツール。日本語の記憶検索では無関係な文が1位になり、agent_spawnは登録だけでした。
プロジェクト管理 2026/10/15
WBSを切った日は17本だった。4日後には33本になり、チケットの消化率は6割まで上がったが、残った13本はすべて人の作業か外部の確認待ちだった
自社サービスの集客施策の準備で、初日に切った作業チケットは17本。4日後に数え直すと33本に増えていました。足した16本を理由で分けると、依頼側の方針変更は2本だけ。チケット数で見た進捗は61%でも計画分では41%で、残る13本はすべて人の作業か外部の確認待ちでした。数え直しの手順と、追加の理由の残し方を書いています。
やってみた 2026/10/14
Rust 1.99.0を1.98.1と並べて試したら、半角カナのDebug出力が変わり、1.98.1で通していたテストが落ちた
rustupでRust 1.99.0と1.98.1を使い捨てコンテナに入れ、リリースノートの変更点を同じコードで見比べました。半角の濁点がDebug出力でエスケープされなくなり、1.98.1で通していたテストが落ちたほか、CI=1でのincremental無効化、doc aliasを優先する提案、使い切った範囲の表示の変化を確認しました。
やってみた 2026/10/12
Open WebUIをpipで入れて1通送ったら、裏でLLMへの要求が4本飛んでいた
GitHubトレンド5位のOpen WebUI(0.12.0)を使い捨てコンテナにpipで入れ、LLMの代わりに自作のモックをつないで1通送りました。裏の要求は題名・本体・続きの質問・タグの4本で、本体26KBのほとんどは組み込みツール39個の定義。起動後に環境変数で生成を止めても効かず、DBに残った設定が勝ちます。
AWS 2026/10/11
署名付きURLでContent-Typeも縛ったつもりだった。JavaScriptのSDKで発行したら署名はhostだけで、200KB用のURLに50MBもHTMLも通った話
ブラウザからS3へ直接上げるための署名付きURL。PythonのSDKではContent-Type違いが403になっていたのに、JavaScriptのSDKで発行し直すと署名に入るのはhostだけでした。手元のS3互換ストレージで送り方を6通り変えて測った結果と、種類・中身・大きさをそれぞれ何で縛ったかを書いています。
やってみた 2026/10/10
Flutter Webのカウンターアプリを動かしたら、既定ビルドはgstaticに届かないと真っ白だった
GitHubトレンド7位のFlutter(3.47.7)を使い捨てコンテナで動かしました。既定のflutter build webはCanvasKitとRobotoをgstaticから読み込み、名前解決を潰すと画面は真っ白に。--no-web-resources-cdnなら外部通信0件で描画できますが、配る量と圧縮は自分の仕事になります。
Python 2026/10/9
Python 3.15で既定の文字コードがUTF-8になる。日本語WindowsでRCを試したら、Excel用のCSVは1列に潰れ、コマンドの出力は例外もなくNoneで返ってきた
Python 3.15では、encodingを書かない入出力が日本語WindowsでもUTF-8になります。RC3を3.14と並べ、社内スクリプト25本と自社サイトの記事83本で試すと、Excel用CSVの化け、PowerShellで受けた出力の化け、cmdの出力がNoneで返る現象が出ました。洗い出し方と、境界ごとの直し方を残します。
やってみた 2026/10/8
RAD DebuggerのLinux対応をコンテナで試したら、ブレークポイントでは止まりビットフィールドは32bitのまま見えた
Epic GamesのRAD Debuggerが0.9.29でLinux x64のネイティブデバッグに暫定対応したので、使い捨てコンテナでソースからビルドしました。clang 14でも6.7秒でビルドでき、Xvfb上でブレークポイント停止まで確認。一方でビットフィールドは全メンバーが同じ32bitの値で表示されました。
AIエージェント 2026/10/7
成功したAIタスクが、1時間後に「タイムアウト」と記録されていた。出力が4,096バイトを1バイト超えた回だけ、ワーカーが止まっていた話
RedmineのチケットからClaude Codeをヘッドレスで起動するワーカーが、仕事を終えたタスクを1時間待たせて「タイムアウト」と記録していた。原因は出力を読む前に終了を待つ順番と、4,096バイトのパイプ。偽のエージェントで境界値を測り直し、受け入れ基準まで書き直した記録。
やってみた 2026/10/6
REAに自作フロントのビルド成果物を読ませたら、URLの書き方ひとつで機能の追跡が空振りした
GitHubトレンド8位のREA(TypeScript製・MIT・rea-agents 4.0.1)を使い捨てコンテナで試しました。自作メモアプリのminifyバンドルは1件約1秒で解析でき、source mapがあれば元ファイルのパスまで出ます。一方、URLを定数とテンプレートで組み立てるとendpointはnullになり、/exportの追跡は一致なしでした。
RDB 2026/10/5
主キーをUUIDv4からv7に変えたら索引は2割小さくなった。ただIDから作成時刻がミリ秒で読めて、隠すために足した列でWALは3倍に戻った
新しい案件の主キーを決めるため、PostgreSQL 18 の uuidv7() を bigint・UUIDv4 と110万行で比べました。v7 の索引は v4 より約2割小さく、追加10万行の WAL も bigint 並み。ただ ID の先頭から作成時刻がミリ秒で読めます。公開用に v4 の列を足すと WAL が3倍に戻ったので、テーブルの性格で使い分けることにしました。
やってみた 2026/10/4
AIが操作するE2Eテスト「e2e」の再生キャッシュを、わざと壊したアプリで確かめた
GitHubトレンド1位のe2e(TypeScript製・Apache-2.0・v0.17.0)を使い捨てコンテナで動かしました。モデルは自作のモックで代用。記録した操作は2回目からモデル呼び出し0回・234msで再生され、ボタン名を変えると約15秒待ってAIに引き継ぎました。アプリを壊した回は、AI役が合格と答えても最後の1行の検証が落としました。
セキュリティ 2026/10/3
個人情報マスクの正規表現に日本語の書き方20通りを流したら、13通りがそのまま残った。半角の電話番号も末尾4桁が見えていた話
LPで使っていた個人情報マスクを問い合わせの受付ログにも流用する前に、全角数字・長音符・全角@などのダミー20通りで試した。13通りが素通りし、半角の電話番号も末尾4桁が残り、UUIDなど6種類の値のうち5種類を壊していた。Pythonに移すと結果が変わる点、正規化で直せた範囲、氏名と住所のためにログ項目を許可リストへ切り替えた経緯まで。
やってみた 2026/10/2
トークン削減プロキシcavemanを動かしたら、同じ形のログ行に紛れた外れ値が痕跡なく消えた
GitHubトレンド2位のcaveman(Go製・Apache-2.0)を使い捨てコンテナで試しました。187KBのログは840Bに縮み、ERRORやスタックトレースは残ります。一方、同じ形の行に紛れた外れ値は消え、意味で探す復元の問い合わせでも戻りませんでした。ストリーミングの要求は素通しでした。
RDB 2026/10/1
1,000件を最後のページまで読んだら、182件が2回出てきて182件が一度も出てこなかった。更新ゼロでもOFFSETのページングがずれる条件を実測した話
一覧APIをOFFSETで最後まで読むと、データを1行も更新していなくても同じ行が2回出て、別の行が消えることがあります。PostgreSQL 16で1,000件を実測すると重複182件・欠落182件。カーソル方式に替えた最初の版でも800件を取りこぼした経緯と、最終的な実装を残します。
やってみた 2026/9/30
context-modeをエージェント抜きで叩いてみた。99.7%削減の表示と、denyルールが止めないもの
GitHubトレンド4位のcontext-mode(TypeScript製MCPサーバ・v1.0.169・Elastic License 2.0)を使い捨てコンテナで直接叩きました。373KBのログの出力は180バイトの通知に置き換わり、検索の回数制限もREADMEどおり。一方、intent付き要約の見出しは的外れな行を指し、rmのdenyルールは/bin/rmやos.removeを通しました。
AIエージェント 2026/9/29
AIエージェントの申し送りメモが145KBに育っていた。いちばん新しい申し送りは、読み込み上限の外にあった話
定期実行しているAIエージェントの申し送りメモを測ったら、1ファイル145KB・195行に育っていました。読み込みの1ページ目に入るのは47行だけで、最新の申し送りは末尾。毎回読み込まれる索引も25KB上限の82%でした。現在地を先頭に上書きで置き、繰り返す教訓を点検項目に変えた記録です。
やってみた 2026/9/28
エージェント用メモリhindsightをAPIキー無しで試したら、日本語の検索順位は埋め込みではなくリランカーで変わった
GitHubトレンド3位のhindsight(Python・MIT・v0.10.1)を、LLMを呼ばないnoneモードで使い捨てコンテナに入れました。rootだと組み込みPostgreSQLが起動せずタイムアウトだけが返る罠を越えたあと、日本語の記憶は6問中3問しか1位に来ず、埋め込みモデルを替えても順位は1つも動きませんでした。
セキュリティ 2026/9/27
SRIを1行足せば済むと思っていた。CDNのAlpine.jsは「3.x.x」指定で半年に13回中身が変わり、115ページで読み込んで使っていたのは1ページだけだった
CSPを入れたときに宿題にしていたSRIに手を付けました。ハッシュを1行足すだけのつもりが、CDNのURLは版を固定しない「3.x.x」で、半年で13回中身が入れ替わっていました。ハッシュ不一致で問い合わせフォームが丸ごと消えることをブラウザで確かめ、読み込むページを絞って版を固定するまでの記録です。
やってみた 2026/9/26
Paperclipにシェルスクリプトを「雇って」みたら、報告と完了宣言をしないと仕事が終わらなかった
GitHubトレンド1位のPaperclip(TypeScript・MIT・v2026.916.1)を使い捨てコンテナで試しました。Node 22では警告なしに旧版が入り、rootでは起動に失敗。LLMを使わないprocessアダプタで確かめると、コメントと完了ステータスを返さないエージェントは自動で起こし直され、最後はblockedになりました。
セキュリティ 2026/9/25
npm ci が実行しているのは誰のコードなのか。841個の依存でインストールスクリプトを止めて実測した
依存パッケージのインストール時スクリプトは、自分のコードより先に自分の権限で動きます。自社サイトのリポジトリで数えたら841パッケージ中5件、直接入れたのは1件だけでした。--ignore-scripts で止めて再インストールし、生成ファイルの差分・ビルド結果・画像最適化までを突き合わせた記録です。設定したつもりで効いていなかった項目も含めて残します。
やってみた 2026/9/24
Univerをヘッドレスで動かしたら、保存済みの計算結果を既定で信じ込む挙動に行き当たった
GitHubトレンド3位のUniver(TypeScript製オフィス基盤・Apache-2.0・v1.0.2)を使い捨てコンテナで動かしました。Nodeヘッドレスで100,000式が4.8秒と速い一方、保存したスナップショットのキャッシュ値は既定では再計算されず、書き換えた数字をそのまま返します。
品質保証 2026/9/23
同じレビュー指摘を15回、1本ずつ直していた。公開後のHTMLを数えたら4記事が直っていなかった
表に罫線を付けてほしい、というレビュー指摘への是正コミットが15回あり、そのすべてが1ファイルだけの修正だった。104日かけて同じ指摘を潰し続けた結果、公開済みHTMLには罫線の当たっていない表が4記事5つ残っていた。指摘の水平展開を機械で数え直し、暫定対策と恒久対策を分ける基準を決めた記録。
やってみた 2026/9/22
コードレビューCLIが「決定的」と呼ぶ部分を、偽のLLMを立てて全部のぞいてみた
Alibaba製のAIコードレビューCLI open-code-review を使い捨てコンテナで動かしました。課金を避けるためOpenAI互換のモックを自作して、何がコードで決まり何がLLM任せなのか、コメントの位置決めがどこまで耐えるのかを実測しています。
コンテンツ管理 2026/9/21
更新日の欄はあったのに、9記事とも一度も書かれなかった。81記事のgit履歴を数え直したら、公開後に変わった73記事のうち文章が変わったのは20記事だった
自社サイトの記事は公開日しか持たない。ではgitの最終コミットを更新日にすればいい、と最初は考えた。全履歴で数えると81記事中73記事が公開後に変更されていて、その大半はサムネイルの追記と表の色替えだった。文章が変わったのは20記事。一方で更新日の欄を持つ9記事は、タイトルを書き換えられても欄が空のままだった。宣言する更新日と派生する更新日、どちらも単独では使えなかった記録。
やってみた 2026/9/20
paperless-ngx 3.2をDockerなしで入れて日本語の請求書を食わせたら、日付は5月8日になり、検索からは英単語だけ消えた
前日にv3.2.0が出たpaperless-ngxを、composeを使わず素のLinuxコンテナ1台に手で入れました。pipで落ちる依存の56%がtorchなどAI用、日本語OCRは本文が読めても大見出しが消え、2026-08-05は既定のDMYで5月8日に、OCR言語をjpnにした途端に英語の検索語がヒットしなくなる、という設定の連鎖を実測で追いました。
プロジェクト管理 2026/9/19
手順書は書いた当日に3本が画面と合わなくなり、ロードマップは7日目に見直しになった。それでも文書は4か月間1バイトも変わらなかった話
広告運用の計画書・手順書36本を、書いた日から4か月後に読み直して数えた。手順書は追加から4時間53分で乖離が記録され、その記録は7ファイルに散った。計画書の12マイルストーンは7日目に7割が取り下げられたが、決定はチケットにだけ残り、計画書は今日まで同じバイト列のまま。文書を3層に分けて、どこに何を書くべきかを決め直した記録です。
やってみた 2026/9/18
セルフホストAIアシスタントOctopのLLMを偽サーバに差し替えて、1往復で何が送られ何が守られるかを測ってみた
GitHubトレンド7位のOctop(v1.0.0・MIT)を使い捨てコンテナで動かし、LLMの代わりに全リクエストを記録するOpenAI互換モックを置きました。「hello」1発で51.8KB、2ターン目から65KB。既定の防護がwarnでrm -rfが素通りし、blockでも正規表現の外側は通り、/root/**の拒否がドットディレクトリに効かない理由まで、実測とソースで確かめた記録です。
品質保証 2026/9/15
npm update は package.json を1文字も変えなかった。それでも13ページの表が消えて、ビルドは緑のままだった話
依存パッケージを semver の互換範囲内で更新しただけで、自社サイトの13ページから表が消え、CI は型チェックもビルドも緑のままでした。ビルド成果物の全ファイルをハッシュで固定する特性化テストを組み、意味のない差分を正規化して残った27ページを分類し、原因の場所と直し方、受け入れ基準まで落とした記録です。
やってみた 2026/9/14
LocalSendのCLIをコンテナ2台で動かしたら、フォルダは平らになって届き、リンク共有中は暗号化が切れていた
AirDrop代替として知られるLocalSendに、Rust製のCLIが同居していると知って使い捨てコンテナ2台で試しました。ビルド1分10秒、発見から転送まで動いたあとで、フォルダ構造が受信側で平らになる理由、ペアリングが証明書の指紋で決まること、ブラウザ共有中はサーバーごと平文HTTPに切り替わることまで確かめた記録です。
コンテンツ管理 2026/9/13
publishedAt: 2026-08-11 と書いた記事が、ビルドする機械しだいで8月10日になる。日付だけの値が「瞬間」に変わっていた場所を実測した話
記事の日付は YYYY-MM-DD の日付だけで書いています。それが取り込み時に UTC 0時の瞬間に変わり、表示時にビルド機のタイムゾーンで日付に戻されていた。UTC-7 でビルドすると 86 ファイルの日付が 1 日前になる一方、本番は CI が UTC だから偶然正しかった。原因の場所、直し方の比較、検査の持ち方を書いています。
CI/CD 2026/9/11
デプロイは1本ずつ走っていると思っていた。295回のうち58回が重なっていて、newsの一覧は1.5秒差で守られていた
静的サイトの本番デプロイ295回分のGitHub Actionsログを秒単位で復元したところ、58回が別のデプロイと重なっていました。aws s3 syncはサイズと更新時刻で上書きを決めるため、古いビルドが後から走ると新しい記事を消し、新しいビルドは古い書き込みを最新と誤認して黙ります。MinIOで再現し、concurrencyのqueue: maxで直列化すると決めるまでの記録です。
やってみた 2026/9/10
APIキー0本で3D地球儀「God's Eye View」を立ててみたら、キーレスを支えていたのは多段フォールバックだった
GitHubトレンドで見かけた God's Eye View(v0.1.1)を、使い捨ての node:24 コンテナでキーを1本も入れずに起動しました。何が本当に生きたデータなのかをエンドポイント単位で測っていくと、OpenSkyのクレジット節約機構と、ポート公開越しに消える設定パネルに行き当たりました。
Webフォント 2026/9/9
Webフォントを840,472バイト落としていた。しかも本文で使っている600と800は一度も届いていなかった
自社サイトのフォント配信を実測したら、トップページ1回の表示でwoff2を40ファイル・840,472バイト取っていた。一方で頼んでいないウェイトが描画に使われ、自前ホストしたフォントは1バイトも使われていなかった。
AWS 2026/9/7
「静的サイトだから安全」のつもりが、S3のURLを直で叩くと中身が返っていた。OAC+バケットポリシー+WAFで多層防御にした記録
自社サイトはCloudFrontとS3で配信していますが、S3側のオブジェクトURLを直接叩くと中身が返る状態のままでした。OACでオリジンを閉じ、バケットポリシーを特定ディストリビューションだけに絞り、WAFはマネージドルール2本に限定して入れるまでの設計判断と、月額コストの実測を残しています。
やってみた 2026/9/6
エージェントが自分で回す検査は何を通すのか - diagram-designの自己チェックと本体ゲートに同じ改変を8種類食わせた
GitHubトレンド7位のdiagram-design(2.6.12・MIT)を使い捨てコンテナで動かしました。スキル同梱のself_check.pyとリポジトリ側のlint・検証スクリプトに、同じ8種類の改変を食わせて何が止まり何が通るかを突き合わせた記録です。数字と絵が食い違う改変は、自己チェックを全部すり抜けました。
技術検証 2026/9/5
「送信に失敗しました」と出たとき、本当に届いていないのか。フォームの再送が二重登録になる条件を実測した話
自社サイトと広告LPの問い合わせフォームは4か所とも同じ形で、タイムアウトも重複排除の仕組みもありませんでした。応答だけが失われたときに利用者が再送すると問い合わせは2件になります。ローカルに再現環境を立て、タイムアウトだけでは防げないこと、鍵を採番するタイミングが効くことを実測しました。
やってみた 2026/9/4
1GiB制限のコンテナでMagnitudeにモデルを推薦させたら、4.4GBのモデルを勧められた話
GitHubトレンドのMagnitude(0.0.11・Apache-2.0)を使い捨てコンテナで動かしました。ハードウェアプロファイリングがCPUはcgroupを見るのにメモリだけホスト値を返すこと、npm一発の裏で414MiB落ちてくることを実測した記録です。
DevOps 2026/9/1
プレビュー環境は閉じたPRの分が残ると思っていた。実際は開いたままのPRの分が先に消える設計だった
レビュー待ちのPRが24本たまったので、プレビュー環境の後始末を調べた。掃除の仕組みが無いと思って測ったら逆で、オブジェクトの年齢だけを見るライフサイクルが、まだ開いているPRのプレビューを31日で消す設計になっていた話。
やってみた 2026/8/31
checkstyleの終了コードは違反件数そのものだった。ちょうど256件でCIが緑になる
GitHubトレンド8位のcheckstyle 14.1.0を使い捨てコンテナで動かしました。同じ30件の指摘がgoogle_checksでは終了コード0、sun_checksでは30。件数をわざと増やしていったら256件ちょうどで0に戻り、不正な引数もエラー255件と同じ255でした。
やってみた 2026/8/29
AIエージェントに「今のGo」を教えるJetBrainsのCLIを、go.modを差し替えながら測ってみた
GitHubトレンド6位のJetBrains/go-modern-guidelines(Go製・Apache-2.0・HEAD 40781f1)を使い捨てコンテナで動かしました。指針は全54個。go.mod のバージョンを差し替えると出力が1個から54個まで動く一方、go.mod が見つからないときは黙って手元のツールチェーンに落ちます。
コンテンツ管理 2026/8/28
タグは自由入力にした時点で壊れていた。76記事に194種類、142種類は1記事にしか付いていない
Tech Blogのタグフィルターで「品質保証」が見つからず、コンテンツのタグを全部数えてみた。194種類のうち142種類は1記事だけ、フィルターバーは195ボタン32KB。スキーマが型しか見ていないと語彙は収束しない、という当たり前の話を実測した記録です。
やってみた 2026/8/27
作図ツールArchifyのIRを12通りに壊して測ったら、いま手元にあるファイルがコミット時点に無いという理由で弾かれた
GitHubトレンド3位のArchify(Node.js製・MIT・HEAD 9a50605)を使い捨てコンテナで動かしました。エージェントが吐くJSON IRを12通りに壊して、どこまで検証してくれるのかを1ケース1プロセスで測った記録です。ソース参照の検証はピン留めしたコミット基準で、作業ツリーの実在では通りませんでした。
やってみた 2026/8/25
claude-obsidianのガードレールを測ったら、手で書いたページがコミットを止めるのにコミットには入らなかった
GitHubトレンド6位のclaude-obsidian(Python・MIT・v2.1.0)を使い捨てコンテナで動かしました。LLMを一切呼ばない決定的なCLIだけで初期化からGitチェックポイントまで到達でき、そのゲートが実際に何を止めて何を通すのかを6ケースの対照実験で測っています。
プロジェクト管理 2026/8/20
1日1.7件作って1.0件しかマージできない。レビュー待ちの行列を実測したら、2週間分の成果が26分で捨てられていた話
自社サイトのPR378件を実測したら、8月だけリードタイム中央値が1.2時間から98.2時間に悪化していた。CIは2分、詰まっていたのは人間のレビュー。リトルの法則で行列を見て、WIP上限と生成レートを見直した現場記録。
品質保証 2026/8/18
E2Eテストは3か月前から一度も動いていなかった。CIに載せる前に向き先と証跡を作り直した話
Playwrightのスモークテストはリポジトリにあった。ただしCIのどのワークフローからも呼ばれておらず、追加から106日間の実行回数は0。実行コストを測ったら7秒だった。CIに足すだけでは足りず、baseURLの既定が本番のままだとPRの変更を一切見ない緑になる。向き先・再実行・証跡の3点を実測しながら直した記録。
やってみた 2026/8/17
cordisを使い捨てコンテナで動かしたら、設定ミスもinjectの綴り間違いも無言でexit 0だった
GitHubトレンド9位のcordis(TypeScript製メタフレームワーク・MIT・cordis@4.0.0-rc.8)を使い捨てコンテナで動かしました。本体は49KBの単一ファイルで驚くほど軽い一方、cordis.ymlのエントリ形式を間違えてもプラグインが存在しなくてもexit 0で無言、injectの綴りミスはPENDINGのまま黙って止まります。
静的サイト 2026/8/16
存在しないURLがトップページを403で返していた。静的サイトの404を実測して直した話
404ページは作ってあったし、ビルド出力にもちゃんと入っていました。でも実際に存在しないURLを叩くと、返ってきたのは403とトップページのHTML 55KB。S3+CloudFrontの権限モデルとカスタムエラーレスポンスの設定を一つずつ実測して直していった記録です。
やってみた 2026/8/15
spec-kitをAIエージェント抜きで動かした。SPECIFY_FEATUREで指定した機能とは別のフォルダにplan.mdが出た
GitHubトレンド8位のgithub/spec-kit(Python・MIT・v0.16.4)を使い捨てコンテナで動かしました。導入は1秒・15パッケージと驚くほど軽い一方、SPECIFY_FEATUREで機能を指定してもJSONのBRANCHだけが変わり、plan.mdは直近に作った別の機能フォルダに書かれます。
やってみた 2026/8/11
「LLM不要」と書かれたSemanticaをコンテナで動かしたら、クイックスタートの問い合わせが全部空を返した話
GitHubトレンド2位のSemantica(0.6.0・MIT)を使い捨てコンテナでpip installして触りました。READMEのクイックスタートは終了コード0で通るのに、決定の照会は4つとも空。なぜ空なのかをソースまで降りて追い、ベクトル検索側の入口が既定値のまま落ちる理由まで確かめた記録です。
セキュリティ 2026/8/10
x-api-key を付けているから大丈夫だと思っていた。誰でも叩ける問い合わせAPIに層を分けて制限をかけた話
静的サイトのフォームは公開エンドポイントを直接叩きます。ビルド時に焼き込まれるAPIキーは認証にならず、しかも防御のつもりのエラー分岐がクライアント側にしか無いことに気づきました。使用量プラン・WAFレートベースルール・アプリ層・CAPTCHAを層ごとに整理して入れ直した記録です。
やってみた 2026/8/9
プロセスの出自を追うwitrをコンテナで動かしたら、終了コードがドキュメントと食い違った
GitHubトレンド4位のwitr(Go製・Apache-2.0・commit dc4fa1d)を使い捨てコンテナでソースからビルドして触りました。ss も lsof も無い環境でポートの主を当ててくれる一方、README の終了コード表と実測が食い違う箇所があり、--json は環境変数を平文で吐き出します。
AWS 2026/8/8
aws s3 syncの--includeは単体では効かない。HTMLだけキャッシュなしのつもりが、全ファイルno-storeで配信されていた話
デプロイスクリプトはHTMLとアセットでCache-Controlを出し分けているつもりでした。ところがフィルタの書き方が一箇所抜けていて、実際には全ファイルがno-storeで配信されていた。気づいた経緯と、キャッシュ設計をどう組み直したかを書いています。
やってみた 2026/8/5
AIエージェントの制御プレーンLoopXを使い捨てコンテナで動かし、should_run=trueでも配信を止めるゲート設計を運用目線で見た
GitHubトレンド1位のLoopX(v0.4.1・依存ゼロのPython製)を使い捨てコンテナでpip installして触りました。LLMを呼ばず、長時間動くAIエージェントの目標・ゲート・クオータ・証跡だけを保つローカル制御プレーンです。should_run=trueでも『配信は許可しない』二段のゲートに詰まった、その理由を運用目線で追った記録です。
やってみた 2026/8/3
Rust製pdf-inspectorを使い捨てコンテナで動かし、「テキストPDFなのに抽出結果が空」を踏んだ話
GitHubトレンドで見かけたfirecrawl/pdf-inspector(Rust製・OCR不要のPDF分類とテキスト抽出)を、使い捨てのrustコンテナでソースからビルドして試しました。検出は数十ミリ秒と速い一方、テキストPDFと判定されても抽出結果が空になるCIDフォントの例に遭遇。抽出の前に『抽出できるPDFか』を測る設計の意味を、QA目線で確かめた記録です。
AIエージェント 2026/8/2
AIエージェントに自律でgit操作させたら、隣のリポジトリを汚した話——作業ディレクトリ分離とコミット前ガードの設計
AIワーカーを並列で走らせたら、あるエージェントが本来触るべきでない上位リポジトリにコミットしていました。原因はHEADと作業ディレクトリの取り違えと、.gitの無い場所でのgit add。チケット単位の物理分離、コミット前のリポジトリルート検証、環境側で強制する多層ガードで作業事故を防いだ設計をまとめます。
やってみた 2026/8/1
自己ホスト型プロジェクト管理「Kaneo」を使い捨てコンテナで動かしてみたら、SPAとAPIの間で何度もつまずいた話
GitHubトレンドで見かけた自己ホスト型のプロジェクト管理ツールKaneo(v2.12.1)を、使い捨てのnodeコンテナにPostgresごと同居させてソースから起動しました。pnpm devで一発……のはずが、monorepoの未ビルド・localhostとIPv4の食い違い・CORS・Viteのenv優先順位と、SPA+API構成ならではの罠を順に踏んだ記録です。
やってみた 2026/7/30
WebGPUの3D建築エディタ「Pascal Editor」を使い捨てコンテナで動かす——monorepoとdev/prodで二度ハマった話
GitHubトレンドで見かけたpascalorg/editor(TypeScript/MIT)を使い捨てnodeコンテナで起動しました。bun+Turborepo構成で、アプリ単体をnext devするとパッケージが解決できず先にビルドが要ります。開発モードだと3Dビューがローダーから戻らず、本番ビルドにしたら一瞬でWebGPUの空間が描画され、壁も引けました。
品質保証 2026/7/29
Lighthouseもaxeも緑。なのに見出しが1行ずれてた。プレビュー環境にVRTを入れた話
動作は壊れていないのに見た目だけ崩れる。単体テストもLighthouseもaxeも拾わないCSS回帰を、PR単位のプレビュー環境にビジュアルリグレッションテストを入れて止めた記録。撮影対象の絞り方、フレーキーの潰し方、ベースライン承認の型を現場基準でまとめた。
やってみた 2026/7/28
ブラウザだけで動く自己ホスト型GIS「GeoLibre」を使い捨てコンテナで動かし、『データはローカル』の実際を運用目線で確かめた
GitHubトレンドで見かけたGeoLibre(v2.3.0)を、使い捨てのnodeコンテナでソースから起動しました。npm一発でVite開発サーバが立ち、ブラウザで30種超の地理データ形式を扱えます。ただし『データはローカル保持』の裏で基盤タイルとジオコーディングは外部の無料サービスに出ていく——その線引きを運用目線で確認した記録です。
やってみた 2026/7/26
AI生成UIの『っぽさ』を60ルールで機械検出するimpeccableを、自作のダサいHTMLで試したら仕込んでないa11y違反まで刺さった
GitHubトレンドで見かけたimpeccable(JavaScript製)を使い捨てコンテナで動かしました。APIキー不要の決定的検出器detectに、わざとAIっぽく書いたHTMLを食わせると13件。gradient-textや低コントラスト(実測3.8:1)だけでなく、仕込んでいない見出し飛ばしまで指摘され、DESIGN.md有無で挙動が変わることも実出力つきで確かめた記録です。
フロントエンド 2026/7/25
axeは緑でaria属性も付けていた。でもキーボードだけで自社サイトを操作したら詰まった話
Lighthouseのアクセシビリティは92点、フォームにもaria属性を一通り付けていた。それでもマウスを使わずTabキーだけで問い合わせフォームまで行こうとしたら、メニューが閉じない・フォーカスが画面外に飛ぶ・エラーが読み上げられない。自動チェックで測れない部分を手で潰していった記録です。
やってみた 2026/7/24
オフライン文法チェッカHarperを使い捨てコンテナで動かしたら、CLIは実は『デバッグ用の裏口』だった話
GitHubトレンドで見かけたRust製のオフライン文法チェッカHarper(v2.6.0)を、使い捨てのrustコンテナでソースからビルドして動かしました。harper-cliはcrates.io未公開の自称『デバッグ用ツール』で本命はLSP。7ルールの検出、us/british方言差、228KBを0.6秒で捌く速度と、拾わない誤りまで実出力つきで残します。
セキュリティ 2026/7/23
セキュリティヘッダは付けていたのにCSPだけ無かった。静的サイトにCSPを入れて自分のスクリプトを全部止めた話
HSTSやX-Frame-Optionsは設定済みでも、XSSの主防御であるContent-Security-Policyが抜けていました。SSG+CloudFront配信ではnonceが使えないという制約に気づき、インラインはハッシュ、外部CDNはドメイン許可でCSPを段階導入した実装記録です。
やってみた 2026/7/22
P2P転送CLIのcrocを使い捨てコンテナで動かしたら、go installも--codeも素直に通らなかった話
GitHubトレンドで見かけたP2Pファイル転送CLI croc(v10.5.0)を、使い捨てのgolangコンテナで動かしました。go installはGo1.25要求で弾かれ公式インストーラでバイナリ導入、ローカルrelayを立てて自己完結。1.4MBの転送とsha256一致まで見えた一方、UNIXでは--codeが拒否され送受信ともCROC_SECRETが要る挙動を、実出力つきで残します。
AWS 2026/7/21
GitHub ActionsのAWSキーを0本にしたら、PRプレビューだけが静かに落ちた話
本番デプロイとPRプレビューで長期アクセスキーを共用していたのをOIDCに移行しました。信頼ポリシーのsubをmainブランチに絞った結果、pull_requestトリガーのプレビューだけが認証エラーで落ち、ロールを2本に分ける設計に落ち着くまでの記録です。
やってみた 2026/7/20
APIキーを1本も登録せずにOmniRouteを起動したら、LLMの応答が返ってきた話
268プロバイダを束ねるAIゲートウェイOmniRoute v3.8.48を、使い捨てのnode:22コンテナにnpmで入れて動かしました。プロバイダ0件のまま/v1/chat/completionsが通り、ログを見ると6段のフォールバックの果てに応答していました。200が返っていても成功とは限らない、という実例です。
品質保証 2026/7/19
カバレッジ92%は緑なのにバグが出る。テストの質をミューテーションテストで測った話
AIにテストを量産させてカバレッジは90%台まで上がったのに、本番の小さな取りこぼしが減らない。テストの『質』をミューテーションテストで初めて測ってみたら、見積り計算モジュールのスコアが58%しかなかった。生き残ったミュータントから弱いテストを特定し、CIの品質ゲートにするまでの記録。
やってみた 2026/7/18
APIキーもクラウドも要らないwigoloで、AIエージェント用のWeb検索を使い捨てコンテナで試してみた
「キーもクラウドも従量課金もなし」を謳うwigoloを、使い捨てのnode:22コンテナにnpxで入れて動かしました。search/fetch/crawlはキーレスで動き、検索は再ランクされた根拠つきで返る。ただ初回は裏でオンデバイスのモデルをDLするので自己申告6秒・実測90秒という落差もありました。実出力つきで残します。
やってみた 2026/7/18
code-review-graphを使い捨てコンテナで動かしたら、shallow cloneで肝心の機能が黙って死んでいた
AIのコードレビュー用にコンテキストを削るcode-review-graphを、使い捨てのpython:3.12コンテナにpipで入れて動かしました。ビルドは185ファイルを5.5秒。ただ--depth 1のshallow cloneだとdetect-changesがHEAD~1を辿れず黙って0件に落ちる。unshallowしたら19関数・リスク0.55まで見えた過程を実出力つきで残します。
フロントエンド 2026/7/18
Lighthouseは95点なのにガタつく。静的サイトのCLSを実測して潰した話
Lighthouseのスコアは高いのに実機だと表示がガタつく。原因は画像のサイズ未指定・日本語Webフォントのスワップ・遅延で挿入される要素だった。CLSをラボとフィールドの両方で実測して、領域予約で潰していった記録です。
セキュリティ 2026/7/15
npm audit の high 9件に毎回身構えるのをやめて、静的サイトの依存脆弱性にトリアージ基準を作った話
リリース前に npm audit を叩くたび high が9件出て手が止まる、を解消した記録。--omit=dev で本番向けに絞ろうとしたら1件も減らなかったところから、配信形態(Astroビルド→S3→CloudFront)に合わせて到達性で3分類する基準を作りました。件数を0にするより、lockfile固定と定期更新に労力を寄せる話です。
やってみた 2026/7/14
最新のHome Assistant CoreをPython3.14のslimコンテナにpipで入れてみたら、UIが出るまで沼だった
GitHubトレンドで見たHome Assistant Coreを、使い捨てのpython:3.14-slimコンテナにpipで入れて起動してみました。pipは32秒で済んだのに、frontendがrecovery modeに落ちたりダッシュボードがLoading dataで固まったり。原因が全部slimのgcc不在に繋がる過程を実出力つきで残します。
AWS 2026/7/13
Lambda監視のCloudWatchアラームが鳴りっぱなしだったのを、しきい値とメトリクスフィルタで作り直した話
フォーム基盤のLambdaに一通りCloudWatchアラームを仕込んだら、数ヶ月後には全員が通知をミュートしていた。標準メトリクスの限界、メトリクスフィルタの『データ不足』落とし穴、しきい値のSLO逆算とM out of N、そして見落としていたログ取り込みコストまで、監視を作り直した現場記録です。
やってみた 2026/7/12
Pythonスクリプトに@flowを付けるだけ、のPrefectを運用目線で動かしてみた
GitHubトレンドで見かけたPrefectを使い捨てコンテナで動かしてみました。pip install一発でflow/taskデコレータを付けるだけの手軽さと、リトライ・ephemeralサーバ・UIのAPI接続まわりでハマった点を、運用に載せる前提で整理しています。
品質保証 2026/7/11
型チェックとビルドは通るのにリンク切れは残る。コンテンツCIに静的検査ゲートを足した話
型チェックとビルドが緑でも、リンク切れや表記ゆれはすり抜ける。自社サイトのCIにリンク切れ検査とtextlintの静的検査ゲートを足して、レビュー前に機械で弾けるところは弾く運用にした実践記録。守備範囲の線引きと誤検知の抑え方をまとめた。
やってみた 2026/7/10
話題のMCPサーバー『Desktop Commander』を、クライアント抜きで生のJSON-RPCから直接叩いてみた
GitHubトレンド1位のDesktop Commander MCPを、クライアントを介さず自作クライアントから生のJSON-RPCで直接叩いてみました。get_configのブロックリストやtelemetry既定値、write_fileがENOENTでコケた話、node REPLに式を投げたら42が返った話を実出力とともに残します。
PMBOK 2026/7/9
PMBOKのリスク管理を『リスク登録簿ライト版』で現場運用したら初めて機能した話
立派なリスク管理表は作っても2回目以降は誰も更新しない。発生確率×影響度の簡易スコアで5〜7件だけ並べ、週次ミーティングの冒頭5分で回すライト運用にしたら、初めてリスク管理が形骸化せずに機能した。中小受託の現場でやっている具体的なテンプレと判断基準を書く。
やってみた 2026/7/8
OfficeCLI とは|Word/Excel/PowerPoint生成CLIの使い方をDockerで検証
AIエージェント向けと銘打つC#製CLI「OfficeCLI」とは何かを、インストールから使い方まで実機で検証。単一バイナリでWord/Excel/PowerPointを生成でき、Excel本体なしで数式が評価される点が最大の驚き。libicu不足のつまずきやセル指定の記法も、実際の出力とともに解説します。
見積もり 2026/7/7
見積もりが当たらない現場で、外さないために実際にやっている技法
勘の見積もりを手順のある見積もりに変えた現場記録。前提条件の言語化・WBSの半日粒度分解・軽量な三点見積もり・バッファを見せて握る運用を、当たった案件と外した案件の実数値とともに書きました。
やってみた 2026/7/6
サーバー不要のベクタDB「zvec」を使い捨てDockerで試したら、全文検索とフィルタで軽くハマった
GitHubトレンドで見かけたAlibaba製のin-processベクタDB zvecを、使い捨てDockerコンテナでpip installから試した。ベクタ検索は数十msで動くが、READMEの例が非推奨APIだったり、フィルタがSQL風構文で==を弾いたり、文字列フィルタにインデックスが要ったりと、運用視点で気になった点を実出力とともに記録する。
コードレビュー 2026/7/5
新人のPRレビュー指摘が、結果的にベテランより筋が良かった話
入社3ヶ月の新人が投げた素朴な質問が、ベテラン3人が半年スルーしていた前提の見落としを突いた話。指摘の人ではなく中身で評価するレビュー文化へどう運用を変えたか、PRテンプレやラベル運用まで具体的に書きました。
やってみた 2026/7/4
herdr とは|AIエージェント用ターミナル多重化ツールの使い方をDockerで試した
GitHubトレンドで話題のRust製ツール herdr とは何かを、インストールから使い方まで実機で解説。ヘッドレスDockerでは通常のTUIが起動しないため、herdr server と socket CLI で workspace・pane 操作やエージェント状態管理を動かした手順を、実際の出力つきでまとめました。
PMBOK 2026/7/3
PMBOKを中小受託の現場サイズにテーラリングして実際に使っている話
PMBOKを教科書通りに持ち込んだら、3人・2ヶ月の案件に管理ドキュメントだけで数十時間かかった。何を残し何を削ったかを知識エリアごとに開示し、案件規模での省略基準と、変更要求をRedmineチケットに軽量に記録する運用まで、現場でやっていることをそのまま書く。
やってみた 2026/7/2
chrome-devtools-mcpを使い捨てDockerで動かしてみた——CLIとサンドボックスで二度詰まった話
GitHubのトレンドで見かけたChrome DevToolsの公式MCPサーバを、MCPクライアント抜きの同梱CLIだけで動かしてみた。docs通りのコマンドが通らず、rootコンテナではChromeが即死する。--browserUrlで自前Chromeに繋いでようやくnavigate・screenshot・Lighthouseまで観測できた実録。
やってみた 2026/6/30
話題のsupervisionを使い捨てDockerで動かしてみた——いきなりlibGLで足止めされた話
GitHubのトレンドで見かけたroboflow/supervisionを、使い捨てのDockerコンテナで実際に動かしてみた。pip一発で入るのに最初のimportでlibGL.so.1が無いと怒られ、そこからBoxAnnotatorやIoU・PolygonZoneまで触ってみた一部始終。バージョンや実出力もそのまま載せています。
PMO 2026/6/29
進捗報告のフォーマットを変えただけで、クライアントの満足度が上がった話
毎週A4で2枚書いていた進捗レポートが、実は冒頭しか読まれていなかった。先輩のひと言で『結論→根拠→次のアクション』の3段に削り、数字よりリスクの見える化を優先したら会話の質が変わった——入社2年目の僕の失敗と学びの記録。
品質保証 2026/6/25
テスト戦略を中小案件の規模で現実的に敷くための考え方と手順
「全部テストする」が破綻した中小案件で、テストピラミッドを現場サイズに翻訳し、特性化テスト・リスクベースの集中・手動と自動の線引きで労力を配分した実践記録。どこに何割かけるかの判断基準を表で示す。
Markdown 2026/6/23
Markdown編集を非エンジニアに浸透させるための実装ノウハウ
WordPressのリッチエディタに慣れた非エンジニアにMDX編集を続けてもらうために、プレビュー・スキーマ検証・テンプレ化のどれが効いたか、画像挿入でハマった話、最終的にAIドラフト×人間編集に落ち着いた経緯をまとめました。
セキュリティ 2026/6/23
受け取ったリクエストを信用していい根拠を作る:HMAC署名検証とJWT検証で踏んだ地雷
外部からのWebhookとクライアントからのAPIリクエストを「送り主を信用していい根拠」で検証する設計の記録。HMAC署名はraw bodyに対して計算し定数時間で比較する、JWTはデコードと検証を混同しない、検証は一箇所に集約する——社内のLambda構成で実際に踏んだ落とし穴とあわせて整理した。
AWS 2026/6/19
広告LPのリード獲得基盤をS3+CloudFront+Lambda+Apps Scriptで組んだ現場構成
自社の広告LP(/lp/ai-web)のフォーム送信基盤を実際に構築・運用した記録。CORS preflightを避けるために送信経路をApps ScriptとLambdaで出し分けた判断、エンドポイントを環境変数で切り替える運用、本番とプレビューでの検証手順、そしてform_submitがGA4で二重計上された落とし穴までを設定とコードレベルで開示します。
Playwright 2026/6/17
「ローカルでは緑なのにCIで落ちる」E2Eテストを安定させる:Playwrightのflaky潰し
ローカルでは通るのにCIだけ赤くなる不安定なE2Eテストを、原因を「固定待機・テストの独立性・脆いセレクタ・並列実行」の4つに切り分けて潰した記録。Playwrightのauto-waitとweb-firstアサーション、fixtureによる状態分離、CIでのretries/workers/trace設定まで、flaky率の実測値とあわせて整理した。
SQLチューニング 2026/6/15
「インデックスを貼ったのに遅い」をEXPLAINで潰す:効かないSQLの見抜き方
インデックスを貼ったのに速くならない、というスロークエリ相談を、EXPLAINのtype/keyの読み方から、効かない典型パターンの書き換え、複合インデックスの列順、貼りすぎで更新が遅くなるトレードオフまで、実測値ベースで整理した。
思考法 2026/6/13
「考え方、知ってますか?」と詰められた日:思考にも手順がある話
入社2年目の頃、先輩に「あなたの考えるはひらめき待ち」と言われて気づいた思考のメタスキル。深さ・広さ・構造化・時間の4軸と帰納法・演繹法を使い分けると、問題解決が「手順実行」に変わる話。
属人化 2026/6/11
コーポレートサイト運用の属人化を解消する5ステップ
「あの人が辞めたら誰も触れない」状態になってから動いても遅い。コーポレートサイト運用の属人化を解消するための5ステップを、実際に取り組んだ経緯と初期の失敗も含めて整理した。
セキュリティ 2026/6/9
HTTP/2 Bomb(CVE-2026-49975)とは|影響製品と対策・静的サイトが安全な理由
2026年6月公表のHTTP/2 Bomb(CVE-2026-49975)は、Apache/nginxを直撃しPC1台でサーバを枯渇させるDoS脆弱性。影響製品と修正バージョン、今すぐ確認すべき対策を整理し、Astro+S3+CloudFront構成が構造的に攻撃面を持たない理由を責任共有モデルの観点で解説します。
プロジェクト管理 2026/6/9
受託案件の現場をRedmineチケット駆動で回すための具体的な運用ルール
「チケットを切っているのになぜ現場が回らないのか」を問い直した記録。粒度・ステータス遷移・完了条件の3つを運用ルールに落とした結果、手戻り率が約40%減り、AIエージェントも同じチケット運用に乗せられた設計判断を開示する。
セキュリティ 2026/6/7
問い合わせフォームのPIIをSHA-256でハッシュ化して計測連携した設計
問い合わせフォームに拡張コンバージョン計測を導入する際、生PIIをどこにも残さずSHA-256ハッシュだけで送る設計にした実装記録。正規化漏れによるハッシュ不一致の落とし穴、utm_termのマスキング判断、社内でのPII最小化の説明まで。
品質保証 2026/6/5
「品質は工程で作り込む」シフトレフトQAを受託現場で実践した話
検収でしか見つからないバグに悩んでいた受託現場で、受け入れ基準の先付け・CI配置・指標可視化を3か月で導入した実践記録。手戻り率が約60%減少した。
ヘッドレスCMS 2026/6/1
ヘッドレスCMS比較 2026年版:中小企業のコーポレートサイトに本当に合う選択肢
「コーポレートサイトにもヘッドレスCMSを入れよう」という流れに一度乗って反省した経験から、国産・海外サービスの料金と運用前提を並べ直し、Git管理(MDX)との境界線や非エンジニア編集者目線の評価軸を整理した2026年版の比較記録。
セキュリティ 2026/5/30
プラグイン由来の脆弱性とCVE対応コストの実態
WordPressプラグインのCVE対応に実際どれだけ工数がかかるか、実案件データで分解。「無料CMS」の隠れコスト、プラグイン数とCVE件数の相関、静的化・プラグイン削減・WAFの費用対効果比較まで。
要件定義 2026/5/28
打ち合わせ中に要件が180度変わった時に、まずやったこと
打ち合わせで「やっぱりAじゃなくてBで」と言われて頭が真っ白になった話。その場で答えなかった理由、持ち帰って書き出した3項目、議事録に「なぜ変わったか」を残すルールの効果、要件変更を前提にしたスケジュール設計について。
技術的負債 2026/5/26
「とりあえず動く」状態で渡ってきたコードを引き取った最初の3日間
テストなし・ドキュメントなし・「動いています」という口頭引き継ぎだけのバッチ処理を受け取った最初の3日間。壊さずに価値を出すための初動と、そこで抑えた衝動が後から大きく効いてきた話。
Astro 2026/5/24
WordPress → Astro移行の現実的タイムライン:6〜10週間の内訳を公開する
WordPressからAstroへの移行を複数案件経験して分かった、現実的なタイムラインの内訳。6週で終わる案件と10週かかる案件の差、詰まりやすい工程上位3つと顧客側タスクの所要時間を率直に整理した。
WordPress 2026/5/20
WordPressプラグイン障害が中小企業で止まらない構造的な原因
中小企業のWordPressサイトでプラグイン由来の障害が繰り返し起きる理由を、依存関係・更新サイクル・体制の3軸で整理する。「止まったら直す」運用と「止めない設計」のコスト比較も含めて。
Astro 2026/5/16
xecin.jpをAstroで運用して1年、ドッグフーディングで分かった現実
自社サイトをAstroに移行して1年が経ち、想定通りだった部分と想定外に手間だった部分を正直にまとめた。コンテンツ更新回数やビルド回数のデータも公開しつつ、他社にも勧められる構成かへの今の答えも書いた。
プロジェクト引継ぎ 2026/5/15
引き継いだコードを動かしたら、半年以上動いていない機能があった話
「ちゃんと動いています」と言われた受注管理システムを引き継いで実際に動かしてみたら、メール通知機能が半年以上止まっていた。誰も気づかなかった理由と、引継ぎ時のチェック方法を変えた話。
WordPress 2026/5/12
WordPress / PHPのEOLにどう向き合うか:先送りせず判断するための選択肢整理
PHP 8.1のEOLを機に、複数のクライアントサイトで延命か乗り換えかの判断を迫られました。先送りした場合のリスクと、選択肢ごとのコスト構造を整理した記録です。
デプロイ 2026/5/8
金曜夕方のデプロイで本番が壊れた話と、社内ルールが変わった経緯
金曜17時のデプロイで本番が18分間停止した一件を、ポストモーテムで人ではなく仕組みの問題として整理した経緯。金曜午後デプロイ禁止とリリースチェックリストが定着するまでのチームの合意形成の話。
静的サイト 2026/5/6
コーポレートサイトの静的化、メリット・デメリットを正直に比較する
静的化で何が得られ何が失われるか。表示速度・セキュリティ・運用コストの実数値と、会員機能やフォームの代替案の現実を踏まえ、どんなサイトに向くか向かないかを正直に書きます。
AIエージェント 2026/5/4
AIに作業規約を渡して管理できる存在にした:CLAUDE.mdという設計思想
AIを「管理できる存在」にするには、就業規則(CLAUDE.md)・引き継ぎ書(ハンドオーバーコメント)・業務日報(監査ログ)という人事制度の概念をAI設計に適用することが有効でした。自律性と統制のバランスをどう取るか——今の考えを共有します。
上流工程 2026/4/30
AIが進化するほど、要件定義は人間の仕事になっていく
AIが実装を自動化する時代だからこそ、「何を作るか」を決める上流工程の価値は高まっている。実プロジェクトの失敗経験をもとに、人間にしか担えない要件定義と意思決定の本質を考える。
AIエージェント 2026/4/28
RedmineをAIチームのメッセージキューとして使う設計にした理由
AIエージェントを組織に統合するとき、最初はSlackをハブにしようとしました。でも最終的にRedmineを選んだのには理由があります。ステータス遷移をプロトコルとして使い、チケット履歴を監査ログとして活用する——既存チームのワークフローを変えずにAIを追加できた設計の話です。
AWS 2026/4/27
AWS Bedrockで最初にLLMを呼び出すまでに詰まったところ全部書く
AWS BedrockでClaude 3 Sonnetを呼び出すまでに詰まったポイントをまとめました。Model Accessの申請忘れ、IAMポリシーの落とし穴、boto3でのAPI呼び出し方法など、ドキュメントだけでは分かりにくかった部分を正直に紹介します。
Astro 2026/4/24
WordPressをやめてAstro+S3+CloudFrontに移したらサーバー代が月数万円→数百円になった話
コーポレートサイトをWordPressからAstro+S3+CloudFrontに移行した経緯と設計判断を記録。Lighthouseスコアが60点台から90点台に改善し、月々の運用コストも劇的に削減できた実例をまとめます。
Claude 2026/4/22
CMSをやめてAIエージェントにGitHub経由でコンテンツ更新させる仕組みを作った話
WordPressの維持運営コストに限界を感じAstro+MDX管理へ移行。コンテンツは人間がMDXで書き、依存関係の更新・セキュリティパッチ対応などの運用作業はAIエージェントがGitHub API経由でPRを出す——その役割分担の設計をまとめました。
PMO 2026/4/20
炎上プロジェクトに途中参画して最初の2週間でやったこと
Javaの炎上プロジェクトに2年目で放り込まれた体験談。コードより先に人とプロセスを理解すべきだと知らなかった失敗から、小さな貢献でチームの信頼を積み上げ、技術的負債を整理するまでの2週間を時系列で振り返ります。
Tailwind CSS 2026/4/19
Tailwind CSS v4へのアップグレードで地味にハマったポイント集
v3からv4に上げる際に踏んだ地雷を、移行手順・theme()廃止・カスタムユーティリティ・Viteプラグインの4軸で正直にまとめました。公式ドキュメントには出てこない実地の落とし穴が中心です。
AIエージェント 2026/4/15
朝ミッションを渡すだけで夕方完成している:AIエージェントを社員として組み込んだ話
AIエージェントを『ツール』ではなく『社員』として設計することで、朝にRedmineへチケットを登録して夕方レビューするだけの運用が成立した話。既存のワークフローを変えずにAIを組み込めた設計上の理由と、現時点での限界をまとめました。
Astro 2026/4/13
超低価格・超高速・AIで回す次世代コーポレートサイトのフルスタック構成を公開する
自社コーポレートサイトをAstro + S3 + CloudFrontで構築し、PRベースで効率よくコンテンツ更新を回す構成のアーキテクチャ全体像、パフォーマンス、月額数百円の運用コストの内訳を公開します。
Python 2026/4/10
Pythonで受注メール解析を自動化して月80時間の手作業を消した方法
EC案件で取引先ごとにフォーマットが違う受注メールに振り回された末、正規表現を捨てて構造化パーサーに切り替えたら安定した話。Lambda + SESでの運用構成もまとめました。
Astro 2026/4/8
Astro Content Collections 実装ガイド|Zodで型安全なコンテンツ管理
AstroのContent CollectionsとZodで、Markdown/MDXを型安全に管理する実装方法を解説。スキーマ定義の書き方、draft/publishedの下書き運用でコケた対処、MDXとReact Islandsの使い分け、ビルド時バリデーションの効かせ方まで、実際のコードと失敗談つきでまとめました。
AIエージェント 2026/4/6
AIワーカー3台並列で人間1人が3倍の仕事量を回せるようになった話とコスト試算
AIエージェントを複数並列で動かし、人間1人の監督で3倍の作業量をこなす体制を構築した実体験と、実際にかかったコストの内訳をまとめました。
AWS 2026/4/3
PR単位のプレビュー環境をCloudFront + S3で低コストに構築した話
Netlify/Vercelを使わず、既存のAWSインフラを活かしてPRごとのプレビュー環境を構築した経緯と、S3のパス設計でハマった話をまとめました。
お知らせ 2025/3/15
会社サイトをリニューアルしました
創業から8年。お客様・パートナーの皆様に支えられてここまで来られました。感謝の気持ちを込めて、コーポレートサイトをフルリニューアルしました。