新春特別企画

2022年,カーボンニュートラルへの動きがソフトウェア/ITシステムの世界にやってくる

この記事を読むのに必要な時間:およそ 6 分

開発時と運用時のソフトウェアによるCO2排出量について

村岡:ITシステム開発と同じように物づくりしていく世界に,建物の建設があると思います。建物がCO2をどれだけ出しているかっていうのをライフサイクルで見ると,建設時に建設会社が出す排出量と建物を運用している最中の排出量で比べると,圧倒的にランニングのときのビルの運用時の排出量が大きいといわれています。

ソフトウェアも同じで,開発時の排出量と運用中の排出量だと,ランニングのところが圧倒的に大きいということになるのでしょうか。

末永:ソフトウェアの場合は難しいですね。建設とは違った見方になりそうです。最近の開発とかだと,ソースコード 1行直しただけでも,それをプッシュしコミットした瞬間に,いろんなテストケースが一斉に実行されたりします。最後パフォーマンステストまで全部走らせますっていったら,結局,ランニングと変わらないか,もしくは上回っちゃうぐらいのものを消費する可能性もあるかなと感じています。

なので,Green Software Foundationの活動でも,CI/CDパイプラインに組み込んで,パイプラインを回した時に,このテストケースではこれぐらいのCO2排出量です,と品質レポートと一緒に出せないかという動きもあったりします。

風戸:動いてる時にどれくらい出てますかっていうのは,標準がいくつかあります。測り方なども定義されていて,APEE(ISO/IEC 23544,Application Platform Energy Effectiveness)など国際標準もできてきました。Green Software Foundationでも,ソフトウェアが動いているときのSCI(Software Carbon Intensity)という考え方も出てきています。

一方で,開発している最中に何の活動をして,どれくらい排出しているかというのは,よくわかっていません。また,運用中の測り方がわかったとすると,モニタリングして最適化していくというやり方が必要だと思うんです。そういう仕組みを埋め込むのも,やはり開発中だと思うんですね。まだまだ解決すべき課題がたくさんあります。

開発者自身のサステナビリティは?

濱野:CO2排出量に限らず,開発者やITシステムにとってのサステナビリティも話題になってきそうですね。

風戸:開発中に,手戻りが少ない開発をしてあげると,仕事自体が減るんですよね。テストも1から10まで全部するんじゃなくて,影響範囲だけをテストすれば,消費電力も少なく,仕事自体も減るので労働生産性が上がります。私たちがやるべきなのは,徹夜して消費電力を見て減らせっていうことではなくて,そこの部分ですね。

コピペのコードで汚くしていると,どんどん保守も難しくなっていくんですよね。最も使用電力の少ないソフトウェアというのは,実は長きにわたって運用・改善が続けられるソフトウェアだ,と持っていけるのであれば,それ自体がサステナブルなんじゃなかと。1番もったいないのは,いまあるものを完全に捨てて,ソフトウェアを作り直しちゃうことだと思ってるんですね。なので,ソフトウェアもハードウェアも捨てないっていう意味でのサステナブルができるのであれば,開発者も幸せでシステムも長生きするんですかね。

人生100年時代と言ってるニュアンスで,もっと長生きできるソフトウェアを作りたい。クラウド技術等の進展で,できると思ってるんですね。

これまではどちらかというと,ハードウェアの寿命が尽きたので,このタイミングで変えましょうと。7~8年経ったらプログラミングとかミドルウエアの技術も変わってて,新しく作り直しましょうって言ってたんですけど,プラットフォームの上の領域と下の領域で寿命を変えられるのであれば,まあクラウドの裏側にあるハードウェアってのはちょっと古くなったからもう変えます,でもアプリケーションのレイヤはあまり変わってませんというのであれば,もう少し長生きできるかなと思いますね。その辺が,ソフトウェアのサステナビリティなんだなと思います。

村岡:サーキュラーエコノミーがソフトウェアの世界にもあるんだなと感じました。たとえば,物づくりの世界では,長寿命化や再生リサイクルみたいな考え方がマジョリティーになりつつあります。できる限り天然資源の消費を減らして,循環資源で回していきましょうと。フィジカルな世界の中では,環境配慮型設計の中に組み込まれる要素になってきています。おそらくそれと同じ形のものがソフトウェアの中でも起こるといいですね。

濱野:アプリケーション開発者からすると,たとえばJavaの世界に乗っておけば,プログラミング言語にJavaをこのまま使い続けても,自然とサステナブルになっているっていう方が嬉しいと思うんですよね。今書いてあるコードも20年先も50年先も動きますと。だけど,どんどんハードウェアの使いこなし術や最適化技術は高まっていて,同じコードがめっちゃ効率的にどんどん動いていく,エネルギー的にも,みたいな。そういう世界になっている方が楽チンな気がするんですけど,Javaはそういう方向を目指してたりはしないんですか?

末永:Javaも今までだとIntelやSPARCの上で動くっていうのが強かったんですけど,最近だとARMプロセッサへのポーティングなど,ほかのアーキテクチャへの対応も進んできています。ARMに関しては,もうかなり完成度が高いかな。実際,オフィシャルにARM向けのJavaがリリースされていて,私も検証なんかをしたのですが,ちゃんとした品質でテストケースも通っています。さらに,RISC-Vへの対応プロジェクトも立ち上がったりしてきています。

この後,技術がどんどん進んでいって,よりGreenというか,より低炭素社会にフィットするような新しいコンピューティングが出て来たときに,Javaみたいな言語とその仮想マシンが間に1個入って吸収してくれるんで,当然,世の中が求めれば,JavaとかPythonといったメジャー言語って,よりGreenなプラットフォームに更新・適用して行くだろうと見ています。当然そこで適用していけば,元々は別のとこで動くところを狙って書いたプログラムも,新しいプラットフォームで特に何も手を加えずに動くっていう世界がもうある意味すぐそこっていうか,少なくともその86系プロセッサーとARMっていう世界では,そういう世界が出来上がっているので,同じようなことが,もっと長いスパンで普通に起こりうるんじゃないかな,と思います。

RISC-Vは,数年というスパンで考えたら,けっこう面白いことになるんじゃないかなって。RISC-Vのより効率的なコアを出すようなチップベンダーが現れたら,エンタープライズの世界も塗り替えるようなことが起こるんじゃないかな,っていうのは,ちょっとワクワクして見ています。

風戸:そうそう,Javaをネイティブにコンパイルするってやつが熱いですね。性能が上がるだけじゃなくて,実は消費電力が下がるんじゃないかと思っています。Spring Frameworkを使ってWebアプリを作ったりもしますが,Springネイティブというプロジェクトがあって,ネイティブにコンパイルできます。本当はすごい難しい技術らしいです。Spring Frameworkってreflectionを使って動的にクラスの依存関係を付けるので,事前にコンパイルするのがすごく難しいんですが,それをなんとか解決しつつあると。なので,作ったアプリケーションが簡単に他の言語,たとえばGoやRustのレベルまで速くなるとか,消費電力が低くなるのであれば,アプリを作って物凄くグリーンになったコンテナで動く,みたいなことが来るかもしれない。

末永:今の話を聞いて,そうだったと思ったんですけど,オブジェクト指向の継承などの話されてましたけど,確かにJVMの実装を見ると,普通にただメソッドを呼ぶ場合と,バーチャル呼び出しだったりインターフェース呼び出しだったりすると,レシーバークラスって,継承関係の中で,どのクラスの管轄のあのメソッドを呼び出せばいいんだ,っていうのをいちいち探索する処理が走るんですね。確かにそこの部分で,余計な命令が動いているので,結果は同じだったとしても,1発バシッと呼び出すのに比べれば,CPUが動くメモリが動くイコール電気を食うなっていうのは,確かにその通りだなと。ネイティブイメージなんかでそこの部分が解決された状態であれば,バイパスできて余分な処理を挟まないので,AOTかJITか以外の部分でも,省電力化のメリットがあるのかなって。

風戸:Greenの論文とか読んでると,間接層が入ると電気の消費が悪くなるんですね。オブジェクト指向でクラスを継承させたりとか,デコレーターパターンなどのデザインパターンを使うと保守しやすくなるっていうので,ソフトウェアエンジニアリングでは頑張ってきたんですけど,そういう間接層を入れれば入れるほど消費電力が悪くなるという研究も出てきています。そこで,我々が書きやすく,ソフトウェア書いた後にネイティブにすることで,なんとかエコにするという組み合わせが流行るんじゃないかなと期待しています。

末永:私たちも今Javaネイティブイメージ等がどのくらい使えるのか取り組んでいるところですけど,ぜひ実際測ってみて,またみんなで議論したいです。

著者プロフィール

濱野賢一朗(はまのけんいちろう)

NTTデータ 技術革新統括本部 エグゼクティブ・エンジニアリング・ストラテジスト

株式会社びぎねっと 取締役副社長、リナックスアカデミー 学校長を経て,2009年より現職。1998年からオープンソースソフトウェア(OSS)の利用に向けた取り組みを継続している。

NTTデータでは,OSSミドルウェアや先進技術に関わる技術開発・高難度プロジェクトの支援などを主導している。

バックナンバー

新春特別企画

バックナンバー一覧