🌱

Streamlitで作る!CO₂排出可視化アプリ – LCA Visualizer 開発日記

に公開

はじめに

こんにちは!今回は、環境分野に強い関心を持つエンジニア志望の私が、自ら開発した「LCA(ライフサイクルアセスメント)可視化ツール」 を紹介します。

私はインドネシア出身で、もともと化学工学と環境工学を学び、日本での就業経験はまだないのですが(いつか働いてみたい…!笑)、エンジニアとしてのスキルを活かしながら、「環境 × テック」の分野に自分なりの貢献ができないか模索中です。

転職活動を進めていく中で、「もっと直接的に社会に役立つツールを自分の手で作ってみたい」と思うようになり、
「じゃあ、環境系のアプリを自分で作ればいいじゃん!」 というアイデアが浮かびました。

たとえば…

  • 製品がどの工程でどれだけのCO₂を排出しているのか?
  • 再利用を重ねることで、どれくらい環境負荷が減るのか?

こういった疑問に対して、データと可視化を組み合わせることで、より直感的に理解できるアプリがあれば、
環境意識を持つ人や、LCAの考え方を勉強したい人にも役立つのでは? と考えました。

最初は「Reactでゴリゴリ書いてやる!」と意気込んで始めたのですが、グラフ描画や状態管理で挫折しかけて(笑)、
最終的には Python + Streamlit + Plotly という、シンプルかつスピーディに構築できる構成に落ち着きました。


🚀 アプリの特徴

このLCA可視化アプリでは、以下のような機能を実装しています:

✅ 1. 複数製品の同時比較ができる!

  • スマートフォン、Tシャツ、自動車など、複数製品のLCAデータを選んで比較できます。
  • 各製品がどのフェーズでどれだけCO₂を排出しているか、横並びの棒グラフで視覚的に比較。

✅ 2. 再利用シナリオによるインパクト変化をシミュレーション

  • 「再利用を何回すれば環境に良いのか?」という問いに対し、スライダーで回数を変更しながら、CO₂排出量の変化を確認可能。
  • 線グラフで、再利用回数と1回あたりの排出量のトレンドを表示。

✅ 3. CSVアップロードで自分のデータも使える

  • サンプルだけでなく、自分のLCAデータをCSV形式でアップロードすることもできます。
  • フォーマットが合っていれば、すぐにグラフ表示や比較ができる柔軟設計!

✅ 4. グラフの画像保存や結果CSVのダウンロードも対応

  • 棒グラフや線グラフは、PNG形式でダウンロード可能。
  • 再利用後のインパクト結果もCSVファイルとして保存できます。

✅ 5. スタイリング&使いやすさを意識したUI

  • Streamlit + Plotlyの軽量構成で、動作はサクサク。
  • デザインもなるべく整えて、初心者でも使いやすいUIを心がけました!

🧰 技術スタック

このLCA可視化アプリは、以下の技術を使って開発しました:

  • Python:全体のロジック処理とデータ操作
  • Streamlit:Webアプリのフロントエンド構築(超スピーディにUIを実装できる!)
  • Plotly:インタラクティブなグラフ描画(棒グラフ、折れ線グラフ、円グラフ)
  • Pandas:CSVデータ処理や集計
  • GitHub:ソースコードの管理と公開用リポジトリ
  • VS Code:コーディング環境として使用

🖼️ UI/機能紹介

🖼️ 製品の比較UI – 比べて直感で理解!

この画面では、Tシャツとスマートフォンなど、複数製品のLCAデータを比較できます。
左上の「Sample Data」または「Upload CSV」で入力形式を選び、製品を追加するだけで、
各フェーズ(原材料、製造、輸送、使用、廃棄)ごとのデータが自動でテーブル表示されます。

UI比較

このように、各製品のライフサイクル情報が一覧で確認できるため、
「どの工程でCO₂排出が多いのか?」や「使用フェーズの違いは?」といった視点から比較が可能です。

今後は、ユーザーが直接入力・編集できるUIにも対応予定です!(地味にやりたい笑)

📊 インパクト比較チャート – CO₂排出の見える化!

こちらの棒グラフでは、各製品がライフサイクルのどのフェーズで最もCO₂を排出しているかを、
横並びで比較できるようになっています。

UI比較

たとえば上記の例では:

スマートフォンは製造フェーズの排出量が最も高く、Tシャツの約2倍。

輸送や廃棄フェーズでは、製品間で似た傾向が見られる。

といったように、フェーズごとの排出構造の違いが一目瞭然!

また、チャート下部には 再利用回数を調整できるスライダーがあり、これを動かすことで、
次のシミュレーション(線グラフ)に連動して排出量の変化を確認できます。

ダウンロードボタンからPNG形式でこのチャートを保存できるので、資料やレポートにも活用可能!

🔁 CO₂排出量 vs. 再利用回数 – 何回使えば「元が取れる」?

この折れ線グラフは、製品ごとに再利用回数を増やすとCO₂排出量がどのように変化するかを可視化したものです。

UI比較

📉 グラフのポイント:

初期のCO₂排出量はスマートフォンの方が高く、再利用によって急速に減少します。

約5回以上の再利用で、TシャツとスマホのCO₂差が小さくなっていく。

右にいくほどCO₂効率が良くなる=捨てずに長く使うほど環境に優しい!

🧪 この機能で何ができる?

製品の**「最適な再利用目標回数」**の設定

教育や啓発のためのエビデンスベースの可視化

リユース推進やサーキュラー経済への説得力あるツール

📎 もちろん、PNGとしてチャート保存もできます!

📊 CSVアップロード・総合インパクトサマリー – あなただけのLCA分析へ

このアプリの魅力は、カスタマイズ可能なCSVインポート機能です。自分で設定した複数の製品とフェーズ別のCO₂排出量、エネルギー消費量、水使用量を一括で読み込み、以下のようなインパクト概要を一瞬で確認できます。

UI比較

🔹 インパクトサマリーパネル:

総CO₂排出量:5.78 kg

総エネルギー消費:60 MJ

総水使用量:328.5 L
※再利用回数(+1回)で補正済み

🧩 フェーズ別CO₂貢献(円グラフ):

原材料:41.5%

製造:32.9%

廃棄処理:10.4%

輸送:8.65%

使用時:6.57%

📎 ワンクリックでCSVエクスポートも可能!

🧠 この画面は、

環境教育のダッシュボードとして

製品間のライフサイクル比較ツールとして

社内プレゼンやレポート用のビジュアル素材として
あらゆる用途に対応できます!


🔮 今後の展望

このLCAアプリはまだまだ発展途上。今後は以下のような機能も実装してみたいと考えています:

✏️ 手入力・編集対応
→ アプリ内でLCAデータを直接入力・編集できるフォームUIを追加予定。

🧮 排出係数の自動補完・選択式化
→ 材料や製品カテゴリに応じて、デフォルト排出係数を自動で挿入できるように。

🔁 再利用 vs. 排出量チャートの複数製品対応
→ 現在は1製品ごとの表示ですが、将来的には複数製品のトレンドを一緒に表示する機能も検討中。

📤 グラフ画像やCSVのクラウド保存
→ ダウンロードだけでなく、ユーザーごとにクラウド保存できる機能も実装したい。

🌍 マルチ言語対応(日本語・英語)
→ 海外のユーザーや留学生、研究者にも使ってもらえるようにUIを英語にも対応予定。

🧠 CO₂削減アドバイスの自動生成
→ 入力データから、「どのフェーズを見直せば良いか?」を自動で提案してくれるアドバイス機能。


📝 おわりに

ここまで読んでいただき、本当にありがとうございます!

このLCA可視化アプリは、私自身の
「環境に関わることをもっと身近に、楽しく伝えたい」
という思いからスタートしました。

正直に言うと、私はまだ駆け出しのエンジニアで、コードも勉強中の身です。
完璧なアプリではありませんが、「まずはやってみよう」 の精神で挑戦してみました。

また、日本語もまだ学習中で、母語ではない中でこの記事を書きました。
読みづらい表現や変な言い回しがあったらすみません…!
それでも、少しでも思いが伝わったら嬉しいです。

もしこの記事やアプリに少しでも興味を持っていただけたら、
GitHubのスターやフィードバック、SNSでのシェアなど、気軽に応援していただけると励みになります!🌱

📣 GitHub リポジトリはこちら
👉 https://github.com/hanif-azhar/lca-visualizer

💬 コメントや「いいね」も大歓迎です!
いつか日本でエンジニアとして働ける日を夢見て、これからも学びと挑戦を続けていきます。

ではまた、次の記事で!

GitHubで編集を提案

Discussion