9章デザインパターン
これまでに、さまざまな非同期の概念を説明し、問題を解決するために非同期コードを実装する方法を複数紹介した。しかし、ソフトウェアエンジニアリングは、単独で存在するわけではない。本書で得た非同期プログラミングに関する知識を実際に適用する際には、完全な環境に、独立した非同期のコードを書くというわけにはいかない。非同期でない既存のコードに、非同期コードを適用しなければならないこともあるだろう。サーバなどの第三者が提供するサービスとやり取りすることもあるだろう。この場合は、サーバからのレスポンスの変化に対処する必要がある。本章では、さまざまな問題の解決のために非同期コードを実装する際の一助となるデザインパターンについて説明する。
本章を読めば、これまで非同期プログラミングをサポートしてこなかった既存のコードに対して、非同期コードを実装できるようになる。さらに、ウォーターフォールデザインパターンを実装して、再利用可能な非同期コンポーネントのフローを構築できるようになる。非同期タスクのコードを変更して機能を追加するのではなく、デコレータパターンを実装して、プログラムを実行する際もしくはビルドする際にコンパイルフラグを立てるだけで、ロギングなどの機能を追加できるようになる。また、リトライやサーキットブレーカパターンを用いて、非同期システム全体でエラーに対応できるようになる。
まず、デザインパターンを実装する前に、非同期コードをシステム内に実装できるようになる必要がある。したがって、まずは独立したモジュールの構築から始めよう。
9.1 独立したモジュールの作成
非同期コードを全く含まないRustの既存コードがあり、この既存コードに非同期Rustコードを統合したいとしよう。既存コードを完全に書き直して非同期コードを導入するよりも、これらのコード間の相互作用の爆発半径を小さく保つほうがいい。大幅に書き直す場合、締めきりを守れることはほとんどなく、書き直しが遅れると既存コードに機能がさらに追加されてしまって、書き直しが終わらなくなるからだ。非同期コードを独立したモジュールに書き、同期エントリポイントを与えることで、小さく始めることができる。同期エントリポイントを用いると、非同期モジュールを既存のコードのどこからでも使うことができる。また、他の開発者が非同期プログラミングをよく理解していなくても、非同期モジュールを使うことができる。このようにすると、統合が容易になる。他の開発者は、時間があるときに非同期プログラミングを理解すればいい。 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access