<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
    <channel>
        <title><![CDATA[おわらない | ブログ記事]]></title>
        <description><![CDATA[ブログ記事の更新情報]]></description>
        <link>https://apxxxxxxe.dev/</link>
        <generator>RSS for Node</generator>
        <lastBuildDate>Wed, 09 Sep 2026 09:10:56 GMT</lastBuildDate>
        <atom:link href="https://apxxxxxxe.dev/rss/blog_rss.xml" rel="self" type="application/rss+xml"/>
        <language><![CDATA[ja]]></language>
        <atom:link href="https://pubsubhubbub.appspot.com/" rel="hub"/>
        <item>
            <title><![CDATA[20260416]]></title>
            <link>https://apxxxxxxe.dev/blog/entries/zakki202604161658</link>
            <guid isPermaLink="false">https://apxxxxxxe.dev/blog/entries/zakki202604161658</guid>
            <pubDate>Thu, 16 Apr 2026 00:00:00 GMT</pubDate>
            <content:encoded>&lt;p class=&quot;article-p&quot;&gt;雑記的な記事をブログから &lt;a href=&quot;https://apxxxxxxe.dev/random/&quot; class=&quot;article-a&quot;&gt;雑記&lt;/a&gt; へ移動させました&lt;br&gt;
RSSも分離しています&lt;/p&gt;
</content:encoded>
        </item>
        <item>
            <title><![CDATA[20260103]]></title>
            <link>https://apxxxxxxe.dev/blog/entries/zakki202601031113</link>
            <guid isPermaLink="false">https://apxxxxxxe.dev/blog/entries/zakki202601031113</guid>
            <pubDate>Sat, 03 Jan 2026 00:00:00 GMT</pubDate>
            <content:encoded>&lt;p class=&quot;article-p&quot;&gt;ブログ記事のRSSフィードについて、全記事だけではなくタグ別に絞り込んだ結果（&lt;a href=&quot;https://apxxxxxxe.dev/blog/search/ukagaka/&quot; class=&quot;article-a&quot;&gt;例：#ukagaka タグ&lt;/a&gt;）も個別にフィードを配信するようにしました。&lt;br&gt;
特定タグのついた記事のみ購読したい場合などにご利用ください。&lt;/p&gt;
</content:encoded>
        </item>
        <item>
            <title><![CDATA[SSP起動時にお気に入りのゴーストをランダムに起動する方法]]></title>
            <link>https://apxxxxxxe.dev/blog/entries/random_boot</link>
            <guid isPermaLink="false">https://apxxxxxxe.dev/blog/entries/random_boot</guid>
            <pubDate>Sat, 27 Dec 2025 00:00:00 GMT</pubDate>
            <content:encoded>&lt;h2 class=&quot;article-h2&quot; id=&quot;3行で要約&quot;&gt;3行で要約&lt;/h2&gt;
&lt;ul class=&quot;article-ul&quot;&gt;
&lt;li&gt;自分はSSPのフォルダ機能でゴーストを起動頻度や企画別にフォルダ分けしている&lt;/li&gt;
&lt;li&gt;今のところSSPの機能では&lt;strong&gt;特定フォルダから&lt;/strong&gt;ランダムにゴーストを起動することは（多分）できない&lt;/li&gt;
&lt;li&gt;バッチファイルを作成することで実現できた&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class=&quot;article-h2&quot; id=&quot;まえがき&quot;&gt;まえがき&lt;/h2&gt;
&lt;p class=&quot;article-p&quot;&gt;SSPにはランダムなゴーストを起動してくれる便利な機能がありますが、&lt;strong&gt;全ゴーストの中から&lt;/strong&gt;ではなく&lt;strong&gt;特定のフォルダの中から&lt;/strong&gt;ランダムに起動したいと思ったことはないでしょうか。私はありました。&lt;/p&gt;
&lt;p class=&quot;article-p&quot;&gt;いろいろ調べてみたものの、SSP標準の機能だけでは実現できなさそうだったので、バッチファイルを書いて解決することにしました。この記事ではその方法を紹介します。&lt;/p&gt;
&lt;p class=&quot;article-p&quot;&gt;同じことをやりたい方の参考になれば幸いです。&lt;/p&gt;
&lt;h2 class=&quot;article-h2&quot; id=&quot;前提&quot;&gt;前提&lt;/h2&gt;
&lt;h3 class=&quot;article-h3&quot; id=&quot;sspの便利機能&quot;&gt;SSPの便利機能&lt;/h3&gt;
&lt;p class=&quot;article-p&quot;&gt;SSPでは、設定項目&lt;br&gt;
&lt;code&gt;設定 → ゴースト(1) → ゴーストを1つランダムに選択して起動(前回終了時の状態は破棄)&lt;/code&gt;&lt;br&gt;
をオンにすることで起動時にランダムなゴーストを起動することができます。普段起動しないゴーストに偶然会える便利な機能だと思います。&lt;/p&gt;
&lt;div&gt;&lt;div class=&quot;my-5 flex flex-col justify-center items-center&quot;&gt;&lt;a href=&quot;/contents/random_boot/random.png&quot;&gt;&lt;img src=&quot;/contents/random_boot/random.png&quot; alt=&quot;&quot; class=&quot;w-min h-auto&quot;&gt;&lt;/a&gt;&lt;p&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h3 class=&quot;article-h3&quot; id=&quot;自分の環境&quot;&gt;自分の環境&lt;/h3&gt;
&lt;p class=&quot;article-p&quot;&gt;SSPはフォルダ機能によりゴーストを複数のフォルダに分割して配置することができます。&lt;br&gt;
私はこれを使って特によく起動するゴーストたちをFavoriteフォルダに区分けしています。&lt;/p&gt;
&lt;div&gt;&lt;div class=&quot;my-5 flex flex-col justify-center items-center&quot;&gt;&lt;a href=&quot;/contents/random_boot/folders.png&quot;&gt;&lt;img src=&quot;/contents/random_boot/folders.png&quot; alt=&quot;&quot; class=&quot;w-min h-auto&quot;&gt;&lt;/a&gt;&lt;p&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h2 class=&quot;article-h2&quot; id=&quot;お気に入りフォルダ内のゴーストからランダムに起動したい&quot;&gt;お気に入りフォルダ内のゴーストからランダムに起動したい&lt;/h2&gt;
&lt;p class=&quot;article-p&quot;&gt;あるとき、起動時にランダム起動するゴーストの候補をお気に入りフォルダに絞りたいと考えました。&lt;/p&gt;
&lt;h3 class=&quot;article-h3&quot; id=&quot;フォルダ設定-ランダム切り替えの対象にしない-をオンにする失敗&quot;&gt;フォルダ設定 &lt;code&gt;ランダム切り替えの対象にしない&lt;/code&gt; をオンにする（失敗）&lt;/h3&gt;
&lt;p class=&quot;article-p&quot;&gt;フォルダ設定には「ランダム切り替えの対象にしない」というものがあったため、お気に入りフォルダを除く全てのフォルダでこれをオンにしました。&lt;br&gt;
しかしこれで防げるのはさくらスクリプト &lt;code&gt;\+&lt;/code&gt; によるランダム起動などで、上記のランダム起動は適用対象外のようでした。&lt;/p&gt;
&lt;div&gt;&lt;div class=&quot;my-5 flex flex-col justify-center items-center&quot;&gt;&lt;a href=&quot;/contents/random_boot/random_exclude.png&quot;&gt;&lt;img src=&quot;/contents/random_boot/random_exclude.png&quot; alt=&quot;&quot; class=&quot;w-min h-auto&quot;&gt;&lt;/a&gt;&lt;p&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h3 class=&quot;article-h3&quot; id=&quot;起動オプション-g-とバッチファイルを組み合わせる成功&quot;&gt;起動オプション &lt;code&gt;/g&lt;/code&gt; とバッチファイルを組み合わせる（成功）&lt;/h3&gt;
&lt;p class=&quot;article-p&quot;&gt;&lt;a href=&quot;https://ssp.shillest.net/ukadoc/ssphelp/option.html&quot; class=&quot;article-a&quot;&gt;SSPの起動オプション&lt;/a&gt; では、&lt;code&gt;/g&lt;/code&gt; オプションを指定することで起動時に指定したゴーストを起動できます。&lt;br&gt;
つまり外部スクリプトで候補の中から1つゴーストを選択する処理を作ることができれば、上記機能と組み合わせることで「お気に入りフォルダ内のゴーストからランダムに起動」は実現できそうです。&lt;/p&gt;
&lt;p class=&quot;article-p&quot;&gt;→できました。&lt;/p&gt;
&lt;pre class=&quot;code-block&quot;&gt;&lt;code&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;1&amp;#x22;&quot;&gt;@echo off&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;2&amp;#x22;&quot;&gt;chcp 65001 &gt;nul&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;3&amp;#x22;&quot;&gt;setlocal enabledelayedexpansion&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;4&amp;#x22;&quot;&gt;rem === 設定 ===&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;5&amp;#x22;&quot;&gt;set &quot;SSP_DIRECTORY=C:\Users\user1\Ukagaka\ssp&quot;&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;6&amp;#x22;&quot;&gt;set &quot;GHOSTS_DIRECTORY=C:\Users\user1\Ukagaka\Ukagaka-Ghost\Favorite&quot;&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;7&amp;#x22;&quot;&gt;rem === ゴーストフォルダ直下のディレクトリを列挙してカウント ===&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;8&amp;#x22;&quot;&gt;set count=0&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;9&amp;#x22;&quot;&gt;for /d %%d in (&quot;%GHOSTS_DIRECTORY%\*&quot;) do (&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;10&amp;#x22;&quot;&gt;    set /a count+=1&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;11&amp;#x22;&quot;&gt;    set &quot;dir_!count!=%%~nxd&quot;&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;12&amp;#x22;&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;13&amp;#x22;&quot;&gt;rem === ディレクトリが見つからない場合 ===&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;14&amp;#x22;&quot;&gt;if %count%==0 (&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;15&amp;#x22;&quot;&gt;    echo エラー: %GHOSTS_DIRECTORY% にフォルダが見つかりませんでした。&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;16&amp;#x22;&quot;&gt;    pause&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;17&amp;#x22;&quot;&gt;    exit /b 1&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;18&amp;#x22;&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;19&amp;#x22;&quot;&gt;rem === ランダムに1つ選択 ===&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;20&amp;#x22;&quot;&gt;set /a &quot;rand=(%RANDOM% %% count) + 1&quot;&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;21&amp;#x22;&quot;&gt;set &quot;selected=!dir_%rand%!&quot;&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;22&amp;#x22;&quot;&gt;rem === ssp.exe を実行 ===&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;23&amp;#x22;&quot;&gt;start &quot;&quot; &quot;%SSP_DIRECTORY%\ssp.exe&quot; /g &quot;%GHOSTS_DIRECTORY%\%selected%&quot;&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;24&amp;#x22;&quot;&gt;endlocal&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 class=&quot;article-h2&quot; id=&quot;使い方&quot;&gt;使い方&lt;/h2&gt;
&lt;p class=&quot;article-p&quot;&gt;メモ帳などで新規ファイルを作成し、上記コードをコピペします。&lt;br&gt;
コードの冒頭にある設定部分は、各自の環境に合わせて書き換えてください。&lt;/p&gt;
&lt;pre class=&quot;code-block&quot;&gt;&lt;code&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;1&amp;#x22;&quot;&gt;set &quot;SSP_DIRECTORY=C:\Users\user1\Ukagaka\ssp&quot;&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;2&amp;#x22;&quot;&gt;set &quot;GHOSTS_DIRECTORY=C:\Users\user1\Ukagaka\Ukagaka-Ghost\Favorite&quot;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;ul class=&quot;article-ul&quot;&gt;
&lt;li&gt;&lt;code&gt;SSP_DIRECTORY&lt;/code&gt;：SSPのインストールフォルダ（ssp.exeがある場所）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;GHOSTS_DIRECTORY&lt;/code&gt;：ランダム起動の対象にしたいゴーストが入っているフォルダ&lt;/li&gt;
&lt;/ul&gt;
&lt;p class=&quot;article-p&quot;&gt;設定ができたら、適当な場所に &lt;code&gt;random_boot.bat&lt;/code&gt; のような拡張子 &lt;code&gt;.bat&lt;/code&gt; のファイルとして保存します。&lt;br&gt;
保存後はこのバッチファイルをダブルクリックするだけで起動できます。&lt;/p&gt;
&lt;h3 class=&quot;article-h3&quot; id=&quot;蛇足windows起動時に自動実行する&quot;&gt;蛇足：Windows起動時に自動実行する&lt;/h3&gt;
&lt;p class=&quot;article-p&quot;&gt;このバッチファイル（またはそのショートカット）をスタートアップフォルダに配置すると、Windows起動時に自動でランダムなゴーストが立ち上がるようになります。&lt;/p&gt;
&lt;p class=&quot;article-p&quot;&gt;スタートアップフォルダは、エクスプローラーのアドレスバーに &lt;code&gt;shell:startup&lt;/code&gt; と入力すると開けます。&lt;/p&gt;
&lt;h2 class=&quot;article-h2&quot; id=&quot;まとめ&quot;&gt;まとめ&lt;/h2&gt;
&lt;p class=&quot;article-p&quot;&gt;SSP標準のランダム起動機能は全ゴーストが対象になってしまいますが、起動オプション &lt;code&gt;/g&lt;/code&gt; と外部スクリプトを組み合わせることで、特定フォルダ内のゴーストに限定したランダム起動を実現できました。&lt;/p&gt;
</content:encoded>
        </item>
        <item>
            <title><![CDATA[ゴースト「Crave The Grave」 12/17 の更新で発生したバグについて]]></title>
            <link>https://apxxxxxxe.dev/blog/entries/bugfix20251218</link>
            <guid isPermaLink="false">https://apxxxxxxe.dev/blog/entries/bugfix20251218</guid>
            <pubDate>Thu, 18 Dec 2025 00:00:00 GMT</pubDate>
            <content:encoded>&lt;p class=&quot;article-p&quot;&gt;12/17の更新において、セーブデータの互換性に関する重大な不具合がありました。&lt;/p&gt;
&lt;h3 class=&quot;article-h3&quot; id=&quot;発生した問題&quot;&gt;発生した問題&lt;/h3&gt;
&lt;p class=&quot;article-p&quot;&gt;更新時にセーブデータの形式を変更しましたが、&lt;br&gt;
旧形式（v1.2.1以前）からの移行処理に不備があり、既存のセーブデータが正しく読み込めない状態となっていました。&lt;br&gt;
その結果、これまでの進行状況が初期化されてしまう現象が発生しておりました。&lt;/p&gt;
&lt;h3 class=&quot;article-h3&quot; id=&quot;対応内容&quot;&gt;対応内容&lt;/h3&gt;
&lt;p class=&quot;article-p&quot;&gt;現在は以下の修正を完了しています。&lt;/p&gt;
&lt;ul class=&quot;article-ul&quot;&gt;
&lt;li&gt;旧形式のセーブデータを正しく読み込めるように修正&lt;/li&gt;
&lt;li&gt;セーブデータの一部に問題があっても、読み込める部分は保持するように改善&lt;/li&gt;
&lt;li&gt;読み込み失敗時にデータが意図せず初期化される問題を修正&lt;/li&gt;
&lt;li&gt;読み込みエラー発生時にベースウェアへ通知を行うように変更&lt;/li&gt;
&lt;/ul&gt;
&lt;hr class=&quot;border-t my-5&quot;&gt;
&lt;p class=&quot;article-p&quot;&gt;もし同様の現象が発生していた方は、最新版への更新をお願いいたします。ただし、既に初期化されてしまったデータを復旧する手段はございません。重ねてお詫び申し上げます。&lt;/p&gt;
&lt;p class=&quot;article-p&quot;&gt;セーブデータ形式の変更を伴う更新の際は互換性の検証を徹底し、&lt;br&gt;
同様の問題が発生しないよう努めてまいります。&lt;/p&gt;
&lt;p class=&quot;article-p&quot;&gt;ご不便をおかけし、誠に申し訳ございませんでした。&lt;br&gt;
引き続きよろしくお願いいたします。&lt;/p&gt;
</content:encoded>
        </item>
        <item>
            <title><![CDATA[12/18に拍手でCrave The Grave のバグ報告をくださった方へ]]></title>
            <link>https://apxxxxxxe.dev/blog/entries/zakki202512181230</link>
            <guid isPermaLink="false">https://apxxxxxxe.dev/blog/entries/zakki202512181230</guid>
            <pubDate>Thu, 18 Dec 2025 00:00:00 GMT</pubDate>
            <content:encoded>&lt;h2 class=&quot;article-h2&quot; id=&quot;バグ報告をくださった方へ&quot;&gt;バグ報告をくださった方へ&lt;/h2&gt;
&lt;p class=&quot;article-p&quot;&gt;ご報告ありがとうございます。また、楽しんでいただけているとのこと、大変嬉しく思います。&lt;/p&gt;
&lt;p class=&quot;article-p&quot;&gt;ご指摘いただいた件を調査しましたところ、  12/17の更新でセーブデータの形式を変更した際に、旧形式（v1.2.1以前）のセーブデータを読み込めなくなっていたことが原因でした。デバッグ用データの混入ではなく、こちらの互換性対応の不備によるものです。&lt;/p&gt;
&lt;p class=&quot;article-p&quot;&gt;現在は以下の修正を完了しています。&lt;/p&gt;
&lt;ul class=&quot;article-ul&quot;&gt;
&lt;li&gt;旧形式のセーブデータを正しく読み込めるように修正&lt;/li&gt;
&lt;li&gt;セーブデータの一部に問題があっても、読み込める部分は保持するように改善&lt;/li&gt;
&lt;li&gt;読み込み失敗時にデータが意図せず初期化される問題を修正&lt;/li&gt;
&lt;li&gt;読み込みエラー発生時にベースウェアへ通知を行うように変更&lt;/li&gt;
&lt;/ul&gt;
&lt;p class=&quot;article-p&quot;&gt;お手数をおかけしますが、最新版への更新をお願いいたします。  なお、既に初期化されてしまったデータについては復旧できず、大変申し訳ございません。&lt;br&gt;
今後はセーブデータ形式の変更時に互換性の確認を徹底いたします。&lt;/p&gt;
</content:encoded>
        </item>
        <item>
            <title><![CDATA[20251014]]></title>
            <link>https://apxxxxxxe.dev/blog/entries/zakki202510141008</link>
            <guid isPermaLink="false">https://apxxxxxxe.dev/blog/entries/zakki202510141008</guid>
            <pubDate>Tue, 14 Oct 2025 00:00:00 GMT</pubDate>
            <content:encoded>&lt;p class=&quot;article-p&quot;&gt;ギャラリーページにrssフィードを追加しました&lt;br&gt;
今後イラスト作品の更新はこちらを取得して確認いただければ幸いです&lt;/p&gt;
</content:encoded>
        </item>
        <item>
            <title><![CDATA[20251009]]></title>
            <link>https://apxxxxxxe.dev/blog/entries/zakki202510091441</link>
            <guid isPermaLink="false">https://apxxxxxxe.dev/blog/entries/zakki202510091441</guid>
            <pubDate>Thu, 09 Oct 2025 00:00:00 GMT</pubDate>
            <content:encoded>&lt;p class=&quot;article-p&quot;&gt;ギャラリーにイラストを1点追加しました&lt;br&gt;
カラーパレット縛りで描いたハイネです&lt;/p&gt;
</content:encoded>
        </item>
        <item>
            <title><![CDATA[20250924]]></title>
            <link>https://apxxxxxxe.dev/blog/entries/zakki202509241224</link>
            <guid isPermaLink="false">https://apxxxxxxe.dev/blog/entries/zakki202509241224</guid>
            <pubDate>Wed, 24 Sep 2025 00:00:00 GMT</pubDate>
            <content:encoded>&lt;p class=&quot;article-p&quot;&gt;サイト全体のレイアウトを調整しました&lt;br&gt;
2000年代のブログの雰囲気を目指してサイドバー付きのレイアウトにしたりしてみています&lt;/p&gt;
</content:encoded>
        </item>
        <item>
            <title><![CDATA[20250923]]></title>
            <link>https://apxxxxxxe.dev/blog/entries/zakki202509230741</link>
            <guid isPermaLink="false">https://apxxxxxxe.dev/blog/entries/zakki202509230741</guid>
            <pubDate>Tue, 23 Sep 2025 00:00:00 GMT</pubDate>
            <content:encoded>&lt;p class=&quot;article-p&quot;&gt;ヘッダーをいい感じにしました&lt;/p&gt;
</content:encoded>
        </item>
        <item>
            <title><![CDATA[20250723]]></title>
            <link>https://apxxxxxxe.dev/blog/entries/zakki202507232114_shinomiya</link>
            <guid isPermaLink="false">https://apxxxxxxe.dev/blog/entries/zakki202507232114_shinomiya</guid>
            <pubDate>Wed, 23 Jul 2025 00:00:00 GMT</pubDate>
            <content:encoded>&lt;p class=&quot;article-p&quot;&gt;ギャラリーにイラストを1点追加しました&lt;br&gt;
&lt;a href=&quot;https://nekoorinu.monster/ukagaka.html&quot; class=&quot;article-a&quot;&gt;紫ノ宮さん&lt;/a&gt;のお誕生日絵です&lt;/p&gt;
</content:encoded>
        </item>
        <item>
            <title><![CDATA[20250706]]></title>
            <link>https://apxxxxxxe.dev/blog/entries/zakki202507061500</link>
            <guid isPermaLink="false">https://apxxxxxxe.dev/blog/entries/zakki202507061500</guid>
            <pubDate>Sun, 06 Jul 2025 00:00:00 GMT</pubDate>
            <content:encoded>&lt;p class=&quot;article-p&quot;&gt;ギャラリーにイラストを1点追加しました&lt;br&gt;
推しのウマ娘のドット絵です&lt;/p&gt;
</content:encoded>
        </item>
        <item>
            <title><![CDATA[価値観4象限マトリクス]]></title>
            <link>https://apxxxxxxe.dev/blog/entries/value_four_matrix</link>
            <guid isPermaLink="false">https://apxxxxxxe.dev/blog/entries/value_four_matrix</guid>
            <pubDate>Mon, 30 Jun 2025 00:00:00 GMT</pubDate>
            <content:encoded>&lt;p class=&quot;article-p&quot;&gt;小戸らでくさんの&lt;a href=&quot;https://nekoorinu.monster/%E4%BC%BA%E3%81%8B%E3%83%BB%E4%BC%BA%E7%9A%84AdventCalendar202409&quot; class=&quot;article-a&quot;&gt;4象限マトリクス&lt;/a&gt;に触発され、自分でもテンプレートを考えてみました&lt;/p&gt;
&lt;div&gt;&lt;div class=&quot;my-5 flex flex-col justify-center items-center&quot;&gt;&lt;a href=&quot;/contents/value_four_matrix/%E4%BE%A1%E5%80%A4%E8%A6%B34%E8%B1%A1%E9%99%90%E3%83%9E%E3%83%88%E3%83%AA%E3%82%AF%E3%82%B9.png&quot;&gt;&lt;img src=&quot;/contents/value_four_matrix/%E4%BE%A1%E5%80%A4%E8%A6%B34%E8%B1%A1%E9%99%90%E3%83%9E%E3%83%88%E3%83%AA%E3%82%AF%E3%82%B9.png&quot; alt=&quot;&quot; class=&quot;w-min h-auto&quot;&gt;&lt;/a&gt;&lt;p&gt;&lt;/p&gt;&lt;/div&gt;
&lt;strong&gt;価値観4象限マトリクス&lt;/strong&gt;といいます&lt;/div&gt;
&lt;p class=&quot;article-p&quot;&gt;12のトピックについて、あるキャラクターがそれを好きか嫌いか、またそれを欲しいかいらないか（やりたいかやりたくないか）という2つの観点で度合いをマッピングします&lt;/p&gt;
&lt;p class=&quot;article-p&quot;&gt;キャラクターの価値観を掘り下げることを目的としています&lt;/p&gt;
&lt;h2 class=&quot;article-h2&quot; id=&quot;使用例&quot;&gt;使用例&lt;/h2&gt;
&lt;p class=&quot;article-p&quot;&gt;どのように使用するかの例として、私のゴーストでやってみました&lt;/p&gt;
&lt;h3 class=&quot;article-h3&quot; id=&quot;ハイネ&quot;&gt;ハイネ&lt;/h3&gt;
&lt;div&gt;&lt;div class=&quot;my-5 flex flex-col justify-center items-center&quot;&gt;&lt;a href=&quot;/contents/value_four_matrix/%E4%BE%A1%E5%80%A4%E8%A6%B34%E8%B1%A1%E9%99%90%E3%83%9E%E3%83%88%E3%83%AA%E3%82%AF%E3%82%B9-haine.png&quot;&gt;&lt;img src=&quot;/contents/value_four_matrix/%E4%BE%A1%E5%80%A4%E8%A6%B34%E8%B1%A1%E9%99%90%E3%83%9E%E3%83%88%E3%83%AA%E3%82%AF%E3%82%B9-haine.png&quot; alt=&quot;&quot; class=&quot;w-min h-auto&quot;&gt;&lt;/a&gt;&lt;p&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p class=&quot;article-p&quot;&gt;&lt;strong&gt;知識&lt;/strong&gt;：何でも知りたいわ&lt;br&gt;
&lt;strong&gt;アート&lt;/strong&gt;：自分で作るより鑑賞するのが好きよ&lt;br&gt;
&lt;strong&gt;挑戦&lt;/strong&gt;：変化を取り入れてこそ生活に張りが出るというもの&lt;br&gt;
&lt;strong&gt;仕事・勉強&lt;/strong&gt;：霊のコミュニティでの仕事　問題解決に取り組むのは好きよ&lt;br&gt;
&lt;strong&gt;友情&lt;/strong&gt;：対等な関係に憧れがあるの&lt;br&gt;
&lt;strong&gt;おしゃれ&lt;/strong&gt;：着飾っている人を見るのは好き　自分を飾ろうとは思わないけれど&lt;br&gt;
&lt;strong&gt;信仰&lt;/strong&gt;：教会の静謐な雰囲気は好ましいわ&lt;br&gt;
&lt;strong&gt;お金&lt;/strong&gt;：あって困るものではないけれど、依存は身を滅ぼすでしょうね&lt;br&gt;
&lt;strong&gt;睡眠&lt;/strong&gt;：最近はあまり取っていないわ　退屈していないもの&lt;br&gt;
&lt;strong&gt;名誉&lt;/strong&gt;：軽んじられなければそれ以上は求めないわ&lt;br&gt;
&lt;strong&gt;恋愛&lt;/strong&gt;：自由を縛るものだと思うわ　身体的、精神的にも&lt;br&gt;
&lt;strong&gt;食事&lt;/strong&gt;：ただただ、面倒　生きていた頃よりはマシだけれど&lt;/p&gt;
&lt;h3 class=&quot;article-h3&quot; id=&quot;ヨウト&quot;&gt;ヨウト&lt;/h3&gt;
&lt;div&gt;&lt;div class=&quot;my-5 flex flex-col justify-center items-center&quot;&gt;&lt;a href=&quot;/contents/value_four_matrix/%E4%BE%A1%E5%80%A4%E8%A6%B34%E8%B1%A1%E9%99%90%E3%83%9E%E3%83%88%E3%83%AA%E3%82%AF%E3%82%B9-youto.png&quot;&gt;&lt;img src=&quot;/contents/value_four_matrix/%E4%BE%A1%E5%80%A4%E8%A6%B34%E8%B1%A1%E9%99%90%E3%83%9E%E3%83%88%E3%83%AA%E3%82%AF%E3%82%B9-youto.png&quot; alt=&quot;&quot; class=&quot;w-min h-auto&quot;&gt;&lt;/a&gt;&lt;p&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p class=&quot;article-p&quot;&gt;&lt;strong&gt;食事&lt;/strong&gt;：食べるのは好き。成長期だねって言われる&lt;br&gt;
&lt;strong&gt;友情&lt;/strong&gt;：友達と毎日遊んでる。ゲームより外で体を動かすのが好き&lt;br&gt;
&lt;strong&gt;挑戦&lt;/strong&gt;：隣町に新しくできたスポーツショップに行ったりする&lt;br&gt;
&lt;strong&gt;アート&lt;/strong&gt;：図工の授業がかなり好き。夏休みの工作とか、自由に考えて作れるから好き&lt;br&gt;
&lt;strong&gt;知識&lt;/strong&gt;：雑学の本とか好きだよ&lt;br&gt;
&lt;strong&gt;お金&lt;/strong&gt;：おこづかいでお菓子を買うのは好き。でも無くてもあんまり困らないかも&lt;br&gt;
&lt;strong&gt;睡眠&lt;/strong&gt;：9時には寝てる。え、みんなそうじゃないの？&lt;br&gt;
&lt;strong&gt;おしゃれ&lt;/strong&gt;：興味はない…ことはないけど。あんまり前のめりでも変でしょ&lt;br&gt;
&lt;strong&gt;恋愛&lt;/strong&gt;：態度に出すと冷やかされるのが嫌&lt;br&gt;
&lt;strong&gt;名誉&lt;/strong&gt;：仲いい友達と楽しく過ごせれば、目立つとかはしなくていいかな&lt;br&gt;
&lt;strong&gt;仕事・勉強&lt;/strong&gt;： 退屈。45分も座ってるのしんどいよ&lt;br&gt;
&lt;strong&gt;信仰&lt;/strong&gt;：初詣などは行くけどそれだけ&lt;/p&gt;
&lt;h2 class=&quot;article-h2&quot; id=&quot;やってみよう&quot;&gt;やってみよう&lt;/h2&gt;
&lt;p class=&quot;article-p&quot;&gt;テンプレートpsdはこちらからダウンロードできます&lt;br&gt;
トピックの変更・追加はご自由にどうぞ&lt;br&gt;
psdの再配布は禁止とします&lt;/p&gt;
&lt;p class=&quot;article-p&quot;&gt;&lt;a href=&quot;https://apxxxxxxe.dev/contents/value_four_matrix/%E4%BE%A1%E5%80%A4%E8%A6%B34%E8%B1%A1%E9%99%90%E3%83%9E%E3%83%88%E3%83%AA%E3%82%AF%E3%82%B9.psd&quot; class=&quot;article-a&quot;&gt;価値観4象限マトリクス.psd&lt;/a&gt;&lt;/p&gt;
</content:encoded>
        </item>
        <item>
            <title><![CDATA[派生トークリクエスト機能]]></title>
            <link>https://apxxxxxxe.dev/blog/entries/zakki202506241516</link>
            <guid isPermaLink="false">https://apxxxxxxe.dev/blog/entries/zakki202506241516</guid>
            <pubDate>Tue, 24 Jun 2025 00:00:00 GMT</pubDate>
            <content:encoded>&lt;p class=&quot;article-p&quot;&gt;ハイネに派生トークリクエスト機能を追加しました&lt;/p&gt;
&lt;p class=&quot;article-p&quot;&gt;ダブルクリックメニューの歯車ボタンから設定一覧を開き、そこから設定をオンにすることでランダムトーク時にリクエストボタンが表示されるようになります&lt;br&gt;
リクエストボタンを押すとインプットボックスが表示され、web拍手経由で該当トークへの派生トークリクエストを送ることができます&lt;/p&gt;
&lt;p class=&quot;article-p&quot;&gt;各ランダムトーク、例えば服装にこだわりがないというトークに対して「服を選んであげようか？」という呼びかけをリクエストすることで、それに対する返答という形で派生トークが生える…かもしれません&lt;/p&gt;
&lt;p class=&quot;article-p&quot;&gt;派生トークが追加されたランダムトークは「トーク統計」画面から優先的に閲覧することができます&lt;/p&gt;
&lt;p class=&quot;article-p&quot;&gt;ご活用ください&lt;/p&gt;
</content:encoded>
        </item>
        <item>
            <title><![CDATA[20250615]]></title>
            <link>https://apxxxxxxe.dev/blog/entries/zakki202506150524</link>
            <guid isPermaLink="false">https://apxxxxxxe.dev/blog/entries/zakki202506150524</guid>
            <pubDate>Sun, 15 Jun 2025 00:00:00 GMT</pubDate>
            <content:encoded>&lt;p class=&quot;article-p&quot;&gt;成人向けギャラリーを作成しました　18歳以上の方のみ閲覧可とします&lt;br&gt;
あわせて成人向けギャラリーにハイネのR-18アニメーションを追加しています&lt;/p&gt;
</content:encoded>
        </item>
        <item>
            <title><![CDATA[June Bride]]></title>
            <link>https://apxxxxxxe.dev/blog/entries/zakki202506091229</link>
            <guid isPermaLink="false">https://apxxxxxxe.dev/blog/entries/zakki202506091229</guid>
            <pubDate>Mon, 09 Jun 2025 00:00:00 GMT</pubDate>
            <content:encoded>&lt;p class=&quot;article-p&quot;&gt;ギャラリーに絵を一枚追加しました&lt;br&gt;
ハイネのウェディングドレス絵です&lt;/p&gt;
</content:encoded>
        </item>
        <item>
            <title><![CDATA[4象限マトリクス]]></title>
            <link>https://apxxxxxxe.dev/blog/entries/four_matrix</link>
            <guid isPermaLink="false">https://apxxxxxxe.dev/blog/entries/four_matrix</guid>
            <pubDate>Mon, 02 Jun 2025 00:00:00 GMT</pubDate>
            <content:encoded>&lt;p class=&quot;article-p&quot;&gt;小戸らでくさんの「４象限マトリクス」を自ゴでやってみました。&lt;br&gt;
４象限マトリクスの詳細は&lt;a href=&quot;https://nekoorinu.monster/%E4%BC%BA%E3%81%8B%E3%83%BB%E4%BC%BA%E7%9A%84AdventCalendar202409&quot; class=&quot;article-a&quot;&gt;小戸らでくさんの紹介記事&lt;/a&gt;をご覧ください。&lt;/p&gt;
&lt;h2 class=&quot;article-h2&quot; id=&quot;待ち合わせ&quot;&gt;待ち合わせ&lt;/h2&gt;
&lt;div&gt;&lt;div class=&quot;my-5 flex flex-col justify-center items-center&quot;&gt;&lt;a href=&quot;/contents/four_matrix/%E5%BE%85%E3%81%A1%E5%90%88%E3%82%8F%E3%81%9B.png&quot;&gt;&lt;img src=&quot;/contents/four_matrix/%E5%BE%85%E3%81%A1%E5%90%88%E3%82%8F%E3%81%9B.png&quot; alt=&quot;&quot; class=&quot;w-[80%] mx-auto&quot;&gt;&lt;/a&gt;&lt;p&gt;&lt;/p&gt;&lt;/div&gt;
ハイネ:時間には厳格　でも暇な時間は思索にふければいくらでも潰せるので、よほどシビアなスケジュールでない限り遅刻には寛容&lt;br&gt;
ヨウト:何もなければまず遅れないけどアクシデントとかにはちょっと弱い　遅刻されることへの耐性はふつうくらい&lt;/div&gt;
&lt;h2 class=&quot;article-h2&quot; id=&quot;大きい方&quot;&gt;大きい方&lt;/h2&gt;
&lt;div&gt;&lt;div class=&quot;my-5 flex flex-col justify-center items-center&quot;&gt;&lt;a href=&quot;/contents/four_matrix/%E5%A4%A7%E3%81%8D%E3%81%84%E6%96%B9.png&quot;&gt;&lt;img src=&quot;/contents/four_matrix/%E5%A4%A7%E3%81%8D%E3%81%84%E6%96%B9.png&quot; alt=&quot;&quot; class=&quot;w-[80%] mx-auto&quot;&gt;&lt;/a&gt;&lt;p&gt;&lt;/p&gt;&lt;/div&gt;
ハイネ:食事に極端に関心がないのでいくらでも譲る&lt;br&gt;
ヨウト:そりゃいっぱい食べたいが食い意地張るのもな…と思いつつ食欲が勝つ&lt;/div&gt;
&lt;h2 class=&quot;article-h2&quot; id=&quot;筆跡&quot;&gt;筆跡&lt;/h2&gt;
&lt;div&gt;&lt;div class=&quot;my-5 flex flex-col justify-center items-center&quot;&gt;&lt;a href=&quot;/contents/four_matrix/%E7%AD%86%E8%B7%A1.png&quot;&gt;&lt;img src=&quot;/contents/four_matrix/%E7%AD%86%E8%B7%A1.png&quot; alt=&quot;&quot; class=&quot;w-[80%] mx-auto&quot;&gt;&lt;/a&gt;&lt;p&gt;&lt;/p&gt;&lt;/div&gt;
ヨウト:いわゆる男の子の字　書き取りとかを真面目にやるので比較的読みやすい&lt;br&gt;
ハイネ:自分が読めればいいような字を書いている　書類仕事で怒られるのでそういうときは気をつけている…が、客観的には依然としてのたくるような文字&lt;/div&gt;
&lt;h2 class=&quot;article-h2&quot; id=&quot;ずるいこと&quot;&gt;ずるいこと&lt;/h2&gt;
&lt;div&gt;&lt;div class=&quot;my-5 flex flex-col justify-center items-center&quot;&gt;&lt;a href=&quot;/contents/four_matrix/%E3%81%9A%E3%82%8B%E3%81%84%E3%81%93%E3%81%A8.png&quot;&gt;&lt;img src=&quot;/contents/four_matrix/%E3%81%9A%E3%82%8B%E3%81%84%E3%81%93%E3%81%A8.png&quot; alt=&quot;&quot; class=&quot;w-[80%] mx-auto&quot;&gt;&lt;/a&gt;&lt;p&gt;&lt;/p&gt;&lt;/div&gt;
ハイネ:抜け道上等　それで良い結果を獲得するなら自他ともに歓迎しがち&lt;br&gt;
ヨウト:いい子ちゃんがち　稚気は湧いても自制が効くタイプ&lt;/div&gt;
&lt;h2 class=&quot;article-h2&quot; id=&quot;ダンス&quot;&gt;ダンス&lt;/h2&gt;
&lt;div&gt;&lt;div class=&quot;my-5 flex flex-col justify-center items-center&quot;&gt;&lt;a href=&quot;/contents/four_matrix/%E3%83%80%E3%83%B3%E3%82%B9.png&quot;&gt;&lt;img src=&quot;/contents/four_matrix/%E3%83%80%E3%83%B3%E3%82%B9.png&quot; alt=&quot;&quot; class=&quot;w-[80%] mx-auto&quot;&gt;&lt;/a&gt;&lt;p&gt;&lt;/p&gt;&lt;/div&gt;
ふたりとも苦手&lt;br&gt;
ハイネ:運動全般が苦手&lt;br&gt;
ヨウト:下手なので人前ではやらないけど自分の部屋で好きな曲をかけて踊ったりする&lt;/div&gt;
&lt;h2 class=&quot;article-h2&quot; id=&quot;歌&quot;&gt;歌&lt;/h2&gt;
&lt;div&gt;&lt;div class=&quot;my-5 flex flex-col justify-center items-center&quot;&gt;&lt;a href=&quot;/contents/four_matrix/%E6%AD%8C.png&quot;&gt;&lt;img src=&quot;/contents/four_matrix/%E6%AD%8C.png&quot; alt=&quot;&quot; class=&quot;w-[80%] mx-auto&quot;&gt;&lt;/a&gt;&lt;p&gt;&lt;/p&gt;&lt;/div&gt;
ヨウト:わりとうまい　が、同級生からは逆に冷やかしを受けるのであまり歌いたがらない&lt;br&gt;
ハイネ:音痴　でも機嫌がいいとき鼻歌とかを歌う方&lt;/div&gt;
&lt;h2 class=&quot;article-h2&quot; id=&quot;夜食&quot;&gt;夜食&lt;/h2&gt;
&lt;div&gt;&lt;div class=&quot;my-5 flex flex-col justify-center items-center&quot;&gt;&lt;a href=&quot;/contents/four_matrix/%E5%A4%9C%E9%A3%9F.png&quot;&gt;&lt;img src=&quot;/contents/four_matrix/%E5%A4%9C%E9%A3%9F.png&quot; alt=&quot;&quot; class=&quot;w-[80%] mx-auto&quot;&gt;&lt;/a&gt;&lt;p&gt;&lt;/p&gt;&lt;/div&gt;
ハイネ:食欲ない&lt;br&gt;
ヨウト:食べたくなる前に睡魔が勝つ&lt;/div&gt;
&lt;h2 class=&quot;article-h2&quot; id=&quot;料理&quot;&gt;料理&lt;/h2&gt;
&lt;div&gt;&lt;div class=&quot;my-5 flex flex-col justify-center items-center&quot;&gt;&lt;a href=&quot;/contents/four_matrix/%E6%96%99%E7%90%86.png&quot;&gt;&lt;img src=&quot;/contents/four_matrix/%E6%96%99%E7%90%86.png&quot; alt=&quot;&quot; class=&quot;w-[80%] mx-auto&quot;&gt;&lt;/a&gt;&lt;p&gt;&lt;/p&gt;&lt;/div&gt;
ハイネ：レシピをきっちり守るので何でも作れる　でもそれって誰でもできることじゃない？と思って進んでやることはない　他人に振る舞う場合はあるいは、という感じ&lt;br&gt;
ヨウト：少し親の手伝いをする程度　遊びの時間が減るのであまり乗り気ではない&lt;/div&gt;
&lt;h2 class=&quot;article-h2&quot; id=&quot;包装紙&quot;&gt;包装紙&lt;/h2&gt;
&lt;div&gt;&lt;div class=&quot;my-5 flex flex-col justify-center items-center&quot;&gt;&lt;a href=&quot;/contents/four_matrix/%E5%8C%85%E8%A3%85%E7%B4%99.png&quot;&gt;&lt;img src=&quot;/contents/four_matrix/%E5%8C%85%E8%A3%85%E7%B4%99.png&quot; alt=&quot;&quot; class=&quot;w-[80%] mx-auto&quot;&gt;&lt;/a&gt;&lt;p&gt;&lt;/p&gt;&lt;/div&gt;
ハイネ：シンプル不器用&amp;#x26;不慣れ　ペーパーナイフで丁寧にぐしゃぐしゃにする&lt;br&gt;
ヨウト：そこそこ慣れている　大人用カッターを使うのに親の監視が必要だったが最近はそれも無くなった&lt;/div&gt;
&lt;h2 class=&quot;article-h2&quot; id=&quot;幽霊&quot;&gt;幽霊&lt;/h2&gt;
&lt;div&gt;&lt;div class=&quot;my-5 flex flex-col justify-center items-center&quot;&gt;&lt;a href=&quot;/contents/four_matrix/%E5%B9%BD%E9%9C%8A.png&quot;&gt;&lt;img src=&quot;/contents/four_matrix/%E5%B9%BD%E9%9C%8A.png&quot; alt=&quot;&quot; class=&quot;w-[80%] mx-auto&quot;&gt;&lt;/a&gt;&lt;p&gt;&lt;/p&gt;&lt;/div&gt;
ヨウト：怪談の本を読んだ日は夜のトイレにびびりまくる　でも読んじゃう&lt;br&gt;
ハイネ：日常すぎる&lt;/div&gt;
</content:encoded>
        </item>
        <item>
            <title><![CDATA[Crave The Grave を公開しました]]></title>
            <link>https://apxxxxxxe.dev/blog/entries/zakki202505302316</link>
            <guid isPermaLink="false">https://apxxxxxxe.dev/blog/entries/zakki202505302316</guid>
            <pubDate>Fri, 30 May 2025 00:00:00 GMT</pubDate>
            <content:encoded>&lt;p class=&quot;article-p&quot;&gt;ゴースト「&lt;a href=&quot;https://github.com/apxxxxxxe/Haine#readme&quot; class=&quot;article-a&quot;&gt;Crave The Grave&lt;/a&gt;」を公開しました&lt;/p&gt;
&lt;p class=&quot;article-p&quot;&gt;このゴーストは2019年頃に「郊外通りのハイネ」として公開していたものを再構成した作品です&lt;br&gt;
舞台設定などが練られておらず公開し続けるに忍びなかったため短期間で公開を停止し、最近までずっと設定を再構成しては崩しを繰り返していました。栞も里々から始まりYAYAへ、そして現在はプログラミング言語Rustによる独自栞へと移行しました（このあたりの変遷はGitHubのコミット履歴などに残っています）&lt;/p&gt;
&lt;p class=&quot;article-p&quot;&gt;思い入れのある作品であり、演出や機能面など各方面に力を入れています&lt;br&gt;
よろしくお願いします&lt;/p&gt;
</content:encoded>
        </item>
        <item>
            <title><![CDATA[無題20250529]]></title>
            <link>https://apxxxxxxe.dev/blog/entries/zakki202505291329</link>
            <guid isPermaLink="false">https://apxxxxxxe.dev/blog/entries/zakki202505291329</guid>
            <pubDate>Thu, 29 May 2025 00:00:00 GMT</pubDate>
            <content:encoded>&lt;p class=&quot;article-p&quot;&gt;ギャラリーに過去に描いた絵を追加しました&lt;br&gt;
かなり昔のものも含まれており、恥ずかしいので見てください&lt;/p&gt;
</content:encoded>
        </item>
        <item>
            <title><![CDATA[無題20250523]]></title>
            <link>https://apxxxxxxe.dev/blog/entries/zakki202505231019</link>
            <guid isPermaLink="false">https://apxxxxxxe.dev/blog/entries/zakki202505231019</guid>
            <pubDate>Fri, 23 May 2025 00:00:00 GMT</pubDate>
            <content:encoded>&lt;p class=&quot;article-p&quot;&gt;昨日に引き続きサイトを更新しています&lt;br&gt;
今日はトップページについて下記の変更を加えました&lt;/p&gt;
&lt;ul class=&quot;article-ul&quot;&gt;
&lt;li&gt;レイアウト改修&lt;/li&gt;
&lt;li&gt;ハイネ、ヨウトの画像にアニメーションを追加&lt;/li&gt;
&lt;li&gt;ギャラリーへのリンク画像を設定(各ゴーストにゆかりのあるアイテム群)&lt;/li&gt;
&lt;/ul&gt;
&lt;p class=&quot;article-p&quot;&gt;画面が華やかに見えていれば嬉しいのですが…&lt;/p&gt;
&lt;p class=&quot;article-p&quot;&gt;今回の制作で始めてAsepriteのアニメーション作成機能を使いました&lt;br&gt;
かなり直感的にいじることができてよかったです&lt;/p&gt;
</content:encoded>
        </item>
        <item>
            <title><![CDATA[無題20250522]]></title>
            <link>https://apxxxxxxe.dev/blog/entries/zakki202505221436</link>
            <guid isPermaLink="false">https://apxxxxxxe.dev/blog/entries/zakki202505221436</guid>
            <pubDate>Thu, 22 May 2025 00:00:00 GMT</pubDate>
            <content:encoded>&lt;p class=&quot;article-p&quot;&gt;サイトのレイアウトを変更しました&lt;br&gt;
往年のサイトに倣って横幅を狭めたのと、トップページにサイトマップとしてアイコン画像を描いて設定しています&lt;/p&gt;
&lt;p class=&quot;article-p&quot;&gt;大幅な変更の影響でモバイル版のレイアウトが崩れているのですが追々直していきます…&lt;/p&gt;
</content:encoded>
        </item>
        <item>
            <title><![CDATA[無題20250511]]></title>
            <link>https://apxxxxxxe.dev/blog/entries/zakki202505110556</link>
            <guid isPermaLink="false">https://apxxxxxxe.dev/blog/entries/zakki202505110556</guid>
            <pubDate>Sun, 11 May 2025 00:00:00 GMT</pubDate>
            <content:encoded>&lt;p class=&quot;article-p&quot;&gt;web拍手の返信をブログのみで行うように方針を変更します&lt;br&gt;
Mastodonでも行っていたのですが窓口は一本化したほうが双方おそらくうれしいため…&lt;/p&gt;
&lt;p class=&quot;article-p&quot;&gt;なので今後拍手返信を待ち受ける必要がある場合はブログのRSS購読でご確認いただければ幸いです&lt;/p&gt;
</content:encoded>
        </item>
        <item>
            <title><![CDATA[無題20250508]]></title>
            <link>https://apxxxxxxe.dev/blog/entries/zakki20250508133330</link>
            <guid isPermaLink="false">https://apxxxxxxe.dev/blog/entries/zakki20250508133330</guid>
            <pubDate>Fri, 09 May 2025 00:00:00 GMT</pubDate>
            <content:encoded>&lt;p class=&quot;article-p&quot;&gt;他の方に描いていただいた作品を紹介するコーナーを&lt;a href=&quot;https://apxxxxxxe.dev/gallery/&quot; class=&quot;article-a&quot;&gt;ギャラリー&lt;/a&gt;に追加しました&lt;br&gt;
アカウント無しでアクセスできるページであるかどうかを紹介の基準としています&lt;/p&gt;
</content:encoded>
        </item>
        <item>
            <title><![CDATA[2025/5/9にweb拍手をくださった方へ]]></title>
            <link>https://apxxxxxxe.dev/blog/entries/webclap202505081330</link>
            <guid isPermaLink="false">https://apxxxxxxe.dev/blog/entries/webclap202505081330</guid>
            <pubDate>Fri, 09 May 2025 00:00:00 GMT</pubDate>
            <content:encoded>&lt;p class=&quot;article-p&quot;&gt;（4/24に拍手をくださり、その続きとして5/9に拍手をくださった方への返信です）&lt;/p&gt;
&lt;p class=&quot;article-p&quot;&gt;詳細なご回答ありがとうございます。おかげさまで原因が判明しました！&lt;br&gt;
ご推察の通り、SSPが日本語を含むファイルパスに配置されている場合に不具合が生じていました。&lt;/p&gt;
&lt;h3 class=&quot;article-h3&quot; id=&quot;原因読み飛ばしていただいて構いません&quot;&gt;原因(読み飛ばしていただいて構いません)&lt;/h3&gt;
&lt;p class=&quot;article-p&quot;&gt;現在の仕様ではプラグインのロード時にプラグインのファイルパスをSSPから受け取っている(ログファイルがプラグインフォルダの直下に生成される機能などはこれを用いています)のですが、&lt;br&gt;
ここで日本語文字列が含まれている場合は読み込みに失敗してしまい、以降の処理が部分的に働かなくなっていたようです。&lt;/p&gt;
&lt;h3 class=&quot;article-h3&quot; id=&quot;対応&quot;&gt;対応&lt;/h3&gt;
&lt;p class=&quot;article-p&quot;&gt;修正バージョン(&lt;a href=&quot;https://github.com/apxxxxxxe/GhostSpeaker/releases&quot; class=&quot;article-a&quot;&gt;v1.2.4&lt;/a&gt;)を作成し、公開しました！&lt;/p&gt;
&lt;p class=&quot;article-p&quot;&gt;上記の問題に対処し、SSP(厳密にはプラグインのフォルダ)が日本語を含むファイルパスに配置されている場合でも動くように修正しています。&lt;br&gt;
テストとして、こちらの環境で &lt;code&gt;C:\Users\Public\Downloads\伺か\ssp.exe&lt;/code&gt; となるように配置したSSPで検証し、プラグインが正常に動作することを確認しました。&lt;/p&gt;
&lt;p class=&quot;article-p&quot;&gt;すでにフォルダ名をアルファベットに変更することでご対応いただいたとのことで、ご不便をおかけして申し訳ありませんでした。&lt;br&gt;
本バージョン以降では問題なくご利用いただけるかと思います。&lt;/p&gt;
&lt;p class=&quot;article-p&quot;&gt;また何かご不明点などございましたらご連絡いただければ幸いです。&lt;/p&gt;
</content:encoded>
        </item>
        <item>
            <title><![CDATA[雑記]]></title>
            <link>https://apxxxxxxe.dev/blog/entries/zakki202505081101</link>
            <guid isPermaLink="false">https://apxxxxxxe.dev/blog/entries/zakki202505081101</guid>
            <pubDate>Thu, 08 May 2025 00:00:00 GMT</pubDate>
            <content:encoded>&lt;p class=&quot;article-p&quot;&gt;試験的にサイト全体の指定フォントをメイリオにしました&lt;br&gt;
メイリオがインストールされている環境では優先的に使用されます&lt;/p&gt;
&lt;p class=&quot;article-p&quot;&gt;往年の雰囲気(というより2010年代のwiki文化あたり？)を目指しての変更ですがどうかな&lt;br&gt;
しばらくやってみて見にくさが勝つようだったら戻します&lt;/p&gt;
</content:encoded>
        </item>
        <item>
            <title><![CDATA[2025/4/24 に拍手をくださった方へ]]></title>
            <link>https://apxxxxxxe.dev/blog/entries/clap202505060208</link>
            <guid isPermaLink="false">https://apxxxxxxe.dev/blog/entries/clap202505060208</guid>
            <pubDate>Tue, 06 May 2025 00:00:00 GMT</pubDate>
            <content:encoded>&lt;p class=&quot;article-p&quot;&gt;GhostSpeakerの不具合について、ご報告ありがとうございます。
原因調査のためにいくつかご質問させていただきたいことがございます。&lt;br&gt;
長くなっておりお手数をおかけして申し訳ございませんが、ご確認いただければ幸いです。&lt;/p&gt;
&lt;h3 class=&quot;article-h3&quot; id=&quot;ご確認したいこと&quot;&gt;ご確認したいこと&lt;/h3&gt;
&lt;ul class=&quot;article-ul&quot;&gt;
&lt;li&gt;本プラグインにおける自動更新機能は現在削除済みですが、v1.0.2時点では有効でした。v1.0.2では動作するというのは、自動更新が走り、最新版への更新が行われたうえでのことでしょうか？(バージョンはプラグインメニューの最上部に記載されておりますので、ご確認いただければ幸いです。)&lt;/li&gt;
&lt;li&gt;v1.0.2より先のバージョンで音声合成が行われないとのことですが、
&lt;ul class=&quot;article-ul&quot;&gt;
&lt;li&gt;棒読みちゃん&lt;/li&gt;
&lt;li&gt;VOICEVOX&lt;/li&gt;
&lt;li&gt;COEIROINK2&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p class=&quot;article-p&quot;&gt;のすべてで音声合成が行われないということでしょうか。(上の3ソフトとは別々のロジックで通信しているので、原因の切り分けのためのご質問です)&lt;/p&gt;
&lt;h3 class=&quot;article-h3&quot; id=&quot;前提&quot;&gt;前提&lt;/h3&gt;
&lt;p class=&quot;article-p&quot;&gt;上記のご質問は、以下の前提に立つものです。&lt;/p&gt;
&lt;ul class=&quot;article-ul&quot;&gt;
&lt;li&gt;v1.2.1以前、ログファイルの初期化に失敗した場合は回復不能エラーとしてSSPごと落ちるという仕様になっていました。ログファイル機能にそこまでの厳しさは必要ないということでv1.2.2以降は警告メッセージのみ発し、それ以降の機能はそのまま続ける仕様になっています。&lt;/li&gt;
&lt;li&gt;すなわちv1.0.2ではログファイルの初期化に失敗した場合はSSPごと落ちるはずなので、本お問い合わせの焦点はログファイルが生成されないことではなく、v1.0.2では動いていた音声合成が以降のバージョンで動かないことにあると推測しております。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr class=&quot;border-t my-5&quot;&gt;
&lt;p class=&quot;article-p&quot;&gt;ご依頼、ご説明は以上となります。&lt;br&gt;
改めて、お手数をおかけして申し訳ございませんがご回答いただければ幸いです。&lt;/p&gt;
</content:encoded>
        </item>
        <item>
            <title><![CDATA[サイト更新: ギャラリーページ追加]]></title>
            <link>https://apxxxxxxe.dev/blog/entries/publish-gallery</link>
            <guid isPermaLink="false">https://apxxxxxxe.dev/blog/entries/publish-gallery</guid>
            <pubDate>Wed, 05 Feb 2025 00:00:00 GMT</pubDate>
            <content:encoded>&lt;p class=&quot;article-p&quot;&gt;サイトに&lt;a href=&quot;https://apxxxxxxe.dev/gallery/&quot; class=&quot;article-a&quot;&gt;ギャラリー&lt;/a&gt;ページを追加しました。&lt;br&gt;
伺かのイラストだけでなく、自作絵全般を載せていく予定です。&lt;/p&gt;
</content:encoded>
        </item>
        <item>
            <title><![CDATA[福笑い式surfaces.txtジェネレーターを作った話]]></title>
            <link>https://apxxxxxxe.dev/blog/entries/adventcalendar_20241207</link>
            <guid isPermaLink="false">https://apxxxxxxe.dev/blog/entries/adventcalendar_20241207</guid>
            <pubDate>Sat, 07 Dec 2024 00:00:00 GMT</pubDate>
            <content:encoded>&lt;p class=&quot;article-p&quot;&gt;伺か・伺的 Advent Calendar 2024 (第2会場) 7日目の記事です。&lt;br&gt;
6日目の&lt;a href=&quot;https://note.com/kanade_lab/n/n36254ac65034&quot; class=&quot;article-a&quot;&gt;ななっちさん&lt;/a&gt;に続いて、日野つみが記事を書かせていただきます。&lt;/p&gt;
&lt;p class=&quot;article-p&quot;&gt;本記事では、界隈でたびたび話題となっているサーフェス定義方針、&lt;br&gt;
いわゆる「福笑い式」について界隈での動きなどを提示したのち、&lt;br&gt;
私が開発した福笑い式に基づくsurfaces.txtジェネレーター「surfaces-mixer」について紹介します。&lt;/p&gt;
&lt;h2 class=&quot;article-h2&quot; id=&quot;福笑い式の定義&quot;&gt;福笑い式の定義&lt;/h2&gt;
&lt;p class=&quot;article-p&quot;&gt;&lt;strong&gt;※記事で言及する便宜上本項で定義していますが、一般的な意味を定めるものではありません。&lt;/strong&gt;&lt;/p&gt;
&lt;p class=&quot;article-p&quot;&gt;「福笑い式」とは、伺かのサーフェス定義ファイルsurfaces.txtにおいて、&lt;br&gt;
サーフェス番号の桁一つに対してパーツを割り当てるという手法です。&lt;br&gt;
例えば、サーフェス番号111~999の範囲で、1の位には目パーツ、10の位には口パーツ、100の位には眉パーツを割り当てるといった具合です。&lt;/p&gt;
&lt;div&gt;&lt;div class=&quot;my-5 flex flex-col justify-center items-center&quot;&gt;&lt;a href=&quot;/contents/adventcalendar_20241207/20241201_adventcalendar.png&quot;&gt;&lt;img src=&quot;/contents/adventcalendar_20241207/20241201_adventcalendar.png&quot; alt=&quot;福笑い式の図&quot; class=&quot;w-min h-auto&quot;&gt;&lt;/a&gt;&lt;p&gt;福笑い式の図&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p class=&quot;article-p&quot;&gt;「1は開いた目」 「2は閉じた目」 「3は笑った目」というように数字に対してパーツの意味を割り当てておくことで、&lt;br&gt;
「普通の眉、笑った口、笑った目はサーフェス番号133番」というように、サーフェス番号からパーツを推測しやすくなるというメリットがあります。
パーツの組み合わせを網羅しているため、欲しい表情を瞬時にゴーストに適用することができます。&lt;/p&gt;
&lt;p class=&quot;article-p&quot;&gt;デメリットとしては、パーツが増えるほど組み合わせの数も指数関数的に増えていくため&lt;br&gt;
手作業でのsurfaces.txtの記述が困難であることが挙げられます。&lt;/p&gt;
&lt;h2 class=&quot;article-h2&quot; id=&quot;界隈における取り組み&quot;&gt;界隈における取り組み&lt;/h2&gt;
&lt;p class=&quot;article-p&quot;&gt;福笑い式に関する取り組みを知っている限りご紹介します。&lt;br&gt;
他にもあるよ！という場合は&lt;a href=&quot;http://clap.webclap.com/clap.php?id=apxxxxxxe&quot; class=&quot;article-a&quot;&gt;Web拍手&lt;/a&gt;等で教えていただけると幸いです。&lt;/p&gt;
&lt;h3 class=&quot;article-h3&quot; id=&quot;桁ごとにパーツを指定するsurface定義&quot;&gt;&lt;a href=&quot;https://yoippari.n0v0.be/p/dev_10Ksurface.html&quot; class=&quot;article-a&quot;&gt;桁ごとにパーツを指定するsurface定義&lt;/a&gt;&lt;/h3&gt;
&lt;p class=&quot;article-p&quot;&gt;冷やし湯さんが作成された福笑い式サーフェス定義を積んだサンプルゴーストです。&lt;br&gt;
また、リンク先ページでは福笑い式についての解説もされています。&lt;/p&gt;
&lt;h3 class=&quot;article-h3&quot; id=&quot;サーフィス組み合わせ機&quot;&gt;&lt;a href=&quot;https://ukiya.sakura.ne.jp/other/surfacecombinator.html&quot; class=&quot;article-a&quot;&gt;サーフィス組み合わせ機&lt;/a&gt;&lt;/h3&gt;
&lt;p class=&quot;article-p&quot;&gt;Ukiyaさんが作成されたWebアプリケーションです。&lt;br&gt;
画像ファイル名をパーツ別に指定することで、福笑い式のsurfaces.txtを生成します。&lt;/p&gt;
&lt;h3 class=&quot;article-h3&quot; id=&quot;サーフェス連番ジェネレータ&quot;&gt;&lt;a href=&quot;https://kuronekokuro.bake-neko.net/ukagaka/index.html&quot; class=&quot;article-a&quot;&gt;サーフェス連番ジェネレータ&lt;/a&gt;&lt;/h3&gt;
&lt;p class=&quot;article-p&quot;&gt;クロ猫黒さんが作成されたexe形式のアプリケーションです。&lt;br&gt;
パーツ別に別ディレクトリに格納されたパーツファイルを読み込んで、福笑い式のsurfaces.txtを生成します。&lt;/p&gt;
&lt;h3 class=&quot;article-h3&quot; id=&quot;surfacebuilder&quot;&gt;&lt;a href=&quot;https://github.com/kanadelab/SurfaceBuilder&quot; class=&quot;article-a&quot;&gt;SurfaceBuilder&lt;/a&gt;&lt;/h3&gt;
&lt;p class=&quot;article-p&quot;&gt;ななっちさんが作成されたexe形式のアプリケーションです。
パーツ画像をドラッグ＆ドロップすることで、サーフェス合成プレビューを確認することができます。&lt;br&gt;
また、合成したサーフェスの定義をクリップボードにコピーする補助機能も搭載されています。&lt;/p&gt;
&lt;h2 class=&quot;article-h2&quot; id=&quot;surfaces-mixer&quot;&gt;surfaces-mixer&lt;/h2&gt;
&lt;p class=&quot;article-p&quot;&gt;本記事で紹介するsurfaces-mixerは、上記の取り組みを参考にしつつ、以下の特徴を持つsurfaces.txtジェネレーターです。&lt;br&gt;
surfaces-mixerは設定ファイルに特定のフォーマットでパーツの指定を記述し、それを読み込むことでsurfaces.txtを生成します。&lt;br&gt;
フォーマット(yaml)の把握と簡単なコマンドラインの操作さえ可能ならば、柔軟で強力、かつメンテナンスフリーにsurfaces.txtを生成することができます。&lt;/p&gt;
&lt;h3 class=&quot;article-h3&quot; id=&quot;surfacestxtのメンテナンスが容易&quot;&gt;surfaces.txtのメンテナンスが容易&lt;/h3&gt;
&lt;p class=&quot;article-p&quot;&gt;従来の福笑い式ジェネレーターは、surfaces.txtの一部を生成し、&lt;br&gt;
残りは手作業でsurfaces.txtへ移植するという手法が一般的でした。&lt;/p&gt;
&lt;p class=&quot;article-p&quot;&gt;一方、surfaces-mixerは、surfaces.txtの全体を生成することができます。&lt;/p&gt;
&lt;h3 class=&quot;article-h3&quot; id=&quot;パーツの指定方法が柔軟&quot;&gt;パーツの指定方法が柔軟&lt;/h3&gt;
&lt;p class=&quot;article-p&quot;&gt;surfaces-mixerは yaml というデータ形式を採用することで、surfaces.txtに手書きしていた&lt;br&gt;
&lt;code&gt;animation&lt;/code&gt;や&lt;code&gt;collision&lt;/code&gt;を含むサーフェス定義をそのまま記述することができます。&lt;/p&gt;
&lt;pre class=&quot;code-block&quot;&gt;&lt;code&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;1&amp;#x22;&quot;&gt;# サンプルファイル&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;2&amp;#x22;&quot;&gt;# yamlファイルはraw,charactersの２分類を起点に構成される。&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;3&amp;#x22;&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;4&amp;#x22;&quot;&gt;# - raw:  descriptなど、組み合わせに関係のない定義。&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;5&amp;#x22;&quot;&gt;#         ここに記述された内容はsurfaces.txtの冒頭にそのまま出力される。&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;6&amp;#x22;&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;7&amp;#x22;&quot;&gt;# - characters: キャラクターごとのパーツの定義。&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;8&amp;#x22;&quot;&gt;#         [構造]&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;9&amp;#x22;&quot;&gt;#         // \0キャラクターの定義&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;10&amp;#x22;&quot;&gt;#         - base: ...       # 頭や胴体など、全サーフェスに共通するパーツの定義。&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;11&amp;#x22;&quot;&gt;#           parts:             # 基点&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;12&amp;#x22;&quot;&gt;#           - group: 〇〇    # 「目」「口」など、そのグループ名が何であるかの目安。&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;13&amp;#x22;&quot;&gt;#             details:       # 詳細情報の基点&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;14&amp;#x22;&quot;&gt;#               - name: △△ # 「半目」「閉じ目」など、そのパーツが何であるかの目安。&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;15&amp;#x22;&quot;&gt;#                 text: ...  # そのパーツのサーフェス定義。&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;16&amp;#x22;&quot;&gt;#         // \1キャラクターの定義&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;17&amp;#x22;&quot;&gt;#         - base: ...       # 頭や胴体など、全サーフェスに共通するパーツの定義。&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;18&amp;#x22;&quot;&gt;#           parts:             # 基点&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;19&amp;#x22;&quot;&gt;#           (移行同様)&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;20&amp;#x22;&quot;&gt;raw: |&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;21&amp;#x22;&quot;&gt;  descript&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;22&amp;#x22;&quot;&gt;  {&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;23&amp;#x22;&quot;&gt;    version,1&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;24&amp;#x22;&quot;&gt;  }&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;25&amp;#x22;&quot;&gt;characters:&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;26&amp;#x22;&quot;&gt;  # \0側キャラクター&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;27&amp;#x22;&quot;&gt;  - parts:&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;28&amp;#x22;&quot;&gt;    - group: 顔色&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;29&amp;#x22;&quot;&gt;      details:&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;30&amp;#x22;&quot;&gt;        - name: 通常顔&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;31&amp;#x22;&quot;&gt;          text: |&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;32&amp;#x22;&quot;&gt;        - name: 照れ顔&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;33&amp;#x22;&quot;&gt;          text: |&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;34&amp;#x22;&quot;&gt;            animation500600.interval,runonce&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;35&amp;#x22;&quot;&gt;            animation500600.pattern0,overlay,101,0,0,0&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;36&amp;#x22;&quot;&gt;    - group: 目&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;37&amp;#x22;&quot;&gt;      details:&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;38&amp;#x22;&quot;&gt;        - name: こっち目&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;39&amp;#x22;&quot;&gt;          text: |&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;40&amp;#x22;&quot;&gt;            animation500300.interval,runonce+rarely&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;41&amp;#x22;&quot;&gt;            animation500300.option,shared-index&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;42&amp;#x22;&quot;&gt;            animation500300.pattern0,overlay,201,0,0,0&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;43&amp;#x22;&quot;&gt;            animation500300.pattern1,overlay,209,4000,0,0&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;44&amp;#x22;&quot;&gt;            animation500300.pattern2,overlay,204,100,0,0&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;45&amp;#x22;&quot;&gt;            animation500300.pattern3,overlay,201,100,0,0&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;46&amp;#x22;&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;47&amp;#x22;&quot;&gt;        - name: あっち目&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;48&amp;#x22;&quot;&gt;          text: |&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;49&amp;#x22;&quot;&gt;            animation500300.interval,runonce+rarely&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;50&amp;#x22;&quot;&gt;            animation500300.option,shared-index&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;51&amp;#x22;&quot;&gt;            animation500300.pattern0,overlay,203,0,0,0&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;52&amp;#x22;&quot;&gt;            animation500300.pattern1,overlay,209,4000,0,0&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;53&amp;#x22;&quot;&gt;            animation500300.pattern2,overlay,206,100,0,0&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;54&amp;#x22;&quot;&gt;            animation500300.pattern3,overlay,203,100,0,0&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;55&amp;#x22;&quot;&gt;    - group: 腕&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;56&amp;#x22;&quot;&gt;      details:&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;57&amp;#x22;&quot;&gt;        - name: 前手&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;58&amp;#x22;&quot;&gt;          text: |&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;59&amp;#x22;&quot;&gt;            animation505000.interval,runonce&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;60&amp;#x22;&quot;&gt;            animation505000.pattern0,overlay,503,0,0,0&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;61&amp;#x22;&quot;&gt;            collisionex13,hand,polygon,288,423,330,410,336,414,341,422,328,446,317,436,288,442&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;62&amp;#x22;&quot;&gt;            collisionex14,hand,polygon,282,501,262,536,261,550,285,556,299,549,294,521,295,512&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;63&amp;#x22;&quot;&gt;        - name: 胸に手&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;64&amp;#x22;&quot;&gt;          text: |&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;65&amp;#x22;&quot;&gt;            animation504000.interval,runonce&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;66&amp;#x22;&quot;&gt;            animation504000.pattern0,overlay,501,0,0,0&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;67&amp;#x22;&quot;&gt;            animation590000.interval,runonce&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;68&amp;#x22;&quot;&gt;            animation590000.pattern0,overlay,601,0,0,0&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;69&amp;#x22;&quot;&gt;            collisionex13,hand,polygon,288,423,330,410,336,414,341,422,328,446,317,436,288,442&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;70&amp;#x22;&quot;&gt;            collisionex14,hand,polygon,282,501,262,536,261,550,285,556,299,549,294,521,295,512&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;71&amp;#x22;&quot;&gt;    base: |&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;72&amp;#x22;&quot;&gt;     collisionex10,shoulder,polygon,205,319,206,309,214,301,229,299,251,293,248,312&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;73&amp;#x22;&quot;&gt;     collisionex11,shoulder,polygon,292,293,309,299,332,302,339,315,301,315&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;74&amp;#x22;&quot;&gt;     collisionex7,mouse,ellipse,260,259,283,268&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;75&amp;#x22;&quot;&gt;     collisionex8,head,polygon,292,134,319,151,340,176,339,192,292,190,240,192,201,187,213,158,230,140,259,127&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;76&amp;#x22;&quot;&gt;     collisionex6,face,polygon,270,285,239,267,227,246,220,214,222,189,227,173,315,170,320,189,321,210,315,245,305,268&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;77&amp;#x22;&quot;&gt;     &lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;78&amp;#x22;&quot;&gt;     //素体&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;79&amp;#x22;&quot;&gt;     element0,overlay,surface1000.png,0,0&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;80&amp;#x22;&quot;&gt;  # \1側キャラクター&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;81&amp;#x22;&quot;&gt;  - parts:&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;82&amp;#x22;&quot;&gt;    - group: 素体&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;83&amp;#x22;&quot;&gt;      details:&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;84&amp;#x22;&quot;&gt;        - name: 通常&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;85&amp;#x22;&quot;&gt;          text: |&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;86&amp;#x22;&quot;&gt;        - name: 腕上げ&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;87&amp;#x22;&quot;&gt;          text: |&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;88&amp;#x22;&quot;&gt;            animation500600.interval,runonce&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;89&amp;#x22;&quot;&gt;            animation500600.pattern0,overlay,101,0,0,0&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;90&amp;#x22;&quot;&gt;    - group: 目&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;91&amp;#x22;&quot;&gt;      details:&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;92&amp;#x22;&quot;&gt;        - name: こっち目&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;93&amp;#x22;&quot;&gt;          text: |&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;94&amp;#x22;&quot;&gt;            element0,overlay,surface3000.png,0,0&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;95&amp;#x22;&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;96&amp;#x22;&quot;&gt;        - name: あっち目&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;97&amp;#x22;&quot;&gt;          text: |&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;98&amp;#x22;&quot;&gt;            element0,overlay,surface3001.png,0,0&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p class=&quot;article-p&quot;&gt;このyamlファイルをsurfaces-mixerに読み込むことで、以下のsurfaces.txtを生成することができます。&lt;/p&gt;
&lt;pre class=&quot;code-block&quot;&gt;&lt;code&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;1&amp;#x22;&quot;&gt;charset,UTF-8&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;2&amp;#x22;&quot;&gt;descript&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;3&amp;#x22;&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;4&amp;#x22;&quot;&gt;  version,1&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;5&amp;#x22;&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;6&amp;#x22;&quot;&gt;// 顔色&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;7&amp;#x22;&quot;&gt;surface111,112,121,122&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;8&amp;#x22;&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;9&amp;#x22;&quot;&gt;  // 通常顔&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;10&amp;#x22;&quot;&gt;  &lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;11&amp;#x22;&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;12&amp;#x22;&quot;&gt;surface211,212,221,222&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;13&amp;#x22;&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;14&amp;#x22;&quot;&gt;  // 照れ顔&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;15&amp;#x22;&quot;&gt;  animation500600.interval,runonce&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;16&amp;#x22;&quot;&gt;  animation500600.pattern0,overlay,101,0,0,0&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;17&amp;#x22;&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;18&amp;#x22;&quot;&gt;// 目&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;19&amp;#x22;&quot;&gt;surface111,112,211,212&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;20&amp;#x22;&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;21&amp;#x22;&quot;&gt;  // こっち目&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;22&amp;#x22;&quot;&gt;  animation500300.interval,runonce+rarely&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;23&amp;#x22;&quot;&gt;  animation500300.option,shared-index&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;24&amp;#x22;&quot;&gt;  animation500300.pattern0,overlay,201,0,0,0&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;25&amp;#x22;&quot;&gt;  animation500300.pattern1,overlay,209,4000,0,0&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;26&amp;#x22;&quot;&gt;  animation500300.pattern2,overlay,204,100,0,0&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;27&amp;#x22;&quot;&gt;  animation500300.pattern3,overlay,201,100,0,0&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;28&amp;#x22;&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;29&amp;#x22;&quot;&gt;surface121,122,221,222&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;30&amp;#x22;&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;31&amp;#x22;&quot;&gt;  // あっち目&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;32&amp;#x22;&quot;&gt;  animation500300.interval,runonce+rarely&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;33&amp;#x22;&quot;&gt;  animation500300.option,shared-index&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;34&amp;#x22;&quot;&gt;  animation500300.pattern0,overlay,203,0,0,0&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;35&amp;#x22;&quot;&gt;  animation500300.pattern1,overlay,209,4000,0,0&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;36&amp;#x22;&quot;&gt;  animation500300.pattern2,overlay,206,100,0,0&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;37&amp;#x22;&quot;&gt;  animation500300.pattern3,overlay,203,100,0,0&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;38&amp;#x22;&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;39&amp;#x22;&quot;&gt;// 腕&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;40&amp;#x22;&quot;&gt;surface111,121,211,221&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;41&amp;#x22;&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;42&amp;#x22;&quot;&gt;  // 前手&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;43&amp;#x22;&quot;&gt;  animation505000.interval,runonce&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;44&amp;#x22;&quot;&gt;  animation505000.pattern0,overlay,503,0,0,0&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;45&amp;#x22;&quot;&gt;  &lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;46&amp;#x22;&quot;&gt;  collisionex13,hand,polygon,288,423,330,410,336,414,341,422,328,446,317,436,288,442&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;47&amp;#x22;&quot;&gt;  collisionex14,hand,polygon,282,501,262,536,261,550,285,556,299,549,294,521,295,512&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;48&amp;#x22;&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;49&amp;#x22;&quot;&gt;surface112,122,212,222&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;50&amp;#x22;&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;51&amp;#x22;&quot;&gt;  // 胸に手&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;52&amp;#x22;&quot;&gt;  animation504000.interval,runonce&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;53&amp;#x22;&quot;&gt;  animation504000.pattern0,overlay,501,0,0,0&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;54&amp;#x22;&quot;&gt;  &lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;55&amp;#x22;&quot;&gt;  animation590000.interval,runonce&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;56&amp;#x22;&quot;&gt;  animation590000.pattern0,overlay,601,0,0,0&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;57&amp;#x22;&quot;&gt;  &lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;58&amp;#x22;&quot;&gt;  collisionex13,hand,polygon,288,423,330,410,336,414,341,422,328,446,317,436,288,442&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;59&amp;#x22;&quot;&gt;  collisionex14,hand,polygon,282,501,262,536,261,550,285,556,299,549,294,521,295,512&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;60&amp;#x22;&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;61&amp;#x22;&quot;&gt;surface.append111-222&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;62&amp;#x22;&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;63&amp;#x22;&quot;&gt;  collisionex10,shoulder,polygon,205,319,206,309,214,301,229,299,251,293,248,312&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;64&amp;#x22;&quot;&gt;  collisionex11,shoulder,polygon,292,293,309,299,332,302,339,315,301,315&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;65&amp;#x22;&quot;&gt;  collisionex7,mouse,ellipse,260,259,283,268&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;66&amp;#x22;&quot;&gt;  collisionex8,head,polygon,292,134,319,151,340,176,339,192,292,190,240,192,201,187,213,158,230,140,259,127&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;67&amp;#x22;&quot;&gt;  collisionex6,face,polygon,270,285,239,267,227,246,220,214,222,189,227,173,315,170,320,189,321,210,315,245,305,268&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;68&amp;#x22;&quot;&gt;  &lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;69&amp;#x22;&quot;&gt;  //素体&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;70&amp;#x22;&quot;&gt;  element0,overlay,surface1000.png,0,0&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;71&amp;#x22;&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;72&amp;#x22;&quot;&gt;// 素体&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;73&amp;#x22;&quot;&gt;surface1011,1012&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;74&amp;#x22;&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;75&amp;#x22;&quot;&gt;  // 通常&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;76&amp;#x22;&quot;&gt;  &lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;77&amp;#x22;&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;78&amp;#x22;&quot;&gt;surface1021,1022&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;79&amp;#x22;&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;80&amp;#x22;&quot;&gt;  // 腕上げ&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;81&amp;#x22;&quot;&gt;  animation500600.interval,runonce&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;82&amp;#x22;&quot;&gt;  animation500600.pattern0,overlay,101,0,0,0&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;83&amp;#x22;&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;84&amp;#x22;&quot;&gt;// 目&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;85&amp;#x22;&quot;&gt;surface1011,1021&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;86&amp;#x22;&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;87&amp;#x22;&quot;&gt;  // こっち目&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;88&amp;#x22;&quot;&gt;  element0,overlay,surface3000.png,0,0&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;89&amp;#x22;&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;90&amp;#x22;&quot;&gt;surface1012,1022&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;91&amp;#x22;&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;92&amp;#x22;&quot;&gt;  // あっち目&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;93&amp;#x22;&quot;&gt;  element0,overlay,surface3001.png,0,0&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;94&amp;#x22;&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p class=&quot;article-p&quot;&gt;このように、パーツ別の定義を箇条書き的に記述することができます。&lt;/p&gt;
&lt;h3 class=&quot;article-h3&quot; id=&quot;使い方&quot;&gt;使い方&lt;/h3&gt;
&lt;p class=&quot;article-p&quot;&gt;１. 生成したいsurfaces.txtのyamlファイルを作成します。上記サンプルを参考にしてください。&lt;/p&gt;
&lt;p class=&quot;article-p&quot;&gt;２. surfaces-mixer.exeの最新版を以下リンクからダウンロードします。&lt;br&gt;
&lt;a href=&quot;https://github.com/apxxxxxxe/surfaces-mixer/releases&quot; class=&quot;article-a&quot;&gt;https://github.com/apxxxxxxe/surfaces-mixer/releases&lt;/a&gt;&lt;/p&gt;
&lt;p class=&quot;article-p&quot;&gt;３. ダウンロードしたsurfaces-mixer.exeを、surfaces.txtを生成したいディレクトリに配置します。&lt;br&gt;
パスを通せる方は、任意のディレクトリに配置したのち、環境変数PATHに追加してください。&lt;/p&gt;
&lt;p class=&quot;article-p&quot;&gt;４. コマンドプロンプトを開き、surfaces-mixer.exeがあるディレクトリに移動します。&lt;br&gt;
例えば、&lt;code&gt;C:\Users\user1\Ukagaka\ssp\ghost\myghost\shell\master&lt;/code&gt; に移動する場合は、&lt;/p&gt;
&lt;pre class=&quot;code-block&quot;&gt;&lt;code&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;1&amp;#x22;&quot;&gt;cd C:\Users\user1\Ukagaka\ssp\ghost\myghost\shell\master&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;div&gt;と入力します。&lt;br&gt;
&lt;div class=&quot;my-5 flex flex-col justify-center items-center&quot;&gt;&lt;a href=&quot;/contents/adventcalendar_20241207/cmd_cd.png&quot;&gt;&lt;img src=&quot;/contents/adventcalendar_20241207/cmd_cd.png&quot; alt=&quot;cdコマンドで目的のディレクトリ(フォルダ)へ移動&quot; class=&quot;w-min h-auto&quot;&gt;&lt;/a&gt;&lt;p&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p class=&quot;article-p&quot;&gt;５. コマンドプロンプトに以下のコマンドを入力します。&lt;/p&gt;
&lt;pre class=&quot;code-block&quot;&gt;&lt;code&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;1&amp;#x22;&quot;&gt;.\surfaces-mixer.exe -i [yamlファイル名]&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p class=&quot;article-p&quot;&gt;例えば、yamlファイル名が&lt;code&gt;surfaces.yaml&lt;/code&gt;の場合は、&lt;/p&gt;
&lt;pre class=&quot;code-block&quot;&gt;&lt;code&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;1&amp;#x22;&quot;&gt;.\surfaces-mixer.exe -i surfaces.yaml&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;div&gt;と入力します。
&lt;div class=&quot;my-5 flex flex-col justify-center items-center&quot;&gt;&lt;a href=&quot;/contents/adventcalendar_20241207/cmd_surfaces-mixer.png&quot;&gt;&lt;img src=&quot;/contents/adventcalendar_20241207/cmd_surfaces-mixer.png&quot; alt=&quot;surfaces-mixerの実行&quot; class=&quot;w-min h-auto&quot;&gt;&lt;/a&gt;&lt;p&gt;&lt;/p&gt;&lt;/div&gt;&lt;br&gt;
成功していれば、スクリーンショットのように「saved to ~」と表示され、surfaces.txtが生成されます。&lt;/div&gt;
&lt;h2 class=&quot;article-h2&quot; id=&quot;まとめ&quot;&gt;まとめ&lt;/h2&gt;
&lt;p class=&quot;article-p&quot;&gt;福笑い式サーフェス定義はパーツ分けがされた画像群を用いてシェルを作成する際に便利な手法です。&lt;br&gt;
具体的には、&lt;a href=&quot;https://khmix.sakura.ne.jp/download.shtml&quot; class=&quot;article-a&quot;&gt;キャラクターなんとか機&lt;/a&gt;によって生成されたパーツからシェルを作る場合に効果を発揮します。&lt;br&gt;
もちろん自作シェルの場合でも、パーツを分けたものを福笑い式にサーフェス定義することで、網羅的に表情を作成することができます。&lt;/p&gt;
&lt;p class=&quot;article-p&quot;&gt;ぜひ紹介させていただいたツール、あるいはsurfaces-mixerを使って、福笑い式のsurfaces.txtを生成してみてください。&lt;br&gt;
ここまで読んでいただき、ありがとうございました。&lt;/p&gt;
</content:encoded>
        </item>
        <item>
            <title><![CDATA[Skeb用資料]]></title>
            <link>https://apxxxxxxe.dev/blog/entries/haine_references</link>
            <guid isPermaLink="false">https://apxxxxxxe.dev/blog/entries/haine_references</guid>
            <pubDate>Sun, 20 Oct 2024 00:00:00 GMT</pubDate>
            <content:encoded>&lt;div&gt;&lt;div class=&quot;my-5 flex flex-col justify-center items-center&quot;&gt;&lt;a href=&quot;/contents/haine_references/20240822_cry.png&quot;&gt;&lt;img src=&quot;/contents/haine_references/20240822_cry.png&quot; alt=&quot;最新の絵です&quot; class=&quot;w-[80%] mx-auto&quot;&gt;&lt;/a&gt;&lt;p&gt;最新の絵です&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div&gt;&lt;div class=&quot;my-5 flex flex-col justify-center items-center&quot;&gt;&lt;a href=&quot;/contents/haine_references/haine.png&quot;&gt;&lt;img src=&quot;/contents/haine_references/haine.png&quot; alt=&quot;&quot; class=&quot;w-[80%] mx-auto&quot;&gt;&lt;/a&gt;&lt;p&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;
</content:encoded>
        </item>
        <item>
            <title><![CDATA[2024/8/8 にweb拍手をくださった方へ]]></title>
            <link>https://apxxxxxxe.dev/blog/entries/webclap_response_20240808</link>
            <guid isPermaLink="false">https://apxxxxxxe.dev/blog/entries/webclap_response_20240808</guid>
            <pubDate>Sat, 10 Aug 2024 00:00:00 GMT</pubDate>
            <content:encoded>&lt;p class=&quot;article-p&quot;&gt;こちらこそハイネを気にかけてくださってありがとうございます～～～&lt;/p&gt;
&lt;p class=&quot;article-p&quot;&gt;2019年代に一度公開したときは完成度の低さに自分で恥ずかしくなっちゃって公開を停止していました&lt;/p&gt;
&lt;p class=&quot;article-p&quot;&gt;現在も正式に公開するのはまだ先ですが、（おそらくご存じの通り）GitHubから開発中のデータをダウンロードできるようになっています&lt;/p&gt;
&lt;p class=&quot;article-p&quot;&gt;すでに当時から大幅な変更が入っており、今後も設定変更・仕様変更などがあることは否めませんがゆるくお付き合いいただければと思います&lt;/p&gt;
</content:encoded>
        </item>
        <item>
            <title><![CDATA[サイト内部の更新]]></title>
            <link>https://apxxxxxxe.dev/blog/entries/static-update</link>
            <guid isPermaLink="false">https://apxxxxxxe.dev/blog/entries/static-update</guid>
            <pubDate>Wed, 07 Aug 2024 00:00:00 GMT</pubDate>
            <content:encoded>&lt;p class=&quot;article-p&quot;&gt;以前まではSSRを用いた動的サイトとして本サイトをデプロイしていましたが、&lt;br&gt;
Next.jsのstatic exportを使ってサイトを静的に生成する形に更新しました。ちょっと早くなったかも&lt;/p&gt;
&lt;p class=&quot;article-p&quot;&gt;ところで、この文のような記事にするまでもない雑記は一覧に全文を表示する形式にしました。&lt;br&gt;
記事らしい記事の更新もできていないので、今後はマイクロブログっぽい使い方もしたりしつつなんとかこのスペースを活用していきたいですね&lt;/p&gt;
</content:encoded>
        </item>
        <item>
            <title><![CDATA[gitで過去のコミットを編集したり分割したりする方法]]></title>
            <link>https://apxxxxxxe.dev/blog/entries/git-split</link>
            <guid isPermaLink="false">https://apxxxxxxe.dev/blog/entries/git-split</guid>
            <pubDate>Wed, 26 Apr 2023 00:00:00 GMT</pubDate>
            <content:encoded>&lt;h2 class=&quot;article-h2&quot; id=&quot;tldl&quot;&gt;TL;DL&lt;/h2&gt;
&lt;p class=&quot;article-p&quot;&gt;intaractive rebaseを使いましょう。&lt;/p&gt;
&lt;h2 class=&quot;article-h2&quot; id=&quot;はじめに&quot;&gt;はじめに&lt;/h2&gt;
&lt;p class=&quot;article-p&quot;&gt;gitでコミット分割の方法を調べたのでメモしておきます。&lt;/p&gt;
&lt;h2 class=&quot;article-h2&quot; id=&quot;手順&quot;&gt;手順&lt;/h2&gt;
&lt;h3 class=&quot;article-h3&quot; id=&quot;git-logして該当コミットとその1つ前のコミットのshaを確認&quot;&gt;git logして該当コミット(とその1つ前のコミット)のSHAを確認&lt;/h3&gt;
&lt;pre class=&quot;code-block&quot;&gt;&lt;code&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;1&amp;#x22;&quot;&gt;git log --oneline&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;2&amp;#x22;&quot;&gt;83f52e6 (HEAD -&gt; main) hoge&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;3&amp;#x22;&quot;&gt;f1cae65 fuga&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;4&amp;#x22;&quot;&gt;b8929a2 piyo&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;5&amp;#x22;&quot;&gt;0fd0f4e hoge&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;6&amp;#x22;&quot;&gt;945b51e fuga&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;7&amp;#x22;&quot;&gt;18f60e3 piyo&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;8&amp;#x22;&quot;&gt;d6b8ce8 poyo&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p class=&quot;article-p&quot;&gt;下から2番目の18f60e3のコミットを分割したいとします。&lt;br&gt;
このとき、18f60e3,d6b8ce8の2コミットをのちに入力できるように記憶しておきます。&lt;/p&gt;
&lt;h3 class=&quot;article-h3&quot; id=&quot;git-rebaseで該当コミットを編集可能な状態にする&quot;&gt;git rebaseで該当コミットを編集可能な状態にする&lt;/h3&gt;
&lt;pre class=&quot;code-block&quot;&gt;&lt;code&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;1&amp;#x22;&quot;&gt;git rebase -i d6b8ce8&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p class=&quot;article-p&quot;&gt;とするとエディタが開き、そこには&lt;/p&gt;
&lt;pre class=&quot;code-block&quot;&gt;&lt;code&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;1&amp;#x22;&quot;&gt;pick 18f60e3 piyo&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;2&amp;#x22;&quot;&gt;pick 945b51e fuga&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;3&amp;#x22;&quot;&gt;pick 0fd0f4e hoge&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;4&amp;#x22;&quot;&gt;pick b8929a2 piyo&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;5&amp;#x22;&quot;&gt;pick f1cae65 fuga&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;6&amp;#x22;&quot;&gt;pick 83f52e6 hoge&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;7&amp;#x22;&quot;&gt;# Rebase d6b8ce8..83f52e6 onto d6b8ce8 (6 commands)&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;8&amp;#x22;&quot;&gt;(以下省略)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p class=&quot;article-p&quot;&gt;のような記述がなされています。&lt;br&gt;
今回いじりたいのは18f60e3なので、&lt;/p&gt;
&lt;pre class=&quot;code-block&quot;&gt;&lt;code&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;1&amp;#x22;&quot;&gt;edit 18f60e3 piyo&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;2&amp;#x22;&quot;&gt;pick 945b51e fuga&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;3&amp;#x22;&quot;&gt;pick 0fd0f4e hoge&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;4&amp;#x22;&quot;&gt;pick b8929a2 piyo&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;5&amp;#x22;&quot;&gt;pick f1cae65 fuga&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;6&amp;#x22;&quot;&gt;pick 83f52e6 hoge&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;7&amp;#x22;&quot;&gt;# Rebase d6b8ce8..83f52e6 onto d6b8ce8 (6 commands)&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;8&amp;#x22;&quot;&gt;(以下省略)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p class=&quot;article-p&quot;&gt;と文頭のpickをeditに変え、保存して閉じます。&lt;/p&gt;
&lt;pre class=&quot;code-block&quot;&gt;&lt;code&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;1&amp;#x22;&quot;&gt;Stopped at 18f60e3...  piyo&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;2&amp;#x22;&quot;&gt;You can amend the commit now, with&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;3&amp;#x22;&quot;&gt;  git commit --amend&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;4&amp;#x22;&quot;&gt;Once you are satisfied with your changes, run&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;5&amp;#x22;&quot;&gt;  git rebase --continue&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p class=&quot;article-p&quot;&gt;と出力されれば成功。18f60e3が編集可能となりました。&lt;/p&gt;
&lt;h3 class=&quot;article-h3&quot; id=&quot;git-resetで変更をワーキングディレクトリに戻す&quot;&gt;git resetで変更をワーキングディレクトリに戻す&lt;/h3&gt;
&lt;p class=&quot;article-p&quot;&gt;現在、18f60e3での変更はヒストリー上にあるので、コミットし直すためにワーキングディレクトリまで引き戻します。&lt;/p&gt;
&lt;pre class=&quot;code-block&quot;&gt;&lt;code&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;1&amp;#x22;&quot;&gt;git reset HEAD~&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 class=&quot;article-h3&quot; id=&quot;変更をコミット&quot;&gt;変更をコミット&lt;/h3&gt;
&lt;p class=&quot;article-p&quot;&gt;git add, git commitで変更をコミットします。&lt;br&gt;
ここでコミットを小分けにすることで、当初の目的であるコミット18f60e3の分割が叶います。&lt;/p&gt;
&lt;h3 class=&quot;article-h3&quot; id=&quot;git-rebase---continueでheadにチェックアウトして終了&quot;&gt;git rebase --continueでHEADにチェックアウトして終了&lt;/h3&gt;
&lt;p class=&quot;article-p&quot;&gt;コミットが完了したら、rebaseで編集モードを終了し、HEADへチェックアウトします。&lt;/p&gt;
&lt;pre class=&quot;code-block&quot;&gt;&lt;code&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;1&amp;#x22;&quot;&gt;git rebase --continue&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;2&amp;#x22;&quot;&gt;Successfully rebased and updated refs/heads/main.&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p class=&quot;article-p&quot;&gt;過去のコミットを分割しなおすことができました。&lt;/p&gt;
&lt;h2 class=&quot;article-h2&quot; id=&quot;参考&quot;&gt;参考&lt;/h2&gt;
&lt;ul class=&quot;article-ul&quot;&gt;
&lt;li&gt;&lt;a href=&quot;https://git-scm.com/book/en/v2/Git-Branching-Rebasing&quot; class=&quot;article-a&quot;&gt;3.6 Git Branching - Rebasing&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://ken-c-lo.hatenadiary.org/entry/20130706/1373092204?utm_source=pocket_saves&quot; class=&quot;article-a&quot;&gt;Gitで数個前のcommitを遡って分割する&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://qiita.com/phanect/items/4353854cb0d962916acf?utm_source=pocket_saves&quot; class=&quot;article-a&quot;&gt;Git でブランチを上書きする&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded>
        </item>
        <item>
            <title><![CDATA[直近のゴーストをリスト表示するプラグインを作った]]></title>
            <link>https://apxxxxxxe.dev/blog/entries/recentghosts-intro</link>
            <guid isPermaLink="false">https://apxxxxxxe.dev/blog/entries/recentghosts-intro</guid>
            <pubDate>Sun, 24 Jul 2022 00:00:00 GMT</pubDate>
            <content:encoded>&lt;h2 class=&quot;article-h2&quot; id=&quot;要旨&quot;&gt;要旨&lt;/h2&gt;
&lt;p class=&quot;article-p&quot;&gt;いっぱいゴーストがいるのでより便利な方法で管理したいと思いました。&lt;br&gt;
思いつく方法は&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;お気に入りのゴーストとその他のゴーストを別管理&lt;/li&gt;
&lt;li&gt;起動したいゴーストを検索する&lt;/li&gt;
&lt;li&gt;最近起動したゴーストをリスト表示&lt;/li&gt;
&lt;/ol&gt;
&lt;p class=&quot;article-p&quot;&gt;3.のみ既存の機能になかったので&lt;strong&gt;プラグインを作りました&lt;/strong&gt;。&lt;/p&gt;
&lt;h2 class=&quot;article-h2&quot; id=&quot;きっかけ&quot;&gt;きっかけ&lt;/h2&gt;
&lt;p class=&quot;article-p&quot;&gt;私の環境にはゴーストが700名ほどインストールされています。&lt;br&gt;
どのゴーストさんも満遍なく起動したいとはいえ、このままではあまりにも無秩序です。&lt;br&gt;
ある程度優先順位をつけ、探しやすくする必要があると考えました。&lt;/p&gt;
&lt;h2 class=&quot;article-h2&quot; id=&quot;アプローチ&quot;&gt;アプローチ&lt;/h2&gt;
&lt;h3 class=&quot;article-h3&quot; id=&quot;1-お気に入りのゴーストとその他のゴーストを分ける&quot;&gt;1. お気に入りのゴーストとその他のゴーストを分ける&lt;/h3&gt;
&lt;p class=&quot;article-p&quot;&gt;最初に思いつく方法でした。お気に入りは特別な枠で管理したいものです。&lt;br&gt;
SSPでは、ゴーストのインストールディレクトリを複数設定することが可能です。(バルーンなども同様)&lt;br&gt;
この機能を使うことで、お気に入り/それ以外のみならず、イベント別・ジャンル別など様々な分類が可能になります。&lt;/p&gt;
&lt;h3 class=&quot;article-h3&quot; id=&quot;2-起動したいゴーストを検索する&quot;&gt;2. 起動したいゴーストを検索する&lt;/h3&gt;
&lt;p class=&quot;article-p&quot;&gt;ユーザの需要をより即時的かつ直感的に叶える方法です。&lt;br&gt;
これもSSPに該当する機能が搭載されています。&lt;br&gt;
Ctrl+Eで開くエクスプローラーでCtrl+Fを押すと開く検索窓に単語を入力することで、ゴースト名はもちろん作者名、キャラクター名までもを対象にゴーストの検索が可能です。&lt;br&gt;
とてもべんり&lt;/p&gt;
&lt;h3 class=&quot;article-h3&quot; id=&quot;3-最近起動したゴーストのリストを作る&quot;&gt;3. 最近起動したゴーストのリストを作る&lt;/h3&gt;
&lt;p class=&quot;article-p&quot;&gt;&lt;a href=&quot;https://ja.wikipedia.org/wiki/%E5%8F%82%E7%85%A7%E3%81%AE%E5%B1%80%E6%89%80%E6%80%A7&quot; class=&quot;article-a&quot;&gt;時間的局所性&lt;/a&gt;という概念があります。&lt;br&gt;
ある時点で参照されたデータは近い未来に再度参照されることが多いというコンピュータ科学での考え方ですが、これは一般にも同じことが言えると思います。実際、よくテキストエディタに搭載されている「最近使ったファイル」には類似の思考が見えます。&lt;br&gt;
ぜひこれをSSPでも使いたいと思ったのですが、SSPに最近起動したゴーストを表示する機能はありませんでした。（私が気付いてないだけであれば教えていただけると幸いです）&lt;br&gt;
ということで&lt;strong&gt;最近起動したゴーストをリスト表示するプラグインを作りました。&lt;/strong&gt;&lt;br&gt;
&lt;div class=&quot;ogp-box my-5 text-xs border-solid border border-gray/[0.6] rounded-lg&quot;&gt;&lt;a href=&quot;https://github.com/apxxxxxxe/recentghosts&quot; class=&quot;flex flex-row&quot;&gt;&lt;img class=&quot;ogp-image object-contain w-1/4 mx-1&quot; src=&quot;https://opengraph.githubassets.com/91f4c81932187158a69928a079fae756e8d5e72c195fc0a0798f0a50c2dbd84e/apxxxxxxe/recentghosts&quot; alt=&quot;GitHub - apxxxxxxe/recentghosts: 伺か プラグイン&quot;&gt;&lt;div class=&quot;ogp-caption flex flex-col justify-center my-3 pl-3 border-solid border-l border-black&quot;&gt;&lt;h1 class=&quot;font-bold&quot; id=&quot;github---apxxxxxxerecentghosts-伺か-プラグイン&quot;&gt;GitHub - apxxxxxxe/recentghosts: 伺か プラグイン&lt;/h1&gt;&lt;p class=&quot;text-darkgray&quot;&gt;伺か プラグイン. Contribute to apxxxxxxe/recentghosts development by creating an account on GitHub.&lt;/p&gt;&lt;/div&gt;&lt;/a&gt;&lt;/div&gt;&lt;/p&gt;
&lt;h2 class=&quot;article-h2&quot; id=&quot;直近のゴーストの簡単な説明&quot;&gt;「直近のゴースト」の簡単な説明&lt;/h2&gt;
&lt;div&gt;&lt;div class=&quot;my-5 flex flex-col justify-center items-center&quot;&gt;&lt;a href=&quot;https://raw.githubusercontent.com/apxxxxxxe/recentghosts/images/image.png&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/apxxxxxxe/recentghosts/images/image.png&quot; alt=&quot;preview&quot; class=&quot;w-min h-auto&quot;&gt;&lt;/a&gt;&lt;p&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;
&lt;ul class=&quot;article-ul&quot;&gt;
&lt;li&gt;本プラグインを有効にしておくと、起動したゴーストが自動的に20件まで記録されます。&lt;/li&gt;
&lt;li&gt;メニューから本プラグインを実行するとリストが表示されます。&lt;/li&gt;
&lt;li&gt;リストには各ゴーストの切り替え・呼び出し機能があります。&lt;/li&gt;
&lt;/ul&gt;
&lt;p class=&quot;article-p&quot;&gt;ぜひおためしください。&lt;/p&gt;
</content:encoded>
        </item>
        <item>
            <title><![CDATA[ゴースト作成のTIPS]]></title>
            <link>https://apxxxxxxe.dev/blog/entries/tips</link>
            <guid isPermaLink="false">https://apxxxxxxe.dev/blog/entries/tips</guid>
            <pubDate>Wed, 29 Jun 2022 00:00:00 GMT</pubDate>
            <content:encoded>&lt;h2 class=&quot;article-h2&quot; id=&quot;で口パクアニメーションしないようにしたい&quot;&gt;「......」で口パクアニメーションしないようにしたい&lt;/h2&gt;
&lt;div&gt;&lt;div class=&quot;my-5 flex flex-col justify-center items-center&quot;&gt;&lt;a href=&quot;/contents/tips/kuchipaku.gif&quot;&gt;&lt;img src=&quot;/contents/tips/kuchipaku.gif&quot; alt=&quot;……で口パクを止めている&quot; class=&quot;w-min h-auto&quot;&gt;&lt;/a&gt;&lt;p&gt;……で口パクを止めている&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h3 class=&quot;article-h3&quot; id=&quot;シェルの口パク&quot;&gt;シェルの口パク&lt;/h3&gt;
&lt;p class=&quot;article-p&quot;&gt;&lt;a href=&quot;http://ssp.shillest.net/ukadoc/manual/descript_shell_surfaces.html#introduction_animationinterval&quot; class=&quot;article-a&quot;&gt;surfaces.txtのアニメーションインターバル定義&lt;/a&gt;には、トークに合わせてanimationを動かすオプションのtalkがあります。
これを使うとトーク時に口を動かす表現が実現できます。ただし、これは「……」のようなセリフ的には無言の部分でも口が動いてしまいます。解決策を考えましょう。&lt;/p&gt;
&lt;h3 class=&quot;article-h3&quot; id=&quot;解決策&quot;&gt;解決策&lt;/h3&gt;
&lt;ul class=&quot;article-ul&quot;&gt;
&lt;li&gt;&lt;strong&gt;「……」をクイックセクション(\_q)で囲む。&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p class=&quot;article-p&quot;&gt;クイックセクションには以下の特徴があります。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;クイックセクション内の文章は一瞬で表示される&lt;/li&gt;
&lt;li&gt;ただしウェイトは有効である&lt;/li&gt;
&lt;/ol&gt;
&lt;p class=&quot;article-p&quot;&gt;クイックセクション内の文章は一瞬で表示されます。一瞬で表示されるということは、当然口パクの対象外になります。&lt;br&gt;
いっぽうで、クイックセクション内でもウェイト(\w9や\_w[500]など)は依然として有効です。&lt;/p&gt;
&lt;p class=&quot;article-p&quot;&gt;すなわち、以下のようにさくらスクリプトを記述することで、口パクする/しないを指定することができます。&lt;/p&gt;
&lt;pre class=&quot;code-block&quot;&gt;&lt;code&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;1&amp;#x22;&quot;&gt;// before&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;2&amp;#x22;&quot;&gt;……あいうえお&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;3&amp;#x22;&quot;&gt;// after&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;4&amp;#x22;&quot;&gt;\_q…\_w[500]…\_w[500]\_qあいうえお&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p class=&quot;article-p&quot;&gt;その都度ウェイトを仕込むのは大変なので、里々ならreplace.txt、YAYAならOnTranslateに置換処理を記述するとよいでしょう。&lt;/p&gt;
&lt;h2 class=&quot;article-h2&quot; id=&quot;トーク文章の表示速度を辞書側で調整したい&quot;&gt;トーク文章の表示速度を辞書側で調整したい&lt;/h2&gt;
&lt;p class=&quot;article-p&quot;&gt;SSPのデフォルト表示速度は50ms/文字(ユーザ側で調整可能)ですが、&lt;br&gt;
早口、ゆったりの表現や長い文章をゆっくり表示したいなど、ゴースト側から表示速度を変更したいことがしばしばあります。&lt;/p&gt;
&lt;h3 class=&quot;article-h3&quot; id=&quot;実現するための考え方&quot;&gt;実現するための考え方&lt;/h3&gt;
&lt;ul class=&quot;article-ul&quot;&gt;
&lt;li&gt;遅らせたい場合、１文字ごとにウェイト(\_w[25]など)を入れて表示速度を調整すればよい&lt;/li&gt;
&lt;li&gt;早めたい場合は上記に加えてさくらスクリプト\_qでデフォルトのウェイトを消す必要がある&lt;/li&gt;
&lt;/ul&gt;
&lt;p class=&quot;article-p&quot;&gt;考え方自体は単純ですが、問題はどうやってウェイトを挿入するかです。
機械的に1文字ごとにウェイトを入れようとすると、さくらスクリプトの記述が壊されてしまいます。&lt;/p&gt;
&lt;pre class=&quot;code-block&quot;&gt;&lt;code&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;1&amp;#x22;&quot;&gt;\_q -&gt; \\_w[25]_\_w[25]q\_w[25] (さくらスクリプトが機能しない)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 class=&quot;article-h3&quot; id=&quot;具体的な方法yaya&quot;&gt;具体的な方法(YAYA)&lt;/h3&gt;
&lt;p class=&quot;article-p&quot;&gt;さくらスクリプトをRE_REPLACE関数で一時的に制御文字に置き換え、ウェイト挿入後に再度置換することで解決します。&lt;/p&gt;
&lt;pre class=&quot;code-block&quot;&gt;&lt;code&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;1&amp;#x22;&quot;&gt;AddWait&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;2&amp;#x22;&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;3&amp;#x22;&quot;&gt;    // _argv[0]: 対象文字列&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;4&amp;#x22;&quot;&gt;    // _argv[1]: ウェイト[ms]&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;5&amp;#x22;&quot;&gt;    // メッセージスピードの標準は50ms これに加算すると考えて調整&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;6&amp;#x22;&quot;&gt;    _text = _argv[0]&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;7&amp;#x22;&quot;&gt;    _wait = &apos;\_w[&apos; + _argv[1] + &apos;]&apos;&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;8&amp;#x22;&quot;&gt;    // 適当な制御文字 YAYAは0x0を扱えないので0x1で&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;9&amp;#x22;&quot;&gt;    _tagmark = CHR(0x1)&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;10&amp;#x22;&quot;&gt;    // さくらスクリプトは_tagmarkに置き換えて退避&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;11&amp;#x22;&quot;&gt;    //(さくらスクリプト中にウェイト記述が挟まって破綻するのを防ぐ)&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;12&amp;#x22;&quot;&gt;    // 置換したさくらスクリプトは配列に保持しておいて適宜取り出す&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;13&amp;#x22;&quot;&gt;    _t = RE_REPLACE(_text, &apos;\\_{0,2}[a-zA-Z0-9*!&amp;#x26;\-+](\d|\[(&quot;([^&quot;]|\\&quot;)+?&quot;|([^\]]|\\\])+?)+?\])?&apos;, _tagmark)&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;14&amp;#x22;&quot;&gt;    _tags = RE_GETSTR&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;15&amp;#x22;&quot;&gt;    _tagcount = 0&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;16&amp;#x22;&quot;&gt;    _textlen = STRLEN(_argv[0])&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;17&amp;#x22;&quot;&gt;    _result = &quot;&quot;&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;18&amp;#x22;&quot;&gt;    for _i=0; _i&amp;#x3C;_textlen; _i++ {&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;19&amp;#x22;&quot;&gt;        _c = SUBSTR(_t, _i, 1)&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;20&amp;#x22;&quot;&gt;        if _c == _tagmark {&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;21&amp;#x22;&quot;&gt;            _result += _tags[_tagcount]&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;22&amp;#x22;&quot;&gt;            _tagcount += 1&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;23&amp;#x22;&quot;&gt;        }&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;24&amp;#x22;&quot;&gt;        else {&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;25&amp;#x22;&quot;&gt;            _result += _c + _wait // #1&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;26&amp;#x22;&quot;&gt;        }&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;27&amp;#x22;&quot;&gt;    }&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;28&amp;#x22;&quot;&gt;    _result&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;29&amp;#x22;&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p class=&quot;article-p&quot;&gt;OnTranslateInternal関数にこれを仕込むことでウェイトの調整がトーク全体に適用されます。&lt;/p&gt;
&lt;h2 class=&quot;article-h2&quot; id=&quot;連続して同じトークが来るのを避ける&quot;&gt;連続して同じトークが来るのを避ける&lt;/h2&gt;
&lt;p class=&quot;article-p&quot;&gt;たくさんのトーク群からどのようにトークを選び、喋らせるかは、ゴーストの実在感・トークの没入感に関わります。&lt;br&gt;
トーク選択の基本処理はSHIORIがよしなにやってくれていますが、デベロッパー側からある程度ルールを設定することも可能です。&lt;/p&gt;
&lt;h3 class=&quot;article-h3&quot; id=&quot;前提&quot;&gt;前提&lt;/h3&gt;
&lt;p class=&quot;article-p&quot;&gt;トーク被りを避け、出来るだけまんべんなくトークが選ばれるようにしたい。&lt;/p&gt;
&lt;h4 class=&quot;article-h4&quot; id=&quot;里々&quot;&gt;里々&lt;/h4&gt;
&lt;p class=&quot;article-p&quot;&gt;『＄文「○」の重複回避』『＄単語群「○」の重複回避』を利用してトーク被りを回避できます。&lt;br&gt;
詳しくは&lt;a href=&quot;http://soliton.sub.jp/satori/index.php?%E7%89%B9%E6%AE%8A%E5%A4%89%E6%95%B0#o772b719&quot; class=&quot;article-a&quot;&gt;こちら&lt;/a&gt;を参照&lt;/p&gt;
&lt;h4 class=&quot;article-h4&quot; id=&quot;yaya&quot;&gt;YAYA&lt;/h4&gt;
&lt;p class=&quot;article-p&quot;&gt;関数のオプション「nooverlap」を指定することでトーク被りを回避できます。&lt;br&gt;
詳しくは&lt;a href=&quot;https://emily.shillest.net/ayaya/?%E3%83%9E%E3%83%8B%E3%83%A5%E3%82%A2%E3%83%AB/%E6%96%87%E6%B3%95/2.%E9%96%A2%E6%95%B0#vce5bec3&quot; class=&quot;article-a&quot;&gt;こちら&lt;/a&gt;を参照&lt;/p&gt;
&lt;h4 class=&quot;article-h4&quot; id=&quot;提案ルーレット選択アルゴリズムを実装するyaya&quot;&gt;提案:ルーレット選択アルゴリズムを実装する(YAYA)&lt;/h4&gt;
&lt;p class=&quot;article-p&quot;&gt;上記の方法では、直前のトークとの被りのみ考慮されます。つまり極端に言えば、トークがA,B,C,...と用意されているのに、&lt;/p&gt;
&lt;pre class=&quot;code-block&quot;&gt;&lt;code&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;1&amp;#x22;&quot;&gt;トークA -&gt; トークB -&gt; トークA&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p class=&quot;article-p&quot;&gt;のような順番は依然としてありえます。&lt;br&gt;
このトークさっき聞いたな？となるのはなるべく避けるべきです。&lt;br&gt;
そこで提案したいのが&lt;a href=&quot;https://ja.wikipedia.org/wiki/%E9%81%BA%E4%BC%9D%E7%9A%84%E3%82%A2%E3%83%AB%E3%82%B4%E3%83%AA%E3%82%BA%E3%83%A0#:~:text=%E3%82%82%E3%81%AE%E3%81%8C%E3%81%82%E3%82%8B%E3%80%82-,%E3%83%AB%E3%83%BC%E3%83%AC%E3%83%83%E3%83%88%E9%81%B8%E6%8A%9E,-%5B%E7%B7%A8%E9%9B%86%5D&quot; class=&quot;article-a&quot;&gt;ルーレット選択アルゴリズム&lt;/a&gt;です。&lt;br&gt;
実装方法として、&lt;/p&gt;
&lt;ul class=&quot;article-ul&quot;&gt;
&lt;li&gt;各トークに重みを付け、それを考慮したランダム選択を行います。&lt;/li&gt;
&lt;li&gt;選択のたびに次の処理を行います。
&lt;ul class=&quot;article-ul&quot;&gt;
&lt;li&gt;選ばれたトークは重みを1に減らす&lt;/li&gt;
&lt;li&gt;選ばれなかったトークは重みを一定数増やす&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p class=&quot;article-p&quot;&gt;これにより、トークが選ばれた直後は被る確率が最小になり、その後少しずつ確率が増えることで前述の問題を軽減し、より自然かつ満遍ないトークが可能になります。&lt;/p&gt;
&lt;h5 class=&quot;article-h5&quot; id=&quot;実装例&quot;&gt;実装例&lt;/h5&gt;
&lt;p class=&quot;article-p&quot;&gt;拙作ゴースト「&lt;a href=&quot;https://github.com/apxxxxxxe/Haine/blob/main/ghost/master/yaya_rouletteselection.dic&quot; class=&quot;article-a&quot;&gt;Crave The Grave&lt;/a&gt;」で実装されています。&lt;/p&gt;
&lt;h2 class=&quot;article-h2&quot; id=&quot;トークを日本語的にいい感じのところで自動改行したい&quot;&gt;トークを日本語的にいい感じのところで自動改行したい&lt;/h2&gt;
&lt;h3 class=&quot;article-h3&quot; id=&quot;トーク毎に改行にこだわるのは面倒&quot;&gt;トーク毎に改行にこだわるのは面倒&lt;/h3&gt;
&lt;p class=&quot;article-p&quot;&gt;ゴーストのトークを書く際、通常の文章と異なる最も大きな点は改行だと思います。&lt;br&gt;
筆者は文章の中途半端なところで改行が挟まると読みづらいため、読みやすい部分で改行を入れるのですが、
一般的なブログサイトは1行60文字程度であるのに対して、伺かの標準バルーンは24文字(全角、SSPデフォルト+の場合)であり、トークを書いていると改行が頻繁に来るなと感じています。
そこで見栄えの良い改行を自動化し、デベロッパーがトークの内容に専念できるようにするにはどうすればよいかを考えました。&lt;/p&gt;
&lt;h3 class=&quot;article-h3&quot; id=&quot;文節を機械的に見分けて処理する&quot;&gt;文節を機械的に見分けて処理する&lt;/h3&gt;
&lt;p class=&quot;article-p&quot;&gt;見栄えの良い文章とは、すなわち意味の区切り=文節で改行が入っている文章です。
例えば、&lt;/p&gt;
&lt;pre class=&quot;code-block&quot;&gt;&lt;code&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;1&amp;#x22;&quot;&gt;吾輩は猫である。名前はまだない。&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;2&amp;#x22;&quot;&gt;　どこで生れたか頓と見当がつかぬ。何でも薄暗いじめじめした所でニャーニャー泣いていた事だけは記憶している。吾輩はここで始めて人間というものを見た。&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p class=&quot;article-p&quot;&gt;という文章をバルーンで表示する場合、そのまま書き込むとこうなります。&lt;/p&gt;
&lt;pre class=&quot;code-block&quot;&gt;&lt;code&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;1&amp;#x22;&quot;&gt;吾輩は猫である。名前はまだない。&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;2&amp;#x22;&quot;&gt;　どこで生れたか頓と見当がつかぬ。何でも薄暗いじ&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;3&amp;#x22;&quot;&gt;めじめした所でニャーニャー泣いていた事だけは記憶&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;4&amp;#x22;&quot;&gt;している。吾輩はここで始めて人間というものを見た。&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p class=&quot;article-p&quot;&gt;24文字の時点で機械的に折り返されています。ぶつ切りな印象です。&lt;br&gt;
つぎに、以下で紹介する自動改行関数を通した場合こうなります。&lt;/p&gt;
&lt;pre class=&quot;code-block&quot;&gt;&lt;code&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;1&amp;#x22;&quot;&gt;吾輩は猫である。名前はまだない。&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;2&amp;#x22;&quot;&gt;　どこで生れたか頓と見当がつかぬ。何でも&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;3&amp;#x22;&quot;&gt;薄暗いじめじめした所でニャーニャー泣いて&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;4&amp;#x22;&quot;&gt;いた事だけは記憶している。吾輩はここで始めて&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;5&amp;#x22;&quot;&gt;人間というものを見た。&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p class=&quot;article-p&quot;&gt;文節で改行しています。&lt;br&gt;
従来より自然な印象が出ている気がします。&lt;/p&gt;
&lt;h3 class=&quot;article-h3&quot; id=&quot;くわしい説明yaya&quot;&gt;くわしい説明(YAYA)&lt;/h3&gt;
&lt;p class=&quot;article-p&quot;&gt;形態素解析ソフトMeCabを実装したSAORI(&lt;a href=&quot;https://github.com/ponapalt/csaori&quot; class=&quot;article-a&quot;&gt;kisaragi.dll&lt;/a&gt;)で文章を単語に分解し、各品詞から文節を割り出すことが可能です。
これを利用して、文章を文節ごとに改行する関数を作ります。&lt;/p&gt;
&lt;ul class=&quot;article-ul&quot;&gt;
&lt;li&gt;editing&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 class=&quot;article-h3&quot; id=&quot;実装例-1&quot;&gt;実装例&lt;/h3&gt;
&lt;p class=&quot;article-p&quot;&gt;拙作ゴースト「&lt;a href=&quot;https://github.com/apxxxxxxe/Haine/blob/main/ghost/master/yaya_insertlinefeed.dic&quot; class=&quot;article-a&quot;&gt;Crave The Grave&lt;/a&gt;」で実装されています。&lt;/p&gt;
&lt;h2 class=&quot;article-h2&quot; id=&quot;栞を最新版にしよう&quot;&gt;栞を最新版にしよう&lt;/h2&gt;
&lt;h3 class=&quot;article-h3&quot; id=&quot;よい&quot;&gt;よい&lt;/h3&gt;
&lt;ul class=&quot;article-ul&quot;&gt;
&lt;li&gt;新機能が使える&lt;/li&gt;
&lt;li&gt;バグが修正され、不自由/危険が解消される&lt;/li&gt;
&lt;li&gt;最新版をつかっているという安心感&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 class=&quot;article-h3&quot; id=&quot;わるい&quot;&gt;わるい&lt;/h3&gt;
&lt;ul class=&quot;article-ul&quot;&gt;
&lt;li&gt;更新の手間(複数ゴースト等を抱えていると特に)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 class=&quot;article-h3&quot; id=&quot;解決策-1&quot;&gt;解決策&lt;/h3&gt;
&lt;ul class=&quot;article-ul&quot;&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/apxxxxxxe/shioriupdater&quot; class=&quot;article-a&quot;&gt;複数の栞ファイルを一括で更新するツール&lt;/a&gt;を使う&lt;/li&gt;
&lt;/ul&gt;
&lt;p class=&quot;article-p&quot;&gt;ただし現在の機能ではdllファイルを差し替えるのみなので、更新に伴って必要となる作業がある場合は手作業で行う必要がある。&lt;/p&gt;
&lt;h2 class=&quot;article-h2&quot; id=&quot;ある着せ替えパーツの表示順をサーフェスによって変えたい&quot;&gt;ある着せ替えパーツの表示順をサーフェスによって変えたい&lt;/h2&gt;
&lt;div&gt;&lt;div class=&quot;my-5 flex flex-col justify-center items-center&quot;&gt;&lt;a href=&quot;/contents/tips/sode_sample.png&quot;&gt;&lt;img src=&quot;/contents/tips/sode_sample.png&quot; alt=&quot;こういうサーフェスがある。&quot; class=&quot;w-min h-auto&quot;&gt;&lt;/a&gt;&lt;p&gt;こういうサーフェスがある。&lt;/p&gt;&lt;/div&gt;
&lt;div class=&quot;my-5 flex flex-col justify-center items-center&quot;&gt;&lt;a href=&quot;/contents/tips/sode_nashi.png&quot;&gt;&lt;img src=&quot;/contents/tips/sode_nashi.png&quot; alt=&quot;袖を着せ替えパーツとしている。&quot; class=&quot;w-min h-auto&quot;&gt;&lt;/a&gt;&lt;p&gt;袖を着せ替えパーツとしている。&lt;/p&gt;&lt;/div&gt;
&lt;div class=&quot;my-5 flex flex-col justify-center items-center&quot;&gt;&lt;a href=&quot;/contents/tips/sode_nashi_ushiro.png&quot;&gt;&lt;img src=&quot;/contents/tips/sode_nashi_ushiro.png&quot; alt=&quot;腕を後ろで組むサーフェス(表示の優先度が胴&gt;腕)を作りたいけれど、&quot; class=&quot;w-min h-auto&quot;&gt;&lt;/a&gt;&lt;p&gt;腕を後ろで組むサーフェス(表示の優先度が胴&gt;腕)を作りたいけれど、&lt;/p&gt;&lt;/div&gt;
&lt;div class=&quot;my-5 flex flex-col justify-center items-center&quot;&gt;&lt;a href=&quot;/contents/tips/sode_ushiro_failure.png&quot;&gt;&lt;img src=&quot;/contents/tips/sode_ushiro_failure.png&quot; alt=&quot;同一のanimation番号では胴&lt;腕のままなので、後ろに表示されない。&quot; class=&quot;w-min h-auto&quot;&gt;&lt;/a&gt;&lt;p&gt;同一のanimation番号では胴&amp;#x3C;腕のままなので、後ろに表示されない。&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p class=&quot;article-p&quot;&gt;だからといって後手のみanimation番号を変えただけだと、別の着せ替えパーツとして認識されてしまう。&lt;/p&gt;
&lt;h4 class=&quot;article-h4&quot; id=&quot;解決法&quot;&gt;解決法&lt;/h4&gt;
&lt;p class=&quot;article-p&quot;&gt;&lt;strong&gt;addid&lt;/strong&gt;(&lt;a href=&quot;http://ssp.shillest.net/ukadoc/manual/descript_shell.html#sakura.bindgroup*.addid,ID&quot; class=&quot;article-a&quot;&gt;解説&lt;/a&gt;)を使うと複数のanimationをまとめて1つの着せ替えパーツとして定義できる。&lt;br&gt;
上述のように後手を別アニメーションとして定義したあと、shellのdescript.txtに以下のように記述する。&lt;/p&gt;
&lt;pre class=&quot;code-block&quot;&gt;&lt;code&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;1&amp;#x22;&quot;&gt;sakura.bindoption.group,袖&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;2&amp;#x22;&quot;&gt;sakura.bindgroup505318.name,袖,長白&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;3&amp;#x22;&quot;&gt;sakura.bindgroup505318.addid,500168&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;4&amp;#x22;&quot;&gt;// 注&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;5&amp;#x22;&quot;&gt;// animation505318: 前手用の袖アニメーション&lt;/span&gt;&lt;span class=&quot;code-line&quot; style=&quot;--line-number: &amp;#x22;6&amp;#x22;&quot;&gt;// animation500168: 後手用の袖アニメーション&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;div&gt;&lt;div class=&quot;my-5 flex flex-col justify-center items-center&quot;&gt;&lt;a href=&quot;/contents/tips/sode_ushiro_success.png&quot;&gt;&lt;img src=&quot;/contents/tips/sode_ushiro_success.png&quot; alt=&quot;やりたい動作が実現できた。&quot; class=&quot;w-min h-auto&quot;&gt;&lt;/a&gt;&lt;p&gt;やりたい動作が実現できた。&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;
</content:encoded>
        </item>
    </channel>
</rss>