メインコンテンツへスキップ
見出し画像

「モーニングブリーフィング」をサーマルプリンターで印刷して渡したら思春期の娘と会話が生まれた話

これは思春期真っ盛りの中1の娘と、毎朝レシート用紙にブリーフィングレポートを印刷して会話のきっかけを作ろうと必死な母の、愛と涙の物語です。(最後におまけとして有料エリアがありますが、基本的には無料部分をコピペしてAIに読み込ませれば同じ仕組みが作れます!)

この開発の背景をタダオさんが漫画にしてくれました〜!ありがとうございます!

うちも同じです。
「いってらっしゃい」
「…… 。」

会話のきっかけをまさかの「得意」で
掴んだお話。(1/2) https://t.co/FUl8E2N4JL pic.twitter.com/B3a0MpfW3y

— タダオ|AIマンガ家 / AIマンガ設計師 (@tadao_parallel) July 10, 2026

思春期の娘と話したい!

わたしには中学1年生の娘がいます。

中学生になり、学校が遠くなって通学時間がかかるし、土曜日も学校があるし、部活も始まって、物理的に一緒にいられる時間が圧倒的に少なくなりました。さみしい。本当にさみしい。

ついこないだまで、ちっちゃくてまんまるで甘えんぼだった娘。

画像
かわいかったなぁ(今もかわいいけど)

でもいつの間にか思春期に入り、何を聞いても

「何でもない」「別に」「いらない」「行かない」

と不機嫌に答えるばかり。(すみません、ちょっと誇張してます笑)

娘の朝は早くて、わたしが起きるのとほぼ同時に家を出てしまう。

バタバタしてるし、朝は不機嫌度も高いし、ちょっとした声かけもなかなかしづらい雰囲気。

そこで、会話のきっかけになればと思い、モーニングブリーフィングをサーマルプリンターでレシート用紙に印刷して、渡すことにしました。

内容は、今日の天気・予定・ラッキーカラーやアイテム、今日は何の日、それに娘が勉強中の英検の5分ミニ課題と英語なぞなぞ。

レシートサイズの感熱紙に印刷するので、吊り革につかまりながら片手で読める、そんな手軽な大きさです。

fable 5で作ったもの。これよくない? pic.twitter.com/ZHXlSMfDWq

— ウミノ🤖AI×マーケティングのプロ (@umino_chibi) July 3, 2026

作ってみたら、これがなかなか良い感じ。

最初は「ふ〜ん」という感じでそっけなかったんですが、

「今日のレシート読んだ?」

レシート(領収書)じゃないけどね

という会話ができるようになりました!(パチパチパチ👏)

この記事は、その仕組みの解説と「作り方」です。ただし、作り方といっても難しい手順は理解しなくて大丈夫。詰みポイントはすべてわたしが解決しておきましたので。

この記事を丸ごとコピーして、AI(ClaudeやCodex、Antigravityのデスクトップアプリ)に貼り付けて「この記事の仕組みを再現して」と言うだけ。 あとはAIがファイルを作って、動かすところまで面倒を見てくれます。プログラミングの知識はいりません。

そして記事の最後の有料エリアに、わたしが実際に毎晩動かしているコード一式(プログラム本体+366日分の記念日データ+英検準1級の問題データ+設定ファイル) をダウンロードできるように置いておきます。AIに作らせるより確実に、そのまま同じものが動きます。

1. まず、完成形を見てください

実際に我が家で印刷した内容です(本物の出力をそのまま貼っています)。

◇ * ◇ * ◇ * ◇ * ◇ * ◇
おはよう  7/4(土)
今日は「梨の日」
「な(7)し(4)」の語呂合わせ
Day 6/100 □□□□□□□□□□
◇ * ◇ * ◇ * ◇ * ◇ * ◇

◇ 天気 東京 ◇
☁/☂ くもり 所により 雨
最高 25℃ (きのうより-1℃)
降水 20% / 傘はいらなそう

◇ 今日の予定 ◇
予定はとくになし。

◇ 今日のお守り ◇
今日のラッキーカラーはラベンダー。
ラベンダーのものを身につけると、いいことがあるかも。

◇ 英検準1級 今週の復習 ◇
今週出た語、覚えてる?
1. deficiency [名詞]
2. flourish [動詞]
3. redundant [形容詞]
4. portfolio [名詞]

◇ 英語なぞなぞ ◇
"What has hands but cannot clap?"
答えは下のこたえコーナーで!

* * *
今日も一歩ずつ。いってらっしゃい!

- - - こたえ - - -
1. 欠乏・不足
2. 栄える・順調に成長する
3. 余分な・重複した
4. 作品集・保有資産
なぞなぞ: A clock(時計) (hands=時計の針)
画像

レシート幅(58mm)の小さなサーマルプリンターに、毎朝これが1枚出てきます。載っているのは、ぜんぶ日替わりです。

  • 天気:気象庁のデータから、その日の天気・最高気温(前日比つき)・降水確率と傘アドバイス

  • 今日は何の日:366日分の記念日と豆知識

  • 今日の予定:Googleカレンダーから、その日の予定を自動で取得(塾の予定をすっぽかすことがなくなりました)

  • 今日のラッキーカラー・アイテム:ラッキーカラー/ラッキーアイテム。AIが占い風の一文を毎日ちがう表現で書きます

  • 英検準1級の5分課題:うちの娘は英検準1級に挑戦中なので準1級ですが、レベルは自由に変えられます。曜日ごとに出題形式が変わります

  • 100日チャレンジ:Day 6/100 の進捗バー。10日ごとにお祝いメッセージ

こだわりポイントは、答えを紙のいちばん下にまとめてあること。紙の下端を折り返せば答えが隠れるので、頭の中で解いてから答え合わせ、という使い方ができます。

2. 仕組みをざっくり説明

「魔法みたい」に見えますが、中身はとてもシンプルです。全体の流れはこう。

【毎晩21時】 Macが自動で起きて作業スタート
     ↓
① 材料あつめ
   ・気象庁のAPIから「翌日の」天気予報を取る
   ・Open-MeteoのAPIから最高気温の前日比を計算する
   ・Googleカレンダーから翌日の予定を取る
   ・記念日CSV、英検問題CSV、英語フレーズCSVから翌日ぶんを選ぶ
   ・Gemini(AI)に今日のラッキーカラー・アイテムの一文を書かせる
     ↓
② レシートの文章に組み立てる
   ・「Day X/100」は開始日からの日数で自動計算
   ・英検の答えとなぞなぞの答えは、最下部の「こたえ」欄に集める
     ↓
③ 文章を1枚の画像(PNG)にする
   ・幅384ピクセルの白黒画像。プリンターの解像度にぴったり合わせてある
   ・日本語フォントで描いて、長い行は自動で折り返す
     ↓
④ Bluetoothでプリンターに送って印刷
     ↓
【朝】 出てきた紙を取るだけ

ポイントをいくつか。

「前の晩」に印刷するようにしてます。

朝に印刷するとバタバタしちゃうのと、MacがスリープしていることもあってNG。前夜21時ならわたしは確実にMacを開いてるので、何もせずとも自動で印刷されます。

学習の進捗バーはどうやって作ってる?

「今日が学習開始から何日目か」を日付から計算で決めています。状態を保存するファイルがないので、1日印刷に失敗してもその日の分が飛ぶだけで、翌日はちゃんと翌日の内容が出ます。娘の学校は週6日なので、日曜はお休み(学校が休みの日は刷らない)という設計です。

文字化けしないの?

実はそのままテキストで印刷すると日本語フォントが入っておらず文字化けする可能性があります。ただ、この仕組みだと画像にしてから印刷するので文字化けせずにきれいに印刷できます。

どんな仕組みで動いているか。

Python(パイソン)というプログラムが1ファイルと、問題データのCSV(エクセルみたいな表)がいくつか。それだけで構成されている単純な仕組みです。

3. 用意するもの

① サーマルプリンター(約3,000円)

いわゆる「サーマルプリンター」「レシートプリンター」です。感熱ロール紙に印刷するのでインク不要。

わたしが使っているのはこちら。Amazonで「サーマル ポケットプリンター 58mm」で探すとたくさん出てきますが、わたしが買ったのと同じものが確実です。でないとPCから操作できなくて詰みます。

サンプルとしてシールタイプの感熱紙が入っていましたが、接着剤なしの感熱紙はこちらを買い足しました。

シールタイプも便利なので買ってます。

シールタイプはこういう用途にも便利!
これはChatGPTで作ってスマホアプリで印刷。

オフ会にこれいいよね。シールになってるから服に貼れる pic.twitter.com/9aoqP64yCj

— ウミノ🤖AI×マーケティングのプロ (@umino_chibi) July 1, 2026


② MacまたはWindows

毎晩の自動印刷に使います。電源が入っている(スリープしていてもOK、シャットダウンはしない)状態であれば自動で印刷されます。

③ AIのデスクトップアプリ(無料で始められます)

Codexのデスクトップアプリ(または Claude アプリやAntigravityアプリ)です。ここが今回の主役。「ターミナル」という黒い画面は使わなくてもいけます。アプリの画面から、作業させたいフォルダを選んで、この記事とプロンプトを貼り付けるだけです。

④ Gemini APIキー(任意・なくても動く)

今日のラッキーカラー・アイテムの一文をGeminiに書かせる場合だけ必要。Google AI Studioで無料で取れます。なくても固定文で動くので、最初はナシでOKです。

4. 作り方:この記事をAIに貼るだけ

ここが本番ですが、やることは3つだけです。

手順1:フォルダを作る

Finderで、書類フォルダなどの中に daily_receipt_printer という名前の新しいフォルダを作ります。ここにAIがファイルを作っていきます。

手順2:AIアプリでそのフォルダを開く

Codexデスクトップアプリを開いて、コーディング用の画面で、作業フォルダとしてさっき作ったフォルダを選びます。「どのフォルダで作業する?」と聞かれる画面で選ぶだけです。Codexアプリでも同じで、プロジェクトフォルダにさっきのフォルダを指定します。

手順3:この記事を丸ごと貼り付ける

まず下の指示文をコピーして貼り、続けてこの記事を最初から最後まで全部コピーして貼り付けて、送信します。

これから貼り付ける記事に書かれている「毎朝レシート」の仕組みを、
このフォルダに再現してください。

- 記事の中の【AIへの仕様書】セクションが正式な仕様です。それに従ってください
- プログラム本体・設定ファイルのひな形・サンプルの問題データCSVまで作ってください
- 必要なライブラリの準備も、あなたがやってください
- できたら、まず「印刷せずにプレビュー画像を作る」ところまで動かして、
  画像を確認させてください
- わたしはプログラミング未経験です。専門用語はかみくだいて、
  次に何をすればいいかを1つずつ教えてください

(↓ここから記事全文を貼り付け)

AIが途中で「実行していい?」と確認してきたら、内容を見て「はい」で進めてください。プレビュー画像(レシートの見た目そのままのPNG)ができたら、まず成功です。

その後のプリンターへの接続、Googleカレンダーの連携、毎晩21時の自動実行なども全部、AIに日本語で頼めば進みます。頼み方の例は「6. 仕上げはぜんぶAIに頼む」に書きました。

5.【AIへの仕様書】ここからはAIに向けた指示です

読者のみなさんへ:このセクションは「AIに読ませるための詳細な設計書」です。人間は読み飛ばしてOK。でも、ここがあるおかげで、記事を貼るだけで同じものが再現できるはず。

AIへ。以下の仕様で「毎朝レシート」ツールをこのフォルダに実装してください。

全体構成

  • 言語はPython 3.10以上。追加ライブラリはPillowのみ(印刷ツール側は別途bleakを使用)

  • 本体は daily_receipt.py 1ファイル。設定は config.local.json(ひな形として config.example.json を作る)。秘密情報(APIキー、カレンダーURL)は .env から読む

  • .gitignore を作り、config.local.json / .env / output/ / .venv/ を除外する

  • 出力は幅384pxの白黒PNG(Pillowのモード"1")。日本語フォントはMacのヒラギノ角ゴシックを優先し、無ければNoto Sans CJK等にフォールバック。テキストはピクセル幅で自動折り返し。行頭スペース3つはインデントとして維持

  • 生成したテキストとPNGは output/ に保存する

レシートに載せる内容(上から順に)

  1. 飾り枠とあいさつ:☆* ♡♪ ◇* ♪☆ の4パターンの飾りを日替わりでローテーション。日付・曜日と、configに daughter_name があれば「◯◯へ」、なければ「おはよう」

  2. 今日は何の日:data/day_facts.csv(列: date=mm-dd, label, note)から対象日の行を表示

  3. 100日チャレンジ進捗:configの eiken_start_date(月曜固定。月曜以外なら次の月曜に丸めて警告)から、日曜を除いて数えた学習日番号を計算し、Day X/100 と10目盛りの進捗バー(■□)を表示。10日ごとに「X日達成! この調子!」、50日は「ちょうど折り返し」、100日は「完走!!」の特別メッセージ

  4. 天気:気象庁の予報API https://www.jma.go.jp/bosai/forecast/data/forecast/{area_code}.json から対象日の天気文・降水確率・最高気温を取得。天気文の語順どおりに☀☁☂☃アイコンを付ける(「のち」を含むなら→で、それ以外は/でつなぐ)。最高気温はOpen-Meteo API(temperature_2m_max、past_days=2&forecast_days=3)で前日比を計算し「(きのうより+2℃)」のように添える。Open-Meteoが失敗したら気象庁の値のみで続行

  5. 傘アドバイス:降水確率60%以上「傘を持っていこう」、30%以上「折りたたみ傘が安心」、それ未満「傘はいらなそう」

  6. 今日の予定:.env の CALENDAR_ICS_URLS(カンマ区切りのGoogleカレンダー非公開iCal URL)から対象日の予定を最大5件。iCalの繰り返し予定(FREQ=DAILY/WEEKLY/MONTHLY/YEARLY、INTERVAL、BYDAY、BYMONTHDAY、COUNT、UNTIL、EXDATE、RECURRENCE-IDによる例外日、複数日にまたがる終日予定)に対応。URL未設定ならセクションごと非表示

  7. 今日のお守り:configの lucky_colors / lucky_items から日替わりで1つ選ぶ(日付から決定的に)。環境変数 GEMINI_API_KEY があれば、Gemini API(モデルはconfigの gemini_model、既定 gemini-2.0-flash)で「中学生が朝に読む、押しつけがましくない占い風の一文(72字以内、選んだ色/アイテム名を必ず含む、断定的な運勢や不安をあおる表現は禁止)」を生成。キーがない・通信失敗・値が文に含まれない場合は固定テンプレ文にフォールバック

  8. 英検準1級の5分課題:data/eiken_pre1_daily_packs.csv(列: day, seq, pack_type, title, prompt, hint, items, choices, answer, answer_note, verified, source)から、学習日番号に対応する day の問題(verified=TRUE の行のみ)。pack_type の種類と表示方法:

    • mcq4:本番形式4択。choices は | 区切りで、2択ずつ2行に分けて表示

    • jp_to_en:日本語の意味から英単語を思い出す。hint を「ヒント:」として表示

    • reading / en_to_jp / weekly_review / speaking:prompt をそのまま表示

    • 問題エリアには答えを出さない。答えは最下部に集約する

  9. 今日のひとこと英語:data/daily_phrases.csv(列: phrase_id, category, text_en, text_ja, note, ready)から、曜日ローテーション(月=native, 火=idiom, 水=etymology, 木=native, 金=idiom, 土=riddle)で1件。riddle(英語なぞなぞ)の答えは最下部のこたえ欄へ回す

  10. 締めのメッセージ:configの closing_message

  11. こたえ欄:英検の答えとなぞなぞの答えを「- - - こたえ - - -」の下にまとめて出す(紙の下端を折れば隠せるように)

実行時の動き

  • コマンドライン引数:--print(実際に印刷)、--date YYYY-MM-DD(任意日のプレビュー)、--tomorrow(翌日分を生成。前夜の定期実行用)、--force-sunday(日曜でも生成。デバッグ用)

  • 日曜は生成も印刷もしない(デフォルト)

  • 印刷は、外部の印刷ツール(後述)を subprocess で呼ぶ:<printer_python> <printer_tool> -a <printer_address> -d <density> -f <feed> image <png>

  • Mac固有の対策:印刷の直前に、configの classic_bt_address を /opt/homebrew/bin/blueutil --disconnect で切断してからBLE印刷する。MacがプリンターをクラシックBluetoothで掴んでいるとBLE印刷が失敗するため。blueutilが無ければスキップして続行

印刷ツール

印刷にはオープンソースの thermal-pocket-printer-basic(GitHub: ChiaraCannolee/thermal-pocket-printer-basic)を使う。これはDP-L1S / Crafts & Co 3128系プリンターにBLEで直接印刷するPython CLI。クローンして、bleakとPillowを入れた仮想環境を用意し、print.py info で接続確認できるようにする。configの printer_python / printer_tool にそのパスを設定する。

configのひな形

{
  "area_code": "130000",
  "area_name": "東京",
  "printer_address": "(プリンターのBLEアドレス。print.pyのスキャンで見つける)",
  "classic_bt_address": "(同じプリンターのクラシックBTアドレス)",
  "printer_python": "(印刷ツールの仮想環境のpythonのフルパス)",
  "printer_tool": "(print.py のフルパス)",
  "density": 2,
  "feed": 96,
  "daughter_name": "",
  "closing_message": "今日も楽しい日になりますように。いってらっしゃい!",
  "eiken_start_date": "(次の月曜日の日付 YYYY-MM-DD)",
  "eiken_total_days": 100,
  "use_ai_lucky_message": true,
  "gemini_model": "gemini-2.0-flash",
  "lucky_colors": ["ミントグリーン", "ラベンダー", "レモンイエロー", "スカイブルー", "コーラルピンク"],
  "lucky_items": ["シャーペン", "ノート", "くし", "ハンカチ", "水筒", "ペンケース", "ヘアゴム", "リップクリーム"]
}

CSVのサンプルデータ

各CSVは列がそろったサンプルを入れておく(ユーザーが後から育てる前提):

  • day_facts.csv:まず30日分ほど。例 07-04,梨の日,「な(7)し(4)」の語呂合わせ

  • daily_phrases.csv:native/idiom/etymology/riddle 各5件ほど。ready は TRUE

  • eiken_pre1_daily_packs.csv:day=1〜6 の1週間分(月木=mcq4×4問、火=jp_to_en×3問、水=reading×2問、金=speaking+en_to_jp、土=weekly_review×4語)。verified は TRUE

自動実行(ユーザーが頼んだら)

macOSのlaunchdで毎晩21:00に daily_receipt.py --tomorrow --print を実行するplist(com.<ユーザー名>.daily_receipt_printer)を ~/Library/LaunchAgents に作成して launchctl で登録。ログは logs/ に出す。土曜夜は翌日が日曜なのでスクリプト側で自動スキップされる。

最初の動作確認

  1. 仮想環境を作り pip install Pillow

  2. daily_receipt.py --date <平日の日付> でプレビューを生成し、output/daily_receipt.png をユーザーに見せる

  3. ユーザーがプリンターを用意できたら、印刷ツールの接続確認 → --print でテスト印刷

【AIへの仕様書はここまで】

6. 仕上げはぜんぶAIに頼む

人間の皆さんへ。ここからは人間向けの文章なので読んでね〜

プレビュー画像まで動いたら、あとは日本語でAIに頼んでいくだけです。実際にわたしが使った「頼み方」を置いておきます。コピペしてどうぞ。

プリンターにつなぐとき:

プリンターを電源につないで緑色のランプがついた状態にして、PCのBluetoothで「PPS1_628C」みたいなのを接続しておいてください。
(ちょっとちがう名前かもです)

画像
サーマルプリンターが届きました。電源を入れて手元に置いています。
印刷ツールで接続確認をして、プリンターのアドレスをconfigに設定してください。
そのあとテスト印刷までお願いします。

Googleカレンダーをつなぐとき:

Googleカレンダーの予定をレシートに載せたいです。
「iCal形式の非公開URL」をどこから取るか教えてください。
取ったら .env に設定する場所も教えてください。

(参考:PCのGoogleカレンダー → 歯車 → 設定 → 左の「マイカレンダーの設定」でカレンダーを選ぶ → 「カレンダーの統合」→「iCal形式の非公開URL」をコピー。このURLは秘密です。他人に見せないでください)

毎晩の自動印刷にするとき:

毎晩21時に、翌朝ぶんを自動で印刷するようにしてください。
Macのlaunchdを使ってください。ログも残るようにしてください。

内容をカスタマイズするとき:

・地域を東京から◯◯県に変えて
・締めのメッセージを「◯◯」に変えて
・ラッキーアイテムに「◯◯」を追加して
・英検準1級じゃなくて英検3級レベルの問題データに作り直して

こんな調子で、ぜんぶ会話で済みます。英検の問題はちょっと作るの大変かも。

7. つまずきポイント(先に知っておくと安心)

わたしが実際にハマったところです。同じ症状が出たら、この文章ごとAIに見せてください。

  • 印刷が失敗する(Mac):MacがプリンターをクラシックBluetoothで掴んでいると、BLE(省電力Bluetooth)での印刷が失敗します。印刷直前に blueutil で一度切断する処理を入れて解決した…らしいです(AIが。仕様書に含めてあります)

  • Raspberry Piで動かしたい:わたしも試しましたが、Pi標準のBluetoothとこのプリンターの相性問題が解決できず、今はMacでの運用に落ち着いています。PiでやるならUSBのBluetoothドングルを足すのが現実的そうですが未検証。

  • 文字が切れる・はみ出す:AIに「もう少し文字を小さく」「1行の幅を調整して」と頼めば直してくれます

  • 日曜に何も出ない:仕様です。学校が休みの日はレシートもお休み。テストしたいときは「日曜でも生成して」と頼めば --force-sunday を使ってくれます

8. アレンジのヒント

同じ仕組みで、いくらでも変えられます。AIに一言頼むだけ。

  • 英検準1級 → 3級・漢検・都道府県クイズ・九九に(お子さんの年齢に合わせて)

  • 子ども向け → 自分向けに。今日のTODO、習慣トラッカー、一言日記の余白つき

  • 家族の伝言板として、冷蔵庫の横に

  • 塾や教室をやっている方なら、生徒さんへの「今日の一問」に

「毎朝1枚、手元に紙が出てくる」って、思っている以上に生活になじみます。スマホの通知とちがって、受け取る側が急かされないのがいいのかもしれません。

おわりに

なんでもスマホで済んでしまうこの時代だからこそ、1枚の物理的な紙には、アプリにはない体温のようなものがある気がします。

娘が黙って折りたたんでカバンに入れるのを見ると、作ってよかったなと思います。

作り方のおさらいは、たったこれだけです。

  1. プリンターを買う(3,000円くらい。こちらの機種がおすすめ)

  2. フォルダを作って、AIアプリでそのフォルダを開く

  3. この記事を丸ごと貼り付けて「再現して」と言う

ここから先の有料エリアには、わたしが実際に毎晩動かしているコード一式を置いておきます。AIに一から作らせるより、確実に・速く、同じものが動きます。

🔒 ここから有料エリア

 
 
トイレに行く時間もなかった元フルタイムワーママ👉受講者3.5万名超のUdemyベストセラーAI講師|AI活用やツール自動化を発信|noteメンバーシップ「自動化オタクの頭の中」は1ヶ月で会員207名|メルマガ読者3500名&無料ChatGPT講座2600名|ラーメン二郎が好き🍜

あなたへのおすすめ