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」で入力形式を選び、製品を追加するだけで、
各フェーズ(原材料、製造、輸送、使用、廃棄)ごとのデータが自動でテーブル表示されます。
このように、各製品のライフサイクル情報が一覧で確認できるため、
「どの工程でCO₂排出が多いのか?」や「使用フェーズの違いは?」といった視点から比較が可能です。
今後は、ユーザーが直接入力・編集できるUIにも対応予定です!(地味にやりたい笑)
📊 インパクト比較チャート – CO₂排出の見える化!
こちらの棒グラフでは、各製品がライフサイクルのどのフェーズで最もCO₂を排出しているかを、
横並びで比較できるようになっています。
たとえば上記の例では:
スマートフォンは製造フェーズの排出量が最も高く、Tシャツの約2倍。
輸送や廃棄フェーズでは、製品間で似た傾向が見られる。
といったように、フェーズごとの排出構造の違いが一目瞭然!
また、チャート下部には 再利用回数を調整できるスライダーがあり、これを動かすことで、
次のシミュレーション(線グラフ)に連動して排出量の変化を確認できます。
ダウンロードボタンからPNG形式でこのチャートを保存できるので、資料やレポートにも活用可能!
🔁 CO₂排出量 vs. 再利用回数 – 何回使えば「元が取れる」?
この折れ線グラフは、製品ごとに再利用回数を増やすとCO₂排出量がどのように変化するかを可視化したものです。
📉 グラフのポイント:
初期のCO₂排出量はスマートフォンの方が高く、再利用によって急速に減少します。
約5回以上の再利用で、TシャツとスマホのCO₂差が小さくなっていく。
右にいくほどCO₂効率が良くなる=捨てずに長く使うほど環境に優しい!
🧪 この機能で何ができる?
製品の**「最適な再利用目標回数」**の設定
教育や啓発のためのエビデンスベースの可視化
リユース推進やサーキュラー経済への説得力あるツール
📎 もちろん、PNGとしてチャート保存もできます!
📊 CSVアップロード・総合インパクトサマリー – あなただけのLCA分析へ
このアプリの魅力は、カスタマイズ可能なCSVインポート機能です。自分で設定した複数の製品とフェーズ別のCO₂排出量、エネルギー消費量、水使用量を一括で読み込み、以下のようなインパクト概要を一瞬で確認できます。
🔹 インパクトサマリーパネル:
総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
💬 コメントや「いいね」も大歓迎です!
いつか日本でエンジニアとして働ける日を夢見て、これからも学びと挑戦を続けていきます。
ではまた、次の記事で!
Discussion