YESキリストBOT

<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="utf-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1" />
  <title>YESキリスト BOT</title>
  <!-- Tailwind(CDN) -->
  <script src="https://cdn.tailwindcss.com"></script>
  <!-- Font Awesome(アイコン) -->
  <link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.0/css/all.min.css" rel="stylesheet">
  <meta name="description" content="YESキリストBOT:優しく背中を押してくれるシンプルなチャットボット。今日の励まし、進むべき?などを相談できます。" />
  <style>
    /* スクロールバー控えめ */
    * { scrollbar-width: thin; scrollbar-color: #cbd5e1 transparent; }
    *::-webkit-scrollbar { height: 8px; width: 8px; }
    *::-webkit-scrollbar-thumb { background: #cbd5e1; border-radius: 8px; }
    /* バブルの三角 */
    .bubble:after{
      content:""; position:absolute; bottom:-6px; left:16px; border:6px solid transparent; border-top-color:rgba(255,255,255,0.9);
      filter: drop-shadow(0 1px 0 rgba(15,23,42,.05));
    }
    .bubble.me:after{ left:auto; right:16px; border-top-color:#dcfce7; }
  </style>
</head>
<body class="min-h-screen bg-gradient-to-b from-slate-50 to-white text-slate-800">
  <!-- コンテナ -->
  <div class="mx-auto max-w-3xl px-4 py-6">
    <!-- ヘッダー -->
    <header class="flex items-center justify-between rounded-2xl bg-white/90 backdrop-blur shadow-sm p-4">
      <div class="flex items-center gap-3">
        <div class="h-10 w-10 rounded-full bg-emerald-500 text-white grid place-items-center">
          <i class="fa-solid fa-dove"></i>
        </div>
        <div>
          <h1 class="text-xl font-bold">YESキリスト BOT</h1>
          <p class="text-xs text-slate-500">優しく「YES」で背中を押すチャット</p>
        </div>
      </div>
      <div class="flex items-center gap-2">
        <button id="btnClear" class="text-xs px-3 py-1.5 rounded-lg bg-slate-100 hover:bg-slate-200 transition">
          履歴クリア
        </button>
        <button id="btnExport" class="text-xs px-3 py-1.5 rounded-lg bg-slate-100 hover:bg-slate-200 transition">
          エクスポート
        </button>
        <label class="text-xs px-3 py-1.5 rounded-lg bg-slate-100 hover:bg-slate-200 transition cursor-pointer">
          インポート<input id="fileImport" type="file" accept="application/json" class="hidden">
        </label>
      </div>
    </header>

    <!-- プリセット -->
    <section class="mt-4 grid grid-cols-2 sm:grid-cols-4 gap-2">
      <button class="preset chip">今日の励まし</button>
      <button class="preset chip">挑戦していい?</button>
      <button class="preset chip">許してもいい?</button>
      <button class="preset chip">進むべき?</button>
    </section>

    <!-- チャット -->
    <main id="chat" class="mt-4 h-[60vh] overflow-y-auto rounded-2xl bg-white/90 backdrop-blur p-4 shadow-sm space-y-4">
      <!-- 初期メッセージ -->
    </main>

    <!-- 入力欄 -->
    <form id="composer" class="mt-4 flex items-end gap-2">
      <textarea id="input" rows="1" placeholder="ここに相談を書いてね(例:新しいことに挑戦しても大丈夫?)"
        class="flex-1 resize-none rounded-2xl border border-slate-200 bg-white p-3 focus:outline-none focus:ring-2 focus:ring-emerald-300"></textarea>
      <button id="btnSend" type="submit" class="h-11 px-4 rounded-2xl bg-emerald-500 text-white hover:bg-emerald-600 transition">
        <i class="fa-solid fa-paper-plane"></i>
      </button>
    </form>

    <!-- 使い方 -->
    <details class="mt-4 rounded-2xl bg-slate-50 p-4 text-sm text-slate-600">
      <summary class="cursor-pointer font-semibold">使い方</summary>
      <ul class="list-disc pl-5 mt-2 space-y-1">
        <li>メッセージを送ると、YESキリストが優しく背中を押す言葉で返します。</li>
        <li><code>/prayer</code> で短いお祈り風メッセージ、<code>/bless</code> で祝福文。</li>
        <li>履歴はブラウザに保存されます(ローカルのみ)。</li>
      </ul>
    </details>
  </div>

  <script>
    // ====== 設定 ======
    const STORAGE_KEY = 'yeschrist_history_v1';

    // YESキリストの返答テンプレ
    const YES_OPENERS = [
      "あなたの心に、静かなYESが灯っています。",
      "恐れずに、やさしいYESで一歩を。",
      "迷いの中にいても、大丈夫。答えはYESです。",
      "小さな信頼が、大きなYESへと育ちます。",
      "あなたの良き思いに、YESを重ねましょう。"
    ];

    const YES_ENCOURAGE = [
      "試みは愛によって導かれ、愛は前進にYESと言います。",
      "完全でなくていい。歩き出す勇気にYES。",
      "扉は叩く者に開かれます。ノックにYES。",
      "あなたの賜物は隠さずに、光の下へ。YES。",
      "やさしさを選ぶ度に、道は明るくなります。YES。"
    ];

    const YES_TAGS = [
      "平安がありますように。",
      "あなたは一人ではありません。",
      "今日の小さな一歩を大切に。",
      "心に光を。",
      "祝福とともに。"
    ];

    const PRAYERS = [
      "天のやさしさがあなたを包み、歩みを照らしますように。アーメン。",
      "弱さのときにこそ力が満ちますように。アーメン。",
      "迷う心に静けさが与えられますように。アーメン。"
    ];

    const BLESS = [
      "あなたの決断に平安が伴いますように。",
      "出るにも入るにも祝福が満ちますように。",
      "今日の働きに恵みがありますように。"
    ];

    // ====== DOM ======
    const chat = document.getElementById('chat');
    const input = document.getElementById('input');
    const form = document.getElementById('composer');
    const btnSend = document.getElementById('btnSend');
    const btnExport = document.getElementById('btnExport');
    const btnClear = document.getElementById('btnClear');
    const fileImport = document.getElementById('fileImport');
    document.querySelectorAll('.preset').forEach(el => el.classList.add(
      'px-3','py-2','rounded-xl','bg-emerald-50','text-emerald-700','hover:bg-emerald-100','transition','text-sm','chip'
    ));

    // ====== ユーティリティ ======
    const nowStr = () => new Date().toLocaleString();
    const rand = arr => arr[Math.floor(Math.random() * arr.length)];
    const saveHistory = () => {
      const items = [...chat.querySelectorAll('[data-msg]')].map(el => ({
        role: el.dataset.role, text: el.dataset.msg, time: el.dataset.time
      }));
      localStorage.setItem(STORAGE_KEY, JSON.stringify(items));
    };
    const loadHistory = () => {
      const raw = localStorage.getItem(STORAGE_KEY);
      if (!raw) return [];
      try { return JSON.parse(raw); } catch { return []; }
    };

    function appendMessage(role, text, time = nowStr()) {
      const wrapper = document.createElement('div');
      wrapper.className = role === 'user'
        ? 'flex justify-end'
        : 'flex justify-start';

      const bubble = document.createElement('div');
      bubble.className = 'relative max-w-[85%] rounded-2xl p-3 bubble shadow-sm ' +
        (role === 'user' ? 'bg-emerald-100 me' : 'bg-white/90');
      bubble.textContent = text;

      const meta = document.createElement('div');
      meta.className = 'mt-1 text-[10px] text-slate-500 ' + (role === 'user' ? 'text-right' : 'text-left');
      meta.textContent = time;

      const container = document.createElement('div');
      container.dataset.msg = text;
      container.dataset.role = role;
      container.dataset.time = time;
      container.className = 'space-y-1';
      container.appendChild(bubble);
      container.appendChild(meta);

      wrapper.appendChild(container);
      chat.appendChild(wrapper);
      chat.scrollTop = chat.scrollHeight;
    }

    function systemWelcome() {
      appendMessage('assistant',
        'ようこそ。YESキリストは、あなたの良き願いに「YES」で寄り添います。/prayer で短いお祈り、/bless で祝福文が届きます。');
    }

    function composeYesReply(userText) {
      const lower = (userText || '').toLowerCase();
      let opener = rand(YES_OPENERS);
      let body = rand(YES_ENCOURAGE);
      let tag = rand(YES_TAGS);

      // ほんの少しだけ文脈スパイス
      if (/[??]$/.test(userText)) {
        opener = "その問いかけに、穏やかなYESが返っています。";
      }
      if (/(許|ゆる)す/.test(userText)) {
        body = "赦しは心を自由にし、あなたを前へ押し出します。YES。";
      }
      if (/(挑戦|チャレンジ|challenge)/i.test(userText)) {
        body = "小さくとも踏み出す一歩は尊く、次の景色を連れてきます。YES。";
      }
      if (/(進|やめ|辞め|やる|やら)/.test(userText)) {
        tag = "平安のあるほうへ。YES。";
      }
      return `${opener}\n${body}\n${tag}`;
    }

    async function reply(userText) {
      // コマンド
      if (userText.trim().startsWith('/prayer')) {
        appendMessage('assistant', rand(PRAYERS));
        saveHistory(); return;
      }
      if (userText.trim().startsWith('/bless')) {
        appendMessage('assistant', rand(BLESS));
        saveHistory(); return;
      }

      // YES返答
      const thinking = document.createElement('div');
      thinking.className = 'text-xs text-slate-500';
      thinking.textContent = '…考えています';
      chat.appendChild(thinking); chat.scrollTop = chat.scrollHeight;

      await new Promise(r => setTimeout(r, 300)); // 小さな演出
      thinking.remove();

      appendMessage('assistant', composeYesReply(userText));
      saveHistory();
    }

    // ====== イベント ======
    form.addEventListener('submit', async (e) => {
      e.preventDefault();
      const text = input.value.trim();
      if (!text) return;
      appendMessage('user', text);
      input.value = '';
      input.style.height = '44px';
      saveHistory();
      reply(text);
    });

    // 自動リサイズ
    input.addEventListener('input', () => {
      input.style.height = 'auto';
      input.style.height = Math.min(input.scrollHeight, 160) + 'px';
    });

    // プリセット
    document.querySelectorAll('.preset').forEach(btn => {
      btn.addEventListener('click', () => {
        const q = btn.textContent.trim();
        appendMessage('user', q);
        saveHistory();
        reply(q);
      });
    });

    // クリア
    btnClear.addEventListener('click', () => {
      if (!confirm('履歴をすべて削除しますか?')) return;
      localStorage.removeItem(STORAGE_KEY);
      chat.innerHTML = '';
      systemWelcome();
    });

    // エクスポート
    btnExport.addEventListener('click', () => {
      const data = localStorage.getItem(STORAGE_KEY) ?? '[]';
      const blob = new Blob([data], { type: 'application/json' });
      const a = document.createElement('a');
      a.href = URL.createObjectURL(blob);
      a.download = `yeschrist_history_${Date.now()}.json`;
      a.click();
      URL.revokeObjectURL(a.href);
    });

    // インポート
    fileImport.addEventListener('change', async (e) => {
      const file = e.target.files?.[0];
      if (!file) return;
      const text = await file.text();
      try {
        const arr = JSON.parse(text);
        if (!Array.isArray(arr)) throw new Error('format');
        localStorage.setItem(STORAGE_KEY, text);
        chat.innerHTML = '';
        arr.forEach(m => appendMessage(m.role, m.text, m.time));
      } catch {
        alert('インポート失敗:JSON形式が正しくありません。');
      } finally {
        fileImport.value = '';
      }
    });

    // ====== 初期化 ======
    (function init() {
      const hist = loadHistory();
      if (hist.length === 0) {
        systemWelcome();
      } else {
        hist.forEach(m => appendMessage(m.role, m.text, m.time));
      }
      // 入力高さ初期
      input.style.height = '44px';
    })();
  </script>
</body>
</html>

日本の自殺者数

2025年10月現在の日本の自殺者数に関する情報は、以下の通りです。 

2025年9月(暫定値) 

  • 総数:1,499人 

2024年(確定値) 

  • 総数:20,320人
    • 前年(2023年)から1,517人減少しました。
  • 小中高生:529人
    • 1980年(昭和55年)以降で過去最多となりました。
    • 内訳は、男子生徒が減少した一方で、女子生徒が増加しました。
  • 男女別
    • 男性:1,061人減少
    • 女性:456人減少
    • ただし、19歳以下の女性は51人増加しています。
  • 原因・動機別
    • 学校問題:増加
    • 家庭問題、健康問題、経済・生活問題、勤務問題、交際問題など:減少 

2023年(確定値)

  • 総数:21,837人
    • 前年(2022年)から44人減少しました。
    • 男女別にみると、男性は2年連続で増加し、女性は4年ぶりに減少しました。 

過去の推移

  • ピーク:34,427人
    • 2003年(平成15年)に過去最多を記録しました。
  • 減少傾向
    • 2010年(平成22年)以降は減少傾向が続きました。
    • 2019年(令和元年)には、統計開始(1978年)以来最少の20,169人となりました。
  • 増加傾向
    • 新型コロナウイルス感染症の影響もあり、2020年(令和2年)以降は再び増加に転じました。 

これらの統計は、警察庁の発表データに基づいています。より詳細な情報については、警察庁や厚生労働省が公開している統計資料をご確認ください。 

BCI出力の2030s

「脳に直接世界を書き込む」革命
→ 2030年代=フルダイブVRの本番スタート

  1. BCI出力とは?(超簡潔)

方向説明2030sで何が変わる?BCI入力(脳 → PC)思考でカーソル動かす今ある(Neuralink 2025実証)BCI出力(PC → 脳)脳に「映像・触覚・味」を送る2030sで実用化 ← これが鍵

  1. 2030sのBCI出力:何ができる?

視覚:4Kフルカラー映像を脳に直接投影
触覚:全身の「風」「痛み」「抱擁」
聴覚:立体音 + 音楽を脳内再生
味覚・嗅覚:ステーキの味 + バラの香り

  1. 2030sロードマップ(根拠付き)

年次技術マイルストーン2025視覚:点滅光を脳に書き込み(人間)2028視覚:16×16ピクセル映像2030視覚:低解像度動画(320p)
触覚:指先の圧力2032視覚:HD映像(1080p)
触覚:全身基本ハプティクス2035五感フルシミュレーション(視覚4K + 全身触覚 + 味覚)2037フルダイブVR商用化

  1. 2030sのBCI出力:どうやって実現?

技術説明2030sでの進化電極アレイ脳に針を刺して信号送受信1億電極(今:1万)光遺伝学光でニューロンをON/OFF非侵襲レーザーで出力ナノボット血管内を泳いで脳に信号2035年実用化予測AIマッピング個人脳をAIで学習1秒でキャリブレーション

  1. 2030sの「フルダイブVR」体験例
    text【2037年、君の1日】
  2. 起床 → 思考「ログイン」
  3. 脳に「朝の光 + コーヒーの香り + 温かいマグカップ」
  4. 思考「剣を振る」→ 金属音 + 衝撃 + 鉄の匂い
  5. 思考「ログアウト」→ 現実に戻る
    → 現実と区別不能
  6. 2030sへの「個人準備」ロードマップ

時期アクション2025Vision Pro 2 + EEGで擬似フルダイブ2026Synchron BCI(血管内)で本物入力2028Neuralink出力ベータ参加2030BCI出力キット購入($10,000)2035フルダイブ常時装着

結論:2030s = 脳が「第二の現実」になる

BCI出力の2030s
→ 脳に「世界」を書き込める時代
→ フルダイブVRの本番スタート

サブカル業界に就職する方法

1) まず決める:領域 × 職種 × 働き方

  • 領域例:アニメ/マンガ/VTuber・配信/同人・ZINE/アイドル/フィギュア・グッズ/イベント/オタク向けEC/サブカル系Webメディア
  • 職種例:編集者・ライター・校正/Webディレクター・フロントエンド/UI・グラフィック・DTP/映像編集・モーショングラフィックス/配信エンジニア(OBS・vMix等)/コミュニティマネージャー・モデレーター/SNS運用・PR・広告運用/イベント制作・進行/グッズ企画・EC運営(在庫・受注・LP制作)/ライセンス・渉外/翻訳・ローカライズ
  • 働き方:正社員/契約社員/業務委託/副業・インターン・アルバイト

2) 職種別ポートフォリオの“中身”チェックリスト

  • 編集・ライター
    • 企画書(特集3本)/レビュー記事(見出し設計→本文→締めまとめ)3–5本
    • 校正・リライトのBefore→After
    • 実績があればPV・滞在時間・CTRなどの数値
  • Web(フロント/ディレクション)
    • 公開URL3つ(メディア・特集LP・EC風ページ)+GitHub
    • 役割(要件定義/デザイン連携/実装/計測)と工数・改善前後の指標
  • デザイン(UI/グラ・DTP)
    • バナー10点/特集LP 2–3本/ZINE表紙・本文レイアウト
    • フォント選定理由・配色ルール・ガイドライン1枚
  • 映像・モーショングラフィックス
    • 60–90秒のリール1本(テロップ・ロゴ・尺管理・BGM権利明記)
  • 配信・VTuber運営(技術)
    • OBSシーン構成図/配信オーバーレイ・アラート・コメント連携の設計
    • トラブル対応手順(音ズレ・ルーティング・著作権チェック)
  • EC・グッズ
    • 商品ページの訴求(サムネ→説明→FAQ→CTA)/在庫・受注フロー図
    • 価格戦略・原価率の考え方(ざっくりでもOK)
  • PR・SNS運用
    • キャンペーン企画案3本/ターゲットとKPI/投稿カレンダー1ヶ月分
    • 成果の振り返りテンプレ(良かった点・再現性・次の一手)

提出形:1ページ目は「自己紹介/できること/連絡先」。以降は職種ごとに1〜2ページで圧縮。リンク(自サイト・動画・GitHub)を必ず。

3) “短期で実績”を作るミニプロジェクト(2〜4週間)

  • サブカル特化の小型ニュース/コラムサイトを公開(要約×引用ルール明記)。
  • **推しジャンルのZINE(8〜16p)**を制作→PDF頒布/入稿までやる。
  • 配信パッケージ(待機画面・テロップ・コメント枠)を一式作り、使い方を記事化。
  • ECテスト:オリジナルステッカーやミニ缶バッジのモック→商品ページ雛形を公開。
  • インタビュー記事:創作仲間1人に取材→編集→公開(写真の権利同意を取得)。

4) 応募先の探し方(ゲーム以外)

  • 公式採用ページ/総合求人サイト+クリエイティブ特化の就活サイト
  • X(旧Twitter)・各種コミュニティでの求人告知/インターン・アルバイト経由
  • イベントで名刺交換:AnimeJapan/コミケ/デザインフェスタ/ワンフェス/ニコ超/TGS一般・ビジネスデー(ゲーム職は除外目的で視察だけ)/デジゲー博/同人即売会
    • 目的:採用“直結”ではなく担当者の課題ヒアリング→後日「解決案」添えて連絡

5) 書類・面接の“サブカル特有のコツ”

  • 推しと仕事を分ける軸を明言(感情優先にならず、リスクと数値で判断できる)。
  • 二次創作・AI生成物は権利と配布条件を明記。商用不可素材は載せない。
  • 好きな作品ベスト3×学び×業務での再現方法」を1分で言えるように。
  • 制作フロー1枚(要件→体制→スケジュール→校了/納品→振り返り)。
  • 成果は**“なぜ伸びたか”の仮説**まで。PVだけでなく完読率・保存率なども。

6) 30/60/90日プラン

  • 0–30日:職種を1–2つに絞る→ポートフォ完成→公開作3本→応募10社
  • 31–60日:小さな受託orコラボ2件/イベント手伝い1回/企画書3本
  • 61–90日:継続依頼→契約化を狙う or インターン→内定へ。実績を面接用に編集。

7) あなたに合う“攻めどころ”(これまでの制作歴から)

  • サブカル系Webメディアのフロントエンド+AI連携(要約・自動投稿・下書き支援)。
  • ニュースまとめ/キュレーション運用(RSS自動取り込み→要約→タグ→配信)。
  • VTuber運営のテクニカル担当(配信オーバーレイ/ボット/簡易データ分析)。
  • オタク向けECのWeb担当(ランキング・検索・タグ・レビュー導線の改善)。
  • コミュニティマネージャー(モデレーション運用設計・告知・週次レポート)。
  • 編集・ライター(特集企画と“再現性ある伸ばし方”の型化)。

8) 使えるテンプレ

応募メール(短文)

件名:[応募]サブカル系Webメディア/フロントエンド(氏名)
本文:
はじめまして、○○と申します。貴社の○○募集を拝見し応募いたします。
サンプル実績:ポートフォ(URL)/公開プロジェクト(URL×3)
貴社では「○○(相手の課題)」に対し、△△の仕組みでKPI(例:回遊率/完読率)の改善に貢献できます。
ご確認よろしくお願いします。
署名(氏名・連絡先・SNS/サイト)

職務経歴書 見出し例

  1. サマリー(できること3行)/2. 実績(URL・役割・数値)/3. スキル(ツール・言語)/4. 制作フロー/5. 志望動機(相手の課題にどう効くか)

今日からの3ステップ

  1. 職種を1–2つに固定(例:①Web×AI運用 ②コミュニティ運営)。
  2. トップページ付きポートフォURLを用意(自サイトに「作品一覧/企画書/連絡先」)。
  3. 1社応募+1人に声かけ(担当者の課題を聞き、翌日“解決案”を送る)。

必要なら、あなたの既存プロジェクトを材料に即使えるポートフォ構成までこちらで組み立てます。作りたい職種を教えてくれれば、見本をその職種用に切って貼って仕上げます

Metaが開発してる超知能AIのしくみ

ざっくり言うと、Metaのいう「超知能(personal superintelligence)」は、Llama系の次世代“超”基盤モデルを中心に、自己改善ループと巨大インフラを噛み合わせた“個人に配る超強いAI”の構想です。公開情報ベースで、仕組みはだいたい下の積み上げになります。

仕組み(公開情報から見える設計)

1) 中核モデル(基盤)

  • Llama 4 世代をベースにした“ネイティブ多モーダル”の長文対応モデル群(画像・音声・テキストを最初から扱える系統)。これはLlama 4の発表内容からの延長線上にあり、文脈長の大幅拡張が特徴です。ai.meta.com
  • Metaは「個人向けの超知能」を明確に掲げており、UIの表現は“Personal Superintelligence”として整理されています。meta.com+1

2) 自己改善ループ(Self-Improving)

  • ザッカーバーグは「人手を最小化した学習」「自己改善」を重視する新ラボ方針を説明。モデルが自律的に学習・改善していく方向を打ち出しています。WIRED
  • 7/30の発表では“最初の一歩”として自己改善の兆しに言及し、最強モデルは全面公開しない方針も示唆。Live Science+1

3) データ&データエンジン

  • 学習データの整備・合成を加速するため、Scale AI と大型提携(49%出資)・人材登用。大規模データパイプラインで継続的にモデルを回す狙い。AP News

4) インフラ(コンピュート&ネットワーク)

  • 「数千億ドル規模」の投資で、複数地域に跨る超大型AIデータセンター群を建設。電力・冷却・高帯域ネットワークを含む“AI工場”化を推進。Reuters+1
  • Meta公式エンジニアリングの発信でも、AI時代向けに設計を総張り替え(スケールアウト、AI向けネットワーキング、カスタムシリコンまで)。OCP 2025でも地域分散DCの設計指針を共有。fierce-network.com+3engineering.fb.com+3techblog.comsoc.org+3

5) 公開ポリシー(オープン vs クローズ)

  • Llama系は“オープンウエイト”路線を続けつつ、超知能クラスは安全面を見て全部は公開しない可能性を明言。TechCrunch

まとめ(何が“超”なの?)

  • モデル能力:多モーダル×超長文×自己改善で、タスク汎用性と継続学習性を押し上げる。WIRED+1
  • データエンジン:実データ+合成データ+継続評価の循環で“学習→運用→改善”を高速回転。AP News
  • AI工場(インフラ):超巨大DC、広域ネットワーク、(将来的な)カスタムチップまで含めた垂直統合で、莫大な計算を常時供給。Reuters+2engineering.fb.com+2
  • 提供形態:一般向けには“個人の参謀”として出しつつ、最上位は慎重運用。meta.com+1

もっと深掘りしますか?たとえば「自己改善の技術的ループ(評価→データ生成→再学習)」「多モーダル推論パイプライン」「データセンター構成(電力・冷却・ネット)」など、図で噛み砕いて解説できます。

VisitionPro2の価格予想

  • VisitionPro(= Apple Vision Pro 現行モデル)の価格予想(日本)
    税込 599,800円(256GB)を維持と見ます。実際に日本発売時も599,800円で、米国のベース価格は$3,499据え置きのままです。PhoneArena+2Apple+2
  • VisitionPro 2(第2世代 or 後継)価格予想(日本)
    シナリオ別に幅を持たせます:
    1. マイナー刷新(現行の後継・性能向上版)
      税込 599,800円前後(±3万円)
      根拠:直近のアップデート版も米国$3,499据え置きで発表されており(日本は為替変動がなければ59.98万円帯が目安)。The Verge+1
    2. 廉価版(別ライン)
      税込 299,800〜349,800円のレンジを予想(精度低め)。
      根拠:2025年に約30万円台の低価格版が出るとの報道・噂が過去にあり(正式名称や発売確度は不明)。実現すればこの帯が目安。GIGAZINE+1

補足(前提と不確実性)

  • 日本の実売はApple公式の税込価格ベースで、米国$3,499を基準に各国価格が設定されています(現行は日本で599,800円)。Apple+1
  • 直近のアップデートも価格据え置きだったため、後継の通常ラインは大きく動かない公算が高いです。The Verge
  • 一方で廉価モデルは複数メディアが示唆してきたものの、公式確定情報ではありません(よって価格帯は推定)。

WordPressの基礎

WordPressって?

  • 世界シェア最大のCMS(Webサイト管理システム)。ブログからコーポレート、EC(WooCommerce)まで対応。
  • WordPress.org(自分でサーバーに入れる・自由度高) / WordPress.com(ホスティング付き・制限あり)

動かすには(要件と準備)

  • サーバー:PHP(最新版推奨)、MySQL/MariaDB、HTTPS
  • 取得物:独自ドメイン(任意)+レンタルサーバー or ローカル環境(Local/Wamp/MAMPなど)
  • 手順:
    1. サーバーにデータベース作成
    2. WordPress公式ZIPをアップロード&解凍
    3. wp-config.php設定(画面案内に従う)
    4. 管理画面ログイン(/wp-admin)

管理画面の地図(超重要)

  • 投稿(ブログ記事) / 固定ページ(会社概要などの“独立ページ”)
  • メディア(画像・動画)
  • 外観(テーマ・メニュー・ウィジェット・サイトエディター/カスタマイザー
  • プラグイン(機能追加)
  • ユーザー(権限:管理者/編集者/投稿者/寄稿者/購読者)
  • 設定(一般/表示/ディスカッション/メディア/パーマリンク)

ブロックエディター(Gutenberg)の使い方の型

  1. 見出しブロック(H2/H3)で骨組み
  2. 段落・画像・ギャラリー・ボタン等のブロックを追加
  3. 再利用ブロック(パーツ化)で共通部品に
  4. ページは固定ページ、記事は投稿+カテゴリ/タグで整理

テーマとデザイン

  • テーマ=サイト全体の見た目(ブロックテーマ/従来テーマ)
  • 子テーマ:テーマ更新に備えてカスタマイズを上書きしないための“安全な入れ物”
  • テンプレート階層(ざっくり):front-page.phphome.phpsingle.php / page.phparchive.phpindex.php

最低限入れると楽なプラグイン(指針)

  • SEO:基本は1つだけ(例:All in One SEO など)
  • キャッシュ/高速化:ページキャッシュ+画像圧縮(WebP)
  • セキュリティ:ログイン試行制限、基本的な防御
  • 連絡先フォーム:Contact Form 7 等
    ※ 入れすぎ注意。まずは必要最低限

パーマリンク(URL)設定

  • 初期設定のままだとNG。
    設定 → パーマリンク → 投稿名/%postname%/)が分かりやすい。

バックアップと更新の鉄則

  • バックアップ(DB+wp-content)→ テーマ/プラグイン/本体の順で更新
  • 重大変更はステージング(テスト環境)で確認してから本番へ

役割分担の考え方

  • 投稿:日付順のコンテンツ(ニュース/ブログ)
  • 固定ページ:構造ページ(トップ/会社情報/サービス)
  • カテゴリ/タグ:情報の“整理”と“横断”

よく使うカスタマイズの入口

  • CSSだけで調整:外観 → 追加CSS
  • ちょいPHP:子テーマのfunctions.php(スニペット集約でもOK)
  • 独自データが必要:カスタム投稿タイプカスタムフィールド(ACFが定番)

失敗しやすいポイント

  • プラグイン入れすぎで重い/競合する
  • 子テーマを作らずに親テーマを直接編集
  • 画像が巨大(→ アップ前に圧縮/リサイズ、WebP化)
  • 本番でいきなり更新してレイアウト崩壊(→ 事前バックアップ&ステージング)

すぐ使える最小チェックリスト

  1. パーマリンクを「投稿名」に変更
  2. サイト基本情報(タイトル/キャッチ/ロゴ/ファビコン)
  3. トップ・会社概要・お問い合わせの固定ページ作成
  4. メニュー作成(外観 → メニュー/サイトエディター)
  5. お問い合わせフォーム設置&送信テスト
  6. sitemap.xmlとrobots.txt(SEOプラグインで自動生成可)
  7. 画像圧縮&キャッシュで表示速度を確保
  8. バックアップの定期実行設定

CSSの基礎

CSSって?

  • HTMLの見た目(色・余白・レイアウト・アニメ)を指定するスタイル言語。
  • 重要キーワード:Cascade(優先順位の連なり)、Specificity(詳細度)、Inheritance(継承)。

1) CSSの書き方・読み込み方

<!-- 外部ファイル(推奨) -->
<link rel="stylesheet" href="styles.css">

<!-- ページ内(学習用) -->
<style>
  p { color: #333; }
</style>

<!-- インライン(基本非推奨) -->
<p style="color:#333;">テキスト</p>

2) セレクタの基本

/* タイプ(要素) */      h1 { ... }
/* クラス */             .btn { ... }
/* ID */                 #header { ... }   /* 乱用しない */
 /* 子孫・子・隣接 */    nav a { ... }  nav > a { ... }  h2 + p { ... }
/* 属性 */               input[type="email"] { ... }
/* 擬似クラス */         a:hover, li:nth-child(2) { ... }
/* 擬似要素 */           p::first-line, a::after { content:"→"; }

3) カスケード&優先度(Specificity)

  • 計算イメージ:ID(100) > class/属性/擬似クラス(10) > 要素/擬似要素(1)
  • 競合したら:後勝ち(後から書いた方が有効)
  • !importantは最終手段(設計悪化のもと)

4) ボックスモデル(超重要)

margin ─ 外側の余白
border ─ 枠線
padding ─ 内側の余白
content ─ 中身
* { box-sizing: border-box; } /* 幅計算が直感的になる定番 */

5) 単位&色

  • 単位:px(固定)/ %(相対)/ em(親のfont-size基準)/ rem(ルート基準)/ vw,vh(ビューポート)
    → レスポンシブは rem% を多用。
  • 色:#222 / rgb(34 34 34) / hsl(210 10% 20%)(HSLは調整しやすい)
  • 変数:--brand: #5865f2;color: var(--brand);

6) 文字・余白の基本

html { font-size: 16px; }       /* remの基準 */
body { line-height: 1.7; }
h1 { font-size: clamp(1.5rem, 3vw, 2.5rem); } /* 可変サイズ */
p  { margin: 0 0 1rem; }

7) レイアウト:display / Flex / Grid

display

.block { display: block; }        /* 幅いっぱい */
.inline { display: inline; }      /* 行内 */
.inline-block { display:inline-block; }

Flex(1次元レイアウト:横並び・縦中央寄せが得意)

.container {
  display: flex;
  gap: 1rem;
  align-items: center;        /* 交差軸整列(縦) */
  justify-content: space-between; /* 主軸整列(横) */
}
.center {
  display:flex; align-items:center; justify-content:center;
}

Grid(2次元レイアウト:段組が得意)

.grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr); /* 3列 */
  gap: 1rem;
}

/* レスポンシブな自動詰め */
.auto-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(16rem, 1fr));
  gap: 1rem;
}

8) 位置指定

.box { position: relative; }
.badge {
  position: absolute; top: .5rem; right: .5rem;
}
header { position: sticky; top: 0; } /* スクロール追従 */

9) レスポンシブ(メディアクエリ・コンテナクエリ)

/* 画面幅が768px以上で適用(モバイル優先) */
@media (min-width: 768px) {
  .nav { display: flex; }
}

/* コンテナクエリ(対応ブラウザ増) */
.card { container-type: inline-size; }
@container (min-width: 500px) {
  .card__side-by-side { display:flex; }
}

10) トランジション&トランスフォーム

.btn {
  transition: transform .2s ease, background-color .2s;
}
.btn:hover {
  transform: translateY(-2px) scale(1.02);
  background: #111;
  color: #fff;
}

11) リセットとベース

/* まずはこれでOKな最小ベース */
* { box-sizing: border-box; }
html, body { margin: 0; padding: 0; }
img, video { max-width: 100%; height: auto; display:block; }
button, input, select, textarea { font: inherit; }
:root {
  --bg: #fff; --fg:#222; --muted:#6b7280; --brand:#3b82f6;
}
@media (prefers-color-scheme: dark) {
  :root { --bg:#0b0b0f; --fg:#e5e7eb; --muted:#9ca3af; }
}
body { background: var(--bg); color: var(--fg); line-height:1.7; }
a { color: var(--brand); text-decoration: none; }
a:hover { text-decoration: underline; }

12) すぐ試せるミニページ(HTML+CSS)

<!doctype html>
<html lang="ja">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>CSS基礎デモ</title>
<style>
  * { box-sizing: border-box; }
  body { margin:0; font-family: system-ui, sans-serif; line-height:1.7; }
  header, footer { padding:16px; background:#f5f5f5; }
  .wrap { max-width:960px; margin:24px auto; padding:0 16px; }
  .hero {
    padding: 48px 16px; text-align:center;
    background: linear-gradient(120deg, #e0f2fe, #fde68a);
    border-radius:16px;
  }
  .btn {
    display:inline-block; padding:.75rem 1rem; border-radius:9999px;
    background:#111; color:#fff; transition: transform .2s ease;
  }
  .btn:hover { transform: translateY(-2px); }
  .grid {
    display:grid; gap:1rem;
    grid-template-columns: repeat(auto-fit, minmax(220px,1fr));
    margin-top:24px;
  }
  .card { border:1px solid #e5e7eb; border-radius:12px; padding:16px; }
  .card h3 { margin:.25rem 0 .5rem; }
</style>
</head>
<body>
  <header><div class="wrap"><strong>CSS基礎デモ</strong></div></header>
  <main class="wrap">
    <section class="hero">
      <h1>CSSの基本を掴もう</h1>
      <p>セレクタ / ボックスモデル / Flex / Grid / レスポンシブ</p>
      <a class="btn" href="#cards">カードを見る</a>
    </section>

    <section id="cards" class="grid">
      <article class="card">
        <h3>セレクタ</h3>
        <p>`.class` / `#id` / `a:hover` / `input[type="text"]` …</p>
      </article>
      <article class="card">
        <h3>Flex</h3>
        <p>横並び・中央寄せが簡単。`display:flex; gap:1rem;`</p>
      </article>
      <article class="card">
        <h3>Grid</h3>
        <p>2次元レイアウト。`auto-fit`×`minmax()`が実用的。</p>
      </article>
    </section>
  </main>
  <footer><div class="wrap"><small>&copy; 2025 CSS Demo</small></div></footer>
</body>
</html>

13) つまずきポイント

  • 高さが合わない:親にalign-items: stretchheight:auto、画像にはdisplay:block
  • 中央寄せできない:インラインはtext-align:center、ブロックはmargin: 0 auto、Flexならcenter
  • 崩れるbox-sizing:border-boxにして、余白はgap優先、width指定は最小限。
  • 優先順位に勝てない:セレクタを少しだけ強くする(親クラスを1段増やすなど)。!importantは避ける。

次に進むなら

  • レイアウト設計:BEM・Utility First(Tailwind的考え方)
  • モダン機能:subgridcontainer querieslogical propertiesmargin-inlineなど)
  • パフォーマンス:未使用CSSの削減、content-visibilitywill-changeの慎重な活用

HTMLの基礎

HTMLってなに?

  • Webページの骨組みを作る言語(見出し・段落・画像・リンクなどの構造)。
  • 見た目はCSS、動きはJSが担当。HTMLは“意味と構造”。

まずは雛形(コピペOK)

<!doctype html>
<html lang="ja">
<head>
  <meta charset="utf-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1" />
  <title>はじめてのHTML</title>
  <meta name="description" content="このページの説明文" />
</head>
<body>
  <h1>こんにちは!</h1>
  <p>これは最小構成のHTML5ページです。</p>
</body>
</html>

よく使う要素(超基本)

  • 見出し:<h1>~<h6>(ページに基本はh1は1つ
  • 段落:<p>
  • リンク:<a href="https://example.com">リンク</a>
  • 画像:<img src="img.png" alt="画像の説明">alt必須
  • リスト:<ul><li>…</li></ul> / <ol>…</ol>
  • 強調:<strong>(重要) / <em>(強調)
  • 区切り:<br>(改行は最小限)、<hr>(区切り線)
  • まとまり:<div>(汎用ブロック)、<span>(汎用インライン)

セマンティック要素(構造をわかりやすく)

  • header(ヘッダー)
  • nav(ナビ)
  • main(主内容は1ページ1つ
  • section(章)
  • article(単体で完結する記事)
  • aside(補足)
  • footer(フッター)

属性のキホン

  • id(一意な識別子)/class(グループ化)
  • href(リンク先)/src(画像・スクリプト元)
  • alt(画像代替文)/title(補足ヒント)
  • target="_blank"rel="noopener noreferrer"とセットで

フォーム最小例

<form action="/search" method="get">
  <label for="q">検索:</label>
  <input id="q" name="q" type="search" required>
  <button type="submit">送信</button>
</form>

テーブル最小例(表)

<table>
  <thead><tr><th>商品</th><th>価格</th></tr></thead>
  <tbody>
    <tr><td>りんご</td><td>120</td></tr>
    <tr><td>みかん</td><td>100</td></tr>
  </tbody>
</table>

CSS / JS の読み込み

<link rel="stylesheet" href="styles.css">
<script src="app.js" defer></script>
  • deferはHTML解析後に実行(推奨)。

ちょっとだけ“実践的”なサンプル

<!doctype html>
<html lang="ja">
<head>
  <meta charset="utf-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1" />
  <title>ミニサイト</title>
  <style>
    body { font-family: system-ui, sans-serif; line-height: 1.7; margin: 0; }
    header, footer { padding: 16px; background: #f5f5f5; }
    nav a { margin-right: 12px; }
    main { max-width: 920px; margin: 24px auto; padding: 0 16px; }
    img { max-width: 100%; height: auto; }
    .card { border: 1px solid #ddd; border-radius: 8px; padding: 16px; }
  </style>
</head>
<body>
  <header>
    <h1>ミニサイト</h1>
    <nav>
      <a href="#about">概要</a>
      <a href="#gallery">ギャラリー</a>
      <a href="#contact">お問い合わせ</a>
    </nav>
  </header>

  <main id="content">
    <section id="about">
      <h2>概要</h2>
      <p>これはHTMLの基本で作ったミニページです。</p>
    </section>

    <section id="gallery">
      <h2>ギャラリー</h2>
      <div class="card">
        <img src="sample.jpg" alt="サンプル画像">
        <p>レスポンシブに画像が縮みます。</p>
      </div>
      <ul>
        <li>箇条書き1</li>
        <li>箇条書き2</li>
      </ul>
    </section>

    <section id="contact">
      <h2>お問い合わせ</h2>
      <form>
        <label for="name">お名前</label><br>
        <input id="name" name="name" required><br><br>
        <label for="msg">メッセージ</label><br>
        <textarea id="msg" name="msg" rows="4"></textarea><br><br>
        <button type="submit">送信</button>
      </form>
    </section>
  </main>

  <footer>
    <small>&copy; 2025 MiniSite</small>
  </footer>

  <script>
    // ごく簡単なJS:ナビをクリックしたらスムーズスクロール
    document.querySelectorAll('nav a').forEach(a => {
      a.addEventListener('click', e => {
        const id = a.getAttribute('href');
        if (id.startsWith('#')) {
          e.preventDefault();
          document.querySelector(id)?.scrollIntoView({ behavior: 'smooth' });
        }
      });
    });
  </script>
</body>
</html>

初心者がつまずきやすいポイント

  • 文字化け→<meta charset="utf-8">を必ず入れる。
  • スマホで拡大縮小が変→<meta name="viewport" …>を入れる。
  • 画像が大きすぎる→CSSでimg { max-width: 100%; height: auto; }
  • 見出し乱用→h1はページの主題に1回、階層は順序を守る。
  • altなし→スクリーンリーダー/SEO的にマイナス。必ず書く。

もっと深掘り(フォームのバリデーション、SEO、アクセシビリティ、Flex/Gridレイアウト、コンポーネント化など)もまとめられます。どこから強化したい?(例:フォームをしっかり、レイアウトを学ぶ、CSS設計、JS連携 など)

自民党と維新の会で連立することによって行われる政策

まず実行に移されやすい項目(重なり大)

  • 憲法改正手続きの前進(国会での発議模索)
    両党とも改憲に前向き。まずは「緊急事態条項」「統治機構改革」など、条文案の絞り込みと発議戦略づくりが動く可能性が高い(発議には各院の3分の2→国民投票が必要)。フィナンシャル・タイムズ+1
  • 教育費の軽減・無償化の拡大
    維新は看板で「教育の無償化」を掲げており、高校授業料支援の拡充や私学支援の強化、所得制限の緩和・撤廃が加速しやすい。すでに私立高向け支援拡充の合意報道もあり、制度の横展開が想定。日本維新の会+1
  • 規制改革・行政改革(小さな政府志向)
    行政のスリム化、デジタル化、特区の拡充、参入規制の見直しなどは維新色と自民の成長戦略が重なる。まずは所管省庁に対する見直し指示と規制棚卸しから。フィナンシャル・タイムズ
  • 地方分権・大阪を軸にした「二極化」構想の推進
    「大阪を第二の中枢拠点に」の発信強化、政府機能の分散や省庁・機関の一部移転、地方への権限移譲の工程表づくり。維新の分権理念と親和性が高い。フィナンシャル・タイムズ+1
  • 防衛力整備の継続(対GDP2%水準の着実化)
    既定方針の予算・装備計画を前に進める方向で一致しやすい。論点は主に財源配分だが、方向性自体は両党で大きな齟齬は少ない。東京財団
  • 物価・景気対策の補正予算
    新内閣発足直後の補正で賃上げ・家計支援・投資減税・インフラ更新などを束ねる可能性。市場は追加財政を織り込み済みとの観測。フィナンシャル・タイムズ

中期で進む可能性が高い項目

  • 社会保障の“世代間公平化”
    維新は高齢者の窓口負担を現役並みに近づけるなど“応能負担”を重視。自民は慎重だが、医療費の適正化や給付と負担の見直しは避けて通れず、段階的な制度改正(高額療養費の見直し等)から着手の公算。日本維新の会
  • マイナンバー連携やデジタル行財政改革
    手続きのワンストップ化・データ連携強化・給付のプッシュ型化など、既存法の改正・運用改善で実行可能。自由民主党

衝突・慎重論点(実装にブレーキがかかり得る)

  • 改憲の“条文の中身”
    緊急事態条項は比較的合意が得やすい一方、9条や安全保障関連の書きぶり、国民投票の時期は与野党・世論の反応次第で難航し得る。フィナンシャル・タイムズ
  • 社会保障負担のシフト
    維新案(高齢者負担増や給付重点の再配分)は反発が大きく、自民の支持基盤・公的世論との調整が必要。スピード感は限定的かも。日本維新の会
  • 移民・難民・労働市場政策
    受け入れ拡大の是非や技能制度の設計は、自民執行部の治安・保守志向と維新の成長・労働市場重視の綱引きが想定され、文言調整に時間。ガーディアン