Fastifyが成功したプロジェクトである理由とは?
Oren Hacohen
2020年12月22日
0 分で読めますFastifyにスポットライトを当てる今回の記事へようこそ。今日は、オープンソースのNode.jsウェブアプリケーションサーバーFastifyに積極的に貢献しているEthan Arrowoodをお迎えしました。Snyk Advisor fastify package pageでFastifyの健全性指標が非常に高いことがわかったため、その詳細をいくつか掘り下げてご紹介します。

Fastifyとは何ですか?主にどのような用途で使われていますか?
Fastifyは、オーバーヘッドを最小限に抑えながら最高の開発者体験を提供することと、強力なプラグインアーキテクチャに重点を置いたウェブフレームワークです。世界中の開発者が、サーバーサイドレンダリング、JSON、GraphQLの各APIなど、スケーラブルなHTTPアプリケーションの構築にFastifyを活用しています。利用を始めるには、スタートガイドをご覧ください。
Fastifyでのご自身の役割について、簡単に教えていただけますか?
Node.js Interactive 2017でMatteo Collinaと話した後、Fastifyへの貢献を始めました。当時はNode.jsのHTTPサーバーについてあらゆることを一から学びたいと思っていましたが、今でも学ぶことは尽きません。まずはテストカバレッジやドキュメントの改善、未解決のIssueやプルリクエストのトリアージから始めました。最近は主にTypeScript定義の書き換えに取り組み、Fastifyエコシステム全体でTypeScriptユーザーの開発者体験を向上させています。
Fastifyは人気の面で影響力のあるプロジェクトとして注目されており、週あたりのダウンロード数は13万件を超えています。成功の理由は何だと思いますか?

Fastifyの成功を支えているのはコミュニティです。コントリビューターチームは拡大を続け、非常に活発に活動しています。また、開発者体験全体(最新のJavaScriptやTypeScriptも含めて)の向上に注力しているため、新しいプロジェクトを始める際に、まずFastifyを選ぶNode.js開発者が増えています。
Fastifyのお気に入りの機能は何ですか?
ずっと興味を引かれているものの一つが、基盤となるルーターfind-my-wayです。ラジックストライ木構造を基にしており、まさにその役割を見事に果たします。たとえば、紙の辞書を思い浮かべてみてください。Fastifyが特定のルートを探すときは、要求されたパスに一致するまで、文字を一つずつたどっていきます。
Fastifyの最新リリースでは、どのような新機能が追加されましたか?
Fastifyの最新リリースでは、ログのシリアライズとスキーマ置換を変更し、TypeScriptのサポートを強化しました。また、fastify-expressを使ってExpressアプリをFastify内で実行できるようになりました。さらに、ルートレベルのフックの動作を一部変更し、タイムアウトのオプションを追加しました。詳しくはV3への移行ガイドをご覧ください。
Fastifyプロジェクトの健全性を示す、良い兆候は何だと思いますか?
エコシステムの活発さです。ほぼ毎週、コミュニティのリストに新しいプラグインが追加されているようです。最近クローズされたPRをざっと見るだけでも、直近1週間でfastify-redis-channels、fastify-custom-healthcheck、fastify-envalid、fastify-get-headが追加されています。さらに、コントリビューターチームに加わって、プロジェクトのあらゆる側面で新機能の開発を支援する人も増えています。その好例が、OpenTelemetryプラグインのリクエストです。数か月後、コミュニティメンバーの一人がfastify-opentelemetryプラグインを提供し、コミュニティのエコシステムプラグイン一覧に加わりました。
開発者がFastifyを選ぶ理由は何ですか?開発者が移行してくる他のプロジェクトはありますか?
データ検証が標準で備わっていることは、開発者にとって大きな魅力の一つです。Fastifyならではのその他のAPI機能に加えて、ユーザーはコミュニティも高く評価しています。Discordやヘルプリポジトリでは、多くの人が積極的に助け合っています。
ユーザーの多くはExpressから移行してきます。fastify-expressプラグインによって、できるだけ手軽に移行できるようにしました。このプラグインはFastifyにExpressとの完全な互換性をもたらし、Expressアプリを少しずつ移行できるようにします。
オープンソースプロジェクトのメンテナーとして、現在最大の課題は何ですか?
時間です。Microsoftでソフトウェアエンジニアとしてフルタイムで働いているため、オープンソースに充てられるのは勤務時間の一部だけです。正直なところ、やりたいことすべてに取り組むには時間が足りないので、優先順位をつけて少しずつ進めるようにしています。誤解しないでほしいのですが、仕事は大好きですし、仕事があるからこそオープンソースにも取り組めています。結局のところ、大切なのはバランスです。
特にお気に入りのオープンソースプロジェクト上位5つを教えてください。
Node.js、Electron、TypeScript、Undici、そしてもちろんFastifyです!


