概要
Mirageは、私がTEDで働いていた2015年に始まりました。そこではいくつかのEmber.jsアプリがあり、テストはEmberでの作業において常に大きな部分を占めていました。
この頃、EmberコアチームメンバーのTrek Glowackiが、fetch
/XMLHTTPRequest
をモックし、ルートハンドラを定義するためのexpressのようなDSLを提供するライブラリであるPretender.jsをリリースしました。私たちはPretenderをテストで多用しており、その使用法に一貫性を持たせたかったのです。私はember-cli-pretenderify
というEmberアドオンを作成し、まさにそれを実現しました。
時が経つにつれて、アドオンはPretenderを接続する以上のものになりました。大きな変化は、ルートハンドラ間で共有されるグローバルな状態に過ぎないデータベースを追加したときでした。サーバーの定義は開発にも使用されるようになり、テストツールであると同時に開発時のツールにもなりました。最終的にアドオンの名前をember-cli-mirage
に変更し、現在でも使用されています。
私は初期の頃、Mirageに複雑さを加えることに抵抗していましたが、それは避けられないことだと感じていました。非常に多くの人々が、モックのセットアップで同じようなボイラープレートコードを繰り返していました。データベースの次はORM、そしてシリアライザレイヤーでした。MirageのAPIのほとんどは、Railsとその周辺のエコシステムからインスパイアされています。Mirageはより複雑になりましたが、Railsでサーバーを構築することに慣れていたにもかかわらず、個別のAPIサーバーを操作するよりもはるかに高速に作業できました。
人々はしばしば、Emberの外部でMirageを使用できるかどうか尋ねてきました。当初から、私は将来一般化したい場合に備えて、MirageのコアでEmber固有のAPIを使用することを意図的に避けてきました。これは良い決断だったことがわかりました。2018年、Charles Lowellを含む私の友人たちが実際に最初の抽出を実行しましたが、当時はまだ主にEmberで作業しており、より一般的なライブラリをメンテナンスすることには関心がありませんでした。
2019年、Ryan Torontoと私はついに実行に移すことを決めました。Mirageは私のキャリアの中で最も影響力のある仕事だと感じており、どんなJavaScriptツールでも動作するようにすることは、それほど大きな飛躍ではないように思えました。2019年7月19日、私たちはMirageのコアロジックをすべて外部依存関係として抽出したember-cli-mirage
のリリースを行いました。それ以来、私たちはmiragejs
を完全にスタンドアロンのライブラリとして改良しており、現在ではReactからVue、Angularまで、あらゆるフレームワークで構築されたJavaScriptアプリで使用されています。
今後、Mirageの使命は、フロントエンド開発者にとって不可欠なツールになることです。ネットワークのローカル制御は、私がこれまで見てきたどの方法よりも、フロントエンドコードに関するより速いフィードバックを可能にします。サービスプロバイダーが毎年より多くのサーバー側の懸念を吸収している世界では、UIが最重要視されるようになっています。Mirageは、フロントエンドチームがアプリの境界を完全にモックできるようにすることで、このアーキテクチャにぴったりと適合し、その反対側にあるものが何であるかに関わらず、力を与えます。