AIコーディング近況
2025-10-26 に次の記事を書きました。
これは、私のAI利用略歴と、当時は主に Claude Code(仕事)と Codex CLI(プライベート)を使い分けていた、という内容でした。
本記事では、その後の近況を記録しておきます。
Kotlin の @JvmInline value class が Spring MVC のパラメータバインディングで壊れる話
TL;DR
- Kotlin の
@JvmInline value classを@ModelAttributeで受ける data class のプロパティに使うと、リクエスト時にBeanInstantiationExceptionが発生します。 - 原因は Kotlin リフレクション API が value class のアンラップ済み型を正しく扱えないバグ(KT-64097)です。Spring Framework 6.1.0 以降のリフレクションベース(
KCallable#callBy)のパラメータ解決と噛み合って表面化します。 - Spring 側はこれを「Kotlin のバグ」として
NOT_PLANNEDでクローズ済みです(spring-framework#31698)。フレームワークの修正は期待できません。 - 回避策はバインディング方式によって異なります。
@ModelAttributeの data class では value class を使わず、UUID等の素の型で受けて Controller 内で value class に変換するのが安全です。
value class とは
Kotlin の @JvmInline value class は、1つの値を型安全にラップするための仕組みです。
Kotlin のデフォルト引数が Spring AOP プロキシをすり抜けて NPE になる話
TL;DR
@Transactional系のアノテーション(Spring AOP のクラスプロキシ)が掛かった Kotlin クラスで、メソッドのデフォルト引数式が注入フィールドを参照しているとNullPointerExceptionになることがあります。- 原因は「Kotlin のデフォルト引数は static な合成メソッド
xxx$defaultに展開され、それが Spring AOP プロキシのインターセプトをすり抜ける」ためです。 - 同じシグネチャでも 引数を明示的に渡すと再現しません。そのためテストやコードパスによって出たり出なかったりして気付きにくいです。
- 対策はシンプルです。デフォルト引数で注入依存を参照しないこと。必要なら メソッド本体で
val宣言 するか、オーバーロードで表現します。
症状
ある UseCase をリファクタして、時刻取得を Clock の DI 経由に変えました。
江添亮の入門C++ PDF(フォント埋め込み)
最近Xで、“ゲームプログラマーになりたいならC++は必須"みたいなポストを見かけ、そういや最近のC++ってどうなっているのか知っといてもいいかも、ということでC++を学べる教材を探すことにしました。
…WSL2でWindows Terminalがクラッシュするので利用をやめた
でも書きましたが、Windows Terminalが旧MSIMEを使っていると頻繁にクラッシュして困ったので新しいMSIMEを使うことにしました。
しかし、新しいMSIMEだとShift+Spaceで日英入力切替ができないのでAutoHotKeyを利用して解決を図りました。
OBS Python Scriptingで利用できるPythonバージョンの調べ方
より。
shared/obs-scripting/obs-scripting-python-import.c を見れば良さそうです。
この記事を書いている時点ではは 3.12 までのようですね。
現在の最新安定版が 3.14 なのでちょっと注意する必要があります。
Windows11でShift+Spaceで日本語/英語切り替えを行えるようにする
ひとつ前のエントリーに記載した通り、これまでShift+Spaceで日本語と英語の切り替えを行うために「以前のバージョンのMicrosoft IMEを使う」の設定を有効化していましたが、Windows Terminalとの相性が悪いため無効化せざるを得なくなりました。
…Windows Terminalで日本語入力中 頻繁にクラッシュする
WSL2上の操作をWindows Terminalで行っているのですが、codexを利用していると(?)、頻繁に次のエラーが出ます。
「このターミナルでグラフィックス ドライバーの問題が発生し、時間内に回復できませんでした。ターミナルは一時停止されています。」
…これまでのAIコーディングの略歴、Codex Cli ファーストインプレッション
最近はもっぱらAIを利用してコーディングしています。
が、blogにそういったことをまだ書いたことがなかったなあということで、記録を残そうと思った次第です。
IntelliJの自動整形でimportのwildcardを使わないようにする
前回のエントリー では休職について記載しましたが、現在、無事職に着くことができています。
さて、そのプロジェクトでの話ですが、CIでKotlinコードに対してktlintでソースコードのチェックを行っています。
ルールは(ほぼ)デフォルト設定を用いているのですが、このデフォルト設定とIntelliJ IDEAのデフォルト設定が競合するルールがあります。
つまり、IntelliJ IDEAの設定でフォーマットをかけると、CIが失敗してしまいます。
キーボードを買い替えた: Majestouch Xacro M10SP
これまで、 Mistel Barocco MD600 という左右分離式キーボードを利用していたのですが、USBケーブル接続端子の調子が悪くなったのか、タイピングを認識しなくなることが頻繁に発生するようになり、買い換えることにしました。
…近況報告と求職(準委任契約)について
近況報告
4月末で前回の仕事の契約が終わり、時間ができたので歯医者に行ったり健康診断に行ったりしていたところ、健康診断で血糖値(正確にはHbA1c)が正常値よりかなり高くなっていることがわかり、1ヶ月入院していました。
…「簡単アニメキャラ抜き出しアプリ」をWSL2 Docker環境で動かす
という記事をたまたま読み、「そういえばひと昔前、アニメ絵の顔検出流行ってたなあ。今どうなってるんだろう」というのが気になって少し調べてみました。
…