---
# System prepended metadata

title: 'Quick Answer: 3 Reasons to Be Cautious About Investing in Environmentally Sustainable Software'

---

# Quick Answer: 3 Reasons to Be Cautious About Investing in Environmentally Sustainable Software

Published 6 July 2021 - ID G00752658 - 4 min read

エンタープライズアーキテクチャ(EA)と技術イノベーション（TI）のリーダーは，ソフトウェアをより持続可能なものにするという要求に直面している。
これは技術的には達成可能だが、
ソフトウェアの開発・実行は、組織全体の持続可能性における小さな項目であることが多く、
持続可能なソフトウェアを実現するためには，商業的な妥協が必要となる．

## 要旨
エンタープライズアーキテクチャ(EA)と技術イノベーション（TI）のリーダーは、ソフトウェアとアプリをより環境的に持続可能なものにするために投資すべきですか？

* ほとんどの企業にとって、ITの炭素と環境への影響は、企業の持続可能性のパフォーマンスにとって重要ではない。
ほとんどの組織は、IT以外の分野に投資することで、より大きなエネルギー効率・炭素効率を達成できる。
* ソフトウェアをより持続可能なものにする技術的方法は数多くあります；
    * ①エネルギー効率の高いプログラミング言語
    * ②革新的な効率的なハードウェア
    * ③優れたアーキテクチャ
    * ④改善されたWebページのデザイン
    * ⑤再生可能エネルギーを用いた効率的なホスティング，など
* 持続可能性の観点から、ソフトウェアエンジニアリングへの投資よりも，③効率的なハードウェアや⑤ホスティング、または再生可能エネルギーへの投資の方が、費用対効果が高い可能性があります。
* ソフトのCO2排出量を削減するためには、性能やUX（ユーザエクスペリエンス）などの分野で商業的妥協が必要になる場合がある。


## もっと詳しく

### 持続可能なソフトウェアとは何？

ソフトウェアの持続可能性の主な焦点は、ふつう、その実行に関するCO2排出量を減らすことである．
加えて，機器の使用量を減らす、電子廃棄物（e-waste，電池など）を減らす，といった方法もある．
（もちろん、ソフトウェアがよりエネルギー効率の高い事業運営を実装・奨励する機会はあるが、それはこのノートの範囲外）

図1：ソフトウェアの持続可能性の6つの重要な側面
* エネルギー効率の高いハードウェアとサーキュラーエコノミーの実践
* 持続可能なデータセンターとクラウドサービス
* 持続可能性のためのエンドツーエンドのデザイン思考
* エネルギー効率の高いアーキテクチャとネットワーキング
* 再生可能エネルギー源
* エネルギー効率の高いソフトウェア 

### ソフトウェアの持続可能性の戦術
ソフトウェアとシステムをより持続可能にするための多くの技術的アプローチがある。

* より効率的なソフトウェアツールを用いる．
**例）一部のプログラミング言語は、同じタスクに対して他の言語の75倍のエネルギーを要する。**
* ウェブページを再設計して、データトラフィックと計算量を減らす．
例）圧縮率の向上、データ表現の効率化、キャッシュの向上、動画の自動再生の削除、デマンドシェーピング、サードパーティトラッカーの使用の管理などを行う。
* より効率的なハードウェアを用いる。
**人工知能（AI）の学習などの場合、専用機器を用いると、消費電力を1〜2桁改善できる。**
**超並列処理や光コンピューティングなどの新技術は、2025年までに新しい機会を生み出す。**
* エンドツーエンドのシステム思考アプローチを適用して、アーキテクチャ全体のエネルギー使用量を最適化する。
* 再生可能エネルギーを用いた、エネルギー効率の高いデータセンター、クラウド、ホスティングサービスを用いる。
* ネットワークトラフィックを最適化し、エネルギー効率の高いネットワーク技術を選び、不要な通信を最小限に抑える。
* モノのインターネット（IoT）システムを設計して、電池の寿命を最大限に延ばし、電子廃棄物（電池）を減らす。
* 価格戦略（SaaSなど）を用いて、カーボンオフセット費用をユーザ/消費者に転嫁する。

ただし、これらの手法に投資する前に、以下で説明する3つの重要な注意事項を検討し、他分野への投資が組織の持続可能性のフットプリントにより良い利益をもたらすか検討してください。

### 注意1：もっと簡単に成果を刈り取る方法がある
より集中的な計算は、一般に、より多くのエネルギー消費を伴う．
ただし、「持続可能なソフトウェアエンジニアリング」が過去10年間極めてゆっくり進化した理由は、
* エネルギー効率の高い機器・データセンター・ネットワークの作成と購入、使用率の向上
* 再生可能エネルギーの購入
といった解決策の方が，はるかに簡単だからである。
一般に、複雑なソフトウェアエンジニアリングよりも，このような分野に投資する方が効果的である．
2025年まで，この傾向が続く．

### 注意2：ほとんどのソフトウェアのカーボンフットプリントは重要ではありません
情報通信技術（ICT）セクター全体で、世界の温室効果ガス（GHG）排出量の約2％を占めると推定されている。
しかし，

* 企業レベルでは、ICTはふつう重要ではなく、企業のGHG排出量の比較的小さな割合を占める。
* ICTは重要度を増しているが、これは必ずしもCO2排出量の大幅な増加を意味するわけではありません。
    * 第1に、（注意1で述べた）効率の向上のため。
    * 第2に、ICTの成長の多くは、IoTなどの領域で起きている。機器は小さく、電子的に単純で、使用電力が極めて少ないため、カーボンフットプリントへの寄与は比較的小さい。ただし、バッテリーといった電子廃棄物が持続可能性に影響を与える可能性がある。
    * ICTの全体的なCO2排出量は，企業の視点からは小さいかもしれない．
    * **AIトレーニング、シミュレーション、暗号通貨マイニングなどの分野で、大量のエネルギーを消費し、最適化の価値のあるターゲットとなる高額なアイテムがいくつかある可能性がある。**

### 注意3：不要な副作用に注意
ソフトウェアの持続可能性を改善する戦術は、次のような副作用が生じる可能性がある。

* **エネルギー効率の高いプログラミング言語は生産性が低く**、市場投入までの時間とビジネスの俊敏性に影響を与える可能性がある。
* ソフトウェアツールを切り替えると、スキル・ライセンス・再開発に多くのコストがかかる可能性がある。
* 商業的に重要なタスクには、多くの計算量（エネルギー）が費やされることが多い。
例）ビデオ、アニメーション、拡張現実（AR）/仮想現実（VR）コンテンツ、Webページ上の広告・追跡コード
* AIトレーニングやシミュレーションなど、エネルギーとGHGフットプリントが大きい一部のソフトは、ビジネスに不可欠な場合がある。
その場合、それを置き換えるよりも、それをホストするための低炭素の方法を見つける方が簡単かもしれない。

----

持続可能なソフトウェアに関する最近のノート（参考：G00752658）について、いくつかの質問がありました。
https://www.gartner.com/document/4003285?ref=sendres_email&refval=77712570

1.
>「例）一部のプログラミング言語は、同じタスクに対して他の言語の75倍のエネルギーを要する。」

以下の論文による．
Rui Pereiraa, Marco Coutoc, Francisco Ribeiroc, Rui Ruac, Jacome Cunhac, Joao Paulo Fernandes, Joao Saraivac. "Ranking Programming Languages by Energy Efficiency"
https://doi.org/10.1016/j.scico.2021.102609
https://haslab.github.io/SAFER/scp21.pdf

この例では、エネルギー的に最も優れた言語はCで、最も劣った言語はPython（Cの75.8倍）とPerl（Cの79.5倍）であった．

しかし，一般に，
プログラミング言語のエネルギー消費量は、以下のような多くの要因に大きく依存する；
* 実行されるアルゴリズム
* コードが実行されるプラットフォーム
* コンパイラ/インタプリタの特定の実装
* コンパイラの最適化
* 言語ライブラリコードの品質
* 処理されるデータ値

したがって、75倍という数値は、ある特定のモデルにおける数値であり，大まかな指標としてとらえる必要がある。

2.
> 人工知能（AI）の学習などの場合、専用機器を用いると、消費電力を1〜2桁改善できる。
どのような専用機器?

一般に、特定の状況に最適化された専用機器は、汎用機よりも優れたエネルギー効率をもたらす．以下に，いくつか例示する；

2b) 
高性能・高クロックの複雑なプロセッサは、低性能・低クロックの単純なプロセッサに比べて電力効率が劣る。
この原理は、スマートフォンが複数の非対称なプロセッサコアをもつ携帯電話の分野で広く利用されています。
ARM社はこれをbig.LITTLEアーキテクチャと呼んでいる。
このアイデアは、電話がアイドル状態のときは、計算量が少ないため，小さくて遅いが効率的なプロセッサを用いるというものである。
複雑なタスクや高性能を要する場合は、OSがより早く起動するがコア効率は下がる．

2c）
FPGA（Field Programmable Gate Array）。
FPGAは、効果的にプログラム可能なハードウェアユニットであり、一部のアプリでは、汎用CPUよりも優れたエネルギー性能を提供できる。
ただし、ソフトウェア開発は、従来のCPUよりもはるかに複雑になる。

2d)
最適化されたAIプロセッサ。
AI学習や（場合によっては）AIの実行など、一部のタスクはエネルギーを大量に消費します。
これは、従来のCPUアーキテクチャがこのタスクに適していないことが一因である．
最適化されたアーキテクチャの方が効率的に処理を実行する。
このようなユニットの例に、Google TPU、GraphCore M2000、SambaNova Systems、Cerebras、NVIDIAの各種製品などがある。

2e)
GPU。
NVIDIAなどのベンダーが提供するチップやサブシステムは、レンダリングなどの特殊タスクを、汎用CPUよりもはるかに効率的に実行する。

2f)
組み込み低電力AIプロセッサ。
消費電力は、電池で動く組み込みシステムでは大きな懸念事項である．
例えば，ネットワーク接続なしでイヤフォンで自律音声認識機能を提供する。
いくつかのメーカーは、このようなアプリのためにDNN（ディープニューラルネットワーク）オンチップソリューションを開発している．従来のCPUやDSPを用いた場合よりも消費電力を100分の1にすると謳っている。
ベンダーの例として，Syntiant社やIntel社（Neuromorphic chips）などがある。

ただし、このようなプロセッサは、組み込みシステムで使用されるエネルギーが非常に小さいため、カーボンフットプリントなどの問題にほとんど影響をしない。
電池寿命を延ばしたり、機器の電池を小さくしたりすることで、電子廃棄物の削減に多少貢献する可能性がある。

2g) 特定用途向け集積回路ASIC（Application Specific Integrated Circuits）。
場合によっては、特定の計算を行うために特別にシリコンチップを設計する方が、費用効果が高くなる。
このようなASICは、汎用プロセッサよりもはるかにエネルギー効率が高くなる。
最もよく知られる例は、ビットコイン採掘用に設計されたASICである。

3.
>超並列処理や光コンピューティングなどの新技術は、2025年までに新しい機会を生み出す。
これらがどのように持続可能性に貢献する?

超並列処理の最も優れた例の1つは、（2)で言及した）Cerebrasデバイスである。
これは、85万個のプロセッサコアを搭載した超大型のシリコンチップで、極めて高速な相互接続を実現している。
CerebrasはもともとAI用に設計されたが、最近ではより一般的なシミュレーションタスクにも適用されている。
このような大型チップは大量の電力（15〜20kW）を消費するが、同じタスクを実行する同等のスーパーコンピュータよりもはるかに少ない。
2000年に行われた初代Cerebrasとスーパーコンピュータの比較では、Cerebrasは、スーパーコンピュータ（電力消費量450kW）よりもはるかに速くシミュレーションを解決した（と報告されている。）
第2世代のCerebrasは、同じ消費電力で計算能力を大幅に向上できると表明している。
https://spectrum.ieee.org/ai-system-beats-supercomputer-at-key-scientific-simulation

光コンピューティング分野のスタートアップ企業は、AIの推論などのタスクで、シリコンチップよりも優れた電力効率を報告している。
ベンダーには、LightMatter社とLightelligence社がある。
LightMatter社は、同社の第1世代の光チップの電力効率が、NVIDIA社の同等システムの約5倍であると主張している。
ただし，あらゆるアルゴリズムを実行できるわけではないことに注意．

4.
>「エネルギー効率の高いプログラミング言語は生産性が低く」
とは具体的にどの言語?

上で示した論文によると，最もエネルギー効率の高いプログラミング言語はC言語である。
しかし，C言語は高水準言語ではなく，プログラミング生産性も高くない．
（これは、言語の特徴、開発ライフサイクルプロセス、デバッグやテストに必要な工数など、いくつかの要因が影響している。）
一方，開発生産性の高い高水準言語は，計算効率が悪い場合がある。
また、プラットフォーム移植性などの機能は、インタプリタなどの技術が採用され、効率性が犠牲となることがある．

先に紹介した論文では、エネルギー効率が最も悪い言語として、Ruby、Python、Perlが挙げられている。
これらの言語はインタプリタ型である．
Rubyのように開発生産性を高める高水準の機能を備えるが、ランタイム性能を最適化するようには設計されていません。

（もちろん，性能詳細は，各アプリに依存することに留意されたい）

5.
> AIトレーニング、シミュレーション、暗号通貨マイニングなどの分野で、大量のエネルギーを消費し、最適化の価値のあるターゲットとなる高額なアイテムがいくつかある可能性がある。
> →具体的に何？

問題が各組織に大きく依るため、例示できない．
これらの領域は一般に、多くの計算量とエネルギー消費を伴う。
各組織で，コンピューティング負荷を調査した上で，特定タスクの最適化の要否を判断する必要がある。

Nick Jones
Distinguished VP Analyst

