Skip to content

Instantly share code, notes, and snippets.

View hdknr's full-sized avatar
💭
I may be slow to respond.

hdknr hdknr

💭
I may be slow to respond.
View GitHub Profile
@hdknr
hdknr / django-mptt-blog.md
Created April 20, 2026 00:58
django-mptt はなぜ unmaintained なのか — そして django-tree-queries への移行

django-mptt はなぜ「unmaintained」と書かれているのか — そして django-tree-queries への移行

django-mptt の README を開くと、いきなり以下の文言が目に飛び込んでくる。

This project is currently unmaintained

You can find alternatives to django-mptt on Django Packages. Maybe you do not need MPTT, especially when using newer databases. See django-tree-queries for an implementation using recursive Common Table Expressions (CTE).

「単に飽きて投げ出した」のか、それとも「技術的に役目を終えた」のか。本稿では django-mptt のリポジトリ、CHANGELOG、ソースコードを実際に読んで、その背景と後継への移行可否を整理する。

@hdknr
hdknr / claude-code-silent-degradation.md
Created April 3, 2026 00:06
Claude Code 開発で機能が静かにデグレードする問題と対策

Claude Code 開発で機能が静かにデグレードする問題と対策

TL;DR

Claude Code でリファクタリングや新機能追加を行うと、既存機能の出力品質が意図せず劣化することがある。機能は正しく動いておりテストも通るが、ユーザーが期待する情報が出力から消えている。これは「新しいコードパス」に注力するあまり「既存パスの出力同等性」が見落とされるために起きる。

何が起きたか

経緯

Claude Code でのDB開発: ALTER TABLE が漏れる落とし穴

TL;DR

Claude Code(AIコーディングアシスタント)に SQLAlchemy モデルへのカラム追加を依頼すると、models.py の変更とテストは通るが、既存DBへのマイグレーション(ALTER TABLE)が漏れる。テストは毎回クリーンなDBで実行されるため、本番で初めてエラーが発覚する。

何が起きたか

経緯

Claude Code + Self-hosted Runner: 「Auto mode is unavailable for your plan」エラーの原因と対処

症状

GitHub Actions の self-hosted runner で claude --print を使った自動処理が突然動かなくなった。

claude CLI failed (rc=1): stdout=Auto mode is unavailable for your plan
@hdknr
hdknr / llm-prompt-hardcode-bug.md
Last active March 27, 2026 04:11
「値は計算されていた。ただ届いていなかっただけ」— LLMエージェントプロンプトのハードコード問題

「値は計算されていた。ただ届いていなかっただけ」— LLMエージェントプロンプトのハードコード問題

TL;DR

自立型トレーディングシステムで、投資目標の進捗に応じてリスクパラメータを動的に調整する機能を実装した。計算ロジックは正しく動いていたが、計算結果がエージェントのプロンプトに届いていなかった。プロンプト内の数値がプレーンテキストでハードコードされていたため、エージェントは常に保守的な固定値に従い続けていた。


背景

@hdknr
hdknr / 01-planning.md
Created March 26, 2026 08:39
Claude Code で Laravel→Django 全自動移行をやってみた(全3回)

Claude Code で Laravel→Django 全自動移行をやってみた(1/3)計画編

はじめに

業務管理システム(PHP/Laravel 6.20)を Python/Django 4.2 に移行するプロジェクトを、Claude Code の自律実行でほぼ全自動で完遂しました。

  • 移行元: Laravel 6.20 / PHP 8.0 / MySQL 5.7 / Blade テンプレート
  • 移行先: Django 4.2 LTS / Python 3.11+ / MySQL 8.0 / Django Templates
  • 所要時間: 約 5.5 時間(準備フェーズ除く)
  • 成果物: 17 モデル / 50+ テンプレート / 199 テスト / 15,000 行の Python コード

AWS DMS Serverless の OOM 障害と監視の盲点 — 検知漏れの根本原因と対策

はじめに

AWS DMS Serverless Replication(CDC モード)が OOM(Out of Memory)で failed 状態になり、自動再起動の仕組みが検知できずに長期間停止していた問題について、根本原因と対策をまとめます。

構成

RDS (MySQL) → DMS Serverless (CDC) → S3 (Parquet)

開発サーバーの Let's Encrypt 証明書が切れたので自動更新できるようにした

きっかけ

ある日、開発環境の Web アプリにアクセスしたら証明書の期限切れ警告が表示された。

確認してみると、ワイルドカード証明書 (*.dev.example.com) がちょうどその日に期限切れになっていた。さらにもう1つ古い証明書も半年前に失効済み。

Certificate Name: dev.example.com-0001
@hdknr
hdknr / chatgpt-voice-mode-14-day-english-speaking-golden-prompts.md
Created March 6, 2026 07:27
ChatGPT音声モード × 14日間英会話特訓 — 詰まった言葉がスラスラ出る4つの黄金プロンプト

ChatGPT 音声モード × 14 日間英会話特訓 — 詰まった言葉がスラスラ出る 4 つの黄金プロンプト

@technocrat_s 氏のポストで紹介された記事が話題になっています。

【検証】ChatGPTと14日間、ガチの「英会話」特訓。詰まった言葉がスラスラ出る黄金プロンプト4つ

ライフハッカー・ジャパンの記事(原文: MakeUseOf / Saikat Basu)は、在宅勤務でスピーキング力が錆びついたライターが ChatGPT の高度音声モード(Advanced Voice Mode)をコーチに見立て、14 日間の集中特訓を行った検証記事です。思考と発話の間の「0.5 秒の遅れ」を消すために設計された 4 つのプロンプトと、その結果を具体的に報告しています。

問題 — 「考えてから話す」0.5 秒の壁

@hdknr
hdknr / github-actions-script-injection-cicd-security-guide.md
Created March 6, 2026 07:26
GitHub Actions スクリプトインジェクション完全解説 — ${{ }} を run に書いた瞬間、攻撃者にシェルを渡している

GitHub Actions スクリプトインジェクション完全解説 — ${{ }}run に書いた瞬間、攻撃者にシェルを渡している

『GitHub CI/CD実践ガイド』著者の tmknom 氏(@tmknom)が、GitHub Actions のスクリプトインジェクションを解説した Zenn 記事を引用し、こう呼びかけています。

はい、というわけでしてね。みんな『GitHub CI/CD実践ガイド』を、穴が開くまで読んでくださいね!

引用されている kou_pg_0131 氏の Zenn 記事は、GitHub Actions の run ステップで ${{ }} テンプレート式を使う際のインジェクション脆弱性を実演付きで解説した記事です。2025〜2026年にかけて GitHub Actions のサプライチェーン攻撃が急増しており、この知識はすべての開発者にとって必須になっています。

何が危険なのか — 30秒で理解する