グリーンソフトウェア開発のための10の推奨事項

Posted on September 2nd, 2022

気候変動による危機が私たちにのしかかっており、そして悪化しつつあります。私たちと次 の世代に影響を与える私たちの時代を特徴付ける物語に取り組むために、緊急かつ持続的な 行動が求められます。それでもなお、最近の国連気候変動に関する政府間パネルの報告書、 気候変動2021:物理科学の基礎 で強調されているように、二酸化炭素(CO 2 )やその他の温 室効果ガスの排出を削減するためにいま私たちが取っている行動は、気候変動を制限し、未 来の気候に好ましい影響を及ぼすでしょう。

グリーンソフトウェア開発のための10の推奨事項

グリーンソフトウェア開発に関する10の推奨事項、あなたは守れています か?

Illustration-understanding-energy-trends

気候変動による危機が私たちにのしかかっており、そして悪化しつつあります。私たちと次 の世代に影響を与える私たちの時代を特徴付ける物語に取り組むために、緊急かつ持続的な 行動が求められます。それでもなお、最近の国連気候変動に関する政府間パネルの報告書、 気候変動2021:物理科学の基礎 で強調されているように、二酸化炭素(CO 2 )やその他の温 室効果ガスの排出を削減するためにいま私たちが取っている行動は、気候変動を制限し、未 来の気候に好ましい影響を及ぼすでしょう。

ハードウェア、ソフトウェア、ファームウェア、通信を含む情報技術(IT)セクターは、世 界全体の排出量削減に役立つ膨大な可能性を秘めています。実際、Global e-Sustainability Initiativeレポート によると、「ITによるグリーン化」と呼ばれるITソリューションは、ITが排 出する量よりも10倍近くのCO 2 を削減するのに役立つと推定しています。それでもなお、「IT

のグリーン化」として知られるIT自体の炭素排出量とフットプリントを削減することが不可 欠 す。

現在広く認識されているように、グリーンとは効率的で環境的に持続可能なことを意味しま す。最近、私が執筆したCutter Consortiumのレポート「Greening IT: Need and Opportunities無料アクセス可能)では、グリーンITのいくつかの側面について幅広く論 議しています。

包括的な用語としてのグリーンIT

グリーンITは、環境負荷の少ないITハードウェア、ソフトウェア、システム、アプリケーショ ン、およびプラクティスを指す包括的な用語です。これには、環境に関するサステナビリテ ィを向上させるための3つの補完的なアプローチが含まれます。

  • グリーン of IT。この内向きのアプローチは、IT製品とプロセスの再設計に重点を置き、 エネルギー効率を高め、利用を最大化し、二酸化炭素排出量を最小化し、コンプライアン ス要件を満たします。グリーンソフトウェアの作成によるITのグリーン化は、グリーンソ フトウェア財団のミッションです。

  • グリーン by IT。これは持続可能な環境を作り出すための実現手段としてITを利用するこ とを意味します。この外向きのアプローチは、製造、エネルギー、ビジネス、農業、ヘル スケア、建設(住宅、オフィス、その他の建物)などの主要セクターに革新的なソリュー ションを提供することに重点を置き、成長を可能にしながら排出量と資源消費を減らしま す。

  • グリーンに対する意識の醸成。多くの人々は、気候変動による危機の深刻な影響にまだ気 付いておらず、その対策を講じていません。ITには、彼らの意欲を引き出し、より多くの 情報を提供する手助けをし、気候変動との闘いにさらに関与させる能力と義務があります 。したがって、ITは「グリーン」イニシアチブと望ましい行動の変化を促進するのに役立 ちます。

長年にわたり、効率が良く環境負荷の少ないITハードウェアの作成にかなりの重きが置かれ 、進歩がなされてきました。しかし、より完全な便益を得るためには、グリーンイニシアチ ブをソフトウェアにまで下げる必要があります。したがって、ソフトウェアのグリーン化が 新たな関心となります。

この記事では、ソフトウェアのグリーン化の必要性を強調し、ソフトウェアの開発と使用か ら生じる炭素排出量を削減するためにソフトウェアをグリーン化する方法を検討します。

ソフトウェアのグリーン化

ソフトウェアは普及しており、私たちの生活と仕事のほぼすべての側面を大きく変えました 。多くのアプリケーションには、大規模で複雑なソフトウェアが必要です。ソフトウェアの 重要性と使用は、これから増える一方です。私たちの環境に影響を与えるとしたら、どのよ うな影響があるでしょうか?

コンピュータハードウェアと同様に、ソフトウェアが環境問題の一因になることに多くの人 々が気付いていません。ソフトウェア自体は直接エネルギーを消費しませんが、コンピュー タハードウェアを指示し作動させるため、ハードウェアのエネルギー消費に間接的な影響を 与え、したがって炭素排出量に影響を及ぼすことになります。計算効率の悪いソフトウェア は、エネルギー消費に大きな影響をもたらします。したがって、コンピュータハードウェア と同様に、ソフトウェアは環境に関するサステナビリティ問題の一部なのです。

ハードウェアがより高性能でエネルギー効率が良くなるにつれ、ソフトウェアが全体的なエ ネルギー消費に及ぼす影響は大きくなります。複数の実例がこの傾向を裏付けています。ケ ンブリッジ大学は、ビットコインネットワークを維持するために必要なエネルギーは、スイ ス全土のエネルギー消費量の約2倍に当たるおおよそ115テラワット時(TWh)であると推定 しています。最近の研究では、自然言語処理(NLP)向けに近年成功したさまざまなニュー ラルネットワークモデルをトレーニングするための膨大な環境コストが明らかになりました 。

さらには、まさにソフトウェアの開発自体がエネルギーを大量に消費しているかもしれませ ん。たとえば研究者たちは、公開されているアヤメの花の小さなデータセットを使って花を 分類するAIモデルをトレーニングしました。AIモデルは、花の異なる種を分類した際に、わ ずか964ジュールのエネルギーで96.17%の精度を達成しました。しかし、より高い精度を達成 するためにシステムは大量のエネルギー消費を必要としました。精度を1.74%向上させるには 、約3倍の2,815ジュールまでエネルギー消費量が増え、さらに精度を上げるには、同様にエ ネルギー消費量の増加が必要でした。必要以上に良い結果を得るために、問題に対してさら なる計算能力を投入する無駄なアプローチは、レッドAIと呼ばれています。

したがって、エネルギー消費を最適化するためのソフトウェアを設計し使用することが重要 となります。私たちの活動のすべての分野でソフトウェアの使用が爆発的に増加しているた め、このことは必需不可欠となりつつあります。最近まで、ソフトウェアの影響はサステナ ビリティの会話の中で見過ごされてきた要因ですが、ソフトウェアのグリーン化に十分な注 意を払う時が来ました。これが、グリーンソフトウェア財団のミッションです。企業とIT業 界は、サステナビリティの取り組みへの一環としてグリーンソフトウェアを組み込むべきで す。

ソフトウェアをグリーン化する方法

ソフトウェアのグリーン化を実現するためには、機能性、セキュリティ、拡張性、アクセス のしやすさに加え、ソフトウェアのエネルギー効率とサステナビリティを重要なパラメータ として考慮する必要があります。また、再利用、耐用期間の延長、最小限の計算要件とメモ リリソース要件を考慮したソフトウェアを設計する必要があります。

しかしながら、エネルギー効率の高いソフトウェアを書くことは困難なタスクです。それに は、ソフトウェア開発者と設計者の考え方を変え、また、基盤となるハードウェアのエネル ギー消費に対するソフトウェアの影響を測定し削減するためのガイドライン、ベストプラク ティス、モデル、およびツールが必要となります。2015年のIEEE ITプロフェッショナルの記 事は、グリーン化されたソフトウェアの設計と開発のために今のところ利用可能な戦略、モ デル、およびツールの統一的見解を提供する概念的枠組みを示しています。

グリーンソフトウェアの開発は、ソフトウェアのライフサイクル全体(開発、運用、廃棄( 再利用))に及びます。

グリーン化されたソフトウェアを作成するための推奨事項を以下に示します。設計とコーデ ィングのオプション、言語の選択、AIモデルの選択、ソフトウェア開発の4つの分野に焦点を 当てています。

設計とコーディングのオプション

開発者は、ソフトウェア開発の初期段階から、ソフトウェアの環境への負荷を最小限にする 方法について考え、それに基づき行動する必要があります。次の一般原則を採用することは 、グリーンソフトウェアの実現に役立ちます。

(.1) より多くの電力を消費する機能と一般的な利用シナリオに焦点を当て制御する。

(2) データ使用量を減らす。効率的なキャッシュポリシーを採用し、データ交換を最小限 にし、 保存されたデータのライフサイクルを管理する。データを圧縮して集約し、メディア と画像は極力小さいサイズを利用する。

(3) 利用しない機能を削除またはリファクタリングする。これにより、エネルギー効率が 向上し、ソフトウェアの維持がしやすくなります。

(4) 本来の目的を達成できず、無駄にエネルギーを消費するループを検出し取り除く。た とえば、到達不能なサーバーへのポーリング。

(5) デバイスの電源モードやその他の操作条件に従ってアプリの動作を調整する。

(6) アプリケーションの計算精度を、運用ニーズに見合った望ましいレベルに制限する。 たとえば、単に近くの友達を探している場合は、ユーザーの超高解像度の位置情報データは 必要ありません。

(7) リアルタイムのアプリケーションのエネルギー消費を監視し、排出量が少なくなるよ うに最適化可能なジュールを特定する。

関連する追加情報については、焦点となる8つの主な潜在的領域を明らかにするグリーンソフ ウェア工学の原則、および、コードを記述、開発、実行するためのロジック、方法論、お よびプラットフォームに関するガイドラインを提供するGreenCodingを参照してください。

言語の選択

(8) 使用するプログラミング言語の選択でさえ、ソフトウェアのエネルギー効率に影響を与 えます。2018年の調査では、ポルトガルの3つの大学の研究者チームが、プログラミング言語 全体のエネルギー効率を調べました。彼らは、10の異なる問題について、27の異なる言語で 書かれたソフトウェアを作成して評価しました。電力消費と、それぞれの速度とメモリ使用 量を監視しました。短い記事で明らかにされているように、考慮すべき複数の要因があり、 異なる基準の下で全てに最適である言語は一つもないと結論付けました。これらの情報に沿 ってさらに調査することをお勧めします。

AIモデルの選択

(9) 最近のIEEEスペクトラムの記事で概説されているように、電力消費の少ない機械学習モデ ルを開発して使用すること、重複する処理を減らす複製可能なコードを作成して共有するこ と、および AIワークロード用に最適化された専用ハードウェアを開発して使用することで 、AIをより環境負荷の少ないものにできます。さらなる詳細については、ACMの記事「グリ ーンAI」を参照してください。また、「なぜサステナビリティがAIシステムの最上の考慮 事項であるべきなのでしょうか?」の記事を読まれることをお勧めします。

ソフトウェア開発

(10) 開発中には動的コード分析などの手法を用いて、リアルタイムの消費電力を監視しま す。収集データは、設計の選択と実際のエネルギープロファイルとの間のギャップを理解 するのに非常に重要です。開発者がエネルギー消費を管理するためのツールとリソースが 利用可能になりました。たとえば、インテルのソフトウェア開発アシスタントでは、開発 者は、アプリケーション内で特定のワークロードを実行し、システムからエネルギー測定 を行い、その効率を特定することができます。

展望

ソフトウェアのグリーン化は、選択肢ではなく、不可欠なものであり、これからもそうあり 続けるでしょう。より持続可能な環境の創出に役立つために、ソフトウェアの専門家は、グ リーンソフトウェアの原則とその潜在力を理解し、グリーンITを進んで実践しなければなり ません。ソフトウェアシステムのグリーン化を成功させることにより、新しい機会を活用し 、ビジネスでの競争上の優位性を高め、現在と次世代に利益をもたらす持続可能な環境の創 出に役立ちます。

私たちは、ソフトウェア開発者と学生たちにグリーンソフトウェアとその展望について教育 する必要があります。グリーンソフトウェアの発展と促進のためには、環境影響評価、基準 と規制、環境に関するサステナビリティのためのソフトウェアの利用など、複数の分野でさ らなる研究開発が必要です。たとえば、グリーンソフトウェア財団のSoftware Carbon Intensityの仕様は、この方向への前向きな一歩です。

ソフトウェア開発者、エンジニア、専門家、教育者、研究者、ユーザー、およびソフトウェ ア業界は、協力して大きな違いを生み出し、現在と次世代に利益をもたらす持続可能な環境 の創出に役立つことができます。

グリーンソフトウェアの時流に乗って、グリーンソフトウェアの開発と利用を約束しましょ う。

この記事は クリエイティブ・コモンズ CC BY 4.0)のライセンスの下に提供されています。

This article is licenced under Creative Commons (CC BY 4.0)