AMEE 入門

環境インテリジェンスをアプリケーションに組み込む

今日、エネルギーと、エネルギーを使用することによる環境への望ましくない影響 (つまり排出される二酸化炭素) に対して、非常に高い関心が持たれています。より環境に優しい世界にするために、個人、企業、そして政府はエネルギーとその使い方に注目するようになってきました。エネルギーの利用状況 (そして二酸化炭素の排出量) を理解するための道筋は、その使用量を測定して分析し、結果を理解した上で、その情報に対応することです。AMEE はあらゆる形でのエネルギーおよび活動データ、そして関連する二酸化炭素排出モデルを中立的に集約するプラットフォームです。この記事では、アプリケーションの中で AMEE プラットフォームを使用して高品質のエネルギー管理および二酸化炭素排出量計算ソリューションをクライアントに提供する方法を学びましょう。

James Smith, Development Manager, AMEE

James Smith は、AMEE の開発マネージャーです。ソフトウェア・エンジニアリングで経験を積んだ彼は、10 年以上 C++ ソフトウェアの開発に取り組み、バイオメトリクスからフライト・シミュレーションに至るまで、多岐にわたるプロジェクトに携わってきました。また、3D 動画アルゴリズムで博士号も取得しています。AMEE に入社する前は、The Carbon Diet や Green Thing などの Web ベースのプロジェクトに従事し、環境ソフトウェアの分野でも大きな成果を達成しています。



2009年 8月 24日 (初版 2009年 8月 18日)

はじめに

My developerWorks の GReen グループに参加してください

エネルギー、効率、そして環境に関するトピックについて議論し、リソースを共有するために、My developerWorks の Green computing group に参加してください。

AMEE は、長期間に亘って収集されたさまざまな形のエネルギー消費データを保存し、そこから取得するための Web ベースの API です。AEEE を使用すると同時に、広く認められた二酸化炭素排出量の計算モデルを適用して、エネルギーの消費による環境への影響を判断することができます。これまで AMEE を使用したアプリケーションとしては、イギリス政府の Act On CO2 Calculator から、CNN や Google のアプリケーションに至るまで、さまざまなエネルギー消費量追跡管理アプリケーションが実現されており、さらに Carbonetworks や Misys OpenCarbonWorld などの二酸化炭素排出量管理アプリケーションが提供されてきました。「Powered by AMEE」のロゴは、そのアプリケーションが権威ある標準に準拠していることを示します。


AMEE プラットフォーム

よく使われる頭字語

  • API: Application Program Interface
  • AMEE: Avoiding Mass Extinctions Engine
  • GHG: Greenhouse gas
  • HTTP: Hypertext Transfer Protocol
  • JSON: JavaScript Object Notation
  • REST: Representational State Transfer
  • SAP: Standard Assessment Procedure
  • UID: User Identifier
  • URL: Uniform Resource Locator
  • XML: Extensible Markup Language

AMEE プラットフォームとのやりとりには、XML、JSON、または Atom データ・フォーマットを選択できる RESTful な HTTP API を使用します。将来的には SOAP や他の API も追加される予定です。API は、プロファイルとデータという 2 つの部分で構成されています。エネルギー・データが保存される場所はプロファイルです。ここにエネルギー・データを蓄積していくことで、クライアント、ビジネス、そして個人のエネルギー消費量の履歴を保存することができます。データ・ストアには、GHG (Greenhouse Gas) プロトコルや、SAP (Standard Assessment Procedure: 標準評価手順) による建築物評価、150 の国と地域を対象とした二酸化炭素排出量係数、そして関連する計算方法をはじめとする、膨大な標準モデルがあります。エネルギー・データを AMEE プロファイルに保存すると、これらの計算方法が自動的に適用されて、エネルギー使用量に対応する正確なカーボン・フットプリントが算出されます。

前述のとおり、AMEE は HTTP API です。AMEE プラットフォームとの具体的なやりとりの内容を理解できるように、この記事の例には関連する HTTP リクエストの該当部分を記載します。したがって、読者が HTTP リクエストがどのように機能するかを十分に理解していること、そして XML を読んで理解できることを前提とします。この前提条件について助けが必要な場合は、記事の終わりにある「参考文献」セクションを調べてください。


開始手順

AMEE プラットフォームを使用するために最初に行わなければならないことは、サインアップしてアクセス・キーを入手することです。アクセス・キーは、http://my.amee.com/signup にアクセスして無料で入手することができます。ユーザー情報を入力すると、1 ~ 2 分で API キーおよびドキュメントその他の関連リソースへのリンクを通知する E メールが届きます。

James Smith による developerWorks ポッドキャスト

ポッドキャスト「James Smith on embedding environmental intelligence in your apps」(5分3秒、2009年8月): このポッドキャストで、この記事の著者である James Smith が AMEE (Avoiding Mass Extinction Engine) について、そして AMEE の環境情報をアプリケーションに追加する方法について語っています。

AMEE ステージ・プラットフォームには、入手したキーを使ってアクセスします。このプラットフォームは、開発者がクライアント・アプリケーションを開発およびテストする間、無料で使用することができます。ただし、ステージ・プラットフォーム上のデータは定期的に消去されるので、アプリケーションが本番環境に移行できる状態になったと判断したら、AMEE ライブ・プラットフォームを使用するように切り替えてください (ライブ・プラットフォームでは、サービス料金が適用される場合もあります)。いずれにしても開発を開始するのはステージ・プラットフォームなので、以下の例ではステージ・プラットフォームの URL を使用します。

もう 1 つ触れておく必要があることは、API を使用できるだけでなく、Web ブラウザーではステージ・プラットフォームまたはライブ・プラットフォームのいずれにしても直接表示することができます。ログインすると、いつでも API をブラウズできるようになります。以降の例に記載する URL はすべて、お使いのブラウザーでも有効に機能するはずです。また、XML、JSON、および Atom 出力も表示できるので、アプリケーションの開発中に利用することができます。


認証

キーを入手したら、API を利用するための準備は整いました。API を利用する最初のステップでは認証を行います。API での認証方式には、HTTP Basic と、認証済みセッションの 2 つがあります。

HTTP Basic 認証は極めて単純な認証方式で、ただ単に、リクエストごとに標準の HTTP フォーマットを使ってユーザー名とパスワードを提供すればよいだけです。ほとんどの HTTP ライブラリーはこの認証方式をサポートします。一例として、リスト 1 に Ruby での認証プロセスを記載します。

リスト 1. HTTP Basic 認証
http = Net::HTTP.new @host, 443
http.use_ssl = true
req = Net::HTTP::Get.new @location
req.basic_auth @username, @password
http.request(req)

もう 1 つの認証方法として、認証済みセッションを作成することもできます。その場合には、https://stage.amee.com/auth に対して POST リクエストを送信し、リクエスト本体にはフォームにエンコードしたデータとしてユーザー名とパスワードを提供します。さらに、標準的な Accept ヘッダーを使用して、結果をどのフォーマット (XML または JSON) で返すかを指定する必要もあります。このリクエストに対するレスポンスには各種の情報が含まれますが、そのなかで最も重要なのは認証トークンです。認証トークンは cookie とカスタム・ヘッダーの両方として返されますが、どちらも authToken と呼ばれます。この authToken の値を保存し、API に対するその後のリクエストに cookie として組み込んでください。authToken の有効期限は 2 時間です。あるいは 30 分間使用しなかった場合にも有効期限が切れます、そのため、認証済みセッションを使用する場合には、アプリケーションが常にリクエストで再認証を行えるようにしておかないと、authToken が失効することになります。


AMEE プロファイル API

認証が済むと、データをプロファイルに保存できるようになります。プロファイルは、個人を表すこともあれば、オフィスや会社全体を表すこともあります。プロファイルは実に、あらゆるものを表すことができます。データをどのように分割するのかを決めるのは完全にユーザー次第で、作成できるプロファイルの数に制限はありません。アプリケーションの設計によって最適な分割方法が決まってくるとは思いますが、一般的には、システム内でエネルギーを使用する 1 つのエンティティーとして考えられる要素には、専用のプロファイルを提供してください。

AMEE 内の各プロファイルは、16 桁のランダム・ストリング (プロファイル UID) によって識別されます。プロファイル UID は、その他すべてのユーザー詳細情報と併せて、アプリケーションのデータベースに保存してください。ユーザーが後で再びプロファイルを利用しようとしたときに、このプロファイル UID がなければ、そのユーザーの情報を再取得することができません。データのプライバシーとセキュリティーは最重要事項であるため、AMEE に保存されるすべてのデータは、個人情報に基づいてプロファイル・データを取得できないように匿名にされます。

プロファイルを作成するには、https://stage.amee.com/profilesPOST リクエストを送信します。送信するリクエスト本体に、パラメーター profile=true を指定してください (リスト 2 を参照)。

リスト 2. プロファイルの作成
POST /profiles HTTP/1.1
Accept: application/xml
Content-Type: application/x-www-form-urlencoded
profile=true

この例に限らず、以降の例でも認証の詳細は省略していることに注意してください。リスト 3 は、上記のリクエストに対するレスポンスの一例です (ここでも、簡潔にするために重要性の低い部分については省略しています)。

リスト 3. レスポンス
HTTP/1.1 200 OK
Content-Type: application/xml; charset=UTF-8
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<Resources xmlns="http://schemas.amee.cc/2.0">
  <ProfilesResource>
    <Profile uid="7C7D68C2A7CD">
      ...
    </Profile>
  </ProfilesResource>
</Resources>

このレスポンスで重要な部分は、Profile タグに含まれる uid 属性です。上記の例では、この属性の値は 7C7D68C2A7CD となっています。これは新しく作成されたプロファイルの UID なので、今後このプロファイルを使用して行うリクエストの URL には、この UID を組み込みます。

プロファイルのカテゴリー

プロファイルにはプロファイル・カテゴリーの階層があります。カテゴリー階層はディスク上のフォルダー構造と同じように、保存可能なデータをコンテキスト別の各領域に区分します。最上位のカテゴリーは、家庭、ビジネス、交通などいった広義の区分になります。各カテゴリーには、他のカテゴリーをいくつでも含めることができます。また、一部のカテゴリー (通常は下位レベルのカテゴリー) にはプロファイル項目が含まれます。プロファイル項目はいわばファイルのようなもので、エネルギー・データが実際に保存される場所です。

まず、リスト 4 に記載するプロファイル・カテゴリーの記述を見てください。リクエスト・パスに、リスト 3 のプロファイル UID が組み込まれていることがわかります。

リスト 4. プロファイル・カテゴリーの記述
GET /profiles/7C7D68C2A7CD/home HTTP/1.1
Accept: application/xml

HTTP/1.1 200 OK
Content-Type: application/xml; charset=UTF-8
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<Resources xmlns="http://schemas.amee.cc/2.0">
  <ProfileCategoryResource>
    <Path>/home</Path>
    <Profile uid="7C7D68C2A7CD"/>
    ...
    <DataCategory uid="BBA3AC3E795E">
      <Name>Home</Name>
      <Path>home</Path>
    </DataCategory>
    <ProfileCategories>
      <DataCategory uid="427DFCC65E52">
        <Name>Appliances</Name>
        <Path>appliances</Path>
      </DataCategory>
      <DataCategory uid="30BA55A0C472">
        <Name>Energy</Name>
        <Path>energy</Path>
      </DataCategory>
      ...
    </ProfileCategories>
  </ProfileCategoryResource>
</Resources>

上記では、/profiles/7C7D68C2A7CD/home に GET リクエストを送信することにより、Home (家庭) カテゴリーを記述する XML 文書を取得しています。見てのとおり、この XML には、Home カテゴリーに含まれる他のカテゴリーが記載されています。カテゴリーにプロファイル項目 (リスト 5 を参照) が含まれているとしたら、返される文書にはプロファイル項目も記載されることになります。

サブカテゴリーも同じ URL 構造で配列されるため、例えば Appliances (電化製品) サブカテゴリーのパスは /profiles/7C7D68C2A7CD/home/appliances となります。この方法に従ってパスを指定することで、データを保存したいカテゴリーが見つかるまで、カテゴリー階層をトラバースすることができます。ただし、このようなカテゴリーのブラウズを行うのは開発の段階で、おそらく XML や JSON API ではなく、Web インターフェースを使用することになります。カテゴリーのレイアウトは時間とともに変更されることはないので、コードに恒久的なカテゴリー・パスを保存しても問題ありません。

二酸化炭素データの保存と計算

エネルギー・データの保存先とするカテゴリーが見つかったら、今度はそのデータを保存するプロファイル項目を作成します。それには、対象カテゴリーの URL に一連の適切なパラメーターを設定して POST リクエストを送信すればよいだけです。すると、新しく作成されたプロファイル項目にデータが保存されます。例えば、/home/energy/quantity カテゴリーにエネルギー・データを保存するのであれば、リスト 5 のリクエストを送信することができます。

リスト 5. /home/energy/quantity カテゴリーにエネルギー・データを保存する例
POST /profiles/7C7D68C2A7CD/home/energy/quantity HTTP/1.1
Accept: application/xml
Content-Type: application/x-www-form-urlencoded
dataItemUid=66056991EE23&energyConsumption=10

HTTP/1.1 201 CREATED
Location: https://stage.amee.com/profiles/7C7D68C2A7CD/home/energy/quantity
/F7C0580D088A

リクエストが正常に行われると、新しく作成された項目のロケーションが示された 201 CREATED レスポンスが返されます。ここで、いくつかの注意点があります。特に重要なのは POST リクエストに設定するパラメーターで、なかでも第一に注意しなければならないのは dataItemUid です。このパラメーターが、カテゴリーに保存するデータのタイプそのもの (この例では、天然ガスの使用量) を指定します。このパラメーターについては、追って詳しく説明します。2 番目に重要なパラメーターは、このカテゴリーに固有のプロファイル項目値を指定する energyConsumptionです。カテゴリーごとに異なるタイプのデータを保存できることから、プロファイル項目値もカテゴリーによって異なります。各カテゴリーで使用するプロファイル項目値を見つける方法については後で詳しく説明しますが、上記の呼び出しでは、このプロファイル項目に対して毎月 10 kWh のエネルギーという値が保存されます。POST リクエストで使用する単位は自由に選択することができます (詳細については「単位」のセクションを参照)。

データを保存するもう 1 つの方法は、多くの場合に役立ちます。それは、POST リクエストで追加パラメーター representation=full を渡し、新しく作成された項目のロケーションだけではなく、項目の表現を取得するというものです。上記で保存したデータから二酸化炭素の値を取得するとしたら、この方法を使用することができます。この場合の XML 表現は、GET レスポンスに似ています (リスト 6 を参照)。

リスト 6. 新しく作成された項目の XML 表現
HTTP/1.1 200 OK
Content-Type: application/xml; charset=UTF-8

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<Resources xmlns="http://schemas.amee.cc/2.0">once you know where, 
  <ProfileCategoryResource>
    ...
    <ProfileItems>
      <ProfileItem uid="2DB26ED646AC">
        <Name/>
        <ItemValues>
          ...
          <ItemValue uid="2A0B5AD9927D">
            <Path>energyConsumption</Path>
            <Name>Energy Consumption</Name>
            <Value>10</Value>
            <Unit>kWh</Unit>
            <PerUnit>month</PerUnit>
            ...
          </ItemValue>
          ...
        </ItemValues>
        <Amount unit="kg/year">24.660000</Amount>
        <StartDate>2009-06-23T17:22:00Z</StartDate>
        <EndDate/>
        <DataItem uid="66056991EE23">
          <Label>gas</Label>
        </DataItem>
      </ProfileItem>
    </ProfileItems>
    <TotalAmount unit="kg/year">24.660000</TotalAmount>
  </ProfileCategoryResource>
</Resources>

ProfileItem タグに注意してください。新しい項目の詳細は、このタグに含まれます。二酸化炭素の値を取得するという例で言うと、最も重要なのは、ItemValue タグと Amount タグのそれぞれに含まれる値です。項目値 (簡潔にするために上記では 1 つの値しか記載していませんが、実際のレスポンスには多数の値があります) は、POST リクエストによって保存されたパラメーターを表現したものです。上記の場合、項目値は energyConsumption で、その値は 10 となっています。この項目値の単位は Unit と PerUnit に示されます (上記では毎月の kWh 数)。Amount タグが示すのは、使用されたエネルギーによって排出された二酸化炭素の量です。つまり上記の例では、毎月 10kWh のガスを 1 年間使用したとすると、24.66kg の二酸化炭素を排出することになります。

文書の終わりにある TotalAmount タグにも注意してください。複数の項目 (すべて XML 表現に記載されます) が含まれるカテゴリーを調べるとすると、このタグに、そのカテゴリーのすべての項目での二酸化炭素排出量の合計が含まれます。

AMEE では、該当するカテゴリーを見つけ、正しい項目を作成することによって、何千種類ものエネルギーを保存することができます。そして各種のパラメーターを設定することで、さまざまなデータ値を異なる期間、あるいは異なる単位で保存することが可能です。以降のセクションでは、これらのオプションをいくつか取り上げ、その詳細を検討します。


AMEE データ API

以上のように、データを保存して結果を取得するのは簡単ですが、どのデータを保存するのか、そしてどこに保存するのかはどのようにすればわかるのでしょうか?このセクションでは、この質問について少し掘り下げ、前のセクションで登場した未知の dataItemUid パラメーターの謎を解き明かします。

AMEE データ API は https://stage.amee.com/data にあります (AMEE API を開くには、入手した AMEE アクセス・キーを使用するということを思い出してください。キーは http://my.amee.com/signup から無料で入手することができます)。Web ブラウザーでこの URL にアクセスすると、プロファイル API と似ているという印象を持つはずです。データ API を構成するカテゴリーの階層は、プロファイル内の階層と少しも変わりません。実際、これらのデータ・カテゴリーのほうが本物で、各プロファイル内の階層は同じ構造の仮想コピーです。

データ・カテゴリーには、前に作成したプロファイル項目にリンクされたデータ項目を含めることができます。プロファイル項目にはユーザーが指定した変数が保存されますが、それとは対照的に、データ項目に含まれるのは二酸化炭素排出量係数などの AMEE システムの定数です。この 2 つの構造は、以下のように考えることができます。

  • データ・カテゴリーは抽象基底クラスのようなもので、カテゴリーでは、例えばすべての自動車モデルを表現することができます。
  • カテゴリーに含まれるデータ項目は、その基底クラスのサブクラスのようなものです。したがって、自動車モデルのカテゴリーには、例えばフォード (Ford) 社の車種の 1 つ、フォーカス (Focus) などを表すデータ項目が含まれることになります。
  • プロファイル項目は、これらのクラスのインスタンスのようなものです。つまり、昨年のフォード・フォーカス (Ford Focus) の実走行距離が 10,000 マイルだとすると、(該当するプロファイル・カテゴリーに) プロファイル項目を作成して、dataItemUid パラメーターを Ford Focus データ項目の UID に設定することができます (総マイル数の値も同じく設定します)。

データ項目 UID に関して重要な点は、UID は常に同じであるとは限らないということです。データ項目 UID は AMEE プラットフォームのそれぞれのインスタンスによって異なってくるため、例えばライブ・プラットフォームとステージ・プラットフォームとでは UID が異なります。アプリケーションで共通して使用されるデータ項目 UID はローカル・キャッシュに保持しても構いませんが、カテゴリーのパスと同じ方法でデータ項目 UID をハードコーディングすることはできません。

データ項目 UID の検出

データ項目を作成するには UID が必要な一方、それをアプリケーションにハードコーティングできないとしたら、どうすればよいのでしょうか?その答えは、ドリルダウン・リソースを使って対象とするデータ・カテゴリーを見つけることです。GET リクエストを https://stage.amee.com/data/{data_category_path}/drill に送信すると、選択可能なオプションのリストが返されるので、このリストを利用して必要な項目を選択します。 例えば、家庭エネルギー・カテゴリーで燃料タイプを選択するには、リスト 7 のようにします。

リスト 7. 燃料タイプの選択
GET /data/home/energy/quantity/drill HTTP/1.1
Accept: application/xml

HTTP/1.1 200 OK
Content-Type: application/xml; charset=UTF-8
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<Resources>
  <DrillDownResource>
    ...
    <Selections/>
    <Choices>
      <Name>type</Name>
      <Choices>
        <Choice>
          <Name>Gas</Name>
          <Value>gas</Value>
        </Choice>
        <Choice>
          <Name>Electricity</Name>
          <Value>electricity</Value>
        </Choice>
      </Choices>
    </Choices>
  </DrillDownResource>
</Resources>

この文書によって、選択可能な type オプションがわかります。オプションを選択するには、drilldown リソースに対して別の呼び出しを行いますが、この場合の呼び出しでは、該当するタイプを URL に指定します (リスト 8 を参照)。

リスト 8. 燃料タイプの指定
GET /data/home/energy/quantity/drill?type=gas HTTP/1.1
Accept: application/xml

この呼び出しによって返される文書には、次のオプションを選択するための別の選択肢が含まれています。この処理を何度か繰り返すと、最終的に UID という 1 つの選択肢だけとなります。これが、選択した内容に対応するデータ項目の UID です。この方法は、長いデータ項目のリストからユーザーが効率的に対象を選択できるようにする上で非常に役立つ一方、少数のカテゴリーからなる項目の場合にも必要となります。

アプリケーションを開発するときに、どの項目を保存するかがわかっているとしても (例えば、天然ガスの使用状況について保存する可能性のある項目は 1 つしかありません)、ドリルダウン・リソースを使用する必要はあります。前に注意したように、AMEE インスタンス・プラットフォームによって UID は変わりますが、ドリルダウン URL が変わることは決してありません。したがって、UID をハードコーディングする代わりに完全なドリルダウン URL を使用し、提供された UID は一時的にキャッシュに入れてください。

どのデータを使うべきか

AMEE で保存できるデータには、家庭用電化製品から産業プロセスに至るまで非常に多くのタイプがありますが、そのすべてのタイプをユーザーに提示したいとは思わないはずです。そのためアプリケーションの設計プロセスの一環として、使用可能なデータのうち、扱う必要のあるデータのサブセットを絞り込む必要があります。データのサブセットが絞り込まれれば、使用する AMEE カテゴリーおよびデータ項目を特定することができます。

AMEE データ・ウィキは、このプロセスに役立つリソースです。http://wiki.amee.com にある AMEE データ・ウィキには、各カテゴリーの項目で使用するのに適切なパラメーターをはじめ、AMEE の全データ・カテゴリーに関する詳細な情報が記載されています。さらに、すべてのデータのすべてのソースも記載されているので、必要な場合には、数値が信頼できるものかを確認することができます。また、場合に応じた共通データ・サブセットの候補も記載されています (例えば、家庭内での二酸化炭素排出量を計算する場合に使用するデータ・サブセットなど)。

その他の制御

上記以外にも、多数のパラメーターを使ってデータのさまざまな側面を制御することができます。なかでもとりわけ重要な側面は、時間と単位です。この記事では簡単にしか説明しないので、さらに詳しく調べるには AMEE のドキュメントを参照してください。


プロファイル履歴

単一のプロファイル項目を保存することは有益ですが、ほとんどのデータは時間とともに変わっていきます。エネルギーの使用状況に関して言えば、それは尚更のことです。AMEE ではデータと併せて時間情報を保存することも可能なので、一連のデータを時間の経過とともに蓄積していくことができます。

時間情報を制御するには、startDateendDateduration という 3 つのパラメーターを使用します。プロファイル項目を作成する際にこれらのパラメーターを指定することで、作成したプロファイル項目の有効期限を設定することができます。デフォルトでは、startDate は「現在」に、endDate は遥か遠い未来に設定されます。時間に依存しないデータであれば、デフォルトの設定で問題はありませんが、データが特定の時点での使用量を表す場合には明示的に値を設定することができます。AMEE プラットフォームの最大時間分解能は 1 分です。秒数を指定した場合には、切り捨てられます。プロファイルに設定できるのは、endDate または duration のいずれか一方であることに注意してください。

この 3 つのパラメーターはいずれも標準 ISO-8601 フォーマットで指定されます。例えば、リスト 9 のパラメーターはいずれも有効です (正しくフォームにエンコードされている場合)。

リスト 9. 標準 ISO-8601 フォーマットの有効なパラメーター
startDate=2009-08-01T14:30:55Z
endDate=2009-08-02T14:30:55-08:00
duration=PT30S

注意する点として、startDate を設定したとしても、必ずしも endDate または duration を設定する必要はありません。また、異なる startDate で 2 つの項目を作成した場合、早い日時を設定してある方の endDate が自動的に有効になります。endDate または duration のうち、プロファイルに設定できるのはいずれか一方のみで、この 2 つを同時に設定することはできません。

プロファイル項目の名前指定

同じデータ項目 UID を使って 2 つのプロファイル項目を作成する場合、この 2 つの時間が重複していると、AMEE API はデータから理にかなった時系列を形成できないという理由でエラーを出します。しかし、場合によっては時間を重複させなければならないこともあります。その一例は、同じタイプの 2 台の自動車が使用するエネルギーのデータを保存する場合です。このような場合には、名前パラメーターを指定することによって、それぞれの時系列を識別することができます。同じプロファイル・カテゴリーに複数の履歴を作成するには、それぞれの履歴に異なる名前を使用します。名前は必須ではありませんが、複数の時系列を一緒に保存する必要が出てくると考えられる場合には、名前を指定するのが賢明な手法です。

プロファイル履歴のリクエスト

時系列を作り上げた暁には、おそらく履歴データを取得したいと思うはずです。上記の説明からわかるように、プロファイル・カテゴリーには現在のプロファイル項目のリストが含まれます。この「現時点」の振る舞いを変更するには、GET リクエストに startDate および endDate クエリー・パラメーターを指定してください。特定の日付の間のすべてのデータをリクエストすることも、特定の時刻以降のすべてのデータをリクエストすることもできます。さらに、クエリーで指定された期間の二酸化炭素排出量を計算する特殊な比例モードをはじめ、さまざまな計算方法をリクエストすることもできます。


単位

前述のとおり、AMEE には単位換算に関する広範なサポートが組み込まれています。ほとんどの単位は、デフォルトで国際単位系 (SI) となっていますが、必要な場合には US のガロンを単位として燃料を指定することができます。時間の単位についても、同じく変更可能です。プロファイル項目の各パラメーターには、単位を制御する Unit および PerUnit パラメーターが関連付けられます。例えば、燃料にデフォルトの単位を使用する場合、毎月 100 リットルの燃料使用量を表すとしたら、volume=100 というパラメーターを指定して燃料購入量を追加することになります。

一方、1 週間ごとの燃料購入量をガロンで測定している場合に指定するパラメーターは、volume=100&volumeUnit=gal&volumePerUnit=week となります。

同様に、AMEE が生成する二酸化炭素排出量の結果にも 1 年あたりの kg 数というデフォルトの単位が設定されています。この単位を 1 週間あたりのポンド数にするには、GET リクエストに https://stage.amee.com/profiles/7C7D68C2A7CD/home/energy/ quantity?returnUnit=lb&returnPerUnit=week という特殊なパラメーターを設定します。

単位換算の計算はすべて AMEE が自動的に処理してくれるため、最小限の作業でアプリケーションに正しい結果がもたらされることになります。


まとめ

この記事では、AMEE API を使用してアプリケーションに環境インテリジェンスを組み込む方法を学びました。さらに、AMEE API の機能を解説し、例を用いてデータの保存方法と保存場所について説明しましたが、もっと詳細を調べるには実際に使ってみるのが最善の方法です。オンラインには多数のドキュメントが揃っています。これらのドキュメントは、この API を使用する際のあらゆる側面をカバーしているだけでなく、この記事で取り上げた全トピックについても遙かに深く掘り下げて説明しています。今後の記事では、AMEE を使ってエンド・ツー・エンドのアプリケーションを作成する方法を詳しく説明する予定ですが、それまでは、AMEE にサインアップして、いろいろと試して使ってみてください。

参考文献

学ぶために

  • ポッドキャスト「James Smith on embedding environmental intelligence in your apps」(5分3秒、2009年8月): このポッドキャストで、著者が AMEE (Avoiding Mass Extinction Engine) について、そして AMEE の環境情報をアプリケーションに追加する方法について語っています。
  • AMEE ホーム・ページ: ホーム・ページにアクセスして、AMEE プラットフォームの詳細、そしてあらゆるもののカーボン・フットプリントを測定する方法を学んでください。
  • 無料の AMEE アクセス・キー: AMEE プラットフォームを使用するためにはまず、サインアップしてアクセス・キーを入手してください。
  • AMEE Developer Centre: AMEE API の使用に関するすべての側面を学んでください。
  • AMEE データ・ウィキ: データ・ソース、手法 (Greenhouse Gas Protocol など)、そして AMEE サービスで使用されている前提について調べてください。
  • IBM Smarter Planet ホーム・ページ: より賢明な惑星にするために、私たちの世界を支えるシステムをつなげて交通量の削減、より健康的な食品、よりきれいな水、より安全な都市を実現しましょう。
  • Smart Grid: ユーティリティーがその電力網にデジタル情報層の追加できるよう支援するために IBM が採っている方法について学んでください。
  • City of Amsterdam Smarter Energy Project: エネルギー消費量に関して消費者が情報に基づく決定を行えるように、IBM と Cisco ではどのように連携しているかを調べてください。
  • ウィキペディアでの ISO-8601 の記事: 日付と時刻の表現に関する国際標準について読んでください。
  • ウィキペディアでの HTTP の記事: このアプリケーション・レベルのプロトコルに関する背景情報を読んでください。
  • Introduction to XML」(Doug Tidwell 著、developerWorks、2002年8月): developerWorks のこの規範的チュートリアルを読んでください。
  • Ajax と REST、第 1 回」(Bill Higgins 著、 developerWorks、2006年10月): Ajax と REST の組み合わせが没入型 Web アプリケーションにもたらす利点を学んでください。
  • REST: このアーキテクチャー・スタイルのネットワーク・システムについて学んでください。
  • GReen IT Report: グリーン・コンピューティングのリソースで、Green IT のスキルを培ってください。
  • IBM XML 認定: XML や関連技術の IBM 認定技術者になる方法について調べてください。
  • XML Technical library: 広範な技術に関する記事とヒント、チュートリアル、標準、そして IBM Redbooks については、developerWorks XML ゾーンを参照してください。
  • developerWorks の Technical events and webcasts: これらのセッションで最新情報を入手してください。
  • Technology bookstore: この記事で紹介した技術やその他の技術に関する本を参照してください。
  • developerWorks podcasts: ソフトウェア開発者向けの興味深いインタビューとディスカッションを聞いてください。

製品や技術を入手するために

  • IBM 製品の評価版: DB2®、Lotus®、Rational®、Tivoli®、および WebSphere® のアプリケーション開発ツールとミドルウェア製品を体験するには、IBM SOA Sandbox のオンライン試用版 をダウンロードするか、検討してみてください。

議論するために

コメント

developerWorks: サイン・イン

必須フィールドは(*)で示されます。


IBM ID が必要ですか?
IBM IDをお忘れですか?


パスワードをお忘れですか?
パスワードの変更

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


お客様が developerWorks に初めてサインインすると、お客様のプロフィールが作成されます。会社名を非表示とする選択を行わない限り、プロフィール内の情報(名前、国/地域や会社名)は公開され、投稿するコンテンツと一緒に表示されますが、いつでもこれらの情報を更新できます。

送信されたすべての情報は安全です。

ディスプレイ・ネームを選択してください



developerWorks に初めてサインインするとプロフィールが作成されますので、その際にディスプレイ・ネームを選択する必要があります。ディスプレイ・ネームは、お客様が developerWorks に投稿するコンテンツと一緒に表示されます。

ディスプレイ・ネームは、3文字から31文字の範囲で指定し、かつ developerWorks コミュニティーでユニークである必要があります。また、プライバシー上の理由でお客様の電子メール・アドレスは使用しないでください。

必須フィールドは(*)で示されます。

3文字から31文字の範囲で指定し

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


送信されたすべての情報は安全です。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=XML
ArticleID=428121
ArticleTitle=AMEE 入門
publish-date=08242009