ありがとうリマインダーをGeminiとChatGPTにつくってもらった

公開日 · 更新日 · 4 MIN READ · 理解の記録

RECORD / 2025

私たちは毎日たくさんの人や出来事に助けられています。けれども、忙しさの中で「ありがとう」を言うタイミングを逃してしまうことも少なくありません。小さな感謝の積み重ねが、人間関係を温め、自分自身の心も豊かにするのに──です。
そこで生まれたのが 「ありがとうリマインダー」
毎日決まった時間に通知し、簡単に「誰に」「どんな理由で」感謝したかを記録できる仕組みです。続けることで、家庭や職場に温かい空気を生み出し、気づけば自分自身も前向きになっている。そんな小さな習慣を支えるために作られました。

なにができる?

  • 毎日決まった時間に通知を出して、「今日誰にありがとうを言ったか?」を思い出させてくれる
  • 記録機能:相手(誰に)と理由を書き残せる
  • 履歴の検索・削除・CSV出力:後から見返したり、データ化できる
  • 連続日数(スティreak)表示:毎日続けるモチベーションになる

なぜ作ろうと思ったのか?

  • 今の社会は忙しくて感謝を伝える機会が減っている
  • でも「ありがとう」と言葉にするだけで人間関係が柔らかくなる
  • 習慣にするには「リマインド」と「見える化」が必要だから、プログラムに任せた

誰の役に立つのか?

  • 家族・夫婦:小さなありがとうが積み重なり関係が改善する
  • 職場の同僚や部下:感謝を伝える文化がチーム力を高める
  • 自分自身:ポジティブ心理学の研究でも「感謝の記録」は幸福度を上げると証明されている

ということで試作品を2つ作ってもらいました。
まずは、Geminiで作ってもらったもの

ありがとうリマインダー

今日の記録: 0 連続日数: 0
履歴
    ${esc(x.why)}
    ${x.date} ${x.time}
    `; } function del(id){ if(!confirm('この記録を削除しますか?')) return; state.items=state.items.filter(i=>i.id!==id); persist(); render(); } function calcStreak(){ if(state.items.length===0) return 0; const dates=new Set(state.items.map(i=>i.date)); let d=new Date(),count=0; while(true){ const ymd=toYMD(d); if(dates.has(ymd)){ count++; d.setDate(d.getDate()-1); } else break; } return count; } function toast(msgs){ const t=document.createElement('div'); t.className='toast'; t.textContent=msgs[Math.floor(Math.random()*msgs.length)]; document.getElementById('toast-container').appendChild(t); setTimeout(()=>t.remove(),3000); } function exportCSV(){ if(state.items.length===0){ alert('エクスポートする記録がありません。'); return; } const head=['date','time','tag','to','why']; const rows=state.items.map(x=>head.map(k=>csv(x[k]||''))); const csvText=[head.join(','),...rows.map(r=>r.join(','))].join('\n'); const blob=new Blob([new Uint8Array([0xEF,0xBB,0xBF]),csvText],{type:'text/csv;charset=utf-8;'}); const url=URL.createObjectURL(blob); const a=Object.assign(document.createElement('a'),{href:url,download:'thanks_log.csv'}); document.body.appendChild(a); a.click(); a.remove(); URL.revokeObjectURL(url); } function persist(){ localStorage.setItem(SKEY,JSON.stringify(state.items)); } function load(){ try{ return JSON.parse(localStorage.getItem(SKEY)||'[]'); }catch(e){ return []; } } function esc(s){ return String(s).replace(/[&"']/g,m=>({'&':'&','':'>','"':'"',"'":'''}[m])); } function csv(s){ const t=String(s).replace(/"/g,'""'); return `"${t}"`; } })();

    コメントを残す