見出し画像

サスティナブル・コーディング~最適化されたコードは地球を救う~

はじめに 

 当社サイオステクノロジー株式会社を含むサイオスグループでは、良い社会(創造性あふれる社会、心豊かな社会、持続可能な社会)の実現のための施策として、2018年より社会貢献活動に取り組んでいます。
SIOS Sustainability Project

  このプロジェクトでは地球環境に保護、改善に向けた様々なアクションを起こしていますが、これらの直接的な環境保護活動とは別に、我々の本業であるシステム開発においても、無意識に地球環境保護に繋がるアクションを起こしています。それを「サスティナブル・コーディング」と、勝手に仮で命名します。

で、「サスティナブル・コーディング」って何よ??

 ここで筆者が勝手に名付けた「サスティナブル・コーディング」とは何かを説明すると、”コンピュータに負荷をかけないシステム作りを考慮したコーディング”です。コンピュータに負荷がかかる=電力消費量が多少上がることになります。
 電力消費量が上がれば発電所の稼働が上がります。経済産業省によると、日本の発電量割合は2020年度実績で火力発電が76.3%と圧倒的で、つまり石炭、石油などを燃焼することで発電する代わりに、二酸化炭素を排出することとなります。
 1台のパソコン、サーバで考えると大した電力消費ではありませんが、いまは世界中のあらゆる場所、あらゆるシーンで「システム」が稼働していますので、積もり積もって相当量の電力消費=二酸化炭素排出となっていると考えられます。
 したがって、先に述べた”コンピュータに負荷をかけないシステム作りを考慮したコーディング”を実践すれば、消費電力量が減り、二酸化炭素排出量が削減され、地球温暖化問題の軽減に繋がるのではないか?と考えた次第です。
どうですか?サスティナブルでしょ?(ドヤ

で、「サスティナブル・コーディング」、何すればいいのよ?? 

 では、サスティナブル・コーディングって、具体的に何をするのかを述べてゆきましょう。
 とは言っても、私たちシステム・エンジニアにとってが常識的に行なっている「冗長的なロジックをなくす」、「同じ分岐処理でも、より処理の軽い(判定の早い)命令文、ロジックを組む」を実践するだけです。
 簡単な例でいうと、1~10の番号から「6」という数字を探す場合、先頭から1つずつ検索する「順次検索」を行なうと6回の検索処理をしなくてはなりません。しかし下図で説明する「バイナリーサーチ(2分検索法)」では検索範囲を徐々に絞り込むことで検索処理を3回に減らすことができます。
 この例では単純に1つの数字を検索する処理なので大きな処理時間差=コンピュータの負荷の差異はありませんが、これが複数条件での検索や階層の深い繰り返し処理となると、その処理時間差は歴然で、CPU、メモリ、ディスクの稼働状況に大きな差がみられます。

検索方法を工夫することで処理速度は大きく改善されます!

 システムは、我々人間が読み書き可能な”自然言語"で命令文が書かれた「ソースコード」を、コンピュータが解読できる"機械語(マシン語)"に変換され、しかるべきタイミング(エンターキーが押された時やタイマー設定された時間が到来したとき)にその命令に従って処理を淡々と実行します。
 システムは融通が利かないため、命令以外のことはしません。インプットとアウトプットを判断して最適な処理を実行してくれればいいんですけどね。。。(余談ですが、近未来を描いた某ハリウッド映画では、コンピュータが自我を持って勝手にプログラムの改変等を行なっていましたが、今のところは現実化されていないはずです・・・)
  つまり我々人間が冗長的なロジックでコーディングをしてしまうことで、ムダにCPU、メモリ、ディスクなどに大きな負荷をかけてしまうことになり、ひいては消費電力が上がることになります。
 設計者、実装者、テスターを含めて処理速度を意識してシステム構築をすることで、ユーザにとって快適なシステムとなるだけでなく、環境にも優しいシステムとなり得ます。 

とは言いつつ、割と難しい「サスティナブル・コーディング」。しかし・・・

 いろいろ書きましたが、処理速度を意識したシステム構築というのは設計者や実装者の経験値によるところが非常に大きいと言えます。筆者もIT業界25年以上の経験者なので、それなりに経験は積んでいると自負していますが、システムのパフォーマンス問題を自分の知識、経験では解決できないことがあります。
 しかしそういった時には社内の経験豊富なエンジニアに聞いてみたり、ググったりしています。インターネット上には様々なエンジニアがブログやQiita、Yahoo知恵袋等で自分の経験に基づく解決策等をアップしてくれています。
 そう考えると、難しいと思える「処理速度を意識した設計、実装」=「サスティナブルなコーディング」というのも、個々のエンジニアが意識をそちらに向ければ、あながち難しいものではないと考えられます。
 考え方1つで日々の仕事が「生命のゆりかごである地球」を守ることに繋がってゆくのではないかと、筆者は考えます。

最後に

 いろいろと大言壮語なことを書き連ねてきましたが、個々人の行動では実感しにくい「サスティナビリティ」も、考え方1つで実践し実感できるということを伝えてみました。素人考えなので、「いやいや、それは違うよ」と思う方も多数いらしゃるかと思います。
 筆者も勉強不足な部分がありますのでそこはご容赦ください。何はともあれ、これからも様々な側面でSDGsに取り組み、CSRを実践できればと考えております。

いいなと思ったら応援しよう!