6/20/2023作成者Jory Burson
ソフトウェア開発の急速な世界では、最新のテクノロジーとベストプラクティスを常に把握しておくことが重要です。API用のクエリ言語であるGraphQLは、その柔軟性とデータフェッチの効率性から非常に人気を集めています。GraphQLとその影響をより深く掘り下げるために、オープンソース貢献者の組織であるThe Guildのメンバーとの最近のQ&Aセッションでは、貴重な洞察と推奨事項が得られました。このセッションのハイライトを探り、GraphQLの力をより深く理解しましょう。
オープンソース組織の哲学と構造
Q&Aセッション中、The Guildのメンバーは、彼らの組織が長期的なオープンソースのメンテナンスを主な目的として作成されたことを強調しました。この決定により、組織はグループの活動を異なる方法で構造化しました。例えば、彼らのすべてのプロジェクトを、The GuildのGitHub組織の下ではなく、個々の貢献者の名前の下に配置しています。Yoga、Mesh、その他などです。
また、The Guildは、既存のオープンソース貢献者をサポートし、選考プロセスでの偏見を減らす(個人の場所やアイデンティティではなく、個人の仕事に焦点を当てる)ために、The Guildに参加する前にすでにコミュニティ貢献者であった人を採用することに重点を置いています。その結果、世界中から多様なチームが生まれ、そのモデルについて彼らの会社概要ページで詳しく説明しています。
Q&Aセッション中、The GuildはローカルなMeetupグループへの支援と、新しいグループの立ち上げを支援してきた歴史を強調しました。コミュニティへのこのような取り組みは、知識の共有とコラボレーションを促進するという彼らの献身を反映しており、これは持続可能なオープンソースプロジェクトにとって不可欠です。
Envelopによる承認とシールド
The Guildチームは、Envelopを推奨しました。Envelopは、実行フローを操作するプラグインシステムで、GraphQL APIでの承認とシールドに使用できます。このアプローチは、リゾルバーを直接ラップする強力な代替手段を提供し、堅牢なセキュリティ対策が確実に実施されるようにします。Envelopを活用することで、開発者はGraphQL APIでの承認制御を強化できます。
Postgresの行レベルセキュリティによるきめ細かい承認制御
Envelopに加えて、議論では、よりきめ細かい承認制御を実現する手段として、Postgresの行レベルセキュリティの使用が強調されました。この機能により、開発者はデータベースレベルでセキュリティポリシーを定義し、承認されたユーザーのみが特定のデータ行にアクセスできるようにすることができます。Postgresの行レベルセキュリティを組み込むことで、開発者はGraphQL APIを不正アクセスからさらに強化できます。
"非仕様"GraphQLとEnvelop/Yogaプラグインの利点
議論では、"非仕様"GraphQL機能を使用する利点についても触れられました。Envelopを使用すると、公式仕様に含められる前に、高度なGraphQL機能を安全に使用できます。公式仕様のリリースは頻度が低いためです。
これらのツールは、追加の機能と最適化を提供し、開発者がプロジェクトでGraphQLの可能性を最大限に引き出すことを可能にします。The Guildチームは、パフォーマンスを向上させ、開発プロセスを効率化するためにこれらのオプションを検討する価値を強調し、同時に、これらの機能に関する実際の運用からの貴重なフィードバックをGraphQLワーキンググループに提供しています。
GraphQL操作のキャッシュ
セッションの参加者は、GraphQL操作のキャッシュについて興味深い点を提起しました。The Guildチームは、GraphQLリクエストにキャッシュを追加することの潜在的な利点を認め、レスポンス時間を最適化し、不要なネットワークトラフィックを削減します。GraphQLを使用するとRESTよりもきめ細かいキャッシュが可能になるという点が提起され、GraphQLでのキャッシュが難しいと人々が考える主な理由は、StellateやYogaのレスポンスキャッシュサポートなどのツールに関する知識が不足しているためです。
大規模なGraphQLワークフロー
大規模なGraphQLの使用について議論する際、The Guildの参加者は、GraphQL Hive(オープンソースのスキーマレジストリ)などのツールを使用して、大規模なチームがGraphQL APIを管理するのを支援する彼らの活動の一部を参照しました。最近Hiveにリリースされた新機能のいくつか(例えば、スキーマポリシー機能など)は、組織が多くの異なるチームでベストプラクティスとスキーマルールを自動的に実施できるようにします。
コミュニティのスチュワードシップと将来のコラボレーション
The Guildチームは、コミュニティの貢献の重要性を認め、GraphQLコミュニティウェブサイトを改善および簡素化する取り組みについて議論し、活気のある包括的なGraphQLコミュニティを育成することの重要性を強調しました。The GuildとのQ&Aセッションは、GraphQLの世界に関する豊富な知識と洞察を提供しました。さらに、このセッションでは、改善の余地とコミュニティメンバーが貢献する機会が強調されました。詳細については、The Guildのプロジェクトとブログ、およびGraphQLの公式コミュニティページをご覧ください。
GraphQLエコシステムが進化し続けるにつれて、このようなセッションは貴重なガイダンスを提供し、開発者間でコミュニティ意識を育み、刺激的なエコシステムでのイノベーションと成長への道を開きます。6月28日に開催される次のDiscord Q&Aセッションには、Hasuraのエンジニアリングリーダーが参加しますので、ぜひご参加ください。