私たちは毎日たくさんの人や出来事に助けられています。けれども、忙しさの中で「ありがとう」を言うタイミングを逃してしまうことも少なくありません。小さな感謝の積み重ねが、人間関係を温め、自分自身の心も豊かにするのに──です。
そこで生まれたのが 「ありがとうリマインダー」。
毎日決まった時間に通知し、簡単に「誰に」「どんな理由で」感謝したかを記録できる仕組みです。続けることで、家庭や職場に温かい空気を生み出し、気づけば自分自身も前向きになっている。そんな小さな習慣を支えるために作られました。
なにができる?
- 毎日決まった時間に通知を出して、「今日誰にありがとうを言ったか?」を思い出させてくれる
- 記録機能:相手(誰に)と理由を書き残せる
- 履歴の検索・削除・CSV出力:後から見返したり、データ化できる
- 連続日数(スティreak)表示:毎日続けるモチベーションになる
なぜ作ろうと思ったのか?
- 今の社会は忙しくて感謝を伝える機会が減っている
- でも「ありがとう」と言葉にするだけで人間関係が柔らかくなる
- 習慣にするには「リマインド」と「見える化」が必要だから、プログラムに任せた
誰の役に立つのか?
- 家族・夫婦:小さなありがとうが積み重なり関係が改善する
- 職場の同僚や部下:感謝を伝える文化がチーム力を高める
- 自分自身:ポジティブ心理学の研究でも「感謝の記録」は幸福度を上げると証明されている
ということで試作品を2つ作ってもらいました。
まずは、Geminiで作ってもらったもの
ありがとうリマインダー
${esc(x.why)}
`;
}
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}"`; }
})();






