지구의 날을 위해 Google Gemini로 탄소 발자국 트래커 만들기

발행: (2026년 4월 19일 PM 06:28 GMT+9)
6 분 소요
원문: Dev.to

Source: Dev.to

소개

이번 Weekend Challenge: Earth Day Edition에 제출하는 작품입니다.
이번 주에 뉴스 탭을 열 때마다 기온 상승, 빙하 녹음, 혹은 사상 최고 수준의 탄소 배출에 관한 이야기가 또 하나씩 나왔습니다. 지구의 날에 와서야 그 이야기가 다르게 다가왔습니다. 저는 도구를 갖춘 개발자이기에 EcoTrace라는 개인 탄소 발자국 추적기를 만들었습니다. 이 서비스는 Google Gemini를 기반으로 합니다.

EcoTrace는 일상 활동(통근, 식사, 항공, 전기 사용)을 기록하면 Gemini가 무거운 연산을 수행해 주는 웹 앱입니다. 사용자의 패턴을 분석하고, 탄소 배출량을 kg CO₂e 단위로 추정한 뒤, 개인 맞춤형 대화형 피드백을 제공합니다. 스프레드시트도, 막연한 점수도 없습니다—친절한 AI가 지식이 풍부한 친구처럼 여러분의 영향을 이야기해 줍니다.

목표는 단순했습니다: 환경 인식을 설교식이 아니라 개인적인 경험으로 만들고 싶었습니다.

워크스루

  1. 하루 기록 – 예: “출근길에 12 km 운전, 점심에 치킨 식사, 에어컨을 4 시간 사용.”
  2. Gemini가 구조화된 프롬프트를 통해 입력을 처리하고 세부 내역을 반환합니다: 교통 X kg, 음식 Y kg, 가정 에너지 Z kg.
  3. 채팅 인터페이스 – “주 2회 대중교통으로 바꾸면 어떻게 될까?”와 같은 후속 질문을 하면 Gemini가 즉시 가상의 감축량을 계산합니다.
  4. 주간 요약 차트 – 시간에 따른 추세를 보여줍니다.

핵심 Gemini API 호출

import google.generativeai as genai

genai.configure(api_key=API_KEY)
model = genai.GenerativeModel('gemini-3.0-flash')

def estimate_footprint(activity_log: dict) -> str:
    prompt = f"""
    You are a climate-aware assistant. Based on the following daily activities,
    calculate the estimated carbon footprint in kg CO2e and provide a brief,
    friendly explanation for each category.

    Activities:
    - Transport: {activity_log['transport']}
    - Diet: {activity_log['diet']}
    - Home Energy: {activity_log['energy']}

    Return a structured breakdown and one actionable tip to reduce emissions.
    """
    response = model.generate_content(prompt)
    return response.text

프론트엔드는 순수 HTML + 바닐라 JS로 구성되어 접근성을 유지하고 빠르게 동작합니다.

아키텍처

  • Frontend: HTML, Tailwind CSS, Alpine.js (반응성을 위한)
  • Backend: FastAPI (Python)
  • AI Layer: Google Gemini 1.5 Flash
  • Storage: 로컬 JSON (주말 범위에 맞춘 간단한 구현)
  • Deployment: Google Cloud Run

Gemini이 경험을 구동하는 방식

배출 계수를 하드코딩하는 대신, 나는 Gemini에게 표준 탄소 회계 방법론에 대한 컨텍스트가 포함된 구조화된 프롬프트를 제공합니다. Gemini는 활동 데이터를 논리적으로 분석하고, 대략적인 배출 계수를 적용하며, 그 사고 과정을 쉬운 언어로 설명합니다. 후속 대화 루프를 통해 사용자는 “what‑if” 시나리오를 인터랙티브하게 탐색할 수 있습니다.

핵심 설계 결정 중 하나는 단순히 숫자만 보여주는 것을 피하는 것이었습니다. Gemini의 응답에는 항상 비교가 포함됩니다(예: “이는 대략 휴대폰을 800번 충전하는 것과 동일합니다”). 이를 통해 추상적인 개념을 구체적으로 이해할 수 있게 합니다.

도전 과제

  • Verbosity: Gemini는 지나치게 긴 응답을 생성할 수 있습니다. 프론트엔드가 안정적으로 파싱할 수 있는 간결하고 구조화된 출력을 얻기 위해 시스템 프롬프트를 다듬는 데 시간을 투자했습니다.
  • Complexity of carbon accounting: 배출 계수는 국가, 계절, 그리고 출처에 따라 달라집니다. 저는 전 세계 평균값을 사용하기로 선택했으며, UI에 그 한계를 명확히 표시했습니다.

Google Gemini의 최적 활용

Google Gemini 3.0 Flash는 EcoTrace의 핵심입니다. 다음을 구동합니다:

  • 탄소 추정 로직
  • 대화형 후속 시스템
  • 개인화된 주간 요약

Gemini가 없었다면, 이 앱은 숫자를 출력하는 단순한 양식에 불과했을 것입니다. Gemini와 함께라면, 사용자가 자신의 습관을 이해하고 개선하도록 돕는 대화 파트너가 됩니다.

0 조회
Back to Blog

관련 글

더 보기 »

지구의 날을 위한 활력

제가 만든 History는 브라우저에 달력 날짜별로 저장됩니다; 각 섹션 옆의 사진은 실제 번들된 이미지입니다. 선택적인 Gemini API route는 따뜻한 코치를 추가할 수 있습니다.