Python 3.10のパターンマッチングにおける暗黒魔法:`__subclasshook__`の悪用

2025-08-22

この記事では、Python 3.10のパターンマッチングと抽象基底クラス(ABC)の`__subclasshook__`メソッドの組み合わせから生じる予期せぬ機能について探求しています。巧みに`__subclasshook__`を使うことで、パターンマッチングを「乗っ取る」ことができ、どの型が一致するかをカスタム定義したり、型だけでなくオブジェクトの属性に基づいてマッチングを行うこともできます。カスタムマッチャーの作成など、強力な機能を示しながらも、著者は、その予測不能で潜在的に有害な性質から、本番コードでのこのテクニックの使用を強く警告しています。

続きを読む

驚くほど深い影響力を持つ「死んだ」プログラミング言語

2025-07-16

この記事では、COBOL、ALGOL、APL、BASICなど、歴史的に影響力があったものの、現在では広く使われていないプログラミング言語の驚くべき影響について探っています。それらの背景、貢献、衰退の理由を調べ、現代のプログラミング言語への永続的な影響を明らかにしています。例としては、COBOLのレコードデータ構造、ALGOLの字句スコープと構造化プログラミング、APLの配列処理などがあります。この記事では、プログラミング言語の歴史を学ぶことの重要性と、かつて主流にはならなかった言語のしばしば見過ごされてきた貢献を強調しています。

続きを読む

OOPの誤解された起源:記録の修正

2025-05-10

この記事では、アラン・ケイがオブジェクト指向プログラミング(OOP)とオブジェクトの概念の両方を作ったという一般的な誤解を解きます。実際には、Simula言語はOOPの重要な先駆者であり、SmalltalkチームもSimulaの影響を明確に認めています。「オブジェクト」という用語を作ったのはケイですが、彼は後にそれを後悔し、OOPの中心的なアイデアはメッセージパッシングであると強調しました。この記事では、SmalltalkがOOPに与えた独自の貢献、特にすべてをオブジェクトとして扱う設計原則と、革新的なメッセージ処理メカニズムについてさらに詳しく説明します。著者は、OOPの進化は単一の出来事ではなく、アイデアとニーズの融合であり、さまざまな開発者がさまざまな状況でOOPを異なって理解し、適用してきたと主張しています。

続きを読む
開発

JavaScriptコメントの奇妙な歴史:`<!--`と`-->`がなぜ動くのか

2025-03-12

この記事では、JavaScriptにおける``がコメントとして機能する奇妙な歴史を解き明かします。当初、古いブラウザとの互換性を確保するために、開発者は``タグ内でHTMLコメントを使ってJavaScriptコードを囲んでいました。驚くべきことに、現代のブラウザでもこの構文がサポートされているのは、ブラウザの互換性の歴史的負債と、標準化委員会の「Webを壊さない」というコミットメントによるものです。この記事では、この構文の動作方法と、`-->`が行の先頭に来なければならない理由を説明します。

続きを読む
開発

ソフトウェアエンジニアリングにおけるコントロール階層の適用

2025-03-08

機械技師が、職場安全において重要な概念であるコントロール階層(HoC)を著者へ紹介しました。著者はHoCをソフトウェアエンジニアリングに適用し、10年前に間違ったクエリによって引き起こされた本番データベースのインシデントを分析します。この記事では、ソフトウェア開発におけるリスク軽減のために、排除、代替、エンジニアリングコントロール、管理コントロール、個人保護具(PPE)の適用を探ります。各レベルの長所、短所、制約が議論されます。例えば、厳しすぎるアクセスポリシーは問題解決を遅らせる可能性があります。著者は、システムの安全に対するコントロールの影響を包括的に考慮し、新たなリスクの導入を避ける必要性を強調しています。

続きを読む
開発