MyTabMenu

index.html

<!DOCTYPE html>
<html lang="ja">

<head>
    <meta charset="utf-8">
    <title>Tab Menu</title>
    <link rel="stylesheet" href="css/styles.css">
</head>

<body>
    <div class="container">
        <ul class="menu">
            <li><a href="#" class="active" data-id="about">サイトの概要</a></li>
            <li><a href="#" data-id="service">サービス内容</a></li>
            <li><a href="#" data-id="contact">お問い合わせ</a></li>
        </ul>

        <section class="content active" id="about">
            サイトの概要。サイトの概要。サイトの概要。サイトの概要。サイトの概要。サイトの概要。サイトの概要。サイトの概要。サイトの概要。サイトの概要。サイトの概要。サイトの概要。
        </section>

        <section class="content" id="service">
            サービス内容。サービス内容。サービス内容。サービス内容。サービス内容。サービス内容。サービス内容。サービス内容。サービス内容。サービス内容。サービス内容。サービス内容。
        </section>

        <section class="content" id="contact">
            お問い合わせ。お問い合わせ。お問い合わせ。お問い合わせ。お問い合わせ。お問い合わせ。お問い合わせ。お問い合わせ。お問い合わせ。お問い合わせ。お問い合わせ。お問い合わせ。
        </section>
    </div>

    <script src="js/main.js"></script>
</body>

</html>

css/styles.css

body {
    font-size: 14px;
}

.container {
    margin: 30px auto;
    width: 500px;
}

.menu {
    list-style: none;
    padding: 0;
    margin: 0;
    display: flex;
}

.menu li a {
    display: inline-block;
    width: 100px;
    text-align: center;
    padding: 8px 0;
    color: #333;
    text-decoration: none;
    border-radius: 4px 4px 0 0;
}

.menu li a.active {
    background: #333;
    color: #fff;
}

.menu li a:not(.active):hover {
    opacity: 0.5;
    transition: opacity 0.4s;
}

.content.active {
    background: #333;
    color: #fff;
    min-height: 150px;
    padding: 12px;
    display: block;
}

.content {
    display: none;
}

js/main.js

'use strict';

{
    const menuItems = document.querySelectorAll('.menu li a');
    const contents = document.querySelectorAll('.content');

    menuItems.forEach(clickedItem => {
        clickedItem.addEventListener('click', e => {
            e.preventDefault();

            menuItems.forEach(item => {
                item.classList.remove('active');
            });
            clickedItem.classList.add('active');

            contents.forEach(content => {
                content.classList.remove('active');
            });
            document.getElementById(clickedItem.dataset.id).classList.add('active');
        });
    });
}

ファイナルファンタジー17 (仮) 企画書

プロジェクト概要

  • タイトル: ファイナルファンタジーXVII (仮)
  • ジャンル: オープンワールドRPG
  • プラットフォーム: PlayStation 5 / Xbox Series X|S / PC
  • テーマ: 「希望と喪失の調和」
  • 開発期間: 約3~4年
  • 販売目標: 1000万本以上

1. ゲームコンセプト

  • ファイナルファンタジーシリーズの伝統を継承しながら、新しいプレイ体験を提供。
  • シリーズ初の完全オープンワールドで、プレイヤーが自由に探索できる世界を構築。
  • ストーリーとプレイの選択肢がプレイヤーの選択によって変化する「動的ナラティブシステム」を導入。
  • 革新的なリアルタイム戦闘システムとクラシックRPGの要素を融合。

2. ストーリー概要

  • 舞台: 滅びゆく惑星「ルシフェリア」。過去に大いなる文明を築いたが、今では自然と機械の均衡が崩れ、終末が訪れつつある。
  • 主人公:
    • 名前: リアム(Liam)
      • 選ばれし「調和者」として、世界の崩壊を止める使命を持つ青年。
    • 相棒: アルティナ(Altina)
      • 謎のクリスタル生命体で、過去と未来の記憶を宿している。
  • 敵対勢力:
    • 「終焉の王」ゼノリス(Xenolis)
      • 世界の終焉を望む強大な存在。
    • 人間の欲望による勢力間の争いも物語の重要なテーマ。
  • テーマ:
    • 人間と自然、機械の共存。
    • 喪失を抱えながらも希望を見つける旅。

3. ゲームシステム

3.1. 戦闘システム

  • リアルタイムアクションバトル:
    • プレイヤーが自由に操作できるキャラクター切り替え機能。
    • 魔法や召喚獣(エイドロン)が戦闘の戦略に影響。
  • 戦略性:
    • 戦闘中に時間を止めて指示を出せる「タイムスローモード」を搭載。
    • 魔法のクラフトシステムで、自分だけの魔法を作成可能。

3.2. オープンワールド

  • 多種多様な地形やエリア(雪山、砂漠、機械都市、古代遺跡など)。
  • サイドクエストでNPCのバックストーリーや世界の謎を解明。
  • ダイナミックな昼夜サイクルと天候変化。

3.3. キャラクター育成

  • クリスタルスフィアシステムでスキルと能力を自由にカスタマイズ。
  • 武器や防具のクラフト、召喚獣の進化など多彩な育成要素。

4. ビジュアル・アート

  • 壮大で美麗なグラフィックを採用。
  • 古代の文明と未来的な機械技術が融合したアートスタイル。
  • 映画のようなカメラワークとシネマティックシーン。

5. 音楽

  • 作曲: 植松伸夫氏を中心としたチーム。
  • テーマソングはオーケストラとボーカルの融合。
  • 各エリアやキャラクターに専用の音楽を用意し、没入感を強化。

6. マーケティングプラン

  • 発表時に印象的なティザートレーラーを公開。
  • 大型イベント(E3やTGS)での体験デモ。
  • コレクターズエディション、デジタル特典付きパッケージ販売。

7. 開発スケジュール

  1. プリプロダクション: 1年
    • コンセプトアート、ゲームデザイン、技術検証。
  2. プロダクション: 2年
    • メインストーリー、オープンワールド、戦闘システムの構築。
  3. テストフェーズ: 1年
    • デバッグ、バランス調整、ユーザーテスト。
  4. ローンチ: 2028年予定。

8. まとめ

ファイナルファンタジー17は、シリーズの革新と伝統の調和を目指し、世界中のプレイヤーに愛されるタイトルを目標とします。この新たな冒険が、FFファンの記憶に残る伝説となることを約束します。