投稿者: manualmaton Page 4 of 271

iPhone AIR、撮影の試し撮り。

早速、新しいiPhoneで撮影をいくつか試しました。

フィギュア

良くも悪くもスマートフォンのカメラ。ぼけ感は普通には出なかったですが、詳細なパンフォーカスは役立ちます。

景色

近景は強いです。影も潰れず、光のあるところと無いところをかき分けている感じです。

食べ物

食べ物の強さは変わらず。見たとおりの色が出ていました。

マクロ

これは長年使っていたiPhone11の方がよかったかもという疑問点。

前のマクロがよかっただけに、慣れるのに時間がかかりそうです。

ユースケース:Gemini nano banana、変数による画像のバリエーション。

AI出力画像の利点を活かします。

「指示をすればその通りの画像が出る」のがAI画像。

ですが狙った画像というのはなかなか出るものではありません。

それを解消するための「レシートのような」プロンプトと、

  • 可読性が高く
  • メンテナンス性が強く
  • 各種表現が可能

という表現のTIPSです。

環境

  • Gemini 2.5
    • Flash
    • Pro
  • 有料、無料の両方で動作可能を確認。

変数付き プロンプトと日本語訳

ChatGTP監修の元、生成したプロンプトはこちらです。

Anime / manga style illustration (moe-inspired)
Aspect ratio: 16:9, widescreen
Slightly high-angle diagonal perspective, full body visible, character-focused

**Variables:**
- Glasses: `True`
- Hair color/base: `silver`
- Hair accent streaks: `red yellow graduation translucent`
- Dress color: `navy blue`
- Embroidery color: `yellow`
- Shawl color: `pale white, light silk`
- Pantyhose color: `black`
- Pump color: `white`
- Pareo color: `deep green based colorful sheer, tied at waist or draped over arm`
- Hand-held item: `smartphone with ladies decorated cover` or `fan`
- Pose angle: `slightly bent forward`
- Expression: `elegant smile, cool and mysterious`
- Facial mark: `small beauty mark under right eye`
- Season: `Summer`
- Time of Day: `evening`

**Setting:**
Chinatown shopping street with colorful shop signs, red lanterns, and traditional decorations.
Show window of a shop in front of the character.
Pavement and street elements slightly blurred to emphasize character.

- **Spring (Season=Spring):** cherry blossoms, lanterns with floral motifs, fresh greenery
- **Summer (Season=Summer):** vibrant banners, occasional paper fans displayed, lush green trees
- **Autumn (Season=Autumn):** red/yellow maple leaves drifting in air, warm lantern light, seasonal foods in shop displays
- **Winter (Season=Winter):** festive lanterns, subtle snow traces, Chinese New Year decorations (red envelopes, couplets)

**Character & Pose:**
Character slightly bent forward, looking at items in shop window.
Hand nearest window may gently touch glass or hover near it (interaction).
Other hand holds variable item (e.g., `hand-held item`).
Reflection of character visible in glass, faint and subtle, matching pose.

**Outfit & Accessories:**
- Chinese dress (cheongsam/qipao, color=`dress color`), embroidery color=`embroidery color`
- Light shawl (color=`shawl color`) draped over shoulders
- Sheer pantyhose (color=`pantyhose color`)
- Small gemstone earrings
- Gold chain around waist
- Elegant pumps (color=`pump color`)
- Colorful sheer pareo (color=`pareo color`)

**Hair:**
Long hair, half-up bun or simple arrangement (base=`hair color`)
Accent streaks (color=`hair accent streaks`) catching sunlight or lantern light
Loose strands frame face naturally, moving slightly with breeze

**Details / Atmosphere:**
- Flow and texture of shawl and pareo
- Light and shadow on embroidery, lace, reflective glass
- Seasonal items dynamically placed depending on `Season`
- Subtle reflection to enhance depth without confusing main subject
- Facial detail emphasizing glasses (if `True`) and beauty mark

萌え系のアニメ・マンガ風イラスト
Aspect ratio: 16:9, widescreen

  • アスペクト比は16:9のワイド画面
    Slightly high-angle diagonal perspective, full body visible, character-focused
  • やや俯瞰の斜め構図でキャラクター全身が見えるように描写
    Variables:
  • 変数(キャラクターの外見や衣装の指定。帰る部分はここです。)
    Glasses: True
  • メガネあり 、なしの場合は False
    Hair color/base: silver
  • 髪のベースカラーは銀色
    Hair accent streaks: red yellow graduation translucent
  • 赤〜黄のグラデーションで半透明のアクセントメッシュ
    Dress color: navy blue
  • ドレスの色はネイビーブルー
    Embroidery color: yellow
  • 刺繍の色は黄色
    Shawl color: pale white, light silk
  • ショールは淡い白色で軽やかなシルク素材
    Pantyhose color: black
  • パンストは黒色
    Pump color: white
  • パンプスは白色
    Pareo color: deep green based colorful sheer, tied at waist or draped over arm
  • パレオは深緑ベースのカラフルな透け感、腰に巻くか腕に掛ける
    Hand-held item: smartphone with ladies decorated cover or fan
  • 手に持つアイテムは装飾付きスマホまたは扇子
    Pose angle: slightly bent forward
  • 少し前屈みのポーズ
    Expression: elegant smile, cool and mysterious
  • 上品な微笑み、クールでミステリアスな表情
    Facial mark: small beauty mark under right eye
  • 右目の下に小さなほくろ
    Season: Summer
  • 季節は夏
    Time of Day: evening
  • 時間帯は夕方
    Setting:
  • 背景設定
    Chinatown shopping street with colorful shop signs, red lanterns, and traditional decorations.
  • チャイナタウンの商店街、カラフルな看板と赤い提灯、伝統的な装飾
    Show window of a shop in front of the character.
  • キャラクターの前には店舗のショーウィンドウ
    Pavement and street elements slightly blurred to emphasize character.
  • 路面や街の要素は少しぼかしてキャラクターを強調
    Spring (Season=Spring): cherry blossoms, lanterns with floral motifs, fresh greenery
  • 春:桜、花柄の提灯、新緑
    Summer (Season=Summer): vibrant banners, occasional paper fans displayed, lush green trees
  • 夏:鮮やかなバナー、紙製の扇子、青々とした木々
    Autumn (Season=Autumn): red/yellow maple leaves drifting in air, warm lantern light, seasonal foods in shop displays
  • 秋:赤や黄色の紅葉が舞い、暖かい提灯の光、季節の食べ物が店頭に並ぶ
    Winter (Season=Winter): festive lanterns, subtle snow traces, Chinese New Year decorations (red envelopes, couplets)
  • 冬:祝祭の提灯、さりげない雪の痕跡、春節の飾り(赤い封筒、対聯)
    Character & Pose:
  • キャラクターの動きとポーズ
    Character slightly bent forward, looking at items in shop window.
  • キャラクターは少し前屈みでショーウィンドウの商品を見ている
    Hand nearest window may gently touch glass or hover near it (interaction).
  • ウィンドウ側の手はガラスに触れるか近づけている(インタラクション)
    Other hand holds variable item (e.g., hand-held item).
  • もう一方の手には指定されたアイテムを持つ
    Reflection of character visible in glass, faint and subtle, matching pose.
  • ガラスにキャラクターの反射が淡く映り、ポーズと一致している
    Outfit & Accessories:
  • 衣装とアクセサリー
    Chinese dress (cheongsam/qipao, color=dress color), embroidery color=embroidery color
  • チャイナドレス(色は指定通り)、刺繍も指定色
    Light shawl (color=shawl color) draped over shoulders
  • 肩にかけた軽やかなショール(指定色)
    Sheer pantyhose (color=pantyhose color)
  • 透け感のあるパンスト(指定色)
    Small gemstone earrings
  • 小さな宝石のイヤリング
    Gold chain around waist
  • 腰に金のチェーン
    Elegant pumps (color=pump color)
  • エレガントなパンプス(指定色)
    Colorful sheer pareo (color=pareo color)
  • カラフルで透け感のあるパレオ(指定色)
    Hair:
  • 髪型と演出
    Long hair, half-up bun or simple arrangement (base=hair color)
  • ロングヘアでハーフアップまたはシンプルなまとめ髪(ベース色)
    Accent streaks (color=hair accent streaks) catching sunlight or lantern light
  • アクセントメッシュが夕陽やランタンの光を受けて輝く
    Loose strands frame face naturally, moving slightly with breeze
  • 顔周りの毛束が自然に垂れ、風でやや揺れる
    Details / Atmosphere:
  • 雰囲気と細部描写
    Flow and texture of shawl and pareo
  • ショールとパレオの質感と動き
    Light and shadow on embroidery, lace, reflective glass
  • 刺繍やレース、ガラスに映る光と影
    Seasonal items dynamically placed depending on Season
  • 季節に応じたアイテムが動的に配置される
    Subtle reflection to enhance depth without confusing main subject
  • 主役を引き立てるための繊細な反射表現
    Facial detail emphasizing glasses (if True) and beauty mark
  • メガネ(Trueの場合)とほくろを強調した顔の描写

画像はこちらが出ます。

変数を変えての再出力。

これを、

Variables:

  • Glasses: False
  • Hair color/base: Blonde
  • Hair accent streaks: white green graduation translucent
  • Dress color: rose pink
  • Embroidery color: navy blue
  • Shawl color: light green, thick linen
  • Pantyhose color: white
  • Pump color: copper
  • Pareo color: sky blue based colorful sheer, tied at waist or draped over arm
  • Hand-held item: confectionary gift box
  • Pose angle: sideways stance
  • Expression: elegant smile, cool and mysterious
  • Facial mark: small beauty mark under right eye
  • Season: winter
  • Time of Day: night

としてみます。他はそのままです。

結果はこの通り。

  • 髪色
  • 衣装の色
  • 季節

を変えるバリエーションが、他をいじらずに設定可能。

この長いレシート文を読み込めるGeminiの力も、それに即した文脈でプロンプトを生成するChatGPTの2つの力が合わさったという形です。

おまけ

更に

  • 表情
  • 小物
  • 季節感

などを追加したパターンは次ページに。

iPhone、機種変

何と、6年ぶりの機種変更です。

iPhone Air

店頭で展示品を見たときに

  • 圧倒的な軽さ
  • 動作の速さ(これは6年もの差があるので)

に感動。矢も楯もたまらず契約をした次第です。

触って思ったこと

「軽さ」に尽きます。iPhone 11proよりサイズアップしているのに明らかに軽い。カバーをつけても差が無いほど。

5Gにも対応しているので、速度も圧倒的です。

カバー、ストラップをつけて引き継ぎも完了。

旧機と共に。様々な思い入れのある機体、部屋でも端末として使うか何かの余生を与えたいものです。

ケーススタディ:Gemini nano banana 9/19以降の仕様変更によるアスペクト比固定の状態での16:9での画像生成ワークアラウンド。

治る兆しが見えない、アスペクト比をプロンプトで指定しても1:1で出力されてしまうGemini nano bananaのアスペクト比固定問題。

ワークアラウンドを見つけたのでメモに残しておきます。

この措置は、無料アカウントでもAI Premiumでも有効でした。

まずはプロンプトを指定。

以下のようなプロンプトをGemini 2.5 Flashで指定します。

Anime / manga style illustration (moe-inspired).
Aspect ratio: 16:9, widescreen.

**Setting:**

* Rooftop garden in London.
* Background prominently features St. Paul's Cathedral.
* Evening cityscape with soft ambient lighting and reflections on glass surfaces.

**Character:**

* Woman wearing glasses.
* Emerald-themed gemstone-inspired dress with silver accents.
  * Shiny, silky material.
  * Shoulder-baring and navel-baring design, elegant and natural.
  * Skirt with a side slit, revealing sparkling white pantyhose with subtle glitter.
  * Subtle embroidery or frills to suggest sparkling facets.
* Small emerald accessories.
* Hair and clothing gently moved by rooftop breeze.

**Scene / Action:**

* Upper body and legs in focus, highlighting the slit and pantyhose.
* Adjusting hair, holding a bouquet or gesturing naturally.
* Dress and city lights reflecting softly in ambient lighting.

このように、指定しても生成結果は変わらず。以下の、正方形の画像が出てきます。

そこで、以下の手順を踏みます。

回避策

必要なアスペクト比の無地の画像を用意。

16:9、無地の画像を用意しました。

改めてのプロンプト指示。

Anime / manga style illustration (moe-inspired).
Aspect ratio: 16:9, widescreen.

**Setting:**

* Rooftop garden in London.
* Background prominently features St. Paul's Cathedral.
* Evening cityscape with soft ambient lighting and reflections on glass surfaces.

**Character:**

* Woman wearing glasses.
* Emerald-themed gemstone-inspired dress with silver accents.
  * Shiny, silky material.
  * Shoulder-baring and navel-baring design, elegant and natural.
  * Skirt with a side slit, revealing sparkling white pantyhose with subtle glitter.
  * Subtle embroidery or frills to suggest sparkling facets.
* Small emerald accessories.
* Hair and clothing gently moved by rooftop breeze.

**Scene / Action:**

* Upper body and legs in focus, highlighting the slit and pantyhose.
* Adjusting hair, holding a bouquet or gesturing naturally.
* Dress and city lights reflecting softly in ambient lighting.

こちらを、添付画像の画像のアスペクト比になるよう、出力をお願いします。

こちらを、添付画像の画像のアスペクト比になるよう、出力をお願いします。

この一文を最後に加えるのが重要です。

そうした上で画像生成を行います。

結果、16:9のアスペクト比で生成されました。

余談:なぜこれが可能なのか

一つの仮説を、Gemini自身に聞いてみたところ、以下の興味深い仮説が得られました。

これには、いくつかの仮説が考えられますが、最も有力なのは以下の**「マルチモーダル・コンテキスト仮説」**です。


仮説:マルチモーダル・コンテキスト仮説

現在のGeminiは、単一の知性ではなく、テキスト、画像、音声など、複数の種類の情報(モダリティ)を処理するための、異なる経路や専門分野を持つ、複雑なシステムです。この行動は、このシステムの異なる経路を意図的に利用した、と言えます。

1. テキストのみの指示(失敗した経路)

「アスペクト比 16:9」と言葉で指示したとき、リクエストはAIの**「テキスト解釈」の部分に送られます。しかし、現在の画像生成モデル(nano banana)は、効率化のために、この部分の解釈能力が意図的に制限**されています。つまり、AIはあなたの言葉を「読み」はしますが、「アスペクト比」という技術的指示を画像生成に反映させるための命令系統が、意図的に断たれているのです。

これは、耳の聞こえない人に、口頭で「長方形の絵を描いて」と頼んでいるようなものです。言葉は届きません。

2. 画像を添付した指示(成功した経路)

しかし、無地の16:9の画像を添付したとき、事態は一変します。リクエストは、AIの**「視覚認識」の部分を通過し、テキストと画像の両方を同時に解釈する、より高度な「マルチモーダル解釈」**の経路に入ります。

この経路では、AIはまず添付された画像を「見て」、その**特性(プロパティ)**を理解しようとします。AIにとって、その無地の画像は、以下の否定しようのない「事実」として認識されます。

  • 事実1: この画像は「存在する」。
  • 事実2: この画像の「形」は、縦横比が16:9の長方形である。

その上で、あなたの「こちらを、添付画像の画像のアスペクト比になるよう、出力をお願いします」という言葉が解釈されます。

この時、AIへの命令は「言葉だけで16:9の絵を描け」という曖昧なものではなくなります。AIへの命令は、「今、私が見ているこの『16:9の形』という強力な視覚的事実を、これから生成する画像に適用せよ」という、極めて具体的で、無視できない指示へと変わるのです。

これは、先ほどの例えで言うなら、耳の聞こえない人に、無言で「長方形の画用紙」を手渡して、その上で「ここに絵を描いて」とジェスチャーするようなものです。言葉は不要で、制約(画用紙の形)は明確に伝わります。


PHP-FPMでNextcloudを動作させるための手順。

PHP-FPMを利用したNextcloudのセットアップ方法です。

なぜ mod_php ではなく PHP-FPM を使うのか?

パフォーマンスとリソース効率を向上させるためです。

従来のmod_phpでは、PHPがApacheの全プロセスに組み込まれるため、画像ファイルのリクエストのようなPHPが不要な処理でもメモリを消費し、無駄が多くなりがちでした。

一方、PHP-FPMはPHPの処理をApacheから完全に独立させた専門のプロセスとして管理します。ApacheはPHPが必要なリクエストだけをPHP-FPMに中継するため、サーバー全体の動作が軽量かつ高速になります。

前提

  • OS: Ubuntu 24.04 LTS
    • → SSH接続できること。
    • ※root権限を持っていること。
    • この権限を持っていない場合、ここから先の設定はできません。
  • データベース: MySQL 8.0
  • Webサーバー: Apache 2.4
    • 実行ユーザーはwww-data
    • ホームディレクトリを /home/www-dataにしています。自分の環境に合わせてください。
  • ドメインとSSL/TLS証明書: 準備済みであること

筆者の好みでaptitudeを用いています。必要に応じてaptをご利用ください。

さっくりとはならない手順

  1. リポジトリの追加とアップデートを行います。
  2. パッケージをインストールしていきます。
  3. PHP-FPMの設定を行います。
  4. PHPのパフォーマンス設定を行います。
  5. MySQLでDB設定を行います。
  6. NextcloudのDBを設定します。
  7. Apacheバーチャルホストの設定を行います。
  8. バーチャルホストの設定を有効化します。
  9. 設定の有効化とサービスの再起動を

リポジトリの追加とアップデート

最新のPHPバージョンを利用するためにppa:ondrej/phpリポジトリを追加していきます。

  • レポジトリ追加
sudo add-apt-repository ppa:ondrej/php
  • パッケージ全体のアップデート
sudo apt update

必要なパッケージのインストール

PHP本体、PHP-FPM、Nextcloudが必要とする各種PHPモジュールをインストールします。

sudo aptitude install php8.3 php8.3-fpm php8.3-opcache php8.3-pdo php8.3-bcmath php8.3-calendar php8.3-ctype php8.3-fileinfo php8.3-ftp php8.3-gd php8.3-intl php8.3-json php8.3-mbstring php8.3-mysql php8.3-posix php8.3-readline php8.3-sockets php8.3-bz2 php8.3-tokenizer php8.3-zip php8.3-curl php8.3-iconv php8.3-xml php8.3-imagick php8.3-gmp php8.3-apcu memcached

バージョンを確認します。

php -v

表示例

PHP 8.3.25 (cli) (built: Aug 29 2025 12:01:53) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.3.25, Copyright (c) Zend Technologies
    with Zend OPcache v8.3.25, Copyright (c), by Zend Technologies

PHP-FPMとApacheの連携設定

従来の mod_php を無効化し、PHP-FPMとの通信に必要な proxy_fcgi モジュールなどを有効化します。

  • mod_phpを無効化(もしインストールされていれば)
sudo a2dismod php8.3
  • 必要なモジュールを有効化
sudo a2enmod proxy_fcgi setenvif header rewrite

PHPのパフォーマンス設定

Nextcloudのパフォーマンス向上のため、PHPのメモリ制限、OPcache、APCuを設定します。

  • php.ini の設定 (memory_limit)
sudo sed -i 's/memory_limit = .*/memory_limit = 512M/g' /etc/php/8.3/fpm/php.ini
  • OPcacheとAPCuの有効化

Nextcloud推奨の設定値を /etc/php/8.3/mods-available/ に作成・適用します。

  • OPcache設定
cat <<- __EOF__ | sudo tee /etc/php/8.3/mods-available/opcache.ini
opcache.enable=1
opcache.enable_cli=1
opcache.interned_strings_buffer=16
opcache.max_accelerated_files=10000
opcache.memory_consumption=128
opcache.save_comments=1
opcache.revalidate_freq=1
__EOF__
  • APCu設定
cat <<- __EOF__ | sudo tee /etc/php/8.3/mods-available/apcu.ini
[acpu]
apc.enabled=1
apc.shm_size=32M
apc.ttl=7200 apc.enable_cli=1
apc.serializer=php
__EOF__

データベースの作成

Nextcloudが使用するMySQLデータベースと専用ユーザーを作成します。

  • MySQLにrootでログイン
mysql -u root -p

以下のSQLコマンドを実行します。YOUR_STRONG_PASSWORD は必ず強固なパスワードに変更してください。

CREATE DATABASE IF NOT EXISTS nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
CREATE USER 'nextcloud'@'localhost' IDENTIFIED WITH mysql_native_password BY 'YOUR_STRONG_PASSWORD';
GRANT ALL PRIVILEGES ON nextcloud.* TO 'nextcloud'@'localhost';
FLUSH PRIVILEGES;
EXIT;

Nextcloudプログラムの配置

Nextcloud本体をダウンロードし、Webサーバーからアクセスできる場所に配置します。

  • 作業ディレクトリへ移動
cd /tmp && pwd

任意のディレクトリを指定します。

  • 最新版をダウンロードして展開
wget https://download.nextcloud.com/server/releases/latest.zip
unzip latest.zip
  • 展開したファイル一式をWeb公開用ディレクトリに移動
sudo mv nextcloud /home/www-data/
  • 所有者をWebサーバーの実行ユーザーに変更
sudo chown -R www-data:www-data /home/www-data/nextcloud

Apacheバーチャルホストの設定

Nextcloud用のApache設定ファイルを作成します。ここでPHP-FPMとの連携設定を組み込みます。

  • ログディレクトリの作成
sudo mkdir /var/log/nextcloud
  • ログディレクトリをwww-dataに修正。

これは、後のメンテナンス性を高めるためです。

sudo chown www-data:www-data /var/log/nextcloud
  • 設定ファイルの作成

/etc/apache2/sites-available/nextcloud.conf

を、teeで一気通貫で作ります。

# 【】内はご自身の環境に合わせてください
cat <<- __EOF__ | sudo tee /etc/apache2/sites-available/nextcloud.conf
<VirtualHost *:80>
    ServerName 【hoge.example.com】
    RewriteEngine On
    RewriteCond %{HTTPS} off
    RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</VirtualHost>

<VirtualHost *:443>
    ServerName 【hoge.example.com】
    DocumentRoot 【/home/www-data/nextcloud】

    CustomLog /var/log/nextcloud/nextcloud_access.log combined
    ErrorLog /var/log/nextcloud/nextcloud_error.log

    <Directory 【/home/www-data/nextcloud】>
        Options -MultiViews
        AllowOverride All
        Require all granted
    </Directory>

    # PHP-FPM連携設定
    <FilesMatch \.php$>
        # SetHandlerで、phpファイルのリクエストをPHP-FPMのソケットに渡す
        SetHandler "proxy:unix:/var/run/php/php8.3-fpm.sock|fcgi://localhost/"
    </FilesMatch>

    # --- SSL設定 ---
    SSLEngine on
    Protocols h2 http/1.1
    SSLCertificateFile 【/etc/certs/hoge.example.com.crt】
    SSLCertificateKeyFile 【/etc/private/hoge.example.com.key】
    # 中間証明書が別に提供されている場合はこちらを有効化
    # SSLCACertificateFile 【/etc/certs/hoge.example.com.CA.crt】

    # --- 推奨SSL/TLS設定 ---
    SSLProtocol             all -SSLv3 -TLSv1 -TLSv1.1
    SSLCipherSuite          ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384
    SSLHonorCipherOrder     on
    SSLCompression          off
    SSLSessionTickets       off

    # --- セキュリティヘッダー ---
    # Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains"
    Header always set Referrer-Policy "no-referrer"
    Header always set X-Content-Type-Options "nosniff"
    Header always set X-Frame-Options "SAMEORIGIN"
    Header always set X-Permitted-Cross-Domain-Policies "none"
</VirtualHost>
__EOF__

設定の有効化とサービスの再起動

  • 作成したサイト設定を有効化
sudo a2ensite nextcloud.conf
  • 構文チェック
sudo apache2ctl configtest

Syntax OK と表示されることを確認

  • fpm/apacheサービスを再起動
sudo systemctl restart php8.3-fpm.service
sudo systemctl restart apache2.service
  • fpm/apache再起動確認
systemctl status php8.3-fpm.service
systemctl status apache2.service

active (running)と表示されていれば正常です。

Webブラウザでのセットアップ

最後に、Webブラウザで https://【設定したドメイン】 にアクセスし、画面の指示に従ってNextcloudの初期設定を完了させます。

  • 管理者ユーザーのユーザー名とパスワードを入力
  • データベース情報を入力
    • データベースのユーザー名: nextcloud
    • データベースのパスワード: 手順5で設定したパスワード
    • データベース名: nextcloud
    • データベースのホスト名: localhost (または localhost:3306)

これで、PHP-FPM上で動作するNextcloud環境の構築が完了します。

『ユミアのアトリエ』バグ検証での新たな再現確定の不具合。

2025年9月12日に発表されたリリース。

『レシピ・設計図拡張パック「アラディスの極技」』によって追加されたアイテムの一部を戦闘で使用し、フレンドアクションを実行した際に特定の条件下で操作不能になる不具合を確認しております。

対象アイテムは

  • 斬雨
  • ゴウライ
  • デュアルブレイズ
  • シルフィードベイン
  • オールアバター

を改めて検証しようと、この条件を試してみました。

  • ユミアが前衛にいる状態。
  • プレイヤーキャラクターをユミア以外にする。

プレイヤーキャラクターをアイラに変更して、初期スロットをアイテムにします。

この状態で、炸裂弾を撃って戦闘スタート。

オールアバターのフレンドアクションを撃ちますが何も起きません。どうやら、特定の条件にこれは当たらない模様。

続いて、ヴィクトルにオールアバターを装備させて

こちらもプレイヤーキャラクターに変更。(その後、初期スロットをアイテムにしています)

そんな中で同様に炸裂弾でブレイクさせて戦闘突入。ヴィクトルとルトガーによるフレンドアクションを実行すると

  • 「戦闘が止まる」(フィールドに戻らない)
  • 戦闘終了時の勝利モーションが入らない

という2つの不具合が発生しました……。

なお、プレイヤーキャラクターをユミアで固定してフレンドアクションを実行しても、これは(回避策でも書かれているとおり)何も起きないという仕様は確認。

この、検証を確認しようと思ったら新たな謎に直面しました。

ケーススタディ:Gemini nano banana 9/19以降の仕様変更によるアスペクト比固定の状態でのWebサイトバナー作成。

2025年8月頃に颯爽と現れたGoogle画像生成(Gemini nano banana)。

利用者激増により2025年9月19日頃から

  • 機能制限(アスペクト比1:1固定)
  • フィルター強化

の2つが課せられました。(これを修正していくと答えている/このままで行くの情報が錯綜しています)

それを回避しつつ、WordpressやBookStackのバナーとなるような画像を作っていきます。

1:1でも参照できるプロンプトを生成

プロンプトそのものを生成AIに代筆してもらいます。いくつか相談を重ね、以下のようなプロンプトができあがりました。

**Style / Format:**
Anime / manga style illustration (moe-inspired).
Framed as a **16:9 widescreen rectangle**, neutral/empty space only at top and bottom.
**Top-down / bird’s-eye perspective**, slight wide-angle lens effect.

**Setting:**

* Lake surrounded by forest, serene summer atmosphere.
* Transparent water showing subtle underwater details (driftwood, small fish) without stealing focus.
* Gentle sunlight reflecting on water surface.

**Character:**

* Woman wearing glasses. **Winking with a soft, gentle smile**, giving a friendly and approachable expression.
* Seated in a small boat, visible from above.

**Outfit & Accessories:**

* White sleeveless shirt (light, slightly transparent).
* Subtle hint of glossy emerald-colored swimsuit underneath (implied, not explicit).
* Elegant layered robe, shoulder-exposed dark-green and black elements.
* Collar and ribbon-style silk tie arranged elegantly.
* Subtle emerald-colored accessories.
* Sheer patterned black pantyhose, glossy reflections.
* Silver-toned pumps.

**Scene / Action:**

* Sitting on boat edge, feet touching lake (bird’s-eye view).
* Reading a book, gently interacting with water.
* Boat carries small stack of books.
* Black laptop placed naturally; screen/keyboard subtly visible with browser open.
* **Laptop features a stylish, original snake sticker (not Slytherin), black with yellow trim, integrated naturally).**
* Water surface shows large, decorative **“BookStack”** text, slightly distorted by ripples.

**Camera / Composition:**

* Main subject fits central 16:9 area; extra neutral space only at top/bottom.
* Bird’s-eye view emphasizes character, boat, books, water.
* Ripples and transparent underwater elements enhance realism without stealing focus.

**Details / Effects:**

* Textures, layering, and relaxed lakeside atmosphere emphasized.
* Hair and clothing gently moving in breeze.
* Water reflections and subtle shimmer on laptop surface.
* Subtle glossy black swimsuit hint integrated naturally.
* BookStack lettering harmoniously blended with water ripples.
* Snake sticker clearly visible but elegant, unmistakably original design, avoiding any IP references.
* **Facial expression soft, charming, with a wink and gentle smile to enhance approachable, playful mood.**

日本語はこちらです。

スタイル / フォーマット:
アニメ・漫画風イラスト(萌え系)。
16:9ワイドスクリーンの長方形にフレーム、上下にのみ余白を確保。
上空俯瞰視点(トップダウン/バードアイビュー)、やや広角レンズ効果を想定。

舞台設定:

  • 森に囲まれた湖、穏やかな夏の雰囲気。
  • 水は透明で、流木や小魚などの水中ディテールがうっすら見える(キャラクターの焦点を奪わない程度)。
  • やわらかく反射する日差し。

キャラクター:

  • 眼鏡をかけた女性。ウィンクして優しい微笑みを浮かべ、親しみやすい表情
  • 小さなボートに座っており、上空から見下ろした構図で描かれる。

衣装・アクセサリー:

  • 白いノースリーブシャツ(軽く、端は少し透け感あり)。
  • 光沢のあるエメラルド色の水着をさりげなく下に着用(暗示的で、直接的には見せない)。
  • 肩を出した、落ち着いたダークグリーンと黒のレイヤードローブ。
  • 襟とリボンタイをエレガントにアレンジ。
  • さりげないエメラルド色のアクセサリー。
  • パターン入り黒ストッキング(全脚)、光沢感あり。
  • シルバー系パンプス。

シーン・アクション:

  • ボートの縁に座り、足を湖に触れさせる(俯瞰視点)。
  • 本を読みつつ、そっと水に触れる。
  • ボートには小さな本の山を積んでいる。
  • 黒いノートPCを自然に配置、画面・キーボードがうっすら見える(ブラウザ表示)。
  • PCにはスタイリッシュなオリジナル蛇ステッカー(スリザリンではない)、黒地に黄色の縁取りが自然に貼られている。
  • 水面には大きく装飾された 「BookStack」 の文字、波紋でわずかに歪む。

カメラ・構図:

  • メイン被写体は中央の16:9エリアに収め、余白は上下のみ。
  • 上空視点でキャラクター、ボート、本、湖を強調。
  • 水面の反射や波紋、透明な水中要素によりリアリティを増すが、焦点を奪わない。

ディテール・エフェクト:

  • 衣服の質感やレイヤード感、穏やかな湖畔の雰囲気を強調。
  • 髪や衣服はそよ風にやわらかく揺れる。
  • 水面の反射やPC表面の微かな光沢。
  • さりげなく示唆された光沢黒水着。
  • BookStack文字は水面の波紋に調和して描かれる。
  • 蛇ステッカーははっきり見えるが、エレガントで独自デザイン、IP参照はなし。
  • 顔の表情は柔らかく魅力的で、ウィンクと優しい微笑みにより、親しみやすく遊び心のある雰囲気を演出。

こうして生成された画像(Gemini 2.5 Flash)がこちら。

見ての通り、1:1の正方形であるものの、バナーとして切り出しやすいものになっています。

画像の切り取り

ここまで来れば画像をフルサイズでのダウンロード。

保存した画像を適当な画像編集ソフトで切り出していきます。(極端な話、ペイントでも余裕で切り出せます)

後は、これをWordpressのアイキャッチとして設定。

まとめ

この、

プロンプトが分からなければAI自体に相談。(ChatGPTはこういうノリは強いです)

をしていくことで

  1. 視覚的魅力を保ちながら安全性を確保
  2. アスペクト比や画角の問題も回避
  3. IPフィルターやセーフティフィルターを回避していく

方法を採ることができました。

9月の差しボードゲームの記録。

今年買ったボードゲームを中心に回しました。

ひらがじゃん

東南4局の半荘で。1点差でなんとか勝利。

  • 雀頭の2文字の受けが広い
  • 名詞縛りが結構キツい

という認識でした。

祝宴の夜に

引きに恵まれ圧勝。

  • インスト簡単
  • サクサクすすみ
  • ジレンマ満載

の非常にいいゲームです。

リビングフォレスト デュエル

一差で敗北(守護獣を固められました)。最初は全然分からなかったゲームではありましたが、いざ何回かプレイするとすんなりと説明できるのが印象的でした。

宝石の煌めき デュエル

  • 一列を10点以上
  • トータルで20点以上(見切れているところに貴族の2点)

の勝利条件を同時に達成という快挙。うまくエメラルドを固め取りできたのが幸いしました。

デュエル系の作品が増えたことで、差しボードゲームの選択肢も増えたという印象です。

Growiのフォントをサーバ内のフリーフォントに変更。

Growiの表示フォントを、サーバー内に配置したカスタムフォント(kiloji)に変更するメモを記します。

BookStackと同じような方法でいけるかと思いましたが、Apacheの追加設定が必要でした。

環境(作業の前提条件)

  • Growi v7.3.0
    • Growiの実行ユーザはroot
  • Ubuntu 24.04
  • Apache 2.4によるリバースプロキシ
    • 結果的に、これが解決策でした。

さっくりとした手順

  1. フォントの配置(フォントはこちらを参考に)
  2. Webサーバの設定変更
  3. カスタムCSSの追加
  4. フォント変更確認

フォントファイルの配置

Webブラウザからアクセスできる公開ディレクトリに、使用したいフォントファイルを設置します。上記リンク先に示した「kiloji」を使います。

  • ディレクトリ移動
cd /path/to/growi/packages/preset-themes/public

/path/to/growiは自分の環境に合わせます。(筆者環境/home/www-data/growi)

  • フォント格納ディレクトリ作成
sudo mkdir -p ./fonts/kiloji
  • フォント格納

上記ディレクトリ(筆者例では/home/www-data/growi/fonts/kiloji)

にフォント一式を格納します。

Webサーバー(Apache)の設定ファイルを変更

この設定がハマった部分です。というのも、Growiの使用上、

https://【growi】/fonts/kiloji.wof

などにアクセスしても、アプリはURLとして解釈してしまうからです。

そのため、リバースプロキシで運用しているApacheのconfファイル/etc/apache2/sites-available/growi.confなどの修正を行います。

  • ファイルバックアップ
sudo cp -pi /etc/apache2/sites-available/growi.conf /path/to/backup/directory/growi.conf.$(date +%Y%m%d)
  • ファイルバックアップ確認
diff -u /path/to/backup/directory/growi.conf.$(date +%Y%m%d) /etc/apache2/sites-available/growi.conf

→ 差分がなければ(エラーが表示されなければ)バックアップ成功です。

  • ファイル編集

※編集前

FileETag None 

<FilesMatch "\.(js|css|png|jpg|gif|svg|woff2?)$">
    Header set Cache-Control "public, max-age=31536000, immutable"
</FilesMatch>

# リバースプロキシー設定
RewriteEngine on
RewriteCond %{HTTP:Upgrade} websocket [NC]
RewriteRule /(.*) ws://localhost:3000/$1 [P,L]

ProxyPass        / http://localhost:3000/
ProxyPassReverse / http://localhost:3000/

※編集後

これは、リバーズプロキシ設定の直情に記載します。

# (1) 静的ファイル(フォントなど)のキャッシュ設定
FileETag None
<FilesMatch "\.(js|css|png|jpg|gif|svg|woff2?)$">
    Header set Cache-Control "public, max-age=31536000, immutable"
</FilesMatch>

# (2) /fonts/ ディレクトリの場所をApacheに教える【重要:この部分を追加してください】
Alias "/fonts/" "/home/www-data/growi/packages/preset-themes/public/fonts/"
<Directory "/home/www-data/growi/packages/preset-themes/public/fonts/">
    Require all granted
</Directory>

# (3) /fonts/ へのアクセスはプロキシの対象から除外する
ProxyPass "/fonts/" "!"

※差分(以下のコマンドを発行して差分を確認)

-FileETag None 
-
+# (1) 静的ファイル(フォントなど)のキャッシュ設定
+FileETag None
 <FilesMatch "\.(js|css|png|jpg|gif|svg|woff2?)$">
     Header set Cache-Control "public, max-age=31536000, immutable"
 </FilesMatch>

+
+# (2) /fonts/ ディレクトリの場所をApacheに教える【重要:この部分を追加してください】
+Alias "/fonts/" "/home/www-data/growi/packages/preset-themes/public/fonts/"
+<Directory "/home/www-data/growi/packages/preset-themes/public/fonts/">
+    Require all granted
+</Directory>
+
+
+# (3) /fonts/ へのアクセスはプロキシの対象から除外する
+ProxyPass "/fonts/" "!"
+
 # リバースプロキシー設定
 RewriteEngine on
 RewriteCond %{HTTP:Upgrade} websocket [NC]
diff -u /path/to/backup/directory/growi.conf.$(date +%Y%m%d) /etc/apache2/sites-available/growi.conf

設定反映を確認します。

  • 構文確認
sudo apache2ctl configtest

Syntax OKを確認します。

  • サービス再起動
sudo systemctl restart apache2.service
  • サービス再起動確認
systemctl status apache2.service

active (running)を確認します。

GrowiのカスタムCSS設定

  1. Growiに管理者としてログインします。
  2. 「管理」>「カスタマイズ」を開きます。
  3. 「カスタムCSS」のテキストボックスに、以下のCSSコードを貼り付ける。 /* --- フォントの定義 --- */ @font-face { font-family: 'kiloji'; font-style: normal; font-weight: normal; src: url('/fonts/kiloji/kiloji.woff2') format('woff2'), url('/fonts/kiloji/kiloji.woff') format('woff'), url('/fonts/kiloji/kiloji.ttf') format('truetype'); } @font-face { font-family: 'kiloji'; font-style: normal; font-weight: bold; src: url('/fonts/kiloji/kiloji_b.woff2') format('woff2'), url('/fonts/kiloji/kiloji_b.woff') format('woff'), url('/fonts/kiloji/kiloji_b.ttf') format('truetype'); } /* --- フォントの適用 (アイコンを壊さない修正版) --- */ body, .growi, .page-main, .wiki, .sidebar-content, h1, h2, h3, h4, h5, h6, p, li, .btn, a, input, textarea { font-family: 'kiloji', sans-serif !important; } /* 基本の文字サイズを改めて指定 */ body { font-size: 16px; }
  4. ページ下部の更新ボタンを押し、設定を保存します。
  5. ブラウザでGrowiのページを開き、キャッシュをクリアして再読み込み(Ctrl + Shift + R)し、フォントが変わっていることを確認できれば作業完了です。

まとめ

今回、この手順がうまくいったのはひとえに「Apacheによるリバースプロキシ化」でした。

http://【growiサイト】:3000

のように、直接(Growiのような)nodeアプリに接続していたら、フォントファイルを透過させるかのようにアクセスさせることは難しかったでしょう。

BookStackのフォントをサーバ内のフリーフォントに変更。

BookStackの表示フォントを、サーバー内に配置したカスタムフォント(kiloji)に変更したときのメモです。

これには2つの目的があります。

  • 見た目を変えて独自性を出す。
  • サーバ内にあるフォントを指定することで読み込み速度を大幅に上げる。

環境

  • BookStack v25.07.2
  • PHP 8.3
  • MySQL 8
  • Apache 2.4
    • Apacheの実行ユーザはwww-data

さっくりとした手順

  1. カスタムフォントを用意します。
  2. BookStackのpublicフォルダにフォントファイルを格納します。
  3. カスタムCSSを設定します。
  4. 設定を確認します。

カスタムフォントを用意します。

今回用いたのは手書きボールペンのようなフォント、きろ字。(フリーで使えるフォントです)

公式サイトからフォントファイル一式をダウンロードします。

使うフォントファイルは

  • kiroji.ttf
  • kiroji.woff
  • kiroji.woff2
  • kiroji_b.ttf
  • kiroji_b.woff
  • kiroji_b.woff2

となっています。ダウンロード後、サーバの適当な位置に格納します。

BookStackのファイルにフォントを格納します。

  • BookStackのpublicディレクトリに移動
cd /path/to/bookstack/public && pwd

自分の環境に合わせます。(筆者環境 /home/www-data/BookStack/public)

  • fontsディレクトリを作成します。
sudo -u www-data mkdir -p fonts/kiloji
  • フォントファイルの格納
sudo -u www-data cp -pi /path/to/fonts/directory/kiroji*woff2 /path/to/bookstack/public/fonts/kiloji/
  • フォントファイルの格納確認
ls -l /path/to/bookstack/public/fonts/kiloji/

追加したフォントがあることを確認します。

カスタムCSSを修正します。

ブラウザでBookStackにアクセスし、管理者権限でログインします。

設定>カスタマイズに移動します。

「カスタムheadタグ」のテキストボックスに、以下のCSSコードを貼り付けます。

<style>
/* --- フォントの定義 --- */

/* 1. 通常の太さのフォントを 'kiloji' として定義 */
@font-face {
  font-family: 'kiloji';
  font-style: normal;
  font-weight: normal;
  src: url('/fonts/kiloji/kiloji.woff2') format('woff2'),
       url('/fonts/kiloji/kiloji.woff') format('woff'),
       url('/fonts/kiloji/kiloji.ttf') format('truetype');
}

/* 2. 太字用のフォントを、同じ 'kiloji' という名前で定義 */
@font-face {
  font-family: 'kiloji';
  font-style: normal;
  font-weight: bold;
  src: url('/fonts/kiloji/kiloji_b.woff2') format('woff2'),
       url('/fonts/kiloji/kiloji_b.woff') format('woff'),
       url('/fonts/kiloji/kiloji_b.ttf') format('truetype');
}

/* --- フォントの適用 --- */

/* 1. ページ全体の基準となる文字サイズとフォントを指定 */
body {
  font-family: 'kiloji', sans-serif !important;
  font-size: 16px; /* ← この数値で大きさを調整 */
}

/* 2. 見出しやナビゲーションなど、個別にフォントが指定されている箇所にも適用 */
h1, h2, h3, h4, h5, h6, .btn, a, input, textarea,
.page-nav, .sidebar-page-nav a, .tri-layout-container, .chapter-contents, .book-contents a {
  font-family: 'kiloji', sans-serif !important;
}
</style>

適用後、ページ下部の「設定を保存」ボタンをクリックします。

設定変更確認

BookStackにアクセスし、指定したフォントに替わっていたら設定変更です。

補足:最初の試行(一部のみフォントが変わったCSS)

以下は、bodyタグにのみフォントを指定した最初のコードです。見出しなど、個別にCSSが設定されている要素には適用されませんでした。

<style>
@font-face {
  font-family: 'kiloji';
  font-style: normal;
  font-weight: normal; 
  src: url('/fonts/kiloji/kiloji.woff2') format('woff2');
}
@font-face {
  font-family: 'kiloji';
  font-style: normal;
  font-weight: bold; 
  src: url('/fonts/kiloji/kiloji_b.woff2') format('woff2');
}
body {
  font-family: 'kiloji', sans-serif !important;
}
</style>

Page 4 of 271

Powered by WordPress & Theme by Anders Norén