(Sample)
今回は、「検索フォームに入力したキーワードをタグ化して表示し、そのキーワードをCookieに保存する」というちょっと便利なフロントエンド機能をご紹介します!
検索機能付きWebアプリや、入力履歴を活かしたUX向上などにも活用できる実用的なテクニックです。コードもコンパクトなので、ぜひ仕組みを理解しておきましょう。
どんなことができるの?
このコードを使うと、以下のようなことができます:
- 入力フォームにキーワードを入力して「検索」ボタンを押す
 - 入力キーワードがタグとして表示される
 - タグをクリックするとGoogle検索が開く
 - 入力したキーワードがCookieに保存され、再訪問時に自動で復元される!
 
構成と使用技術
| 要素 | 内容 | 
|---|---|
| HTML | 入力フォームとタグ表示エリアの構造定義 | 
| CSS | タグの見た目のデザイン | 
| JavaScript | イベント処理、タグ生成、Cookieの読み書き | 
検索フォームとイベント処理
HTML構造
<form id="searchForm">
  <input type="text" id="searchInput" />
  <button type="submit">検索して追加</button>
</form>
#searchInputにキーワードを入力- フォーム送信イベントにより処理開始
 
JavaScriptの流れ
document.querySelector("#searchForm").addEventListener("submit", function (event) {
  event.preventDefault();
  ...
});
submitイベントを使ってボタンのクリックを検知event.preventDefault()でデフォルトの送信動作を無効化
タグ表示のロジック
function addTag(keyword) {
  const tag = document.createElement("span");
  tag.classList.add("tag");
  tag.textContent = keyword;
  tag.addEventListener("click", function () {
    window.open(`https://www.google.com/search?q=${encodeURIComponent(keyword)}`, "_blank");
  });
  tagContainer.appendChild(tag);
}
ポイント解説
createElement("span")でタグ要素を生成addEventListener("click", ...)でクリック時にGoogle検索を別タブで実行tagContainer.appendChild(...)で表示エリアに追加
「クリックできる検索履歴」をビジュアル化しているわけです!
Cookieへの保存と取得
Cookieへ保存する処理
function saveKeywordToCookie(keyword) {
  let keywords = getKeywordsFromCookie();
  if (!keywords.includes(keyword)) {
    keywords.push(keyword);
    document.cookie = `keywords=${JSON.stringify(keywords)}; expires=...; path=/;`;
  }
}
- Cookieは「文字列」しか保存できないため、
JSON.stringify()で配列を文字列に変換して保存しています。 
Cookieから復元する処理
function getKeywordsFromCookie() {
  const cookie = document.cookie.split("; ").find((row) => row.startsWith("keywords="));
  return cookie ? JSON.parse(cookie.split("=")[1]) : [];
}
- Cookieの中身を分解して、
keywords=という名前のデータを探し出し、再び配列に戻しています(JSON.parse)。 
画面読み込み時にタグを再生成
document.addEventListener("DOMContentLoaded", loadKeywords);
これによって、ページを再読み込みしたときに、過去に保存されたキーワードタグが表示されるようになります。
まさに「見える履歴」です!
よくある疑問を解決!
Q1. Cookieって何日間保存されるの?
→ 以下の部分で30日後の日時を設定しています。
date.setTime(date.getTime() + 30 * 24 * 60 * 60 * 1000);
Q2. Cookieに保存できるデータの上限は?
→ 1Cookieあたり約4KBが目安です。それを超えると保存できなくなります。
改善・応用ポイント
| 応用内容 | 説明 | 
|---|---|
| タグの削除機能追加 | タグ右上に「×」をつけて削除できるようにする | 
| タグの色分け | 入力キーワードのカテゴリや頻度に応じて色を変える | 
| LocalStorageへの切り替え | Cookieよりも容量が大きく、扱いやすいLocalStorageで保存する方法もあります | 
今後の学習ステップ
今回の実装をベースに、以下のような発展が可能です。
| スキル | 学ぶ内容 | 
|---|---|
| JavaScript DOM操作 | 要素の動的生成・削除・イベント制御 | 
| Cookie / LocalStorage | クライアントサイドの永続的なデータ保存方法 | 
| 検索機能強化 | 他のAPIと連携して「おすすめワード」を表示するなどの工夫 | 
最後に
今回のような「検索 + タグ + Cookie」の組み合わせは、ユーザーの操作を見える化し、便利にするUI/UXの基本です。
シンプルな機能でも、技術の組み合わせ次第でとても実用的なものが作れます。コードを一つ一つ読み解いて、ぜひ実装に挑戦してみてください!