ホーム ケーススタディ Work and Co さらに迅速でスケーラブルなアプリケーション開発を実現 
Work&Co社が重要な社内アプリケーションを数カ月ではなく数週間で完成した方法
付箋にアイデアを書く女性と男性の同僚

現代の多くの企業がそうであるように、Work&Co社の従業員は世界各地におり、絶えず進化するプロジェクトを多数抱えています。企業の生産性を左右するほど重要なものが、人的リソースとプロジェクト用リソースを効率的に管理する能力です。

Work&Co社は、IBM® Companyの傘下会社StepZen社(リンクはibm.comの外にあります)と提携し、同社のMavenlinkのバックエンド上でGraphQLデータレイヤーの設計、開発、立ち上げを行い、さらに社内の「従業員名簿アプリ」を改良しました。このアプリは従業員とその上司が毎日使用するもので、連絡、共同作業、プロジェクトの割り当てと適用範囲の把握などを実行できます。

Work&Co社の従業員名簿アプリは、複数の人事システムのデータを活用しており、絶えず進化する世界各地のプロジェクトを担う多数の従業員が、プロジェクト間の連絡や共同作業を行うために毎日使用しています。同社が複数のサードパーティの人事および従業員管理サービスのデータを新しいプロバイダーであるMavenlinkに統合する決断を下したとき、同社のチームは社内アプリの処理方法の決断に迫られました。

選択肢としては、社内アプリの廃止、再構築、新しいデータ・ソースへの組み込みが可能でした。この社内アプリを毎日使用して従業員が仕事を行うため、アプリの廃止は論外でした。再構築の可能性は十分にあり、同社にはそれを実行できるスキルがありました。しかし、再構築に必要なスキルは主に顧客との有償プロジェクトにデプロイされており、その貴重なリソースを社内活動に費やすほどの説得力はありませんでした。

ベストな選択はアプリの改良でした。ところが、ここで問題が生じました。それは、Work&Co社に不可欠なこのアプリケーションを、必要な作業を最小限に留めながら再構築し、機能やデータソースの将来的な追加や、システムの切り替えなどに対応できるようにするにはどうしたらいいのか、というものでした。

ユーザー・エクスペリエンスを向上し、より多くの機能を提供する新たなデータ・ソースが利用可能になったため、このアプリのアップデートと拡張が重要でした。同社は、現時点で包括的かつ柔軟なアプリケーションを構築でき、将来的に拡張や新しいユースケースに対応できるソリューションを必要としていました。

MavenlinkのGraphQL APIを使用すると、リソース管理の正確な可視化と計画を迅速かつ簡単に実行できる社内アプリケーションを数週間で構築できます。このアプリでは細かい情報を数多く集約するため、そのパフォーマンスが極めて重要です。 Nemanja Niciforovic 氏 MD 兼エンジニアリング・リード Work & Co 社
必須アプリケーションの再構築

最初のステップは、このアプリ内の既存のREST API呼び出しをGraphQL API呼び出しに変換することでした。GraphQLに切り替えることにより、クライアント・アプリケーションはGraphQL呼び出し方法を覚えるだけで済み、必要なデータのみをリクエストします。データの出処を入力する必要はありません。このアプリケーションにGraphQLを標準化すると、アプリケーションに影響を与えることなく、新しいデータ・ソースの追加やデータ・ソース間の切り替えが可能になり、GraphQLクエリもそのまま残ります。

ただし、これは通常、GraphQLサーバーとAPIをデータにマッピングするための多数のリゾルバー・コードの作成を意味します。作成して維持するコードの数は少ないに越したことはありません。StepZenは、宣言型かつ構成駆動型のホスト型GraphQLサーバーとして、リゾルバーの構成を容易にし、コードの大部分を不要にしました。

Work&Co社のMD兼エンジニアリング・リードであるNemanja Niciforovic氏は次のように説明します。「MavenlinkのGraphQL APIを使用することで、リソース管理の正確な可視化と計画を迅速かつ簡単にできる社内アプリを数週間で構築できます。このアプリでは細かい情報を数多く集約するため、そのパフォーマンスが極めて重要です。StepZenの自動並列処理が大いに役立ちました。また、バックエンド・サービスを追加する際や、単一のGraphQL APIで新しいアプリを構築する際に、将来的にもこれを使い続け、拡張するのに役立ちます」

Mavenlinkには、さまざまな人事とリソース管理データへのアクセスを管理する包括的なREST APIがあります。StepZenのGraphQLディレクティブ—@rest—を使用して、Work&Co社は従業員名簿アプリで利用できるデータを微調整できました。簡単な例を挙げると、同社のチームはMavenlink APIのフィールド名を従業員名簿アプリケーションで使用している名前に書き換えて、フロントエンド開発者の認識負荷をなくし、アプリケーションに必要なコード変更数を減らしました。

さらに、同チームはStepZenの@materializerディレクティブを使用してMavenlink APIを簡素化できました。このおかげで、複数のAPI呼び出しからのデータを含むタイプの定義が可能になりました。一例は「ユーザー」タイプに「プロジェクト」タイプを追加したことです。これにより、アプリケーション開発者がプロフィール写真や電子メール・アドレスなどのユーザー情報を取得するときに、進行中のプロジェクト情報も取得できるようになりました。

ページネーション:Mavenlink APIは、ページネーションを実行して、1回の呼び出しで返されるレコード数を制限します。Work&Co社のアプリはこの方法でデータを扱う設計ではなく、チームはページネーションを利用するためにアプリを作り直すことも望んでいませんでした。そこで、StepZenの@sequenceディレクティブを使用して、MavenlinkAPIと多数のREST APIコールを並列化し、1回のGraphQLクエリ・リクエストで結果セットの全ページを取得できるようにしました。

パフォーマンス調整:このアプローチの予期せぬメリットがパフォーマンス調整です。REST APIで小さいページ・サイズを取得すると応答時間が短縮されます。そのため、それぞれが200レコードの並行リクエスト10個は、それぞれが100レコードの並行リクエスト20個よりも応答時間が長くなります。Work&Co社のアプリケーション開発者は、StepZenのクエリを適切に定義することでGraphQLクエリのパフォーマンスを微調整できました。

セキュリティーとキャッシング:これらすべての実装の詳細に加えて、Work&Co社はStepZen のセキュリティとキャッシングに対する総合的なアプローチの恩恵に与りました。柔軟なセキュリティー構成により、アプリケーション全体のセキュリティー・コンテキストを使用するクエリと、ユーザー固有のセキュリティー・コンテキストを使用するクエリを定義できます。REST APIを直接使用するとなると、このようなきめ細かなコントロールの管理は非常に困難で、通常はどちらか一方になります。その点、StepZenの自動キャッシングは、開発作業が不要で、アプリケーションのユーザーが向上したパフォーマンスを体験できることを意味します。

StepZenの自動並列処理が大いに役立ちました。また、バックエンド・サービスを追加する際や、単一のGraphQL APIで新しいアプリケーションを構築する際に、将来的にもこれを使い続け、拡張するのに役立ちます。 Nemanja Niciforovic 氏 MD 兼エンジニアリング・リード Work & Co 社
先を読む

特定のREST API呼び出しではなく、StepZen上で実行されるGraphQLを使用するように社内アプリケーションを変換したあと、Work&Co社のチームは採用するプラットフォームの数が増える中で、Mavenlink内の新機能を活用する絶好の機会を得ています。また、StepZen経由で配信されるデータを利用するアプリケーションへの影響を最小限に抑えながら、新サービスをGraphQL APIに簡単に組み込めるようになります。

Work&Co社について

Work&Co社(リンクはibm.comの外にあります)は、企業を変革するデジタル製品の設計と出荷を行う受賞歴のある企業です。同社は、お客様がデジタル戦略を定義し、デジタル製品を大規模に市場に投入して運用することを支援しています。Work&Co社のWebサイト、アプリ、デジタル・エクスペリエンスは、毎日何百万人もの人々に使用されています。

StepZen

データへのフェデレーション・アクセスのたった1つの宣言的アプローチ。

詳細はこちら IBMニュースレターの購読    
法務

© Copyright IBM Corporation 2023. 日本アイ・ビー・エム株式会社 〒103-8510 東京都中央区日本橋箱崎町19-21

2021年6月、米国で制作

IBM と IBM のロゴは、米国およびその他の国々における International Business Machines Corporation の商標または登録商標です。その他の製品名およびサービス名は IBM または他社の商標である可能性があります。IBM の商標の最新リストは、 ibm.com/trademarkで入手できます。

本書は最初の発行日時点における最新情報を記載しており、IBMにより予告なしに変更される場合があります。IBMが事業を展開している国であっても、特定の製品を利用できない場合があります。

引用または説明されているすべての事例は、一部のお客様が IBM プロダクトを使用し、達成した結果の例として提示されています。実際の環境でのコストやパフォーマンスの特性はお客様ごとの構成や条件によって異なります。お客様のシステムおよびご注文のサービス内容によって結果が異なりますので、ご期待通りの結果にならない場合があります。IBM と IBM のロゴは、米国およびその他の国々における IBM の商標または登録商標です。本書の情報は「現状のまま」で提供されるものとし、明示または暗示を問わず、商品性、特定目的への適合性、および非侵害の保証または条件を含むいかなる保証もしないものとします。IBM 製品は、IBM 所定の契約書の条項に基づき保証されます。