test

```index.html
<!DOCTYPE html>
<meta charset="UTF-8">
<html>
<head>
  <title>日報作成ツール</title>
  <link rel="stylesheet" href="style.css">
</head>
<body>
  <h1>今日の日報</h1>
  <label for="date">日付:</label>
  <input type="date" id="date" value="<?php echo date('Y-m-d'); ?>"><br><br>

  <label for="task">今日のタスク:</label><br>
  <textarea id="task" rows="5" cols="50"></textarea><br><br>

  <label for="result">成果:</label><br>
  <textarea id="result" rows="5" cols="50"></textarea><br><br>

  <label for="tomorrow">明日の予定:</label><br>
  <textarea id="tomorrow" rows="5" cols="50"></textarea><br><br>

  <button id="saveBtn">保存</button>

  <script src="script.js"></script>
</body>
</html> 
```

```script.js
const saveBtn = document.getElementById('saveBtn');
const dateInput = document.getElementById('date');
const taskInput = document.getElementById('task');
const resultInput = document.getElementById('result');
const tomorrowInput = document.getElementById('tomorrow');

// ローカルストレージのキー名
const STORAGE_KEY = 'dailyReport';

// ページ読み込み時にローカルストレージからデータを読み込む
function loadFromLocalStorage() {
  const savedData = localStorage.getItem(STORAGE_KEY);
  if (savedData) {
    const { date, task, result, tomorrow } = JSON.parse(savedData);
    dateInput.value = date;
    taskInput.value = task;
    resultInput.value = result;
    tomorrowInput.value = tomorrow;
  }
}

// 入力内容をローカルストレージに保存する
function saveToLocalStorage() {
  const data = {
    date: dateInput.value,
    task: taskInput.value,
    result: resultInput.value,
    tomorrow: tomorrowInput.value,
  };
  localStorage.setItem(STORAGE_KEY, JSON.stringify(data));
}

// ローカルストレージをクリアする
function clearLocalStorage() {
  localStorage.removeItem(STORAGE_KEY);
}

// ページ読み込み時にローカルストレージからデータを読み込む
loadFromLocalStorage();

saveBtn.addEventListener('click', () => {
  saveToLocalStorage();

  // 保存処理 (テキストファイルダウンロードなど)
  const textData = `
日付: ${dateInput.value}

今日のタスク:
- ${taskInput.value.replace(/\n/g, '\n- ')}

課題:
- ${resultInput.value.replace(/\n/g, '\n- ')}

明日の予定:
- ${tomorrowInput.value.replace(/\n/g, '\n- ')}
  `;

  const blob = new Blob([textData], { type: 'text/plain' });
  const url = URL.createObjectURL(blob);
  const link = document.createElement('a');
  link.href = url;
  link.download = `${dateInput.value}_日報.txt`;
  document.body.appendChild(link);
  link.click();
  document.body.removeChild(link);

  // テキストファイル出力後にローカルストレージをクリア
  clearLocalStorage();
});
```

```style.css
/* 必要なスタイルを記述 */
body {
    font-family: sans-serif;
  }
  
  label {
    display: block;
    margin-bottom: 5px;
  }
  
  textarea {
    width: 400px;
    height: 100px;
    padding: 10px;
    margin-bottom: 10px;
    border: 1px solid #ccc;
  }
  
  button {
    background-color: #4CAF50;
    color: white;
    padding: 10px 20px;
    border: none;
    cursor: pointer;
  }
```


#ログ見る
```index.html
<!DOCTYPE html>
<meta charset="UTF-8">
<html>
<head>
  <title>ログファイル分析ツール</title>
  <link rel="stylesheet" href="style.css">
</head>
<body>
  <h1>ログファイル分析ツール</h1>
  <input type="file" id="logFile" accept=".log">
  <label for="pattern">検索パターン (正規表現):</label>
  <input type="text" id="pattern">
  <button id="analyzeBtn">分析</button>

  <div id="result"></div>

  <script src="script.js"></script>
</body>
</html>
```

```script.js
const logFile = document.getElementById('logFile');
const patternInput = document.getElementById('pattern');
const analyzeBtn = document.getElementById('analyzeBtn');
const resultDiv = document.getElementById('result');

analyzeBtn.addEventListener('click', () => {
  const file = logFile.files[0];
  const pattern = patternInput.value;

  if (!file) {
    alert('ログファイルを選択してください');
    return;
  }

  const reader = new FileReader();
  reader.onload = (event) => {
    const logData = event.target.result;
    const matchedLines = logData.split('\n').filter(line => {
      const regex = new RegExp(pattern);
      return regex.test(line);
    });

    const resultText = matchedLines.join('\n');
    resultDiv.textContent = resultText;

    // ダウンロードリンクを作成
    const blob = new Blob([resultText], { type: 'text/plain' });
    const url = URL.createObjectURL(blob);
    const link = document.createElement('a');
    link.href = url;
    link.download = 'matched_lines.txt';
    link.textContent = 'ダウンロード';
    resultDiv.appendChild(link);
  };
  reader.readAsText(file);
});
```

```style.css
/* 必要なスタイルを記述 */
body {
    font-family: sans-serif;
  }
```