19章プラガブルPython
ロバストなコードベースを構築する上で最大の難関は未来予測である。未来の開発者が何をするのか完全に推測できない。最善策は、完璧に推測するのではなく、将来の開発者が最小限の作業でシステムに機能を追加できるような柔軟性を確保することである。この章ではプラガブルなコードの作り方に焦点を当てる。プラガブルなコードは後から具体的になるものを提供できる要素を定義できる。拡張ポイント、すなわち他の開発者が機能を拡張するために使える部分を含むフレームワークを定義する。
キッチンにあるスタンドミキサーについて考えてみよう。パン生地を捏ねるためのフック、卵やクリームを泡立てる泡立て器、混ぜる作業全般で使われるフラットビーターなど、ミキサーにはさまざまなアタッチメントが用意されている。それぞれのアタッチメントには用途がある。フックやブレードを状況に応じて取り外したり取り付けたりできる。ミキサーを都度買い替える必要はなく、必要なものを必要な時にプラグインすればよい。
プラガブルPythonの目的も同じだ。新しい機能が必要になってもアプリケーション全体を作り直す必要はない。拡張機能やアタッチメントを構築して強固な基礎にはめ込めばよい。特定のユースケースに必要な機能を選び、それをシステムにプラグインする。
本書では何らかの料理を作る自動調理システムを例として使ってきた。本章ではそれらすべてを統合して、すべてを組み合わせられるシステムを設計する。今まで話題にしたすべてのレシピを調理できるシステムを作りたい。このシステムをUltimate Kitchen Assistant(ぼくのかんがえたさいきょうのキッチンアシスタント)と呼ぶことにする(ひどい名前だと思われるかもしれないが、だからこそ私はマーケティングの仕事をしていないのである)。 ...
Get ロバストPython ―クリーンで保守しやすいコードを書く now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.