ヒント
このレッスンは、New Relic アプリケーションをゼロから構築する方法を学習するコースの一部です。 まだご覧になっていない方は、概要をご覧ください。
コースの各レッスンは前回のレッスンに基づいて構築されるため、このレッスンを開始する前に、前回のレッスン「Nerdlet から NerdStorageVault にアクセスする」を完了していることを確認してください。
前のレッスンでは、New Relic アプリケーションのTotal cancellations per version [バージョンごとの合計キャンセル数]チャートの模擬キャンセル データを取得するために使用できるサードパーティ サービスについて学習しました。 このサービス内のデータは偽物ですが、このレッスンの本当の価値は、サードパーティのサービスを使用して New Relic アプリケーションにデータを供給する方法を学ぶことです。
キャンセルデータを含むモックサービスにリクエストを送信する場合( https://api.nerdsletter.net/cancellations ) 「Unauthorized」というメッセージが表示され、リクエストを拒否する応答が表示されます。
$curl https://api.nerdsletter.net/cancellationsUnauthorizedこれは、Nerdsletter API にAuthorizationヘッダーが必要であるためです。 具体的には、データへの承認されたアクセスを取得するには、 ABC123のベアラー トークンを渡す必要があります。 ヘッダーAuthorization: Bearer ABC123を使用してサービスにリクエストを送信すると、モックされたキャンセル データを含む成功応答が返されます。
$curl https://api.nerdsletter.net/cancellations -H 'Authorization: Bearer ABC123'{"a": 15, "b": 78}前回のレッスンでは、 NerdGraphを使用してこの API トークンを New Relic アプリケーションのNerdStorageVaultデータ ストアに保存しました。 また、トークンを TotalCancellations コンポーネントに渡し、その使用状況をbrowserのコンソールにログに記録しました。 このレッスンでは、そのログ ステートメントに続いて、認証トークンを使用して Nerdsletter API に実際のリクエストを送信します。 次に、その外部リソースからのデータをTotal cancellations per version [バージョンごとの合計キャンセル数]グラフに入力します。
コースワークリポジトリ の third-party-services/ab-test ディレクトリに変更します。
$cd nru-programmability-course/third-party-services/ab-testこのディレクトリには、コースのこの時点でアプリケーションに含まれることが予想されるコードが含まれています。 各レッスンの開始時に正しいディレクトリに移動することで、カスタム コードが残され、間違ったコードがレッスン間で持ち越されることがなくなります。
nerdlets/ab-test-nerdlet/total-cancellations.jsで、API トークンを使用してapi.nerdsletter.netにリクエストを送信します。 結果を状態に保存し、その状態をrender()で使用します。
import React from 'react';import { HeadingText, PieChart } from 'nr1';
export default class TotalCancellations extends React.Component {  constructor() {    super(...arguments);
    this.state = {      cancellations: [],      lastToken: null,    };  }
  generateChartData(data) {    const cancellationsA = data ? data.a : 0;    const cancellationsB = data ? data.b : 0;
    return [      {        metadata: {          id: 'cancellations-A',          name: 'Version A',          viz: 'main',          color: 'blue',        },        data: [{ y: cancellationsA }],      },      {        metadata: {          id: 'cancellations-B',          name: 'Version B',          viz: 'main',          color: 'green',        },        data: [{ y: cancellationsB }],      },    ];  }
  componentDidUpdate() {    if (this.props.token && this.props.token != this.state.lastToken) {      console.log(`Requesting data with api token ${this.props.token}`);
      fetch('https://api.nerdsletter.net/cancellations', {        headers: { Authorization: `Bearer ${this.props.token}` },      })        .then((response) => {          if (response.status == 200) {            return response.json();          } else if (response.status == 401) {            console.error('Incorrect auth header');          } else {            console.error(response.text());          }        })        .then((data) => {          if (data) {            this.setState({              cancellations: this.generateChartData(data),              lastToken: this.props.token,            });          }        });    }  }
  render() {    return (      <div>        <HeadingText className="chartHeader">          Total cancellations per version        </HeadingText>        <PieChart data={this.state.cancellations} fullWidth />      </div>    );  }}このコードでは、各シリーズの y 値を、以前にハードコードされた値ではなく、ゼロでTotalCancellations.state.cancellations初期化します。 これにより、New Relic アプリが Nerdsletter API からデータを正常に要求しなかった場合、チャートに表示される内容をより現実的に表現できるようになります。 次に、Javascript のfetch()関数を使用して、Nerdsletter API に HTTP リクエストを送信します。 次に、リクエストのAuthorizationヘッダーでトークンを渡します。 リクエストが成功した場合は、 TotalCancellations.stateのキャンセル データを更新して、そのデータがコンポーネントのレンダリング メソッドに反映されるようにします。
nru-programmability-course/third-party-service/ab-testにある Nerdpack のルートに移動します。
Nerdpack の新しい UUID を生成します。
$nr1 nerdpack:uuid -gf既存の Nerdpack を含むコースワーク リポジトリを複製したため、独自の一意の識別子を生成する必要があります。 この UUID は Nerdpack を New Relic アカウントにマッピングします。 また、アプリがアカウントに代わって Nerdgraph リクエストを行うことも可能になります。
アプリケーションをローカルで提供します。
$nr1 nerdpack:servehttps://one.newrelic.com?nerdpacks=localにアクセスし、 Apps [アプリ] > Your apps [あなたのアプリ]でアプリケーションを表示します。
NerdStorageVaultのトークンが「ABC123」でない場合、コンソールに「認証ヘッダーが正しくありません」というエラーが表示されます。
トークンを「ABC123」に設定すると、Total cancellations per version [バージョンごとのキャンセルの合計数が]更新され、サードパーティ サービスからの値が表示されます。
ヒント
何かがうまくいかない場合は、 browserのデバッグ ツールを使用して問題を特定してください。
以下の点を確認してください:
- レッスンからコードを正しくコピーしました
 - 新しいUUIDを生成しました
 - プロジェクト内の
<YOUR NEW RELIC ACCOUNT ID>のすべてのインスタンスを実際の New Relicアカウント IDに置き換えました 
完了したら、ローカル サーバーのターミナル ウィンドウでCTRL+Cを押して、New Relic アプリケーションの提供を停止します。
よくやった! nr1 nerdpack:createを初めて実行してから長い道のりを歩んできました。
さまざまなスタイルの 8 つのグラフを作成し、複数のソースからの動的なデータをグラフに提供しました。New Relic SDK について学び、そのコンポーネントの多くを使用しました。さらに、サードパーティのサービスからデータを収集し、それをNew Relicデータとシームレスに混合して、A/B テストで競合するバージョン同士のパフォーマンスを総合的に把握できるようになりました。
ここから、New Relic SDK でまだ入手していない API セットは、プラットフォーム API だけです。これらは、New Relic アプリケーションの使いやすさを向上させるのに役立ちます。
ヒント
このレッスンは、New Relic アプリケーションをゼロから構築する方法を学習するコースの一部です。 次のレッスンに進みましょう: ナードレットに PlatformStateContext を追加します。