呪われた知識
(immich.app)- Immich の開発過程で得た 呪われた知識 の一覧を共有します
- 様々なソフトウェアおよびインフラ環境で見つかった 予期しない問題 を整理しました
- EXIF メタデータ、YAML の空白処理、PostgreSQL など、ツールと言語ごとの問題点に言及しています
- 一部の問題は セキュリティ、プラットフォーム互換性、オープンソース依存 と直接つながっています
- 開発者が注意すべき 実例と原因 に焦点を当てています
概要
Immich 開発チームは、プロジェクトを進める中で再び知りたくない 呪われた知識 を公開しました。これは、実際のサービス開発・運用の中で、さまざまなツール、言語、プラットフォームにおいて直接経験した 予期しない落とし穴と問題 を列挙したものです。
呪われた知識一覧
-
2025年6月4日
- Zitadel の Actions は呪われた機能です
- Zitadel が提供する カスタムスクリプト 機能は JS エンジンベースですが、正規表現のネーミングキャプチャグループをサポートしていないため限界が明らかになりました
-
2025年5月30日
- Microsoft Entra は PKCE をサポートしていますが、OpenID discovery ドキュメントに明記されていないため、
- そのため、この機能がクライアントで検出されない問題が発生しました
-
2025年5月5日
- 画像を説明する EXIF メタデータのサイズ情報 は、実際の画像と異なる場合があります
- この差分により、クロップとリサイズ処理でエラーが発生しました
-
2025年4月1日
- YAML の空白処理 は想定と異なる動作をすることが多いです
- フォーマットに敏感で、意図と異なる内容として解釈されるリスクがあります
-
2024年9月20日
- Windows の隠しファイルは "w" フラグで開かれません
- SMB の "hide dot files" オプションと組み合わせると、ファイル探索と処理の混乱 が拡大します
-
2024年8月7日
- Bash スクリプトでは キャリッジリターン(CRLF) 問題が発生する可能性があります
- Git がチェックアウト時に自動で LF を CRLF に変換すると、スクリプト実行でエラーを引き起こします
-
2024年8月7日
- Cloudflare Workers の fetch は https を明示しても、デフォルトは http になります
- これにより リダイレクトループ などのネットワーク関連問題が発生します
-
2024年7月21日
- モバイルの GPS 共有 は、アプリに位置情報権限がない場合、画像から GPS 情報を静かに削除します
- 位置ベースサービスの精度とプライバシーに影響します
-
2024年7月3日
- PostgreSQL の NOTIFY はトランザクション内でのみ動作します
- socket.io の postgres-adapter と組み合わせて使用すると、5秒ごとに WAL ログ が記録され、負荷を発生させます
-
2024年7月3日
- npm スクリプトを実行するたびに npm レジストリへ HTTP リクエストを送信します
- したがって、スクリプトでヘルスチェックを行うのは非効率です
-
2024年6月28日
- JavaScript コミュニティ内の一部ユーザーが、「下位互換性」 を理由に 50 以上のパッケージ依存を強制追加しました
- これらのパッケージはすべてそのユーザーが管理しています
-
2024年6月25日
- bcrypt 実装 は文字列の最初の 72 バイトだけを使用します
- それ以降の文字は 無視されるため、長いパスワードは意味を持ちません
-
2024年1月31日
- JavaScript Date オブジェクトは年と日付は 1 から、月は 0 からインデックス付けされます
- 混乱しやすい構造です
-
2024年1月9日
- Node.js v20.8 以前、--experimental-vm-modules オプションを使用する CommonJS プロジェクトで ES モジュールが CommonJS モジュールを再度読み込む際に
- segfault(セグメンテーション違反)で Node.js がクラッシュする問題が発生します
- Node.js v20.8 以前、--experimental-vm-modules オプションを使用する CommonJS プロジェクトで ES モジュールが CommonJS モジュールを再度読み込む際に
-
2023年12月28日
- PostgreSQL のパラメータ制限は 65,535 個です
- 大量データセットのバルクインサートで性能上の限界を引き起こします
-
2023年6月26日
- Secure Contexts でのみ使用できる Web API があります
- 代表例として clipboard API などは https または localhost 環境でのみ動作します
-
2023年2月23日
- TypeORM の remove 実装は入力値に直接影響します
- 元のオブジェクトの id プロパティまで削除してしまいます
結論
このような 呪われた知識 は、実際のサービス開発と運用環境で頻繁に遭遇し得る落とし穴です。開発者は、各ツール、プログラミング言語、環境ごとに潜在する制約や問題を事前に把握することで、効率的なトラブルシューティングと安定したサービス開発に役立ちます。
まだコメントはありません。