ソースコードに関する特設ページ


ゲームの話は見出しに🎮マークを付けています。
それ以外は無印か🌟マークが付いています。

アナザーエデン関連ページ・サイトマップへ戻る

個人サイト制作:サイトマップへ戻る

ファンサイト制作のためのアトリエ

ライザ戦闘bgm

ライザとアナデンのコラボは素晴らしかったと思います!
fear戦のBGMなんか、ぶっ飛んでたよ。
もう何度も何度も聞いてます。
これはテンションが上がってしまったので、単なる感想文であったり、はたまた攻略一辺倒な記事とは一線を画すようなWebページを作りたいと強く感じました。
まず、ライザのアトリエに関する公式サイトには次のようなものがありますね。

ライザ、めっちゃ可愛いよね✨

ライザ完成拡大版

さてさて、せっかくこのように自由にUIを実装できるプラットフォームを作っているのですから、それを最大限活かしていきましょう!
具体的には、ファンサイトの制作プロセスを公開できる「アトリエ」をここに実装します。

自分だけのプラットフォームを調合するマニュアルを公開しようかと。
「ないなら 作ればいい!」
これ、めっちゃかっこいい!

関連ページアナザーエデンのプログラミングを個人サイトで試す

では、ファンサイト制作に関する話題を幅広く扱いつつ、合間にライザのアトリエコラボの感想を交えつつ、書いていきますね。


🎮ライザに極グラスタをプレゼント

このWebページを完成させた日の夜に、なんと宿星の断片が2つドロップしたのですよ。
連発ではなかったけど、宿星の断片ドロップ調査 から考えてみれば、異例の幸運と言わざる得ません。
私はライザリンシュタウトを天255にするついでに、宿星の断片がどれほどドロップするものなのか調査しています。
詳しくは上記リンク先をご覧ください。

極グラスタ光沢
極グラスタライザ
宿星の断片1
宿星の断片2

このWebページが完成したのは2025年2月15日なのですが、この時点でライザの天は151。
宿星の断片がどれほど落ちるのか記録しつつ、255まで頑張りますよ。
加えて、ライザリンシュタウトのアクリルフィギュアを注文しています。
届くのが楽しみです!


🌟ソースコードのアトリエ

このサイトを構成するのに必要なCSSと、プログラムの解説ページへジャンプできるリンクです。
こんな感じでソースコードを書いていけば、このレベルのWebサイトであれば個人で作ることができますよ。

Recipe for CSS and Programs

今は「アナザーエデンのファンサイト」ですからアフィリエイト目的で使うのはダメです。
でも個人のサイトで楽しんで頂ける範囲であれば、リンク先のソースコードを自由に持って行ってかまいません。

CSS
JavaScript
Python

リンクをタップすると、コードの解説ページへジャンプします。

カテゴリー分けしたcss

  • lua.css Luaによるプルダウンメニューをサポートする
    Luaというのは、アナザーエデンで使われているプログラミング言語の一つです。
    普通、静的Webサイト上で稼働させるものではありませんけどね。
  • pdf.css デフォルトでPDFをプレビュー表示する
  • addpdf.css 複数のPDFがある場合
  • album.css イラストアルバムを作る
  • symbol.css バナーをCSSで作成する
  • imgcut.css 画像をカットしつつ1枚のイラストとして表示する
  • colors.css Webセーフカラーを作る

フォント構成要素

🔼All checks were completed on 20250105.

リンクをタップすると、コードの解説ページへジャンプします。

  • pdf.js デフォルトでPDFをプレビュー表示する
  • addpdf.js 複数のPDFがある場合
  • album.js イラストアルバムを作る
  • collapsible.js 折り畳みエリアを作る
  • feinfade.js 画像のフェードイン+アウトのアニメーションを作る
    画像によって大きさを使い分けるCSSと紐づいているので注意。
  • imgcut.js 画像をカットしつつ1枚のイラストとして表示する
  • tab.js タブを作る
  • common.js フッターの共通記載を挿入する
  • color.js Webセーフカラーを作る
  • feinheadline1.js アコーディオン型の見出しを作る

JavaScriptライブラリやツール

🔼All checks were completed on 20250105.

リンクをタップすると、コードの解説ページへジャンプします。

ライザ星導覚醒
  • textnoise.py ノイズを加えるプログラム
  • table.py Excelの表をhtmlにする
  • pdf.py PDFをまとめて圧縮する
  • pdfocr.py PDFがテキストベースになっているかチェックする
  • pdfhtml.py 大量のハイパーリンクをまとめて記述する
  • pdfpreview.py PDFプレビューボタンhtmlを書く
  • image_size.py 複数画像の大きさをまとめて調査する
  • flower_resize.py 複数画像のファイルサイズをまとめて変更する
  • image_aspect_compression_big80.py 複数画像をまとめて80%小さくする
    image_aspect_compression_small20.pyは数字を変えるだけです
  • image_add.py 複数の画像が並ぶWebページを作成する
  • photo_sum.py 画像同士を結合する
  • file_space.py ファイルから半角スペースを削除する
  • file_sum.py HTML・CSS・JavaScriptのファイルを数える
    特にVS Codeで一括置換をする前に実行します。
  • pwa.py 多数のhtmlファイルにまとめてコードを挿入する

🔼All checks were completed on 20250105.

ライザ星導覚醒前

このタブUIはAI学習や無断転載を防ぐプログラムの小ネタ集にて実装している青色のタブUIとともに、今後もいろんなページで使えるものです。
ただ単にPython使うなら、FlaskやDjangoのほうが一般的なんだけどね。
でもそれだとWebサイトの引っ越ししたくなった時に支障が出る可能性もある。
そこで、このアプリではPythonのFlaskと静的Webサイト ─ 私はこれをプログレッシブウェブアプリにしてます ─ を共存させています。

🌟サーバーサイドスクリプト(経験者向け)

サーバーサイドスクリプトに関する詳しい説明は、個人サイトへPythonのFlaskを導入するをご覧いただければと思います。
実際にFlaskというフレームワークで作ったWebページとなっており、ソースコードも掲示しています。
私のアプリは、次のようなディレクトリ構造になっているんだよね。


FEIN-SITES-DEV1
│  app.yaml           # メインサービスの App Engine 設定ファイル(ランタイム・ルート定義など)
│  dispatch.yaml      # サービス間のルーティング規則を定義するファイル
│  main.py            # Flask アプリケーションのエントリポイント(ルートや動的機能の設定)
│  README.md          # プロジェクトの概要や使い方を説明するドキュメント
│  requirements.txt   # アプリで必要な Python パッケージ(依存関係)のリスト
├─redirect-service    # リダイレクト専用サービスのディレクトリ
│      app.yaml       # リダイレクト用サービスの App Engine 設定ファイル
│      redirect.py    # リダイレクト処理を記述した Flask アプリケーション
│      requirements.txt # リダイレクト用サービスで必要な Python パッケージのリスト
├─static              # 静的ファイルを保存するディレクトリ(CSS, JavaScript, 画像など)
│  ├─css              # スタイルシート(デザイン)を格納
│  ├─js               # JavaScript(インタラクションや動作制御)のスクリプトを格納
│  └─menu             # メニュー関連のリソースを保存
├─templates           # Flask 用の HTML テンプレートを保存
│      top.html       # `/top` ルート用の動的コンテンツテンプレート
│
│   【上側がFlaskフレームワーク。サーバーサイドスクリプトを活用した動的Webサイトです。】
│   【下側が普通のホームぺージ。フロントエンド3言語による静的Webサイトです。】
│
└─www                 # 静的ウェブサイトのルートディレクトリ(主にフロントエンド用)
    │  favicon.ico    # ブラウザのタブに表示されるアイコン
    │  index.html     # 静的ウェブサイトのホームページ
    │  manifest.json  # PWA(Progressive Web App)の設定ファイル
    │  robots.txt     # 検索エンジンによるクローリング設定ファイル
    │  service-worker.js # PWA 用のサービスワーカー(キャッシュ管理やオフライン対応)
    ├─contents        # コンテンツ関連のファイルやデータを格納
    ├─css             # 静的ウェブサイト専用のスタイルシートを保存
    ├─fish            # 画像やリソース用ディレクトリ
    ├─script          # フロントエンド用 JavaScript を格納

サーバーサイドスクリプトと言えば、昔はCGIと呼ばれる形で実装されていたと聞きます。

ライザ笑顔

このサイトではPythonをサーバーサイドスクリプトとして活用するために、Flaskというフレームワークを導入しています。
サーバーサイドスクリプトを使用することで、ユーザーのリクエストに応じて動的にコンテンツを生成できるようになるのです。
他にもデータベース連携・セキュリティ強化・ビジネスロジックの実装・パフォーマンスの向上など、メリットが大きいんだよ。

全ページをリスト化したサイトマップができました

全てのページの下部から、ジャンプできるようになっています。
単なるサイトマップじゃなくて、サーバーサイドスクリプトのソースコードマニュアル付きです。

🌟ビジュアル アトリエ コード

ライザ指輪

私の開発環境は「ビジュアル アトリエ コード」です🎨✨
なーんて、半分冗談なんだけどね。
でもAtelierとStudioは同じような意味だから、言語が混ざっているだけで通りますよ。
実際はVisual Studio Codeをカスタマイズしただけです。
リアルの私は錬金術を使えないので、せめてWeb制作でライザごっこをしてみようかと!

Steps for Application Development

ゲームのファンサイトに限らず、Webサイト制作に使うのは HTML・CSS・JavaScript だけではありません。
手元の運用の工夫だったり、ソースコードの管理やバックアップ、コードエディターのカスタマイズなどなど。
工夫すればするほど楽しく手間をかけず、そしてお金もかけずに楽しめます。

Creation
HTML
json

□をタップすると✅に変化します。
手書きコードによるWebサイトは煩雑になりがちです。
でも手作業を回避しつつパターン化すれば、漏れなく作っていけますね。

新しいページを作成する

ライザドヤ顔.jpg
画像などコード以外のファイル
「道具を組み合わせるWeb制作と錬金術」の手順で行う
元ページからコピー
属性が近い同一ディレクトリにあるhtmlファイルをコピー
ページタイトルとURLを置換
まとめて変更して抜け漏れを防ぐ
文章をコピー&リライト
ソースコードはOneDrive、他はVS CodeのBrowser lite→ https://portal.feinatelier.org/
metaタグ等の編集
文章を書けたら、要約部分等を仕上げる。
ライザ驚顔.jpg
デザインやUIを合成!
必要に応じて外部化されたCSSとJavaScriptを挿入する
画像を配置
ここにあるコードをコピーしてファイル名を変更する
サイトマップを通す
アナザーエデン個人サイト制作アウトドアのエリア
公開前のチェック
モバイルアプリ化したWebサイトもしくは、VS CodeのLive Serverを操作してみる
ビルドタスクの実行
VS Codeのタスク機能でRun Google Cloud Commandsを実行する
ヘブンズクエーサー.jpg

🌟フェイタルドライブの「ヘブンズクエーサー」をキメる!!🌟
じゃなくて…
起動したGoogle Cloud SDK Shell で gcloud app deploy を実行 → 公開する!

GitHubによるコード管理

GitHubのリポジトリに「fein write...」メッセージを添えつつ、ソースコードをステージ(Stage Changes)→コミット(Commit)→プッシュ(Push)する。

参考ページ👉 Webサイトの共同制作とGitHub

基礎デザインを作っているstyle.css

下部の「CSS elements」をタップすると、コード全体をチェックできます。

🔼All checks were completed on 20250104.

HTMLコードの解説はここではしませんが、どこのページでも使う部品のようなコードはあります。
そういうのは1カ所にまとめておくと、ページ作成の手間を大幅に削減できます。

頻用するHTMLコード


<!--コードを記載する時の枠-->
<div class="code-container">
    <pre><code class="language-html">

</code></pre>
</div>


<!--通常サイズの画像とテキスト回り込み-->
<div class="content">
    <img src="Atelier.jpg" alt="Illustration of the atelier" class="graphic right-image fade-in-out">

</div>


<!--ミニサイズの画像とテキスト回り込み-->
<div class="content">
    <img src="Atelier.jpg" alt="Illustration of the atelier" class="graphicmini right-image fade-in-out">

</div>


<!--縦長の画像とテキスト回り込み-->
<div class="content">
    <img src="wallpaper.jpg" alt="wallpaper" class="wallpaper right-image fade-in-out">

</div>


<!--ストレートに画像を掲載し、テキストの回り込みを行わない-->
<img src="Atelier.jpg" alt="Illustration of the atelier" class="graphic fade-in-out">


<!--大きな画像を掲載し、テキストの回り込みを行わない-->
<div class="content">
    <img src="Atelier.png" alt="Illustration of the atelier" class="biggraphic fade-in-out">

</div>


<!--草花の写真を飾る-->
<div class="flowerclearfix">
    <div class="flowerfade-out">
        <img src="/flower0/flower0(number).JPG" alt="フェードアウト効果の草花写真">
    </div>

</div>


<!--定義リストを作成する-->
<dl>
  <dt>HTML</dt>
  <dd>HyperText Markup Languageの略。Webページを作成するための言語。</dd>

  <dt>CSS</dt>
  <dd>Cascading Style Sheetsの略。HTML要素の見た目を整えるためのスタイルシート言語。</dd>

  <dt>JavaScript</dt>
  <dd>Webページに動的な動作を追加するためのプログラミング言語。</dd>
</dl>


<!--本文中にコードを記載する場合に使う-->
<span class="codecolor">code & programming</span>


<!--小さめのオレンジテキスト-->
<span class="small-orange-text">orange text</span>

<!--小さいテキスト-->
<span class="small-text">small text</span>

ここではVisual Studio Codeの設定ファイルについて書いています。

settings.json

Visual Studio CodeはMicrosoftのコードエディターですが、拡張機能のインストールと設定ファイルの記述で背景画像を付けられます。
settings.jsonはVS Codeの設定ファイルです。
Windowsなら多くの場合、C:\Users\ユーザー名\AppData\Roaming\Code\User\settings.json という位置にあると思います。
ここの編集が必要なんだよね。

その他、拡張機能などの解説はVisual Studio Codeを触ってみようをご覧ください。

Visual_Atelier_Code

今回、自分の開発環境でライザごっこをするにあたり、次のようにコードを編集しました。

Visual Studio(Atelier) Codeのsettings.json


{
  "extensions.ignoreRecommendations": true,
  "editor.fontFamily": "'Yu Gothic UI', 'Courier New', monospace",
  "workbench.settings.applyToAllProfiles": [
    "editor.fontFamily"
  ],
  "editor.fontLigatures": false,
  "editor.wordWrap": "on",
  "files.insertFinalNewline": true,
  "editor.formatOnSave": true,
  "files.trimFinalNewlines": true,
  "files.trimTrailingWhitespace": true,
  "breadcrumbs.enabled": true,
  "workbench.tree.renderIndentGuides": "always",
  "editor.tabSize": 1,
  "editor.insertSpaces": true,
  "editor.autoIndent": "none",
  "editor.detectIndentation": false,
  "background.fullscreen": {
    "images": [
      "file:///C:/Users/ユーザー名/OneDrive/_fein/reisalinstout.jpg"
    ],
    "opacity": 0.1,
    "size": "900 900",
    "position": "center",
    "interval": 0
  },
  "terminal.integrated.fontFamily": "monospace",
  "git.openRepositoryInParentFolders": "never",
  "vscode-edge-devtools.webhintInstallNotification": true,
  "terminal.integrated.fontSize": 14,
  "terminal.integrated.defaultProfile.windows": "Command Prompt"
}

普段使いするツールの設定ファイルだから、コメントアウトは付けていないです。
このコードの説明はsettings.jsonのコード例にあります。

参考サイト一覧

CSS elements

中心となるスタイルシートはちゃんと管理しないとグチャグチャになりがちです。
特に私は何でも放り込む悪い癖があるし、長くなりがちなコードは順次逃がすようにしていますね。
まずは本体のcssではない写しでコードを管理し、問題が発生しなければ本番環境へ貼り付けています。

基礎デザインを作っているstyle.css


/* ★文字コードをutf-8とする */
@charset "UTF-8";

/* ★bodyを綺麗に整える */
body {
 font-family: 'Lato', 'Noto Sans JP', sans-serif;
 font-size: 15px;
 font-weight: 400;
 font-style: normal;
 overflow: auto;
 margin: 10px;
 padding: 0;
 border-radius: 20px;
 box-shadow: 0 4px 8px rgba(0, 0, 0, 0.8);
 background-color: white;
}

/* ★レスポンシブデザイン */
.feincontainer {
 width: 90%;
 margin: 0 auto;
 box-sizing: border-box;
}

@media (max-width: 600px) {
 .feincontainer {
  font-size: 0.875em;
  padding: 10px 0;
 }

 .responsive-iframe {
  width: 100%;
  height: calc(100vh - 20px);
 }
}

@media (min-width: 601px) {
 .feincontainer {
  width: 100%;
  max-width: 1200px;
  padding: 20px 150px;
 }

 .responsive-iframe {
  width: 80%;
  height: 80vh;
 }
}

/* ★箇条書きの余分な余白を削除する */
ul,
ol {
 margin-left: 0;
 padding-left: 25px;
}

/* ★手軽に余白を設定する */
div.spacer {
 height: 20px;
}

/* ★太字にして定義リストを読みやすくする */
dt {
 font-weight: bold;
}

dd {
 margin-left: 10px;
}

/* ★立体的な付箋を描く */
p.feintag {
 display: inline-block;
 position: relative;
 padding: .5em 1.4em .5em 1em;
 background-color: rgba(255, 204, 204, 0.8);
 color: #333333;
 font-weight: bold;
 text-align: left;
}

.right-align-container {
 text-align: right;
}

.feintag::before {
 position: absolute;
 bottom: -1px;
 right: 9px;
 z-index: -1;
 transform: rotate(5deg);
 width: 70%;
 height: 50%;
 background-color: rgba(208, 208, 208, 0.6);
 content: "";
 filter: blur(4px);
}

/* ★統一感を持たせた見出しを作る */
h1.background-waveimage-heading {
 background-image: url('../image/hone.png');
 background-size: contain;
 background-repeat: no-repeat;
 background-position: left;
 padding: 20px;
 font-size: 1.7em;
}

h1.background-waveimage-heading span {
 opacity: 0.7;
}

h2 {
 display: block;
 width: fit-content;
 background: linear-gradient(to right, rgba(173, 216, 230, 0.2), rgba(173, 216, 230, 0));
 padding: 10px;
 border-radius: 15px;
 margin-top: 30px;
 margin-bottom: 5px;
}

h2.sitemap_heading {
 display: block;
 width: fit-content;
 background: linear-gradient(to right, rgba(173, 216, 230, 0.2), rgba(173, 216, 230, 0));
 padding: 10px;
 border-radius: 15px;
 margin-top: 10px;
 margin-bottom: 5px;
}

h3 {
 display: block;
 width: fit-content;
 background: linear-gradient(to right, rgba(173, 216, 230, 0.2), rgba(173, 216, 230, 0));
 padding: 10px;
 border-radius: 15px;
 margin-top: 30px;
 margin-bottom: 5px;
 position: relative;
 box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
}

h3::after {
 content: '';
 position: absolute;
 bottom: -5px;
 left: 0;
 width: 100%;
 height: 3px;
 background: linear-gradient(to right, rgba(255, 0, 51, 0.5), rgba(255, 255, 255, 0.5));
 transform: scaleX(0);
 transform-origin: bottom right;
 transition: transform 0.5s ease-out;
}

h3.visible::after {
 transform: scaleX(1);
 transform-origin: bottom left;
}

.grastah3 {
 margin-top: 0;
}

h4 {
 display: block;
 width: fit-content;
 background: linear-gradient(to right, rgba(173, 216, 230, 0.2), rgba(173, 216, 230, 0));
 padding: 10px;
 border-radius: 15px;
 margin-top: 30px;
 margin-bottom: 0;
 box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}

/* ★h5見出しにオレンジ線を引く */
h5 {
 font-size: 110%;
 margin-top: 25px;
 margin-bottom: 0;
 padding-bottom: 5px;
 line-height: 1.2;
 color: rgba(0, 0, 0, 0.7);
 position: relative;
 display: inline-block;
}

h5::after {
 content: '';
 position: absolute;
 left: 0;
 bottom: 0;
 width: 100%;
 height: 5px;
 background: linear-gradient(90deg, #ff6f61, #ffc107);
 border-radius: 2px;
}

/* ★見出しのように使う文字装飾を描く */
p.gra {
 display: block;
 width: fit-content;
 background: linear-gradient(to bottom, rgba(255, 153, 153, 0.3), rgba(255, 255, 255, 0.3));
 font-weight: bold;
 padding: 10px;
 border-radius: 15px;
 margin-top: 30px;
}

p.codegra {
 display: block;
 width: fit-content;
 background: linear-gradient(to bottom, rgba(153, 255, 153, 0.3), rgba(255, 255, 255, 0.3));
 font-weight: bold;
 padding: 10px;
 border-radius: 15px;
 margin-top: 30px;
}

/* ★フォントサイズやカラーを指定する */
span.small-orange-text {
 font-size: 0.9em;
 color: #cc3300;
}

span.small-text {
 font-size: 0.8em;
}

/* ★浮かび上がる表を作る */
table {
 width: 100%;
 border-collapse: collapse;
}

th,
td {
 border: 1px solid black;
 width: 50%;
 box-sizing: border-box;
 border-left: none;
 border-right: none;
}

tr.grasta_blue {
 background-color: #e0f7fa;
}

tr.grasta_green {
 background-color: #E0FFE0;
}

.boss-table th:nth-child(1),
.boss-table td:nth-child(1) {
 width: 30%;
}

.boss-table th:nth-child(2),
.boss-table td:nth-child(2) {
 width: 20%;
}

.boss-table th:nth-child(3),
.boss-table td:nth-child(3) {
 width: 50%;
}

tr.header-blue {
 background-color: #e0f7fa;
}

.weapon-table th:nth-child(1),
.weapon-table td:nth-child(1) {
 width: 20%;
}

.weapon-table th:nth-child(2),
.weapon-table td:nth-child(2) {
 width: 40%;
}

.weapon-table th:nth-child(3),
.weapon-table td:nth-child(3) {
 width: 40%;
}

caption {
 visibility: hidden;
 height: 0;
 overflow: hidden;
}

.custom-table-container {
 display: block;
 padding: 10px;
 border-radius: 15px;
 box-shadow: 0 10px 20px rgba(0, 0, 0, 0.15);
 margin: 10px 0;
}

/* ★画像によって大きさを使い分ける */
img.biggraphic {
 margin: 10px;
 display: block;
 width: 80%;
 height: auto;
 border-radius: 10px;
}

img.graphic {
 margin: 10px;
 display: block;
 width: 50%;
 height: auto;
 border-radius: 10px;
}

img.graphicmini {
 margin: 10px;
 display: block;
 width: 30%;
 height: auto;
 border-radius: 10px;
}

img.graphicsaki {
 margin: 10px;
 display: block;
 width: 50%;
 height: auto;
 border-radius: 10px;
}

img.right-image {
 float: right;
}

img.wallpaper {
 margin: 10px;
 display: block;
 width: 40%;
 height: auto;
 border-radius: 10px;
}

div.content {
 overflow: hidden;
}

/* ★フェードインとフェードアウトの画像アニメーション */
img.fade-in-out {
 opacity: 0;
 transition: opacity 1s ease-in-out;
}

img.fade-in-out.visible {
 opacity: 1;
}

/* ★グラスタ表の火力20倍の話に添える画像 */
.grastaimage {
 display: flex;
 justify-content: space-between;
 gap: 5px;
 border-radius: 10px;
}

.grastaimage img {
 max-width: 45%;
 height: auto;
 border-radius: 10px;
}

/* ★敢えて表の中に画像を入れる */
div.gtable {
 display: flex;
 flex-direction: column;
 justify-content: flex-start;
 border-radius: 10px;
}

.toptext {
 margin-bottom: 10px;
}

.bottomimage {
 display: block;
 max-width: 80%;
 height: auto;
 margin: auto;
}

/* ★画像を左右に並べる */
.horizontally-container {
 display: flex;
 border-radius: 10px;
}

img.horizontally {
 margin: 10px;
 width: 30%;
 height: auto;
}

/* ★サイトマップ用の目立つリンク */
.custom-link {
 color: #1A73E8;
 font-weight: bold;
 transition: color 0.3s ease;
}

.custom-link:hover {
 color: #00A2ED;
 text-decoration: underline;
}

/* ★デフォルトの青に少し手を入れたリンク */
a {
 color: #1A73E8;
}

a:hover {
 color: #00A2ED;
}

/* ★タブを作る */
.tabs-fein {
 display: flex;
 border-bottom: 1px solid #ccc;
}

.tab-fein {
 border: 1px solid #ccc;
 padding: 10px 20px;
 border-radius: 10px 10px 0 0;
 background-color: rgba(173, 216, 230, 0.3);
 cursor: pointer;
}

.tab-fein:not(:last-child) {
 margin-right: 5px;
}

.tab-fein:hover {
 background-color: rgba(173, 216, 230, 0.5);
}

.tab-fein.active {
 background-color: rgba(173, 216, 230, 0.7);
 font-weight: bold;
 border-bottom: 3px solid #007BFF;
}

.tab-pane-fein {
 position: absolute;
 width: 95%;
 opacity: 0;
 border: 1px solid #ccc;
 padding: 10px;
 border-radius: 5px;
 box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
 transform: translateX(-100%);
 transition: transform 0.5s ease, opacity 0.5s ease;
}

.tab-pane-fein.active {
 position: static;
 opacity: 1;
 transform: translateX(0);
}

/* ★PythonのタブUIを装飾する */
.atelier-tab {
 display: inline-block;
 margin: 0 5px;
 padding: 10px 20px;
 border: 1px solid #ccc;
 cursor: pointer;
 border-top-left-radius: 10px;
 border-top-right-radius: 10px;
 background-color: rgba(144, 238, 144, 0.5);
}

.atelier-tab-content {
 display: none;
 padding: 20px;
 border-top: none;
 border: 1px solid #ccc;
 border-radius: 10px;
 box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
 background-color: #fff;
}

.atelier-active-tab {
 background-color: rgba(144, 238, 144, 1);
}

.atelier-active-content {
 display: block;
}

/* ★隅に行くほど細く消えかかる罫線を作る */
hr.atelierflower {
 border: none;
 height: 10px;
 background: linear-gradient(to right,
   rgba(107, 142, 35, 0) 0%,
   rgba(107, 142, 35, 1) 20%,
   rgba(34, 139, 34, 0.5) 50%,
   rgba(107, 142, 35, 1) 80%,
   rgba(107, 142, 35, 0) 100%);
 position: relative;
 background-size: 100% 100%;
 border-radius: 50%;
 margin: 20px 0;
}

hr.atelierflower::before {
 content: "";
 position: absolute;
 top: 0;
 left: 50%;
 transform: translateX(-50%);
 width: 40px;
 height: 40px;
 background: radial-gradient(circle,
   rgba(34, 139, 34, 0.5) 20%,
   rgba(255, 255, 255, 0) 70%);
 border-radius: 50%;
}

/* ★タップするとチェックが変化する */
.inline-button {
 display: inline;
 font-size: 1rem;
 padding: 5px 10px;
 cursor: pointer;
 border: none;
 background-color: transparent;
}

🌟道具を組み合わせるWeb制作と錬金術

ライザ天上げ

ライザの様子を見ていて思ったのは、Web制作と錬金術って似ている側面が多いなということなんです。
どちらも材料を組み合わせて調合し、何かしらの形を作っていきます。
何を選ぶかは自由が利くこともあるし、そうでないこともある。
レベルが上がれば上がるほどいろんなことができるようになって…
そんなことを感じながらアナデンのライザコラボを夢中でプレイしていました。

せっかくなら、思いっきりライザにあやかったWebページの在り方にしてみたいと思ったんだよね。

File and System Management

ライザの 「何を入れるのがいいかなぁー・これでいいかな!・やったぁー! できた!」 という3段階のセリフは、何かをクリエイトする時の人間の気持ちそのまんまだと思うのですよ。

Alchemy
Image
System

時間が経っても役に立つWebページって、どういうものでしょうね?

何を入れるのがいいかなぁー

ライザ錬成中1
  1. 錬金術はできないけど、その代わりにWeb制作のジャンルでライザごっこ
  2. ライザのアトリエコラボのゲームコンテンツ

HTML・CSS・JavaScript・Python・Lua、Google Cloud App Engine・Azure Static Web Appsなどなど。
Web制作に使える材料はたくさんあります。
その中から必要なものを選んで錬成していく過程は、ライザごっこにぴったりじゃない?!

これでいいかな!

ライザ錬成中2

ちゃんと裏ボスなりストーリーなり、直接ゲームのことも書いてありますよ。
フォロワーさんの中には「忙しくてまだプレイできていない…」という人もいたから、まずはWeb制作について書いていました。

何より私がライザごっこやりたくて仕方なかったからね😆ww
錬金術はファンタジーですが、Web制作と重なる部分がとても多いと感じるんだよ。
大きな鍋がWebサーバーだもん。

ライザ錬成中3

ゲーム部分の攻略情報などは、時間を経るとどうしても色褪せてしまいます。
ライブサービスゲームだからそれは仕方ないんだけど、旬なうちに楽しむということは、旬が過ぎればそれまでということでもある。
ネタバレの懸念も薄まるように、そして自分にとって良い思い出となるように、時間の経過を見つつ順次ゲームネタを加えていきました。

やったぁー! できた!

ライザ錬成中4

このサイトを構成しているソースコードは、学生時代の勉強ノートから引っ張ってきたものです。
当時はコードを書けても、私がフロントエンド・バックエンドの関連性を十分に理解できておらず、実装することができなかったものもありますよ。
Pythonなんか自分のパソコンで動作させるのが精一杯。
こうしてWeb公開にまで至らなかった。

このWebサイトは、ソースコードとシステムを分けて管理しています。
昔の私が困ったところは、これから個人サイトを作ろうとする人も困るポイントかと思うのです。
このサイトの運用実績を残しつつ、いろんな人の参考になるような仕組みとしていきたいですね。

画像の管理・バックアップ

Googleフォト
スマホのGoogleフォトからWebサイト用のGoogleアカウントとアルバム共有。ここと直接リンクせず、必ずGoogleドライブへ移し替えるか、ダウンロードしてからデプロイし直すプロセスを挟む。
Googleドライブ
ソースコード以外の全公開可能データを格納し、いったんGoogle Sitesで公開運用。時間の経過を待ってからこちらのプラットフォームへ移す。
fein's portal(Google Sites)
最終的に形にならずとも、いったんこちらに公開して目に見えるコンテンツにしておく。Webサイトとしてまとめあげるのはこちらのプラットフォームへ委ねる。
ゲームのスクリーンショット特有のトリミング
左右に生まれる空白をPython(105trimming.py)でまとめてカットして手作業を回避する。
画像のファイル名をまとめて確保
新規Webページを作る時には画像をまとめて連携するため、画像ファイル名をPython(file_list.py)で取得。予めimgタグの準備をしておく。
大きすぎる画像をまとめてリサイズ
大きすぎる画像はWebページの負荷となるため、Python(image_aspect_compression_middle50.pyなど)を用いて、まとめてリサイズする。
ライザ考え中

個人用GoogleアカウントとWeb公開用Googleアカウントを分けています。
その上でデータ共有はアルバム共有機能等を使い、必ず一手は手作業を挟まないとWebに公開できません。
誤操作による画像投稿事故を避けるためです。

開発環境データはOneDriveと連携し、意識せずとも常時バックアップできている仕組みとしています。

人間は必ずミスをするので、そもそもミスができないルートを決めちゃうのが私のやり方です。

システムと言っても区分は難しいですけどね?
ソースコード以外についてまとめています。

W3Cのvalidator
Nu Html Checker
schema.orgのバリデータ
XMLのバリデーター
Google系のツール
Google App Engineapp.yaml
Google Sites
Microsoft系のツール
Microsoft 365
OneDrive
Visual Studio Code for the Web
オープンソース
VSCodium
Ubuntuを入手する

このアプリがデプロイされているのは、Google App Engineです。
app.yamlの詳しい説明は「App Engineのapp.yamlでWebサイトを設定する」にあります。

ライザ頑張る

クラウドとは、インターネットを通じてサーバ・ストレージ・データベース・ネットワークなどを提供するサービスのことです。
このおかげでユーザーは物理的なサーバを所有・管理せずに、必要なときに必要なリソースを利用することができます。
重要なのは、リソースのスケーラビリティなんですよ。
需要に応じてサーバのスペックを自動的に調整することが可能です。
例えば、ウェブサイトにアクセスが急増した場合、クラウドプロバイダーは自動的にリソースを追加して対応します。
逆にアクセスが減少した場合には、リソースを削減してコストを節約することもできます。

クラウドを利用することで、従来の物理サーバを管理する負担から解放されるとともに、柔軟かつ効率的にリソースを利用できるようになるのです。

参考サイト:ISMAPクラウドサービスリストを公開しましたデジタル庁

My favorite PC

ライザ完成

もう10年くらいかな…
低スペックのパソコンしか使ってないです。
上述のようなクラウドが注目されている今、個人でハイスペックパソコンを購入する必要がある状況は限られたものかと。
fein's portalを作っていた時なんか、eMMC (embedded MultiMediaCard) でさえなかったですね。

CPU Information
Current Clock Speed: 1114 MHz
Name: Intel(R) Celeron(R) N4500 @ 1.10GHz
Number of Cores: 2
Memory Information
Capacity: 4 GB (4294967296 bytes)
Speed: 3200 MHz
Disk Information
Model: Kingston X29128
Size: 125 GB (125172311040 bytes)

memo

Using VS Code, search for class="codegra".
class="gra" is a representation that mimics a heading.

Google Sites resumed on July 4, 2023.
Google Cloud started on September 15, 2024.

🌟ソースコードの管理とUI/UX(経験者向けのお話)

このページは、少女趣味なキャラクターごっこそのものでしょう。
でも、自分でコードを書いて何かしらの開発をしたことがある人になら、おそらく私の意図が伝わるのではないかと思っています。

Visual_mariel_Code

「私自身のコード管理」と「訪問者向けのコード解説」を両立させたUIとして、このページを機能させたかったんだよね。
キャラクターごっこの話ではなく、私がやりたかったことをきちんと説明するなら、次のようになります。

ライザコラボシュゼット
  1. 開発者が自分だけでやるコード管理は杜撰になりがち。
  2. いくら決意しようが根性しようが、どーせ徹底されない。
  3. でもソースコード管理をちゃんとやらないと、遅かれ早かれWebサイトの拡張に必ず支障が出る。
  4. 自分だけでやると杜撰になるなら、他人様の目があるところでソースコード管理をしよう。

分かりやすい話だと思いませんか?
自分が書いてきたコードの説明文を、外部の人にも分かるようにちゃんと書く。
これは仕事の現場でもよく聞く「マニュアルの整備」に他なりません。

錬金術極める

このページがあることで、外部向けに広大なWeb制作マニュアルを提供しつつ、私はソースコードのマニュアルをいつでも参照できるようになったわけです。
ソースコード同士の関係が、自分で分からなくなる。
数年前に自分で書いたプログラムを、忘れてしまう。
これがあるから新しいUIを作れなくなるし、結果としてUXが下がる。

Webサイトの超長期的な拡大と発展のために考案した、継続可能で自分自身にもメリットがあるこの仕組みを、改めて「Visual Atelier Code」と名付けます。
そしてこの仕組みを思い付くきっかけになったのが…ライザリン・シュタウトという、愛らしいキャラクターだったのですよ!

Markdown記法とREADME:このサイトの説明書

当WebサイトのREADME
Markdown記法で書かれた、このサイトの説明書です。

ライザとアルマ

Markdown記法はHTMLより簡単な、構造化されたテキストファイルの書き方です。
#の数で見出しを作り、
|--|--|を組み合わせて表を作り、
*で箇条書きもできて、
![代替テキスト](ファイルのパス)によって画像の表示さえできます。

そんなに使用頻度は高くないけど、とても便利ですよ。
.docxなどのワープロソフトで書かれたファイルは、OSが変わるとうまく表示できなかったりします。
しかしMarkdown記法で構造化されたテキストファイルであれば、読みやすいレイアウトを維持したままOSを問わず表示されます。
HTML(HyperText Markup Language)はWebページの内容を構造化するためのマークアップ言語ですが、これと似ていますね。
Markdown記法で書かれたテキストは、とっても簡単にHTML文書にすることもできる。
だからWebページの下書きとしても便利に使えます。

🌟独自ドメインの設定(長期運営者向け)

フェードアウト効果の草花写真

2025年3月より、当サイトのURLが https://feinatelier.org/ となりました。
.orgドメインは個人でも取得でき、信頼性や信憑性が高いと認識されています。
福祉や教育など非営利活動、ITネタで言うならオープンソースプロジェクトなど、公益性の高い方向を持っている情報提供サイトに向いているドメインだから、第一印象が良いのですよ。

平たく言うと、私はWebサイトをマネタイズする予定がありません。
かつ、こうして個人サイトを構築できるソースコードを公開し、解説しています。
それなら非営利+オープンソースということで、.orgドメインがピッタリなんだよね。

フェードアウト効果の草花写真

これが当サイトのリダイレクト設定を管理するコードです。

下記に「アナザーエデン・ファンサイトのご案内」というセクションがあります。
例えばこういったサイトに独自ドメインを設定したいと考えた時、どのような手順と注意点があるでしょうか。
独自ドメインはお金がかかります。
注意したい独自ドメイン設定手順とルール には、このように個人サイト制作で話題になりやすい事柄についても、併せて記載しています。

アナザーエデン・ファンサイトのご案内

これは、私がTwitterにあった各種のコンテンツを全てWebサイトへ移行させた時に作ったものです。
ゲームについて個人サイトを作ろうということなら、ここにあるだけで十分かと思いますね。

Page: /

PDF本体をご覧になりたい方はアナザーエデン・ファンサイトのご案内.pdf版をどうぞ。
でも上部のプレビューでも十分かと思います。

PythonでタブUIを実装してみました

このページにも使われている、コンテンツをぎゅっと濃縮できるUIです。
詳しい説明とソースコードは、次のリンク先にあります。

Pythonは最近とても人気がありますね!
これはいくつかの理由がありますが、特に機械学習とデータサイエンスの分野での利用が大きな要因となっています。
ただ、もともとPythonはそのシンプルで直感的な構文、豊富なライブラリ、そして活発なコミュニティサポートのおかげで幅広い層に利用されていたんですよね。

ルドヴィカ

例えばCopilotやGeminiのようなAI(人工知能)も、Pythonと密接に関連しています。
Pythonは機械学習・データ処理・自然言語処理などのライブラリが整っていることでAI開発の主要なツールとなっており、書店にも関連書籍が増えているのです。
しかし、Pythonだけ書けても、AI開発ができるわけもなく…

このアプリケーションがデプロイされている Google Cloud では、AI開発が非常に活発に行われています。─ もちろん Microsoft Azure や Amazon Web Services でも ─
「Google CloudのAI開発プラットフォーム」などという言い方をしますね。

特にアナデンユーザーなら、Vertex AI という Google Cloud のプラットフォームに注目してみてはいかがでしょう?

Google CloudとWFSのAI開発

ライザ考え中表情

【Google Cloud Next Tokyo 24】Vertex AI Search を使った社内向け AI チャット サービスの構築 というページをご覧いただくと、株式会社WFSの先進的な試みについて読むことができます。
各ゲームタイトル担当者の生産性向上を目的として、AI開発をしたみたいですね。
これは凄いことだと思います。
WFSは最先端の情報技術を使っていることになる!

あ、そうそう…
Vertex AIはAIプロジェクトの構想からデプロイまでをカバーする、コードベースのデータサイエンス開発プラットフォームです。

さて、このようにAIとクラウドというのは、いろいろと関連しているのです。

ライブラリとは何か?

ASフィーネとライザ

プログラミングを考えるときに欠かせないのが「ライブラリ」です。
ライブラリとは、特定の機能や操作を簡単に実行するための、再利用可能なコードの集まりを意味します。
ライブラリを使うことで、開発者はゼロからすべてのコードを書く必要がなくなり、効率的にプログラムを作成することができます。

例えば上述のように、機械学習やデータ処理、自然言語処理など、さまざまな分野で役立つ関数やクラスがまとめられているライブラリがPythonにはたくさんあります。
これらのライブラリを使うことで、特定のタスクを素早く実行できるようになるってことだね。

ライブラリはプログラム開発を効率化するための便利なツールセットであると言ってもいい。

ライザ天上げ拡大

例えばこのサイトで使っている Prism.js はコードハイライト用のライブラリです。
軽量で効率的に動作し、さまざまなプログラミング言語のコードをシンタックスハイライトすることができます。
これを使うことでコードの可読性が向上し、開発者がコードをより簡単に理解できるようになります。

ソースコードの色分け表示なんか、いちいちCSSで細かく設定するなんて大変だよ…
こういうポイントでライブラリを使うんです。

こんな感じで、綺麗にプログラムコードが表示されているでしょ?
アナザーエデンのプログラミングを個人サイトで試すで書いた、アナザーエデンで使われているプログラミング言語「Lua」のソースコードです。


const luaCode1 = `
    local items = {
        {name = "アナザーエデン", link = "https://another-eden.jp/"},
        {name = "ヘブンバーンズレッド", link = "https://heaven-burns-red.com/"},
        {name = "WRIGHT FLYER STUDIOS", link = "https://www.wfs.games/"}
    }

    local dropdownHtml = ""
    for _, item in ipairs(items) do
        dropdownHtml = dropdownHtml .. '<a href="' .. item.link .. '">' .. item.name .. '</a>'
    end

    return dropdownHtml
`;

お次はプログラミング言語「Python」のソースコードです。
ちょっと変則的かもしれませんが、このアプリでタブUIを動作させるときに使っています。


from browser import document, timer

def show_tab(event):
 container = event.target.closest('.atelier-container')
 tabs = container.select('.atelier-tab')
 contents = container.select('.atelier-tab-content')

 for tab in tabs:
  tab.classList.remove('atelier-active-tab')
 for content in contents:
  content.classList.remove('atelier-active-content')
  content.style.transition = 'transform 1s ease-in-out, opacity 1s ease-in-out'
  content.style.transform = 'translateX(-100%)'
  content.style.opacity = '0'
  content.style.visibility = 'hidden'

 event.target.classList.add('atelier-active-tab')
 tab_id = event.target.getAttribute('data-tab')
 active_content = container.select(f'[data-content="{tab_id}"]')[0]
 active_content.classList.add('atelier-active-content')

 def show_content():
  active_content.style.visibility = 'visible'
  active_content.style.opacity = '1'
  active_content.style.transform = 'translateX(0)'

 timer.set_timeout(show_content, 50)

for container in document.select('.atelier-container'):
 tabs = container.select('.atelier-tab')
 if tabs:
  tabs[0].classList.add('atelier-active-tab')
  container.select('.atelier-tab-content')[0].classList.add('atelier-active-content')
  for tab in tabs:
      tab.bind('click', show_tab)

このようにライブラリを使うことで、私は余分な手間を省きつつも、見やすくソースコードをこのサイトに表示できています。

サイト制作者のAIに対する指針

ライザ渋顔

私のAIに対する指針についてお話しするなら、次の画像だけで十分かと思いますよ?
Google Cloud の Digital Leader という試験における、公式模擬試験からの出題となっております。
広い意味で、私の行動原則となっているものです。

Cloud Digital Leader のWebページにも詳細があります。

googlecloud模擬試験

詳しくはX(旧:Twitter)の変化にどう対処するかの「生成AIに関する対応」という欄にあります。

私のサイトがアプリになりました

詳しくは個人サイトをそのまんまアプリにする方法にて。

Illustration of the atelier

この見出し通りの状況なのですが、ここに詳しく書くのは無理ゲーだよ…
ちゃんと別にWebページが必要です。
一言お気持ち表明するなら、もう初めっからアプリ化するつもりでした。
だって今の時代、普通に考えてアプリのほうが有利じゃん。

プログレッシブウェブアプリは「ほーむぺーじ」の利点を生かせる

「Progressive Web App」というのはもちろんアプリなのですが、それでいて静的Webサイトのメリットを捨てていないのですよ。
Illustration of the atelier

必要なソースコードは manifest.json だけではなく、プログレッシブウェブアプリそのものが比較的新しい技術です。
そのため、次のソースコードをまとめて掲載しています。

🎮ライザのアトリエコラボは大成功だったかと

BGMもいいし、ストーリーもぜんぜん無理がなくて、おまけにばっちり感情移入できて。
Twitterのタイムラインは後からさっと追いかけただけでしたが、大好評でしたね。

ライザコラボエンディング

可能であれば、続編を強く希望したいです。
似たような雰囲気のRPG同士であるからか、アナザーエデンとライザのアトリエは自然に溶けあっていました。
戦闘システムも無理がないのですよ。
アナデンらしさも損なわず、ライザがまるで普通のアナデンキャラみたいに振る舞っています。

マルチプラットフォーム対応のフローティング・ランチャーを作りました

詳しくはWeb制作の技術でソフトウェアを作るにて。
こういう感じの、壁紙を極力邪魔しないテキストベースのランチャーです。

feinlauncher

上の画像の右上のほう…透き通ったランチャーがあるの、見えますか?
これはアプリ化のように計画的なものではなく、完全な思い付きです。
ソフトウェア作りに凝ってた頃のソースコードが発掘されたことも大きい。

コード資産って…大切なんだと改めて思いました😅
これからもバージョンアップしていきましょう!


🎮ルドヴィカの実装希望! ダメかな…

私以外にも、ルドヴィカのプレイアブル化を希望している人はたくさんいると思うのですが?
そういう意味でも、テイルズコラボみたいに続編をやって欲しいですね。

ルドヴィカ全体

ライザの錬金術と、冒険に必要な道筋の開拓。
そしてストーリーの進捗と徐々に明らかになっていく古城の秘密。
これまでアナザーエデンはいろんなところとコラボしてきましたが、このライザのアトリエコラボが一番好きですね!


Discordでも使われているエレクトロン製のソフト

上述の私が作ったソフトウェアは、Electronという技術を使っています。

ライザ考え中拡大版

Electronというのは JavaScript、HTML、CSS を使って、Windows、Mac、Linuxなどの異なるプラットフォームで動作するデスクトップアプリを開発するためのフレームワークです。

例えば、ゲーマー向けのSNSである Discord は、Electronを使用して開発されたアプリケーションです。
マルチプラットフォームに対応しつつ、ネイティブアプリと同等のパフォーマンスを提供します。
あと、私が頻用している Visual Studio Code (VS Code) もElectronで作られているんですよ?
なんと、Web技術を使って高度な機能を持つ、開発者用のコードエディタまで作成できちゃうんですね。
当然のようにマルチプラットフォーム対応であり、いろんな拡張機能でユーザーがカスタマイズできる拡張性まで備えているのです。

Visual Studio Codeは、皆様もリスクなく気楽に触れます。
Visual Studio Code for the Web をどうぞ。
インストールしたソフトウェアとしての Visual Studio Code と、ほっとんど同じ操作感ですよ。


🎮カルナジェネシスの影

アナザーエデン、ライザのアトリエコラボおもしろかったですね!
ここから先はゲームそのもののお話です。
私はカルナジェネシスの影から真っ先に取り掛かったのですよ。
どーせなら錬成コンテンツを全て終わらせてからやれば良かったのかもしれませんが、「ひと夏の冒険者達の星譜」が入手できるとすればおそらく裏ボスだろうと考えました。

カルナジェネシスの影戦闘シーン

なかなかの難易度であったと記憶しているけど、ASソイラで敵の攻撃は原則受けるようにしていました。
固定ダメージもソイラで受けるのですが、私のソイラは天255なのでね…
HPバッジやらも盛った上での話ですよ。
オーラ等を見ると魔法パーティーが良さそうだったから、シェンファ+ASフィーネで攻めることにしました。

カルナジェネシスの影勝利シーン

状態異常付与がとにかくめんどうなんだよね。
そこもASソイラで受けつつ、テトラで回復する流れを作ったかな。
んでもって復活するたびに攻撃が激しくなるから、ステラバーストとアナザーフォースのタイミングを考えるようにして。
シェンファのテッセラクト強いですよ。
相手のバフをひっくり返すタイミングがここでも重要だった。
シェンファとASフィーネは相性良いですよね。

ライザ星導覚醒

倒してみたらなんと、「真・気鋭の錬金術士の証」が手に入ったのです。
真っ先にライザリンシュタウトのVCグラスタを入手できて大満足!
ちょうどこのページのコード管理を思い付いていたあたりでさ…
加えてSE職への部署異動+港町への引っ越しで多忙な時期だったから、ネタバレどころかTwitterもぜんぜん見る暇がなかった。
強敵戦の入手アイテムで驚けるのは、ネタバレ価値観+大暴れのコンボも良い仕事をしたものだと思ったね😆ww

🎮闇のアルターフォース

ライザコラボは裏ボスも倒し、全てのコアアイテムも錬成済みです。
上述の通りライブサービスゲームの攻略記事というのはWebページ自体の寿命も短いので、攻略も簡素に済ませますよ?
星導覚醒実装後の敵でもあるし、すぐにインフレ頼みで倒せるようになります。

闇のアルターフォース画像

書きやすいし、箇条書きにしてみましょうか。

バフ8種のオーラ対策
Pグラスタと装備を制限することで対応しました。
やたらと豪華なグラスタと装備を付けないことで、バフが8種を超えないようにしたんだよね。
立ち回り
シュゼットの魔界の槍撃とライザの英雄の意思、ESマリエルの救済の祈りとシェンファのトリニティ。
加えてバディはテュシアとコロボで守り切れます。
クラウディア星導覚醒
ダメージソースはアナザーフォース
ステラバーストでシェンファのテッセラクトを当ててからアナフォ。
これでHPゲージを丸ごと削りました。
復活後のゲージ
無理に壊さずとも対応できましたね。
最終局面も過度にターン数をかけなければ大丈夫です。

でも、私の場合はシェンファ・シュゼット・マリエル・ガリアード・クラルテともに天冥255です。
デバフ耐性グラスタも腕速知・属性・物理の3つを完備できたこともあるでしょう。

長く続けてればね。
頻用するキャラに関しては、自ずと255になっていたりするもんです。

🎮闇のアルターフォースの動画

倒した当時のアナザーフォースを再現しました。
ライザの天が上がっているのと、細かい装備を覚えておらず、まったく同一とはいかなかったけど。
でもだいたい同じです。

This is a video on Google Drive.

倒すとクラウディアの真・VCグラスタがもらえますよ。
クラウディアもどこかで天255にしようかな🎵

クラウディア天上げ

2024年12月から2025年1月にかけて、上述のようにすっごく忙しくて💦
この闇のアルターフォースにしても、新幹線の中でプレイしていたような記憶がありますね。
Twitterは皆様のネタバレ価値観を尊重することが優先ですから、スマホを開くときにはだいたいライザコラボという状態😆ww

なので、早期にいろいろクリアできました。
私はいつもそうですが、ネタバレ・センシティブ期間中はSNSに浮かないほうが、ゲームに集中できますよ?
別に配信後すぐに片っ端からクリアしなくても良いけど🥱
今にして思えば、あのスクショやこのスクショを残しておけば良かったなどと考えているところです。


少しの非効率がモチベを奪う

ライザコラボfear終盤

ソースコードや記事資産が手元にない場合、Webサイト制作は大仕事となります。
また、SNSでは「俺のほうがもっとスゲェことできる!!」というドヤりあいが頻繁に発生し、そういう風土が知識&技術を習得する際の妨げとなります。
特にこうして自らコードを書いてWebアプリケーションを構築していくような「Web開発」の領域に首を突っ込んだ場合、SNSからくる競争意識の悪影響を受けていると、学びも遊びも中途半端になってしまう…

大いにゲームで遊び、大いに自分の学びを進められる環境を作るためにもね?
単純作業は極力パソコンにやってもらった方が良いでしょう。
このページからジャンプできるソースコードはWeb開発に必要な知識のうちのほんの一部に過ぎませんが…
誰かの役に立てば嬉しいです🎵


サイトマップ

全ページをリスト化したサイトマップも用意していますが、けっこうなページ数があります。
下記の「カテゴリー分けサイトマップ」のほうが使いやすいでしょう。

アナザーエデン関連ページ・サイトマップ

アナザーエデンの強敵戦やストーリーコンテンツのリスト、お勧めバッジなどを掲載したコーナーです。
期間限定のない普通のRPGですので、初心者でも安心して続けていけるゲームとなっています。
もっとも重要なグラスタについては、場所別に網羅した表があります。

個人サイトのホスティングとコンテンツ作成

個人でウェブサイトを作るにはどうすればいいか。
HTML・CSS・JavaScriptの書き方はもちろん、無料かつ広告なしでホームページを作る方法を掲載したコーナーです。
Webデザインやレイアウトについても書いてあります。

魚釣りなどアウトドアのエリア

ゲームとパソコンだけじゃなく、アウトドアも趣味なんです。
このコーナーでは魚釣りの記録とか、魚料理のレシピ、はたまたサイクリングなどなど。
アウトドアに関連するコンテンツが詰め込まれています。