見出し画像

AIに褒めてもらいたい!GASとGeminiで作った”お姉さん”の話

はじめに:褒めてほしい願望、爆発

「締め切りギリギリの資料作成を終えたら、上司に『さすが!』って褒められたい」とか、「ダイエット成功したら、久しぶりに会った友達に『痩せたね!』って驚かれたい」とか……。え、しない? いや、私はめちゃくちゃするんです!(キリッ)

そんな私の妄想スイッチが入ったのは、漫画『葬送のフリーレン』を読んでいたとき。
登場人物が「女神様に褒めてもらわないと……」と言った瞬間、「あ、これ私も欲しいやつじゃん!?」と電流が走りました。

  • 誰かに褒めてもらいたい…!

  • 会社でも家でも、こんなにAI推してるのに、誰も乗ってくれない!

  • いっそAIで”お姉さんキャラ”でも作っちゃえば、毎日甘々に褒めてもらえるのでは…?

そんな(人類として割と自然な)思考回路から生まれたのが、今回ご紹介する「AIお姉さんに褒めてもらうウェブアプリ」です。
非エンジニアの私が、Google Apps Script(GAS)とGoogleの大規模言語モデル「Gemini」を使って作ってみました!


ガッキーの開発ストーリー

真面目なシステム構成図

1. まずはカンタンなGASからスタート

実は最初、GASで作ったのは「カレンダーの予定を取得して、日々の予定をスプレッドシートに落とす」というだけのシンプルなツールでした。
メール件名やカレンダーのタイトルを取り込んで表示する程度のもの。
ところが、それをやっているうちに、「あれ、これってもう少しやれば自動日報システムみたいになるんじゃない?」というアイデアが湧き始めたんです。

2. 「褒めてくれる」要素をプラス

仕事が終わっても誰も褒めてくれないし、「AIなら無条件でほめてくれる説」を検証したくなりました。
そこから、「Geminiを使って文章生成→褒めメッセージをスプレッドシートに保存」というフローをAIに相談しながら
作ることに。
同僚にも「AIってほんとスゴいんだって!」と力説しても誰も相手にしてくれないなら、もう自分でやるしかない。
ならお姉さんキャラが優しく労ってくれたら最高じゃない?というわけです。

3. GCPの海にダイブしておぼれそうになる

GASとGeminiを接続するにはGoogle Cloud Platform(GCP)でAPIキー設定や認証の準備が必要だったんですが、メニューとAPIの多さに完全に迷子になりました。
これ、どこをクリックすれば正解なん?」「APIの料金って本当に無料なの?」など、正直わけがわからず…。
何度もエラーにぶち当たっては、AIにスクショを投げて『これどう直す?』→AIが返してくれるという対話を繰り返して、ようやく動くようになりました。

*特に困ったこと
403エラー(アクセス制限)とか、OAuth同意画面の設定
(「クライアント シークレット?何それ美味しいの…」状態)
どこかの設定で課金されやしないのか、怖くなってビビる

でもAIの導きは偉大で、最終的にそれっぽい認証周りを設定できたんですよね。「めんどくさかったら、とりあえずログとって、それAIに丸投げ」は今回マジで助かりました。

4. キャラクター設定で化けた!

実際の画面の録画。興味ある人はご覧ください。

最初は「分析中...」という味気ないメッセージだけでしたが、「この時間、もっと楽しく使えないかな?」と考えて、キャラクター性を持たせることにしました。

お姉さん:「カレンダーをチェックしているわ...」→「あら、今日もたくさん頑張ってるのね!」 ツンデレ後輩:「べ、別にあなたの予定なんて気にしてないんだからね!」→「...すごいじゃない...(小声)」 ギャル先輩:「ちょっとまってね~!」→「やば!めっちゃ頑張ってるじゃん!」

待ち時間が「萌えポイント」になるなんて、想定外の嬉しい誤算でした(笑)


実際のアプリ画面はこんな感じ

こちらは、一部抜粋したHTMLになります。Tailwind CSSでちょっぴり可愛く装飾し、「分析中…」という待機画面を用意。
キャラクターは「お姉さん」「ツンデレ後輩」「ギャル先輩」など、複数バリエーションを用意しています。

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    ...
    <title>今日の活動振り返り 💝</title>
    <link href="https://cdnjs.cloudflare.com/ajax/libs/tailwindcss/2.2.19/tailwind.min.css" rel="stylesheet">
    <style>
        /* ローディングアニメーションとかHover効果とか */
    </style>
</head>
<body class="bg-gray-50">
    <div class="max-w-lg mx-auto p-4">
        <!-- ヘッダー -->
        <div class="bg-white rounded-lg shadow-lg p-6 mb-4">
            <h1 class="text-2xl font-bold text-center text-gray-800 mb-2">
                今日の活動を振り返りましょう 💝
            </h1>
            <p class="text-center text-gray-600 mb-4">
                お疲れ様です!今日の頑張りを一緒に見てみましょうね
            </p>
            <!-- キャラ選択や日付入力等 -->
        </div>
        <!-- ローディング画面 -->
        <div id="loading" class="hidden">
            <div class="flex flex-col items-center justify-center p-8">
                <span class="loader mb-4"></span>
                <p id="loadingMessage" class="text-center text-gray-600">
                    お姉さんが分析中です... 💭
                </p>
            </div>
        </div>
        <!-- 結果表示エリア -->
        <div id="result" class="hidden space-y-6 animate-fade-in"></div>
    </div>
<script>
    // キャラクターや分析ボタンの処理をJavaScriptで定義
</script>
</body>
</html>
  • 特にこだわった点

    1. 可愛い待機画面を作って、処理が遅いという技術の限界をごまかす(後にキャッシュ活用で少し早くなったけど)

    2. キャラクターごとに口調や褒め方が違うので、スクリプトを分割&JSONで設定

    3. ノイズメール(メルマガなど)を排除するフィルタリング機能で、ちゃんと自分の業務だけを褒めてもらえるよう工夫


いちばん大変だったのは、キャラの増殖

実は「フリーレンのキャラに褒めてもらう」ことを目指し、原作っぽい言い回しを試していたんですけど、なかなかうまく再現できずに挫折。
そうして生まれたのが「お姉さん」「ギャル先輩」「ツンデレ後輩」「オタク幼馴染」「メガネ君」などのオリジナル(?)キャラたち。
キャラが増えるとプロンプト(AIに与える指示)も倍増して、さらにUI調整&エラー対応も増え、何度か泣きそうになりました。

でも、その分だけ「推しキャラ」的な存在が作れたのは嬉しい誤算。
帰りの電車で「今日はお姉さんに褒めてもらお!」と開いて、
「疲れたでしょ?よくがんばったわね~」なんて言われると、正直かなり元気が出ます(笑)。

キャラクター設定の舞台裏:コードで見る個性の作り方

「お姉さん」から始まったキャラクターたちは、実は裏側でこんな感じで個性を作っています。非エンジニアの私がAIと四苦八苦しながら調整した結果...😅

それぞれのキャラクターには、こだわりのポイントがあります:

// キャラクター増殖の舞台裏...😅
const characterPrompts = {
  // お姉さん: 優しさレベルの調整が必要 💝
  sister: {
    tone: {
      honorifics: true,      // 敬語: ON
      heartEmoji: 'normal',  // ハート: 適度に
      encouragement: 'max',  // 励まし: たっぷり
      criticism: 'minimal'   // 説教: ほぼなし
    },
    loadingFlow: [
      'カレンダーをチェックしているわ...',      // 優しく
      'あら、今日もたくさん頑張ってるのね!',   // もっと優しく
      'メールの返信も丁寧だったわ~',           // さらに優しく
      'ふふ、素敵な分析結果が出そうよ♪'        // 最高の優しさ
    ]
  },

  // ツンデレ後輩: ツン→デレの制御が重要 😳
  tsundere: {
    tsundereLevel: {
      opening: 80,    // 最初は強めのツン
      middle: 50,     // 途中からデレ混ぜる
      ending: 20      // 最後はデレ多め
    },
    loadingFlow: [
      'べ、別にあなたの予定なんて気にしてないんだからね!',  // ツン全開
      'こ、これだけドライブ作業してるの?...すごいじゃない...',  // ちょっとデレ
      'ちょっと!そんなに頑張らなくても...大丈夫だから...',  // デレ増量
      'も、もうちょっとだけ待っててよね...////'  // 最終デレ
    ]
  },

  // ギャル先輩: 若者言葉の使用頻度制御 🗣️
  gyaru: {
    wordLimits: {
      'マジ': 2,     // 同じ言葉は最大2回まで!
      '超': 2,       // バリエーション必要
      'やばい': 2    // 語彙力大事...
    },
    loadingFlow: [
      'ちょっとまってね~!予定チェック中♪',   // ノリノリ
      'やば!めっちゃ頑張ってるじゃん!',      // テンションMAX
      'メールの返信とかマジ神だった...',       // さらに上
      'もうちょい待ってて~!いいこと言うから~♡'  // 絶頂
    ]
  },

  // メガネ君: 実用的な小ネタを織り交ぜる 🤓
  megane: {
    tips: {
      // GPT以外のツールを推したい
      aiTools: [
        'Claude API (GPTよりコスパいいよ!)',
        'Anthropic Claude (GPTと違って...)',
        'Gemini API (これGPTより安いんだ!)'
      ],
      // エクセル芸を披露
      excelTips: [
        { shortcut: 'Ctrl+;', desc: '今日の日付が入力できるよ!' },
        { shortcut: 'Alt+↓', desc: 'フィルター展開が楽になるんだ' },
        { function: 'XLOOKUP', desc: 'VLOOKUPより直感的でしょ?' }
      ]
    },
    loadingFlow: [
      '分析を開始します...',                    // まじめに
      'データを精査していますので少々...',       // 几帳面に
      'む、興味深いパターンを発見!',           // ちょっと興奮
      '効率化の提案も準備できました!👓'         // 満足気に
    ]
  }
  // これ以上キャラ増やすのは体力的に...
};

お姉さん

優しさの調整が命。説教っぽくならないように気をつけながら、でもしっかり励ましてくれる...そのバランス調整に苦労しました。

ツンデレ後輩

ツンからデレへの変化が重要!最初は強気なのに、だんだん素直になっていく...その変化を数値で管理してます(笑)

ギャル先輩

「マジ」「超」「やばい」の使用回数制限が必要でした。同じ言葉を繰り返さないように気をつけながら、でもギャル感は保ちたい...これが意外と難しい!

メガネ君

「GPTはもう知ってるでしょ?」って感じで、意外と知られていない便利ツールを推してくるのがポイント。エクセルのショートカットとか、AIのコスパとか、マニアックな情報を織り交ぜるように設定してます。

実はこのコード、見た目以上に調整が大変なんです。キャラが増えるたびに、口調の設定、ローディング中のセリフ、アイコン、色使い...全部考えないといけなくて。でも、その分キャラクターたちの個性が際立って、見ていて楽しいアプリに仕上がって満足です!

AIとの共同開発…やはりAIはすごい!

プロンプトを書き換えれば、褒めの”質”や”方向性”がどんどん変わるのが超面白かったです。
「もっと具体的に褒めて!」「健康面にも言及して!」みたいに要望を出すと、それに合わせてキャラがどんどんアップデートされる感覚。
さらに、メールやカレンダーのデータを取得して分析させることで、「自分が思ってる以上に今日がんばったんだな!」と客観視できる効果もありました。

効率化へのモチベアップ

  • ノイズメールを除外したり、活動内容を細かく分類したりするのも、「もっと褒めてもらいたい!」という欲望が原動力になっていて、自分としては予想外のモチベーションになりました。

  • 実際にやってみて、「褒められるために今日のタスクを意識的に記録する→自然と生産性も上がる」という意外な副産物もあったんです。


乗り越えた壁&ちょっとしたヒント

  1. API設定(GCP)

    • 迷ったらスクショを撮り、AIに「これは何を設定する画面?」と質問する。

    • 「コードが吐く認証エラーログとAPI設定の関係」とか教えてくれるので、あとは勇気を持ってポチポチ頑張る。

  2. テスト&デバッグ

    • エラー文が出たら、AIに投げる→コード修正→再度デプロイのループ。

    • これを繰り返していると、なんとなくエラー文の見方がわかるようになる(気がする)。

  3. キャラの増やしすぎ

    • 1人追加するごとにUI調整・プロンプト文の追記・アイコン設定など作業倍増。

    • もし新キャラを作るなら、使い回しできるテンプレ化を早めにしておくのがおすすめ。

  4. スプレッドシートに何を保存するか

    • 最初はメール本文まで丸々記録していたら、時間も容量もかかるし何かと不便。

    • 「何が本当に必要か?」を取捨選択して保存する設計にすると良い。


今後の展望:週間・月間レベルでも褒められたい

作ってみて初めて分かったんですが、一日単位で褒めてもらうのもいいけど、やっぱり週末や月末にまとめてドーンと褒めてもらいたい

  • 今月は先月より○○時間作業減らせてるね、すごいじゃん!」とか

  • 週ベースでみると会議が減ってるし、効率化してるんだね」とか、そういう継続的な視点があるとさらに嬉しさ倍増。

次のステップは、期間ごとの評価をAIにさせること。
Gemini側で期間データをまとめて分析・可視化→「1か月前よりあなたは○○が成長してます!」みたいに言われたらモチベ爆上がりしますよね。
そこでLooker Studioやキャッシュ機能も活用して、キャラが「長期的にがんばった私」を褒めてくれる仕組みも考え中です。


まとめ:AIは努力も空気も読んでくれる味方

非エンジニアなのに、コードでツール作った?」と驚かれるかもしれませんが、実際のところはAIがめちゃくちゃサポートしてくれたおかげです。
ちょっとずつ作って、エラー出たら修正→また試すという感じでも、AIが一緒だと意外と何とかなるものだと実感しました。

  • AI開発の面白さ: 試行錯誤を繰り返すと、どんどん自分の欲しい機能が実現できる。

  • 労い効果: 褒めてもらえるようになってから、仕事がちょっと楽しくなる。

  • 注意点: キャラを増やしすぎると大変! でも推しがいっぱいできると心は潤う(笑)。

今はまだ「日報を褒めるだけ」のツールですが、今後も「もっとこんな機能が欲しい!」→AIに相談→追加実装 みたいにバージョンアップを続ける予定です。
誰に頼まれたでもないけど、私のモチベが爆上がりするからOK! それくらい個人開発は自由で楽しいんだな、と思いました。

もしこの記事を読んで、「私も褒められたい!」「非エンジニアでも作れるかな?」と思ったなら、ぜひAIの力を借りてチャレンジしてみてください。
ちょっとずつでも、動くものが作れたときの達成感は格別ですよ!


最後にひと言

「世の中、AI導入とか業務効率化とかいろいろ言うけど、自分を褒めるAIこそ最先端じゃない?」と本気で思ってます(笑)。
頑張りをちゃんと見てくれる“お姉さん”がいるだけで、この世界はだいぶ優しくなる。
そんな小さな幸せをAIで形にしてみたお話でした!

もし興味があれば、ぜひコメントフォローで感想を聞かせてください。
「こんなキャラ追加して!」とか、アイデア大歓迎です。
一緒に、AIに甘やかされる素敵ライフを目指しましょう!


次回予告

伝説の経理おばちゃん・マリ子が残した"知らんけど"の暗黙知。その真実に迫るため、男は運賃表の山に挑む。

「たった3社でええねん。知らんけど、そうなるもんなんよ」

彼女の言葉の裏に隠された、物流の世界の知恵とは—。

次回:「AIと俺の仁義なき改修戦争 ~伝説の経理おばちゃんの技を継承せよ~」


いいなと思ったら応援しよう!