コンテンツに移動
サステナビリティ

二酸化炭素排出に関する理解を深めるためのデベロッパー向けガイド

2023年3月15日
https://storage.googleapis.com/gweb-cloudblog-publish/images/sustainability_2022_uo4lTe1.max-2500x2500.jpg
Google Cloud Japan Team

※この投稿は米国時間 2023 年 3 月 4 日に、Google Cloud blog に投稿されたものの抄訳です。

コードの記述、ジョブのスケジューリング、アプリケーションの構築をしているときに、二酸化炭素について考えている人はいないでしょう。

(私も考えていませんでした)

セキュリティ、スケーリング、費用、レイテンシなどについて考えていることでしょう。ただ、二酸化炭素排出についても、その項目に加えることが重要です。

この投稿では、二酸化炭素排出に配慮したデベロッパーになるための方法に関して、基本的なことを詳しく説明します。

以下の内容について説明します。

この二酸化炭素汚染の大元はどこなのか

Google Cloud での IT 運用に伴う二酸化炭素排出量を測定する方法

Google Cloud でのカーボン フットプリントを削減するための戦略

フットプリントとは一体何なのか?

そもそも、ソフトウェア アプリケーションを原因としたカーボン フットプリントがある仕組みについて、詳しく知らない方もいることでしょう。これは要するに、コンピューティング ワークロードを実行するには、常に電気という形態でエネルギーを使用する必要があるためです。そして、そのようなエネルギーはしばしば CO2 を排出するエネルギー源から発生します。

ご存じかと思いますが、電気は発電所で生産されます。このような発電所では、二酸化炭素を排出する化石燃料(石炭やガスなど)をエネルギー源として発電が行われることも、二酸化炭素を排出しないエネルギー源(風力や太陽光など)を使用して発電が行われることもあります。この電気が送電線と変電所で構成されたネットワーク(電力グリッド)を介して送電され、私たちの住宅、オフィス、レストラン、病院、そしてデータセンターに給電されます。

https://storage.googleapis.com/gweb-cloudblog-publish/images/1_grid-diagram.max-2000x2000.jpg

二酸化炭素を排出するエネルギー源と排出しないエネルギー源の内訳は、各地域の電力網ごとに異なります。たとえば、フランスでは原子力、スウェーデンでは水力、テキサスでは天然ガスへの依存度が高いです。また、太陽光などのエネルギー源は日中にのみ利用できるため、1 つの電力網の中でも、時間帯によって二酸化炭素排出原単位が変わる可能性があります。

どの地域の電力網につながっているのか、また、その電力網に給電しているエネルギー源の種類は何かについては、Google のパートナーの ElectrictyMaps で確認できます。ElectrictyMaps では、電気の炭素集約度に関する定量的なデータを 1 時間単位で確認でき、50 以上の国が対象となっています。

たとえば、以下はテキサスにおける、この投稿の執筆時点での電力内訳です(冬の早朝にこの記事を執筆しています)。風量とガスがこの地域の電力網の大半を担っていることがわかります。

https://storage.googleapis.com/gweb-cloudblog-publish/images/2__texas-grid.max-1900x1900.jpg

特定地域の電力網の二酸化炭素排出原単位や、Google Cloud データセンターがどの電力網とつながっているかを把握できるため、その地域でのワークロード実行に伴う二酸化炭素排出量を推定できます。

幸いなことに、Google Cloud ユーザーはこれらすべての計算を自身で行う必要がありません。

自社のカーボン フットプリントを特定するための方法は?

Google Cloud での IT 運用に起因する温室効果ガス排出量(GHG)の定量化を行う場合、Cloud コンソールの Carbon Footprint ダッシュボードを利用できます。

このツールは、特定の請求先アカウントに関連付けられた Google Cloud サービスの使用に伴う温室効果ガス排出量を二酸化炭素換算(単位: トン)で推定します。概要ページには、プロジェクト、リージョン、プロダクト全体でのカーボン フットプリントの月間推定値が表示されます。

https://storage.googleapis.com/gweb-cloudblog-publish/images/3_carbon-footprint-overview.max-2200x2200.jpg

ダッシュボード上部にある [年間の二酸化炭素排出量] で、Google Cloud の使用に伴う GHG 排出量の合計が [ロケーション ベースの合計] に表示されます。

https://storage.googleapis.com/gweb-cloudblog-publish/images/4_yearly_carbon_footprint.max-2000x2000.jpg

この数値は、Greenhouse Gas Protocol Corporate Standard が定義する 3 つの排出カテゴリ、スコープ 1、スコープ 2、スコープ 3 にさらに細分化することができます。このようなカテゴリは、自社の二酸化炭素排出の影響を測定する際に便利です。

それぞれのカテゴリに寄与するものが実際に何かは組織ごとに異なり、運用しているビジネスの種類に依存します。具体的に、Carbon Footprint ツールの場合は、Google のデータセンター運用に由来するスコープ 1、2、3 の排出量が表示されます。そして、顧客として Google Cloud を使用することに伴う排出は、スコープ 3 の排出に該当します。


https://storage.googleapis.com/gweb-cloudblog-publish/images/5_scopes.max-1300x1300.jpg

これらのスコープがどのように定義されているかについて理解を深めるために、それぞれのスコープに該当するものが何か、Google Cloud データセンターの場合でどのように推定値が計算されるかを見てみましょう。

スコープ 1 は、その組織が管理する排出源からの直接的な排出です。

一般的なオフィスビルの場合、キッチンのガスコンロや、定期便の運行で使用される燃料などが該当します。Google データセンターの場合、オンサイトのバックアップ発電機がスコープ 1 に該当します。  

スコープ 2 は、電気、熱、冷却の購入に起因する間接的な排出です。

二酸化炭素とコンピューティングという点に関して言えば、スコープ 2 が最も重要になります。というのも、電力網につながった Google Cloud データセンターでの電力使用に関連する排出が、スコープ 2 に該当するからです。

Carbon Footprint ツールでは、コンピューティング ワークロードが実行されている地域の発電網から供給される電気に由来する GHG 排出量を用いて、スコープ 2 の値が推定されます。

スコープ 3 は、その組織が管理していないアセットに起因する間接的な排出です。

これには、サプライヤーから購入した物品、廃棄物の処理、ビジネス出張などが該当します。Google Cloud の場合、Google のデータセンターで使用する GPU の生産に伴う排出が該当します。

Carbon Footprint ツールでは、Google Cloud のスコープ 1 と 3 の排出量の合計を取得して、特定の請求グループに対応する使用量に基づいてその値を分配することでスコープ 1 とスコープ 3 の値が計算されます。

カーボン フットプリントに関するどのような情報を取得できるか

私は、自身の Google Cloud プロジェクトに起因する排出量を特に知りたいと考えていました。その理由ですが、私は請求先アカウントをフェローのクラウド デベロッパー アドボケイトと共有しているのですが、過去の月の排出量だけではなく、Carbon Footprint の概要ページのもの以上のより詳細なデータを確認したいと考えていました。

私は、データを BigQuery Data Transfer Service でエクスポートしました。これは、carbon_footprint という月単位のパーティション分割テーブルを任意の BigQuery データセットに作成します。過去のデータを取得するために、2021 年までのデータのバックフィルを実行しました。
https://storage.googleapis.com/gweb-cloudblog-publish/images/6_carbon-table.max-2100x2100.jpg

このテーブルの各行が、特定のプロジェクトにおける特定の Google Cloud サービスに対応する排出量を表します(対象期間は 1 か月)。複数の方法でこの数値を計算してレポートするため、「排出量」という単一の列があるわけではありません。

carbon_footprint_kgCO2e フィールドには、3 つのネストされた列があります(スコープごとに 1 つずつ)。

https://storage.googleapis.com/gweb-cloudblog-publish/images/7_carbon-fp-value.max-2000x2000.jpg

scope2 フィールドは、さらに market_based と location_based に細分化されます。

https://storage.googleapis.com/gweb-cloudblog-publish/images/8_scope2-market-location.max-2000x2000.jpg

location_based が、最も気になる数字でしょう。これが、特定の Google Cloud サービスの使用に伴う電力消費に由来する実際の排出量(CO2 換算)です。

一方で、market_based の値は、location_based から、そのワークロードに割り当てられた再生可能エネルギーの購入を差し引いて計算されます。これは、特定ケースでのレポート目的で役立ちます。デベロッパーとしては location_based に着目すべきです。これは、ワークロードの実行に伴い発生した物理的排出量(CO2 換算)です。また現時点では、Carbon Footprint ツールは market_based の計算をまだサポートしていません。そのため、この値は常に null になります。データがリリースされるとすぐに、このフィールドに入力されます。

BigQuery など、特定のサービスごとに発電に起因する排出量の合計を知りたい場合は、以下を実行します。

読み込んでいます...

これは、すべての BigQuery アクティビティに由来する温室効果ガス排出量の推定値を二酸化炭素換算(単位: トン)で返します。

スコープ 2 の電力使用量だけではなく、3 つのスコープの総排出量を知りたい場合は、carbon_footprint_total_kgCO2e フィールドを確認します。
https://storage.googleapis.com/gweb-cloudblog-publish/images/9_carbon-fp-total.max-2000x2000.jpg

carbon_footprint_total_kgCO2e フィールドには、3 つのネストされた列が含まれます。ここでも、最も重要なものは location_based です。これは、ワークロードに直接由来する大気中に放出された二酸化炭素排出量の実際の量です。after_offsetsmarket_based は特定のレポート目的で使用することが便利ですが、デベロッパーの場合、何かしらの目的のためにこの値を使用する可能性は低いです。

特定のプロジェクトに対応した、月、リージョン、サービス全体の二酸化炭素排出量(3 つのスコープすべて)の内訳を確認したい場合は、以下を実行します。

読み込んでいます...

これにより、次のような結果が返されます。

https://storage.googleapis.com/gweb-cloudblog-publish/images/10_query-results.max-600x600.jpg

3 つのスコープすべての排出量の合計をプロジェクトごとに知りたい場合は、以下を実行します。

読み込んでいます...

デベロッパーとして二酸化炭素排出を考慮すべき理由

デベロッパーとしての私たちが、二酸化炭素排出に何かしらの形で加担しているということに対して、最初は少し悲観的に感じるかもしれません。私が言いたいことは要するに、私たちは、世の中のどこかしらの場所にある電力網とつながったマシンでジョブを動かしているということです。

ただ、すでに述べたように、エネルギー源の内訳は地域の電力網ごとに異なります。つまり、カーボンフリーのエネルギー源をより多く使用している電力網とつながっている Google Cloud リージョンが存在するということです。

そのため、コンピューティング ジョブを実行するためのリージョンの選択次第で、影響が大きくなる可能性があります。リージョンごとに二酸化炭素排出量プロファイルが大きく異なる場合もあり、地理的に互いに近接したリージョンですら排出量が大きく違うこともありえます。

Google Cloud ドキュメントを確認すると、カーボンフリー エネルギー スコア(CFE)が 75% 以上のリージョンの指標を確認できます。CFE は、カーボンフリーのエネルギーでアプリケーションが実行される時間割合の平均を表す指標です。
https://storage.googleapis.com/gweb-cloudblog-publish/images/11_low-co2-docs.max-800x800.jpg

Google Cloud のプロダクトの多くでは、リージョンを選択する際に、CO2 排出量が少なく環境に優しいことを示すアイコンも Cloud コンソールに表示されます。

https://storage.googleapis.com/gweb-cloudblog-publish/images/12_cloud-run.max-1200x1200.jpg

二酸化炭素排出量の削減という話になると、まず頭に浮かぶことはたいていの場合、その電力網にカーボンフリーのエネルギー源をもっと導入する、というものです。ただ、重要なことは供給に関することだけではありません。デベロッパーである私たちは、需要への対応の仕方に柔軟性を持たせることが可能です。

たとえば、時間に関する要求が厳しくないバッチ ワークロードの場合、カーボンフリーのエネルギーが利用しやすい場所や時間帯を選んで実行できます。可能な場合に、近いリージョンの中で CO2 排出が少ないリージョンを選択することから始めることがおすすめです。

もちろん、リージョンの選択は二酸化炭素以外の多くの要素(レイテンシ、料金、データの局所性など)にも依存します。リージョンの選択に関しては、Region Picker ツールを活用できます。「重要ではない」から「重要」までの複数の要素を考慮に入れて、可能な場合にはユーザー トラフィックが発生しているリージョンを選択します。Region Picker を使用すれば、そのワークロードに要求されるパラメータを考慮しつつ、CO2 排出量が最も少ないリージョンを簡単に選択できます。

次のステップ

おめでとうございます。二酸化炭素排出に対する理解に関しての確かな一歩を踏み出しました。次は、Carbon Footprint ダッシュボードを実際に使用して、自身のデータを確認してみましょう。その次に、可能であればワークロードを CO2 排出量の低いリージョンに移行して、月間のカーボン フットプリントに削減が見られるかを確認してみましょう。

二酸化炭素排出量の測定、報告方法を理解した後には、自社のソフトウェア アプリケーションから来るカーボン フットプリントを削減するために使用できるアーキテクチャ、設計パターン、手法について確認してみましょう。これらの詳細については、次回説明します。


- デベロッパー アドボケイト Nikita Namjoshi
投稿先