iT邦幫忙

2026 iThome 鐵人賽

DAY 6
0
自我挑戰組

Eric 的創作者重生計畫系列 第 6

DAY 6. 岡田夢以:高壓工作下的時間與心理管理策略流程圖📊

  • 分享至 

  • xImage
  •  

上次我舉Vtuber作為例子,這次藉由岡田夢以公開的行程,搭配 NotebookLM 詳細分析:

對表演者而言,演唱會當天是一場結合高體力消耗、極致專注與高不確定性的考驗。觀看岡田夢以在公演日的時間安排,這不單是一份時間表,更是一套成熟且具永續性的時間管理架構。將這套行為模式轉化為專業人士面對大型專案或高壓任務時的應對策略,可歸納出五大核心原則:


一、 建立「認知防護帶」:消除啟動時的決策損耗

岡田夢以在演唱會當天於 5:30 起床,將早晨的時間精確分配給生理喚醒與最終確認。這並非單純為了早起,而是為了在進入高壓現場前建立一個可控的穩定區塊。

  • 低認知的防錯機制: 她在 6:00 前預留「遺忘物檢查時間」。這是在承認人類壓力下易犯錯的前提下,所採取的科學做法。在重要專案開始前預留 15 分鐘進行防呆檢查,能顯著降低啟動時的心理焦慮。(這就是所謂的取好前置量...)
  • 生理預熱(Warm-up): 30 分鐘內完成刷牙、伸展運動並穿上休閒壓力襪(MediQttO),透過身體的儀式感告訴大腦「工作模式即將開始」,進而縮短進入專注狀態所需的磨合期。

二、 空間秩序與心理熵值(Mental Entropy)管理

抵達現場後,她並非立即投入排練,而是先進行心理與空間的準備:

  • 物理環境影響心理狀態: 進入休息室後,她第一時間整理行李並擺放好鏡子周圍的私人物品。
    ➡️在高壓混亂的環境中,整理桌面或數位工具(如資料夾、瀏覽器分頁)能有效降低「心理熵值」,讓大腦將有限的帶寬集中於核心任務。
  • 碎片時間的性質轉換: 團員輪流化妝的等待時間,被她定義為「點心時間(O-yatsu Time)」與休息空檔。將會議間隙或通勤時間定義為「斷電補充」,能避免大腦因持續待命而導致過熱。

三、 實施「微循環恢復」:拒絕一次性燃燒

面對一天兩場公演(約 15:00 與 19:00)的體力挑戰,她採用「演出—恢復—再演出」的循環模式:

  • 強迫性的生理斷點: 首場演出結束後,立即進行吃飯與伸展運動。
    ➡️在兩個高強度會議或工作區塊之間,主動插入生理修復,比持續咬牙硬撐更能維持產出品質。
  • 結構化多工: 正式演出前穿插彩排、團體與個人宣傳照拍攝,明確區分準備階段與正式釋放最高能量的時刻,確保舞台呈現的完美。

四、 意志力補償機制:獎勵系統的「稀缺性」運用

這是管理法中最具人性的一環。岡田夢以懂得利用平時對熱愛食物的節制,換取高壓當天的特權:

  • 條件式獎勵(Conditional Reward): 將「可以吃麵包」作為演唱會當天的專屬獎勵。由於意志力是有限資源,將渴望的物品與艱難挑戰綁定,能創造正向心理聯結,將壓力源轉變為期待感的來源。
  • 社交潤滑的附加價值: 她將父母送來的麵包分享給團員。這種分享行為將個人的心理補償轉化為團隊的社交支持,在高壓環境下營造良好的團隊氣氛與連結感。

五、 閉環系統(Closed-loop System):數位反饋與儀式感卸載

即使深夜 23:30 才回到家,她仍有一套固定的收尾程序:

  • 雙層反饋檢查: 她會分兩次檢查 SNS(一次回家後,一次睡前)。這既是查看粉絲反饋的工作環節,也是確認當天表現的儀式感,幫助心理上對今日表現進行「歸檔」與閉環。
  • 生活與工作的切換: 即便時間再晚,仍堅持完成洗澡與睡眠準備。透過明確的睡前流程,向潛意識發出「今日工作已結束」的訊號,安全地切換至修復狀態。

總結

岡田夢以的時間規劃展現了一種「以人為本」的專業主義:對內承認自己的弱點並用制度補足;對外在不可控的大環境中經營可控的小區域;動能上則不靠意志力硬撐,而是透過「預留緩衝」與「精準獎勵」實現長期續航。


藉由Gemini製作的chartjs圓餅圖原始碼

<!DOCTYPE html>
<html lang="zh-TW">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>岡田夢以 演唱會當日24小時時間分配圓餅圖 (Chart.js)</title>
    <!-- Chart.js CDN -->
    <script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
    <!-- Tailwind CSS CDN -->
    <script src="https://cdn.tailwindcss.com"></script>
    <style>
        body {
            background-color: #0f172a;
            color: #f8fafc;
            font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
        }
    </style>
</head>
<body class="min-h-screen flex items-center justify-center p-4">
    <div class="w-full max-w-4xl bg-slate-800/80 backdrop-blur border border-slate-700 rounded-2xl p-6 shadow-2xl">
        <header class="mb-6 text-center">
            <h1 class="text-2xl sm:text-3xl font-extrabold text-transparent bg-clip-text bg-gradient-to-r from-amber-400 via-pink-500 to-indigo-400">
                岡田夢以 演唱會當日 24 Hours 行程表
            </h1>
            <p class="text-slate-400 text-xs sm:text-sm mt-2">
                高壓演唱會當天的精準時間管理與微循環恢復機制 (Chart.js 版)
            </p>
        </header>

        <!-- Category Filter Buttons -->
        <div id="filter-container" class="flex flex-wrap justify-center gap-2 mb-6"></div>

        <!-- Chart Container -->
        <div class="relative w-full max-w-md mx-auto h-[360px] flex items-center justify-center">
            <canvas id="scheduleChart"></canvas>
            <!-- Center Text -->
            <div class="absolute inset-0 flex flex-col items-center justify-center pointer-events-none">
                <span class="text-3xl font-black text-amber-400 font-mono">24h</span>
                <span class="text-[10px] text-slate-400 tracking-widest uppercase">Schedule</span>
            </div>
        </div>

        <!-- Timeline Grid -->
        <div class="mt-8 border-t border-slate-700/60 pt-6">
            <h2 class="text-sm font-semibold text-slate-300 mb-4 flex items-center gap-2">
                <span class="w-2 h-2 rounded-full bg-amber-400"></span>
                時段明細與備註
            </h2>
            <div id="grid-container" class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-3 text-xs"></div>
        </div>
    </div>

    <script>
        const scheduleData = [
            { name: "刷牙・伸展・早餐", value: 0.5, rawTime: "05:30 - 06:00", category: "準備", color: "#f59e0b" },
            { name: "出門準備", value: 0.5, rawTime: "06:00 - 06:30", category: "準備", color: "#fbbf24" },
            { name: "遺忘物檢查", value: 0.5, rawTime: "06:30 - 07:00", category: "防錯", color: "#ef4444" },
            { name: "移動時間", value: 1.0, rawTime: "07:00 - 08:00", category: "交通", color: "#6b7280" },
            { name: "休息室整理", value: 0.5, rawTime: "08:00 - 08:30", category: "整頓", color: "#10b981" },
            { name: "妝髮造型", value: 1.0, rawTime: "08:30 - 09:30", category: "梳化", color: "#ec4899" },
            { name: "點心時間 / 休息", value: 2.0, rawTime: "09:30 - 11:30", category: "恢復", color: "#8b5cf6" },
            { name: "宣傳照拍攝", value: 0.5, rawTime: "11:30 - 12:00", category: "工作", color: "#3b82f6" },
            { name: "現場彩排", value: 1.5, rawTime: "12:00 - 13:30", category: "演練", color: "#2563eb" },
            { name: "正式前最終調整", value: 1.0, rawTime: "13:30 - 14:30", category: "演練", color: "#1d4ed8" },
            { name: "正式演出 ①(晝場)", value: 2.0, rawTime: "14:30 - 16:30", category: "演出", color: "#dc2626" },
            { name: "吃飯・伸展・麵包獎勵", value: 2.0, rawTime: "16:30 - 18:30", category: "恢復", color: "#a855f7" },
            { name: "正式演出 ②(夜場)", value: 2.0, rawTime: "18:30 - 20:30", category: "演出", color: "#b91c1c" },
            { name: "會場收拾與退場", value: 0.25, rawTime: "20:30 - 20:45", category: "整頓", color: "#059669" },
            { name: "歸宅", value: 2.75, rawTime: "20:45 - 23:30", category: "交通", color: "#4b5563" },
            { name: "社群檢查①・洗澡・睡前檢查②", value: 1.0, rawTime: "23:30 - 00:30", category: "收尾", color: "#06b6d4" },
            { name: "睡眠與休息", value: 5.0, rawTime: "00:30 - 05:30", category: "睡眠", color: "#1e293b" }
        ];

        let selectedCategory = 'ALL';
        let chartInstance = null;

        // Render Grid Items
        function renderGrid() {
            const container = document.getElementById('grid-container');
            container.innerHTML = scheduleData.map(item => {
                const isActive = selectedCategory === 'ALL' || selectedCategory === item.category;
                return `
                    <div class="p-2.5 rounded-lg border transition-all ${
                        isActive 
                            ? 'bg-slate-900/60 border-slate-700/80 text-slate-200' 
                            : 'bg-slate-900/20 border-slate-800 text-slate-600 opacity-40'
                    }">
                        <div class="flex justify-between items-center mb-1">
                            <span class="font-mono text-amber-400/90 font-medium">${item.rawTime}</span>
                            <span className="px-1.5 py-0.5 rounded text-[10px] font-semibold" style="background-color: ${item.color}22; color: ${item.color}">
                                ${item.category}
                            </span>
                        </div>
                        <p class="font-medium">${item.name}</p>
                    </div>
                `;
            }).join('');
        }

        // Render Category Filter Buttons
        function renderFilters() {
            const categories = ['ALL', '演出', '恢復', '防錯', '演練', '整頓', '梳化', '準備', '交通', '收尾', '睡眠'];
            const container = document.getElementById('filter-container');
            
            container.innerHTML = categories.map(cat => `
                <button
                    onclick="filterCategory('${cat}')"
                    class="px-3 py-1 text-xs rounded-full transition-all duration-200 border ${
                        selectedCategory === cat 
                            ? 'bg-amber-500 text-slate-950 font-bold border-amber-400 shadow-md shadow-amber-500/20' 
                            : 'bg-slate-900/60 text-slate-300 border-slate-700 hover:bg-slate-700'
                    }"
                >
                    ${cat === 'ALL' ? '全部顯示' : cat}
                </button>
            `).join('');
        }

        // Category Filter Logic
        function filterCategory(cat) {
            selectedCategory = cat;
            renderFilters();
            renderGrid();

            // Update Chart Colors / Opacity
            const newColors = scheduleData.map(item => {
                if (selectedCategory === 'ALL' || selectedCategory === item.category) {
                    return item.color;
                }
                return `${item.color}22`; // Dimmed
            });

            chartInstance.data.datasets[0].backgroundColor = newColors;
            chartInstance.update();
        }

        // Initialize Chart.js
        function initChart() {
            const ctx = document.getElementById('scheduleChart').getContext('2d');

            chartInstance = new Chart(ctx, {
                type: 'doughnut',
                data: {
                    labels: scheduleData.map(d => d.name),
                    datasets: [{
                        data: scheduleData.map(d => d.value),
                        backgroundColor: scheduleData.map(d => d.color),
                        borderColor: '#0f172a',
                        borderWidth: 2,
                        hoverOffset: 8
                    }]
                },
                options: {
                    responsive: true,
                    maintainAspectRatio: false,
                    cutout: '65%',
                    plugins: {
                        legend: {
                            display: false
                        },
                        tooltip: {
                            backgroundColor: '#0f172a',
                            titleColor: '#fbbf24',
                            bodyColor: '#f8fafc',
                            borderColor: '#334155',
                            borderWidth: 1,
                            padding: 12,
                            displayColors: false,
                            callbacks: {
                                title: (tooltipItems) => {
                                    const index = tooltipItems[0].dataIndex;
                                    return scheduleData[index].name;
                                },
                                label: (context) => {
                                    const item = scheduleData[context.dataIndex];
                                    return [
                                        `時段:${item.rawTime}`,
                                        `時長:${item.value} 小時`,
                                        `分類:${item.category}`
                                    ];
                                }
                            }
                        }
                    }
                }
            });
        }

        // Boot
        window.addEventListener('DOMContentLoaded', () => {
            renderFilters();
            renderGrid();
            initChart();
        });
    </script>
</body>
</html>

夢以漂亮漂亮,謝謝


上一篇
DAY 5. 🍅番茄鐘—把我的番茄攤開在陽光下
下一篇
DAY 7. ⏰上網習慣追蹤—藉由 Vivaldi 歷史記錄與擴充功能🎻
系列文
Eric 的創作者重生計畫16
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言