<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>プログラム &#8211; catwhisker blog</title>
	<atom:link href="https://blog.catwhisker.jp/archives/category/program/feed" rel="self" type="application/rss+xml" />
	<link>https://blog.catwhisker.jp</link>
	<description>18禁同人サークル「キャットウィスカー」の制作日誌</description>
	<lastBuildDate>Sat, 17 May 2025 00:15:52 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://blog.catwhisker.jp/wp-content/uploads/2023/05/favicon.bmp</url>
	<title>プログラム &#8211; catwhisker blog</title>
	<link>https://blog.catwhisker.jp</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>WordPress でルビを使う</title>
		<link>https://blog.catwhisker.jp/archives/10682</link>
					<comments>https://blog.catwhisker.jp/archives/10682#respond</comments>
		
		<dc:creator><![CDATA[mezzo forte]]></dc:creator>
		<pubDate>Fri, 16 May 2025 15:01:00 +0000</pubDate>
				<category><![CDATA[プログラム]]></category>
		<category><![CDATA[技術情報]]></category>
		<category><![CDATA[WordPress]]></category>
		<guid isPermaLink="false">https://blog.catwhisker.jp/?p=10682</guid>

					<description><![CDATA[「ルビ」ってご存知でしょうか？　出版用語でこんな風ふうに漢字かんじの上うえに振仮名ふりがなを振ふっている小さな文字のこと。少年マンガではおなじみのアレです。 難しい漢字はルビが振ってあった方が読みやすいのはもちろんですが... <div class="read-more navbutton"><a href="https://blog.catwhisker.jp/archives/10682">Read More<i class="fa fa-angle-double-right"></i></a></div>]]></description>
										<content:encoded><![CDATA[<div class="wp-block-image">
<figure class="alignright size-full is-resized"><img loading="lazy" decoding="async" width="515" height="638" src="https://blog.catwhisker.jp/wp-content/uploads/2025/05/fukidashi.png" alt="" class="wp-image-10922" style="width:150px" srcset="https://blog.catwhisker.jp/wp-content/uploads/2025/05/fukidashi.png 515w, https://blog.catwhisker.jp/wp-content/uploads/2025/05/fukidashi-242x300.png 242w" sizes="auto, (max-width: 515px) 100vw, 515px" /></figure>
</div>


<p>「ルビ」ってご存知でしょうか？　出版用語でこんな<ruby>風<rt>ふう</rt></ruby>に<ruby>漢字<rt>かんじ</rt></ruby>の<ruby>上<rt>うえ</rt></ruby>に<ruby>振仮名<rt>ふりがな</rt></ruby>を<ruby>振<rt>ふ</rt></ruby>っている小さな文字のこと。少年マンガではおなじみのアレです。</p>



<p>難しい漢字はルビが振ってあった方が読みやすいのはもちろんですが、画数が多い漢字もスマホでは読みにくいですよね。なので私は読みやすくするため</p>



<ul class="wp-block-list">
<li>あの時 → あのとき</li>



<li>その為 → そのため</li>



<li>この事 → このこと</li>
</ul>



<p>のようになるべく漢字を減らすよう、ひらがな/カタカナに直しています。</p>



<p>でも文体によっては難しい字を使った方が雰囲気が出ますし、ラノベやマンガで「<ruby>貧乏恐怖症<rt>ペニアフォビア</rt></ruby>」とか「<ruby>不幸<rt>ハードラック</rt></ruby>と<ruby>踊<rt>ダンス</rt></ruby>っちまった」のように、読み仮名と違うものを当てたいときもあります。そんなときはやっぱりルビ。以下 HTML の ruby タグを使うといい感じになります。</p>



<pre class="wp-block-code"><code>&lt;ruby&gt;
  貧乏恐怖症
  &lt;rp&gt;(&lt;/rp&gt;
  &lt;rt&gt;ペニアフォビア&lt;/rt&gt;
  &lt;rp&gt;)&lt;/rp&gt;
&lt;/ruby&gt;</code></pre>



<p>ruby タグは元々 Microsoft Internet Explorer（IE）の独自拡張だったため、昔は IE しか対応していなかったのですが、最近 W3C の<ruby>勧告<rt>かんこく</rt></ruby>が出て主要ブラウザすべてに実装されるようになりました。なので私も心置きなくこのブログで多用しまくっていたのですが、微妙に不具合を見つけ、ちょくちょくヒマを見つけては試行錯誤していたんですよ。</p>



<p>で、先日ようやっと納得のいく環境が整いました。<a href="https://blog.catwhisker.jp/archives/10023" data-type="post" data-id="10023" target="_blank" rel="noreferrer noopener">こないだの tong みたいに</a>誰かの役に立つかもしれないので WordPress でルビを振る方法をまとめてみます。</p>



<h2 class="wp-block-heading">■ Mozilla Firefox のガタつき対策</h2>



<p>ruby タグは Chrome や Edge、Safari、Opera などでは問題なく表示されます。</p>


<div class="wp-block-image">
<figure class="alignleft size-full is-resized"><img loading="lazy" decoding="async" width="640" height="120" src="https://blog.catwhisker.jp/wp-content/uploads/2025/05/chrome.png" alt="" class="wp-image-10866" style="width:480px" srcset="https://blog.catwhisker.jp/wp-content/uploads/2025/05/chrome.png 640w, https://blog.catwhisker.jp/wp-content/uploads/2025/05/chrome-300x56.png 300w" sizes="auto, (max-width: 640px) 100vw, 640px" /></figure>
</div>


<div style="clear:both"></div>



<p>でもなぜか Firefox だけはルビを振ったところがガタつきます。</p>


<div class="wp-block-image">
<figure class="alignleft size-full is-resized"><img loading="lazy" decoding="async" width="640" height="120" src="https://blog.catwhisker.jp/wp-content/uploads/2025/05/firefox.png" alt="" class="wp-image-10867" style="width:480px" srcset="https://blog.catwhisker.jp/wp-content/uploads/2025/05/firefox.png 640w, https://blog.catwhisker.jp/wp-content/uploads/2025/05/firefox-300x56.png 300w" sizes="auto, (max-width: 640px) 100vw, 640px" /></figure>
</div>


<div style="clear:both"></div>



<p>Firefox って ruby タグが HTML5 で採用されるまで<ruby>頑<rt>かたく</rt></ruby>なに対応しなかったですし、先代の Netscape Navigator の頃からそういう <ruby>HTML Strict<rt>ガンコおやじみたい</rt></ruby> なところがありました（でもそこがいい、デバッグ的に）。</p>



<p>色々試した結果、以下 CSS を追加（WordPress 管理画面の［外観］＞［カスタマイズ］＞［追加 CSS］に追記）することで、どのブラウザでもほぼ同じレイアウトになりました。</p>



<pre class="wp-block-code"><code>/* RUBY for Firefox */
@-moz-document url-prefix() {
  rb {
    vertical-align: top;
  }
  rt {
    margin-bottom: -8px;
    line-height: 100%;
  }
}
rt {	
  font-size: 100%;
  zoom: 45%;
}</code></pre>



<p>ただし上記 CSS はこのブログで使っているテーマ（<a href="https://wordpress.org/themes/blackoot-lite/" target="_blank" rel="noreferrer noopener">Blackoot Lite</a>）に最適化していますので、使っているテーマやフォントによっては数値の調整が必要になるかもしれません。margin-bottom のマイナスを増やすと下にズレて、zoom のパーセンテージでルビの大きさを変えられますので、試したい方はお好みに合わせてカスタマイズしてみてください。</p>



<p>またテーマによっては行間が狭く、ルビを入れると窮屈になるものがあるかもしれません。その際は本文の line-height を以下のよう、180%前後に調整した方がいいかも。特に海外製テーマはアルファベット前提のため、日本語だと文字が潰れやすいので font-size も大きめにカスタマイズした方が見やすくなると思います。</p>



<pre class="wp-block-code"><code>.post-content p,
.entry-content p {
  font-size: 14px;
  line-height: 180%;
}</code></pre>



<p class="has-small-font-size"><mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-vivid-red-color">※</mark>クラス名（post-content entry-content）は一例です。使用中のテーマの class / id に書き換えてください。</p>



<p>class / id を正しく指定してもうまく動作しないときは、推奨しませんが !important 宣言を足してみてください。</p>



<pre class="wp-block-code"><code>.post-content p,
.entry-content p {
  font-size: 14px <mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-vivid-red-color">!important</mark>;
  line-height: 180% <mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-vivid-red-color">!important</mark>;
}</code></pre>



<h2 class="wp-block-heading">■ Gutenberg の自動修正回避</h2>



<p>WordPress のブロックエディター「<ruby>Gutenberg<rt>グーテンベルク</rt></ruby>」には入力支援があってノンコードで色々編集ができます。ですが何か深いことをやろうとブロックを［HTML として編集］で直接いじると［ビジュアル編集］に戻したときに勝手に修正することがあり、ruby タグも何度か消されたり、表示がめちゃくちゃ崩れたりしたことも。</p>



<figure class="wp-block-image size-large"><a href="https://blog.catwhisker.jp/wp-content/uploads/2025/05/block.png"><img loading="lazy" decoding="async" width="1024" height="162" src="https://blog.catwhisker.jp/wp-content/uploads/2025/05/block-1024x162.png" alt="" class="wp-image-10790" srcset="https://blog.catwhisker.jp/wp-content/uploads/2025/05/block-1024x162.png 1024w, https://blog.catwhisker.jp/wp-content/uploads/2025/05/block-300x47.png 300w, https://blog.catwhisker.jp/wp-content/uploads/2025/05/block-768x121.png 768w, https://blog.catwhisker.jp/wp-content/uploads/2025/05/block.png 1265w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a><figcaption class="wp-element-caption">［復旧を試みる］と壊れます</figcaption></figure>



<p>で、それを回避するため</p>



<p><a href="https://freefielder.jp/sp/2013/01/wordpress-ruby-tag-fix.html" target="_blank" rel="noreferrer noopener"> WordPress : 入力した ruby タグが消えてしまうので何とかする。- freefielder.jp</a></p>



<p>を参考に ruby タグを勝手に消させないよう、使用中のテーマファイルの functions.php に以下を追記しました。</p>



<pre class="wp-block-code"><code>add_filter( 'content_save_pre','set_allowedposttags' );
function set_allowedposttags( $content ) {
  global $allowedposttags;
  $allowedposttags&#91;'ruby'] = array();
  $allowedposttags&#91;'rb'] = array();
  $allowedposttags&#91;'rt'] = array();
  $allowedposttags&#91;'rp'] = array();
  return $content;
}</code></pre>



<p>ただしテーマが更新されると functions.php も上書きされ、追記したコードが消えてしまいます。なので子テーマを作ってそちらの functions.php に記載することに。すると今度は［追加 CSS］に追記した Firefox 用の CSS が無効になってしまい、子テーマの style.css に追記し直したり…と、そこそこ面倒臭いことに。</p>



<figure class="wp-block-image size-large"><a href="https://blog.catwhisker.jp/wp-content/uploads/2025/05/child.png"><img loading="lazy" decoding="async" width="1024" height="765" src="https://blog.catwhisker.jp/wp-content/uploads/2025/05/child-1024x765.png" alt="" class="wp-image-10882" srcset="https://blog.catwhisker.jp/wp-content/uploads/2025/05/child-1024x765.png 1024w, https://blog.catwhisker.jp/wp-content/uploads/2025/05/child-300x224.png 300w, https://blog.catwhisker.jp/wp-content/uploads/2025/05/child-768x574.png 768w, https://blog.catwhisker.jp/wp-content/uploads/2025/05/child.png 1307w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></figure>



<p>なお以上の回避方法を使うと、ルビを振ったところを再編集したり削除したときに ruby タグが変に残って悪さすることがあるので、その際はブロックを［HTML として編集］に切り替えてタグを編集しましょう。ていうかあえて functions.php はいじらなくてもいいかも…</p>



<h2 class="wp-block-heading">■ プラグインによるルビ入力</h2>



<p>と、こんな感じで今まで WordPress のエディターを HTML に切り替え、タグを直接打ってルビを振っていたのですが、コピペでもそこそこ面倒。何かないかなーと思ったらありましたプラグイン。</p>



<div style="display:block">
  <a href="https://wordpress.org/plugins/wp-yomigana/" target="_blank" rel=" noreferrer noopener">
  <div style="float:left; margin: 0 0 0 10px;">
    <img loading="lazy" decoding="async" width="150" height="150" src="https://blog.catwhisker.jp/wp-content/uploads/2025/05/icon-256x256-1-150x150.png" alt="" class="wp-image-10779" style="border-radius:10px; width:75px; height:75px;" srcset="https://blog.catwhisker.jp/wp-content/uploads/2025/05/icon-256x256-1-150x150.png 150w, https://blog.catwhisker.jp/wp-content/uploads/2025/05/icon-256x256-1.png 256w" sizes="auto, (max-width: 150px) 100vw, 150px" />
  </div>
  <div style="display:inline-block; margin:10px 0 0 10px;">WP-Yomigana &#8211; WordPress.org<br>By Takahashi Fumiki</div>
  </a>
</div>
<p style="clear:both"></p>



<p>最終更新が５年前と古いんですが、私の環境（バージョン6.8.1-ja）では問題なく動いてくれています。</p>


<div class="wp-block-image">
<figure class="alignleft size-full is-resized"><img loading="lazy" decoding="async" width="640" height="480" src="https://blog.catwhisker.jp/wp-content/uploads/2025/05/WP-Yomigana1.png" alt="" class="wp-image-10795" style="width:480px" srcset="https://blog.catwhisker.jp/wp-content/uploads/2025/05/WP-Yomigana1.png 640w, https://blog.catwhisker.jp/wp-content/uploads/2025/05/WP-Yomigana1-300x225.png 300w" sizes="auto, (max-width: 640px) 100vw, 640px" /><figcaption class="wp-element-caption">Windows だと ⌘（コマンド）キーはないので Ctrl+Alt+R</figcaption></figure>
</div>


<div style="clear:both"></div>


<div class="wp-block-image">
<figure class="alignleft size-full is-resized"><img loading="lazy" decoding="async" width="640" height="360" src="https://blog.catwhisker.jp/wp-content/uploads/2025/05/WP-Yomigana2.png" alt="" class="wp-image-10796" style="width:480px" srcset="https://blog.catwhisker.jp/wp-content/uploads/2025/05/WP-Yomigana2.png 640w, https://blog.catwhisker.jp/wp-content/uploads/2025/05/WP-Yomigana2-300x169.png 300w" sizes="auto, (max-width: 640px) 100vw, 640px" /></figure>
</div>


<div style="clear:both"></div>



<p>なおこのプラグインは ruby タグ未対応ブラウザ用の rp タグ（カッコ付き表示）の入力があえて省かれているのですが、モダンブラウザはほぼ100% ruby 対応になったので問題ないようです。</p>



<p>てなわけで、今は快適にルビ振り生活できています。うん、<ruby>ＱＯＬ<rt>クオリティ・オブ・ライフ</rt></ruby>大事。</p>



<h2 class="wp-block-heading">■ 蛇足</h2>



<p>で、WordPress とは関係ない余談をひとつ。あした誰かに話したくなる豆知識〜。</p>



<p class="has-medium-font-size"><strong>「出版用語の『ルビ』は宝石の『ルビー』が由来」</strong></p>



<p>19世紀イギリスでは<ruby>活版<rt>かっぱん</rt></ruby>印刷の文字サイズに宝石の名前を当てていて、4.5ポイントは「<ruby>Diamond<rt>ダイヤモンド</rt></ruby>」、5ポイントは「<ruby>Pearl<rt>パール</rt></ruby>」、5.5ポイントは「<ruby>Ruby<rt>ルビー</rt></ruby>」などと呼んでいたそう。</p>



<p><a href="https://www.jagat.or.jp/past_archives/story/1887.html" target="_blank" rel="noreferrer noopener">ポイント・システムの由来-欧文フォントと組版（２） &#8211; 公益社団法人日本印刷技術協会（JAGAT）</a></p>



<p>日本では明治に入って欧米から活版印刷の技術が伝わり、日本語の活字が作られるようになりました。その際フリガナに使われた活字の大きさが、イギリスで使っていた「ルビー」に近かったそう（約5.25ポイント/７号/８級）で、それからフリガナそのものを「ルビ」って呼ぶようになったんだとか。</p>



<p style="font-size:5.5pt">ちなみに CSS で 5.5pt を指定するとこんな感じ。ちっさ(笑)</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="640" height="480" src="https://blog.catwhisker.jp/wp-content/uploads/2025/05/31638901.jpg" alt="" class="wp-image-10792" srcset="https://blog.catwhisker.jp/wp-content/uploads/2025/05/31638901.jpg 640w, https://blog.catwhisker.jp/wp-content/uploads/2025/05/31638901-300x225.jpg 300w" sizes="auto, (max-width: 640px) 100vw, 640px" /><figcaption class="wp-element-caption">活版印刷に使われる鉛合金の活字</figcaption></figure>



<p>などとこの話を以前職場でしたことがあるのですが、みんなポカ〜ンとして場が白けてしまいました。もしかするとルビ愛が強すぎて、オタク特有の早口でドヤ顔で語っていたかもしれません。みなさんも雑学をひけらかす時は気をつけましょうね！</p>
		<div class="wpulike wpulike-heart " ><div class="wp_ulike_general_class wp_ulike_is_restricted"><button type="button"
					aria-label="いいねボタン"
					data-ulike-id="10682"
					data-ulike-nonce="a400c8d9eb"
					data-ulike-type="post"
					data-ulike-template="wpulike-heart"
					data-ulike-display-likers=""
					data-ulike-likers-style="popover"
					class="wp_ulike_btn wp_ulike_put_image wp_post_btn_10682"></button><span class="count-box wp_ulike_counter_up" data-ulike-counter-value="0"></span>			</div></div>
	]]></content:encoded>
					
					<wfw:commentRss>https://blog.catwhisker.jp/archives/10682/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>HTLM5、JavascriptでiOS版Safari「だけ」Audioオブジェクトの.load()が必要だった件</title>
		<link>https://blog.catwhisker.jp/archives/8778</link>
					<comments>https://blog.catwhisker.jp/archives/8778#comments</comments>
		
		<dc:creator><![CDATA[tong]]></dc:creator>
		<pubDate>Wed, 29 May 2024 06:47:50 +0000</pubDate>
				<category><![CDATA[プログラム]]></category>
		<category><![CDATA[技術情報]]></category>
		<guid isPermaLink="false">https://blog.catwhisker.jp/?p=8778</guid>

					<description><![CDATA[2月くらいにHTLM5、JavascriptでAudioオブジェクトのcurrentTime = 0では頭出しができなくなる現象についてと言う記事を書いたのですが、お客さんからiOSだけ動かないとか連絡が来て「Apple... <div class="read-more navbutton"><a href="https://blog.catwhisker.jp/archives/8778">Read More<i class="fa fa-angle-double-right"></i></a></div>]]></description>
										<content:encoded><![CDATA[
<p>2月くらいに<a href="https://blog.catwhisker.jp/archives/8359" data-type="post" data-id="8359">HTLM5、JavascriptでAudioオブジェクトのcurrentTime = 0では頭出しができなくなる現象について</a>と言う記事を書いたのですが、お客さんからiOSだけ動かないとか連絡が来て「Appleまたお前か」となってしまいました。<br>結論から言うとiOS版Safariだけメディアストリーミングデーターの扱いが異なっていた訳です。</p>



<p>どうやらiOS版Safariとデスクトップ版Safariを含む他のブラウザには以下の様な差異があったようです。</p>


<ol>
<li>デスクトップ版Safariを含む他のブラウザではAudioオブジェクトの.srcに何か入れただけでファイルの読込みが発生するがiOS版Safariでは.load()が実行されるまで何もしない</li>
<li>デスクトップ版Safariを含む他のブラウザではAudioオブジェクトの.load(メディアファイルのURL)を実行すると確実に実行されるがiOS版SafariではメディアファイルのURLが元の値と同じ場合は実行されない</li>
</ol>


<p>他のブラウザの対応を見るとガーベイジコレクションとの兼ね合いで.load()メソッドはメディアファイルの初期化に使われる格好になって居るのですが、iOS版Safariだけは頑なに「loadはloadじゃん、他の意味なんてないわい」と言っているようです。</p>



<p>まぁ別にSafariだけ違うって話なら「まぁAppleだし仕方ないか」と思わなくもないのですが、iOS版だけ違うと言うのはどうにも納得いかないですね。<br>特に２については致命的で解消するには.loadの都度URLの後ろに”?+Date.new()”とか&#8221;?+Math.random()&#8221;みたいな重複しない値をくっつけるしか手は無い訳ですが、これをやるとキャッシュが効かなくなるわけで、一々サーバーにデーターを取りに行く事になり「モバイル向けブラウザのくせに全然モバイル通信に優しくない」だけでなく「プリロードの意味が無いじゃん」ってなる気がするデス。<br></p>



<p>一方でプリロードしたメディアファイルの初期化は.load()メソッドを使うと言う点は他のブラウザと変わりがない訳で、どうにも一貫していないんですよね。</p>



<p>やっぱりAppleは呪われるべきですわ。</p>
		<div class="wpulike wpulike-heart " ><div class="wp_ulike_general_class wp_ulike_is_restricted"><button type="button"
					aria-label="いいねボタン"
					data-ulike-id="8778"
					data-ulike-nonce="3d5b8bea14"
					data-ulike-type="post"
					data-ulike-template="wpulike-heart"
					data-ulike-display-likers=""
					data-ulike-likers-style="popover"
					class="wp_ulike_btn wp_ulike_put_image wp_post_btn_8778"></button><span class="count-box wp_ulike_counter_up" data-ulike-counter-value="0"></span>			</div></div>
	]]></content:encoded>
					
					<wfw:commentRss>https://blog.catwhisker.jp/archives/8778/feed</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>HTLM5、JavascriptでAudioオブジェクトのcurrentTime = 0では頭出しができなくなる現象について</title>
		<link>https://blog.catwhisker.jp/archives/8359</link>
					<comments>https://blog.catwhisker.jp/archives/8359#comments</comments>
		
		<dc:creator><![CDATA[tong]]></dc:creator>
		<pubDate>Sat, 10 Feb 2024 06:12:31 +0000</pubDate>
				<category><![CDATA[プログラム]]></category>
		<category><![CDATA[技術情報]]></category>
		<guid isPermaLink="false">https://blog.catwhisker.jp/?p=8359</guid>

					<description><![CDATA[非常にご無沙汰をしております。tongでございます。ここまで間があいてしまいますと「あんた誰？」みたいな方ばかりかと思いますが、自己紹介は無しの方向でお願いします。私事で色々ございましてなりを潜めておりましたが生活の為に... <div class="read-more navbutton"><a href="https://blog.catwhisker.jp/archives/8359">Read More<i class="fa fa-angle-double-right"></i></a></div>]]></description>
										<content:encoded><![CDATA[
<p>非常にご無沙汰をしております。tongでございます。<br>ここまで間があいてしまいますと「あんた誰？」みたいな方ばかりかと思いますが、自己紹介は無しの方向でお願いします。<br>私事で色々ございましてなりを潜めておりましたが生活の為にお仕事はする訳で、そこで「ちょいとハマった」事があって調べても中々わからなかったので、ここに書いておけば誰かの助けになるかなと言う事で書いておこうと思います。</p>



<p>背景説明としてはWebアプリの開発から7年くらい離れていたのですが、色々あって昔 自分がFlashで作った真面目な仕事のWebアプリ化を断ったら他所に頼んだけど失敗したので再度舞い戻って来た。って感じの話。</p>



<p>記事内容はタイトルの通りで、ネットワークの遅延を防ぐために100個位の短い音声ファイル（えっちぃ声じゃ無いよ）を先読みしてユーザー操作に応じて再生するって感じの挙動。<br><br>引っかかったのは2点で、一つは動的にAudio「タグ」を大量に生成してHTMLのエレメントに追加するとFirefoxでは読み込みに引っ掛かりが出る場合があること。<br>今回はAudioタグのコントロールを表示したりしないので、Javascriptのオブジェクトとして扱ってやれば回避可能でした。</p>



<p>もう一つは、Mac OS XのApple Safariのみ先読みした音声ファイルの2度目の再生が出来ない、あるいは途中から再生されると言う現象。<br>最初は「またアップルかっ！」とキレそうになるも、そこはホレ大人ですから落ち着いてよく考えてみる。<br>すると、まず途中から再生されるのは1回目の再生時に最後まで再生されない場合に再生位置が残っているのでは無いかと言う推察に至ります。<br><br>途中から再生されちゃダメなら再生前に頭出しすりゃ良いじゃん。って事で「currentTime = 0」を入れる訳ですが、これが出来ない。<br><br><strong>なにこれ？</strong><br><br>ReadOnlyでもないプロパティーに値がセットできないのは変です。異常です。<br>この辺をWebで検索するとSafariとChromeの自動再生回避ばかりが引っかかるんだけど、そうじゃないんだよね・・・<br>って事でさらに調べて行くと「new Audio(&#8216;URL&#8217;)でAudioオブジェクトを再度作るとcurrentTime = 0じゃ無くても頭出しできるよっ」みたいな記述がSafari開発者のコミュニティーで見つかったので早速実装。</p>



<p>ふむ、確かにSafariでは動く。しかし他のブラウザでテストを行うとFireFoxで動かないでは無いか。<br>件のページにも今のSafariは「さすがはSafari、大量にオブジェクトを作っても何とも無いぜ」だけど昔は大量にオブジェクトをnewすると動作が不安定になったってあって「やっぱりアップル関係者はSafariしか考えてないなっ！」となって居た訳です。</p>



<p>その後もcurrentTime = 0関連で、メモリー上に「先頭が0以外の値のAudioストリームデーターはcurrentTimeを0に出来ない」とか、色々出てきて「先頭が0以外の値のAudioストリームデーター」ってどんなよ？ってなるのですが、「あぁユーザーがコントローラーで再生位置をジャンプしたりするとそうなるか、<strong>メモリー上に無いなら出来ないわな</strong>」。<br>そして「new Audio(&#8216;URL&#8217;)」で解消できるって事は<strong>ダメな時はメモリー上にデーターが無かった</strong>って事であり、currentTime = 0に気を取られていたけど、これはもっと別の現象なのではと言う考えに至り・・・</p>



<p>そう、そうなんです。<br>これは「何らかの原因でメモリー上に音声データーが無い」事が原因なんですね。<br><br>ここで種明かしをすると、この現象はガーベイジコレクトが原因なんですね。<br>と言うか昔、同じECMAスクリプトであるActionScriptでも同じ現象に出くわした事が有った気がしてきました。<br><br>ガーベイジコレクトとは使用メモリーの節約機能で、ロードやアクセスしてから時間が経ったオブジェクトはエントリのためのオブジェクトのガワだけ残して実体はメモリーから削除されちゃうんです。<br>このため最初の頃はちゃんと再生できていた音声が時間が経つと正しく再生できなかったり、頭出しが出来ない等の現象が起きてしまう訳です。</p>



<p>では具体的にはどう対策したらよいのかと言いますと、new Audio(&#8216;URL&#8217;)でAudioオブジェクトを大量に作ると言う方法ではAudioオブジェクトの作り過ぎでスマートじゃない。何よりFireFoxで動かないなどの弊害があります。<br>これを回避するには、新しくオブジェクトを作るのではなくAudioオブジェクト.load(&#8216;URL&#8217;)とします。</p>



<p>//先読みでデーターをロードする<br>let soundObj_0 = new Audio(&#8216;sound/sound_0.mp3&#8217;);　//プリロード<br>・<br>・<br>//どのタイミングで音声データーが使われるか分からないので<br>//使うときはとにかくloadしてしまう<br>soundObj_0.load(&#8216;sound/sound_0.mp3&#8217;);　//再生前に無条件にロード<br>soundObj_0.currentTime = 0;　　//念のために再生位置を0リセット<br>soundObj_0.play();　　//音声再生<br><br>こんな感じですかね。</p>



<p>なお、2回目のload(&#8216;URL&#8217;)はブラウザ キャッシュからロードが行われるので読み込みにネットワークの遅延は出ないようです。</p>



<p>めでたしめでたし。</p>
		<div class="wpulike wpulike-heart " ><div class="wp_ulike_general_class wp_ulike_is_restricted"><button type="button"
					aria-label="いいねボタン"
					data-ulike-id="8359"
					data-ulike-nonce="2e55db5760"
					data-ulike-type="post"
					data-ulike-template="wpulike-heart"
					data-ulike-display-likers=""
					data-ulike-likers-style="popover"
					class="wp_ulike_btn wp_ulike_put_image wp_post_btn_8359"></button><span class="count-box wp_ulike_counter_up" data-ulike-counter-value="0"></span>			</div></div>
	]]></content:encoded>
					
					<wfw:commentRss>https://blog.catwhisker.jp/archives/8359/feed</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>WordPress で自動ギャラリーページ</title>
		<link>https://blog.catwhisker.jp/archives/4387</link>
					<comments>https://blog.catwhisker.jp/archives/4387#comments</comments>
		
		<dc:creator><![CDATA[mezzo forte]]></dc:creator>
		<pubDate>Thu, 16 Sep 2021 19:13:09 +0000</pubDate>
				<category><![CDATA[プログラム]]></category>
		<category><![CDATA[技術情報]]></category>
		<category><![CDATA[WordPress]]></category>
		<guid isPermaLink="false">https://blog.catwhisker.jp/?p=4387</guid>

					<description><![CDATA[以前のブログにあった「ギャラリー」ページですが、WordPress 更新でプラグインが動かなくなってしまったので久方止めていました。でも「あれ？ この画像、前にも上げなかったっけ」と思うことがあり、最近の WordPre... <div class="read-more navbutton"><a href="https://blog.catwhisker.jp/archives/4387">Read More<i class="fa fa-angle-double-right"></i></a></div>]]></description>
										<content:encoded><![CDATA[<div class="wp-block-image">
<figure class="alignright size-full"><a href="https://blog.catwhisker.jp/gallery" target="_blank" rel="noopener"><img loading="lazy" decoding="async" width="300" height="266" src="https://blog.catwhisker.jp/wp-content/uploads/2021/09/wp2.jpg" alt="らくがき置き場" class="wp-image-4405"/></a></figure>
</div>


<p>以前のブログにあった「ギャラリー」ページですが、WordPress 更新でプラグインが動かなくなってしまったので久方止めていました。でも「あれ？ この画像、前にも上げなかったっけ」と思うことがあり、最近の WordPress はメディアライブラリも一気に一覧表示されなくなったので、確認にちょっと不便。</p>



<p>元々使っていたプラグインは特定のカテゴリーに投稿した画像を一気に抜いて表示するものだったんですが、他のを探してもそれっぽいのがない。WordPress のギャラリー機能を使おうにも、過去画像に遡ってタグ付けしないとならないようで、ちょー面倒。</p>



<p>結局、固定ページのテンプレートを自作しちゃいました(笑)　２日ぐらいかかったので、素直にメディアライブラリでタグ付けした方が良かったかも…</p>



<p><a href="https://blog.catwhisker.jp/gallery" data-type="page" data-id="3869" target="_blank" rel="noreferrer noopener">→らくがき置き場</a></p>



<p>でも記事をカテゴリー分けするだけで、勝手に固定ページに投稿画像が追加されるので便利ですよ。たぶん。</p>



<p>需要はないかもですが、主要な部分のソースコード（page-gallery.php）置いておきますね。一応、出力タグは &lt;figure&gt; とか使って Gutenberg に遵守。なお前後のコードは使用中のテーマファイルの page.php に合わせないと、デザインが崩れると思うのであしからず。</p>



<span id="more-4387"></span>



<pre class="wp-block-code"><code>&lt;?php
/*
Template Name: ギャラリー
*/
get_header();
?&gt;
// この前後は使用中のテーマに合わせる
&lt;div class="container" id="main-content"&gt;

&lt;?php
  the_content();
  $paged = get_query_var('paged') ? get_query_var('paged') : 1;
  $args = array(
    'posts_per_page' =&gt; 50,  // 投稿ページ数(画像の表示数ではない)
    'paged' =&gt; $paged,
    'post_type' =&gt; 'post',
    'cat' =&gt; 5,              // カテゴリID
    'orderby' =&gt; 'date',
    'order' =&gt; 'DESC'
  );
  $the_query = new WP_Query( $args );
  $pages = $the_query-&gt;max_num_pages;
  $wp_query-&gt;max_num_pages = $pages;
  
  if ( $the_query-&gt;have_posts() ):
    while ( $the_query-&gt;have_posts() ):
      $the_query-&gt;the_post();
      $medias = get_attached_media( 'image', get_the_ID() );
      foreach ( $medias as $media ) {
        $img_size = wp_get_attachment_image_src( $media-&gt;ID, 'full' );
        if ( $img_size&#91;1] &gt; 300 and $img_size&#91;2] &gt; 300 ) {
          $title = $post-&gt;post_title;
          if ( mb_strlen ( $title, 'UTF-8' ) &gt; 11 ) {
            $title = mb_substr( $title, 0, 11, 'UTF-8' ) . '&amp;hellip;';
          }
?&gt;
    &lt;div class="wp-block-image"&gt;
      &lt;figure class="alignleft size-thumbnail"&gt;
        &lt;?php echo wp_get_attachment_link( $media-&gt;ID ); ?&gt;
        &lt;figcaption&gt;
          &lt;a href="&lt;?php the_permalink() ?&gt;" title="&lt;?php the_title(); ?&gt;"&gt;
            &lt;?php echo $title; ?&gt;
          &lt;/a&gt;
        &lt;/figcaption&gt;
      &lt;/figure&gt;
    &lt;/div&gt;
&lt;?php
        }
      }
    endwhile;
  endif;
  wp_reset_postdata();

  $pages = $wp_query-&gt;max_num_pages;
  $showItems = 3;
  if ( $pages != 0 &amp;&amp; $pages != 1 ):
?&gt;
  &lt;div class="page_nav"&gt;
&lt;?php    if ( $paged != $pages ): ?&gt;
    &lt;div class="previous navbutton"&gt;
      &lt;a href="&lt;?php echo get_pagenum_link( $paged + 1 ); ?&gt;"&gt;Previeous Gallery&lt;/a&gt;
    &lt;/div&gt;
&lt;?php    endif; ?&gt;
&lt;?php    if ( $paged != 1 ): ?&gt;
    &lt;div class="next navbutton"&gt;
      &lt;a href="&lt;?php echo get_pagenum_link( $paged - 1 ); ?&gt;"&gt;Next Gallery&lt;/a&gt;
    &lt;/div&gt;
&lt;?php    endif; ?&gt;
  &lt;/div&gt;
&lt;?php  endif; ?&gt;

&lt;/div&gt;
// この前後も使用中のテーマに合わせる

&lt;?php get_footer(); ?&gt;</code></pre>



<p>WP_Query でカテゴリーページの一覧を取得してループで回しているので、投稿ページ内の添付画像の数で１ページあたりの表示数が変わってしまうのはご愛敬。get_attached_media() で投稿ページ内の画像を添付 ID で抜き出し（完全ではない）、ループ内で画像１個ずつ wp_get_attachment_image_src() に突っ込んで、画像サイズを調べて 300px 超えの場合だけ表示するようにしています。</p>



<p>あとタイトルが11文字超えたら mb_substr() で縮めて、キャプションが２行にならないよう小細工していたり。固定ページじゃ鬼門と言われるページネーション機能つけたりとか。</p>



<p>設置方法は現在使用しているテーマファイルに上記ソースの page-gallery.php を追加し、固定ページを新規作成して、ギャラリーページのテンプレートでこれを呼び出せばいい感じ。</p>



<figure class="wp-block-image size-full"><a href="https://blog.catwhisker.jp/wp-content/uploads/2021/09/wp01.png"><img loading="lazy" decoding="async" width="300" height="621" src="https://blog.catwhisker.jp/wp-content/uploads/2021/09/wp01.png" alt="" class="wp-image-4391" srcset="https://blog.catwhisker.jp/wp-content/uploads/2021/09/wp01.png 300w, https://blog.catwhisker.jp/wp-content/uploads/2021/09/wp01-145x300.png 145w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></figure>



<p>スライドショーなどの画像表示周りは WordPress プラグインの <a rel="noreferrer noopener" href="https://ja.wordpress.org/plugins/fancybox-for-wordpress/" data-type="URL" data-id="https://ja.wordpress.org/plugins/fancybox-for-wordpress/" target="_blank">FancyBox for WordPress</a> を使っているだけで、特に手間はかけていません。</p>



<p>あと添付画像が記事に関連付けされていないと表示されないので、その際は WordPress プラグインの <a rel="noreferrer noopener" href="https://ja.wordpress.org/plugins/associate-attachment/" target="_blank">Associate Attachment</a> などを使って、未使用画像のチェックをして「投稿に添付」してみてください。</p>



<figure class="wp-block-image size-full"><a href="https://blog.catwhisker.jp/wp-content/uploads/2021/09/wp3.png"><img loading="lazy" decoding="async" width="754" height="514" src="https://blog.catwhisker.jp/wp-content/uploads/2021/09/wp3.png" alt="" class="wp-image-4425" srcset="https://blog.catwhisker.jp/wp-content/uploads/2021/09/wp3.png 754w, https://blog.catwhisker.jp/wp-content/uploads/2021/09/wp3-300x205.png 300w" sizes="auto, (max-width: 754px) 100vw, 754px" /></a></figure>



<p>その他、細かい解説は面倒なんでこんなところで。親切なんだか不親切なんだか…</p>


<div id="rinkerid8049" class="yyi-rinker-contents  yyi-rinker-postid-8049 yyi-rinker-img-m yyi-rinker-catid-10 yyi-rinker-catid-12 ">
	<div class="yyi-rinker-box">
		<div class="yyi-rinker-image">
							<a href="https://www.amazon.co.jp/dp/4873116783?tag=mezzoforte01-22&#038;linkCode=ogi&#038;th=1&#038;psc=1" rel="nofollow noopener" target="_blank"><img decoding="async" src="https://m.media-amazon.com/images/I/51dJyHCuBhL._SL160_.jpg" width="125" height="160" class="yyi-rinker-main-img" style="border: none;" loading="lazy"></a>					</div>
		<div class="yyi-rinker-info">
			<div class="yyi-rinker-title">
									<a href="https://www.amazon.co.jp/dp/4873116783?tag=mezzoforte01-22&#038;linkCode=ogi&#038;th=1&#038;psc=1" rel="nofollow noopener" target="_blank">詳解 WordPress</a>							</div>
			<div class="yyi-rinker-detail">
							<div class="credit-box">created by&nbsp;<a href="https://oyakosodate.com/rinker/" rel="nofollow noopener" target="_blank" >Rinker</a></div>
										<div class="price-box">
							<span title="" class="price">¥40</span>
															<span class="price_at">(2026/04/07 05:49:13時点&nbsp;Amazon調べ-</span><span title="価格および発送可能時期は表示された日付/時刻の時点のものであり、変更される場合があります。本商品の購入においては、購入の時点でAmazon.co.jpに表示されている価格および発送可能時期の情報が適用されます。">詳細)</span>
																	</div>
						</div>
						<ul class="yyi-rinker-links">
																                    <li class="amazonlink">
						<a href="https://www.amazon.co.jp/gp/search?ie=UTF8&amp;keywords=%E8%A9%B3%E8%A7%A3+WordPress&amp;tag=mezzoforte01-22&amp;index=blended&amp;linkCode=ure&amp;creative=6339" rel="nofollow noopener" target="_blank" class="yyi-rinker-link">Amazon</a>					</li>
													<li class="rakutenlink">
						<a href="https://hb.afl.rakuten.co.jp/hgc/383ce2b2.faca93d3.383ce2b3.849531dd/Rinker_o_20240122213215?pc=https%3A%2F%2Fsearch.rakuten.co.jp%2Fsearch%2Fmall%2F%25E8%25A9%25B3%25E8%25A7%25A3%2BWordPress%2F%3Ff%3D1%26grp%3Dproduct&amp;m=https%3A%2F%2Fsearch.rakuten.co.jp%2Fsearch%2Fmall%2F%25E8%25A9%25B3%25E8%25A7%25A3%2BWordPress%2F%3Ff%3D1%26grp%3Dproduct" rel="nofollow noopener" target="_blank" class="yyi-rinker-link">楽天市場</a>					</li>
								                											</ul>
					</div>
	</div>
</div>


<div id="rinkerid8050" class="yyi-rinker-contents  yyi-rinker-postid-8050 yyi-rinker-img-m yyi-rinker-catid-10 yyi-rinker-catid-12 ">
	<div class="yyi-rinker-box">
		<div class="yyi-rinker-image">
							<a href="https://www.amazon.co.jp/dp/4873117933?tag=mezzoforte01-22&#038;linkCode=ogi&#038;th=1&#038;psc=1" rel="nofollow noopener" target="_blank"><img decoding="async" src="https://m.media-amazon.com/images/I/51VvVTeZbvL._SL160_.jpg" width="124" height="160" class="yyi-rinker-main-img" style="border: none;" loading="lazy"></a>					</div>
		<div class="yyi-rinker-info">
			<div class="yyi-rinker-title">
									<a href="https://www.amazon.co.jp/dp/4873117933?tag=mezzoforte01-22&#038;linkCode=ogi&#038;th=1&#038;psc=1" rel="nofollow noopener" target="_blank">初めてのPHP</a>							</div>
			<div class="yyi-rinker-detail">
							<div class="credit-box">created by&nbsp;<a href="https://oyakosodate.com/rinker/" rel="nofollow noopener" target="_blank" >Rinker</a></div>
										<div class="price-box">
							<span title="" class="price">¥3,300</span>
															<span class="price_at">(2026/04/07 05:49:14時点&nbsp;Amazon調べ-</span><span title="価格および発送可能時期は表示された日付/時刻の時点のものであり、変更される場合があります。本商品の購入においては、購入の時点でAmazon.co.jpに表示されている価格および発送可能時期の情報が適用されます。">詳細)</span>
																	</div>
						</div>
						<ul class="yyi-rinker-links">
																                    <li class="amazonlink">
						<a href="https://www.amazon.co.jp/gp/search?ie=UTF8&amp;keywords=%E5%88%9D%E3%82%81%E3%81%A6%E3%81%AEPHP&amp;tag=mezzoforte01-22&amp;index=blended&amp;linkCode=ure&amp;creative=6339" rel="nofollow noopener" target="_blank" class="yyi-rinker-link">Amazon</a>					</li>
													<li class="rakutenlink">
						<a href="https://hb.afl.rakuten.co.jp/hgc/383ce2b2.faca93d3.383ce2b3.849531dd/Rinker_o_20240122213233?pc=https%3A%2F%2Fsearch.rakuten.co.jp%2Fsearch%2Fmall%2F%25E5%2588%259D%25E3%2582%2581%25E3%2581%25A6%25E3%2581%25AEPHP%2F%3Ff%3D1%26grp%3Dproduct&amp;m=https%3A%2F%2Fsearch.rakuten.co.jp%2Fsearch%2Fmall%2F%25E5%2588%259D%25E3%2582%2581%25E3%2581%25A6%25E3%2581%25AEPHP%2F%3Ff%3D1%26grp%3Dproduct" rel="nofollow noopener" target="_blank" class="yyi-rinker-link">楽天市場</a>					</li>
								                											</ul>
					</div>
	</div>
</div>


<div id="rinkerid8051" class="yyi-rinker-contents  yyi-rinker-postid-8051 yyi-rinker-img-m yyi-rinker-catid-10 yyi-rinker-catid-12 ">
	<div class="yyi-rinker-box">
		<div class="yyi-rinker-image">
							<a href="https://www.amazon.co.jp/dp/B079S4STTV?tag=mezzoforte01-22&#038;linkCode=ogi&#038;th=1&#038;psc=1" rel="nofollow noopener" target="_blank"><img decoding="async" src="https://m.media-amazon.com/images/I/41NfFti-7LL._SL160_.jpg" width="112" height="160" class="yyi-rinker-main-img" style="border: none;" loading="lazy"></a>					</div>
		<div class="yyi-rinker-info">
			<div class="yyi-rinker-title">
									<a href="https://www.amazon.co.jp/dp/B079S4STTV?tag=mezzoforte01-22&#038;linkCode=ogi&#038;th=1&#038;psc=1" rel="nofollow noopener" target="_blank">CODE: コードから見たコンピュータのからくり</a>							</div>
			<div class="yyi-rinker-detail">
							<div class="credit-box">created by&nbsp;<a href="https://oyakosodate.com/rinker/" rel="nofollow noopener" target="_blank" >Rinker</a></div>
										<div class="price-box">
							</div>
						</div>
						<ul class="yyi-rinker-links">
																	<li class="amazonkindlelink">
						<a href="https://www.amazon.co.jp/dp/B079S4STTV?tag=mezzoforte01-22&amp;linkCode=ogi&amp;th=1&amp;psc=1" rel="nofollow noopener" target="_blank" class="yyi-rinker-link">Kindle</a>					</li>
								                    <li class="amazonlink">
						<a href="https://www.amazon.co.jp/gp/search?ie=UTF8&amp;keywords=CODE%3A+%E3%82%B3%E3%83%BC%E3%83%89%E3%81%8B%E3%82%89%E8%A6%8B%E3%81%9F%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF%E3%81%AE%E3%81%8B%E3%82%89%E3%81%8F%E3%82%8A&amp;tag=mezzoforte01-22&amp;index=blended&amp;linkCode=ure&amp;creative=6339" rel="nofollow noopener" target="_blank" class="yyi-rinker-link">Amazon</a>					</li>
													<li class="rakutenlink">
						<a href="https://hb.afl.rakuten.co.jp/hgc/383ce2b2.faca93d3.383ce2b3.849531dd/Rinker_o_20240122213249?pc=https%3A%2F%2Fsearch.rakuten.co.jp%2Fsearch%2Fmall%2FCODE%253A%2B%25E3%2582%25B3%25E3%2583%25BC%25E3%2583%2589%25E3%2581%258B%25E3%2582%2589%25E8%25A6%258B%25E3%2581%259F%25E3%2582%25B3%25E3%2583%25B3%25E3%2583%2594%25E3%2583%25A5%25E3%2583%25BC%25E3%2582%25BF%25E3%2581%25AE%25E3%2581%258B%25E3%2582%2589%25E3%2581%258F%25E3%2582%258A%2F%3Ff%3D1%26grp%3Dproduct&amp;m=https%3A%2F%2Fsearch.rakuten.co.jp%2Fsearch%2Fmall%2FCODE%253A%2B%25E3%2582%25B3%25E3%2583%25BC%25E3%2583%2589%25E3%2581%258B%25E3%2582%2589%25E8%25A6%258B%25E3%2581%259F%25E3%2582%25B3%25E3%2583%25B3%25E3%2583%2594%25E3%2583%25A5%25E3%2583%25BC%25E3%2582%25BF%25E3%2581%25AE%25E3%2581%258B%25E3%2582%2589%25E3%2581%258F%25E3%2582%258A%2F%3Ff%3D1%26grp%3Dproduct" rel="nofollow noopener" target="_blank" class="yyi-rinker-link">楽天市場</a>					</li>
								                											</ul>
					</div>
	</div>
</div>
		<div class="wpulike wpulike-heart " ><div class="wp_ulike_general_class wp_ulike_is_restricted"><button type="button"
					aria-label="いいねボタン"
					data-ulike-id="4387"
					data-ulike-nonce="56a7a3caee"
					data-ulike-type="post"
					data-ulike-template="wpulike-heart"
					data-ulike-display-likers=""
					data-ulike-likers-style="popover"
					class="wp_ulike_btn wp_ulike_put_image wp_post_btn_4387"></button><span class="count-box wp_ulike_counter_up" data-ulike-counter-value="+1"></span>			</div></div>
	]]></content:encoded>
					
					<wfw:commentRss>https://blog.catwhisker.jp/archives/4387/feed</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>Adobe Animate CC（旧Flash Professional CC）の不具合メモ</title>
		<link>https://blog.catwhisker.jp/archives/3720</link>
					<comments>https://blog.catwhisker.jp/archives/3720#respond</comments>
		
		<dc:creator><![CDATA[tong]]></dc:creator>
		<pubDate>Sun, 17 Apr 2016 05:07:22 +0000</pubDate>
				<category><![CDATA[プログラム]]></category>
		<category><![CDATA[技術情報]]></category>
		<guid isPermaLink="false">https://blog.catwhisker.jp/?p=3720</guid>

					<description><![CDATA[現在作成中のゲームはFlash Professional CCを使ってAdobe Air で開発していますが、先日Flash ProfessionalがAdobe Animate CCに名称変更されました。 で、インスト... <div class="read-more navbutton"><a href="https://blog.catwhisker.jp/archives/3720">Read More<i class="fa fa-angle-double-right"></i></a></div>]]></description>
										<content:encoded><![CDATA[<p>現在作成中のゲームはFlash Professional CCを使ってAdobe Air で開発していますが、先日Flash ProfessionalがAdobe Animate CCに名称変更されました。<br />
で、インストールして試してみましたが致命的なバグがあったのでメモしておきます。</p>
<ul>
<li>作成しているAriアプリケーションの内容<br />
XMLに記述されているファイル一覧を元に外部ファイルを読み込みユーザーの操作に応じて適宜再生表示する。</li>
<li>不具合発生の経緯<br />
Adobe Animate CCからAri インストーラーを書き出してインストール実行しAir アプリケーションを起動しても、自動で読み込まれるはずのファイルが読み込まれず停止する。</li>
<li>不具合の考察<br />
試しにインストール先のフォルダに読み込むファイルを全部コピーすると正常に起動するのでファイル名が異常かファイル一覧の文字化けのどちらかが疑われる。</li>
<li>と言う事で外部ファイルが入っているフォルダをエクスプローラーで開くと一部、全く同名のファイルが2つ存在する！と言うなかなかシュールな絵面になっている事を発見。
<p><div id="attachment_3721" style="width: 250px" class="wp-caption alignnone"><a href="https://blog.catwhisker.jp/wp-content/uploads/2016/04/ss.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-3721" class="wp-image-3721 size-medium" src="https://blog.catwhisker.jp/wp-content/uploads/2016/04/ss-240x300.png" alt="Adobe AnimateCCの不具合" width="240" height="300" srcset="https://blog.catwhisker.jp/wp-content/uploads/2016/04/ss-240x300.png 240w, https://blog.catwhisker.jp/wp-content/uploads/2016/04/ss.png 680w" sizes="auto, (max-width: 240px) 100vw, 240px" /></a><p id="caption-attachment-3721" class="wp-caption-text">Adobe AnimateCCの不具合</p></div></li>
</ul>
<p>と言う事でコマンドプロンプトで「Dir」を掛けてみるとファイル名が2バイト文字かつ「濁点、半濁点」を含んでいた場合に元の文字＋「゛」または「゜」と言う感じにファイル名が変わっている事が判明（ただし、エクスプローラーでは正しいファイル名の様に見える）</p>
<p>Flash Professionalではこのような現象は発生していないので当面はFlash Professionalに戻して開発を続けてます。</p>
<p>まぁファイル名に2バイト文字を使うなって話かもしれませんが、やらなくても良いアップデートでファイル操作と言う基本的な個所にバグを混入してくるのはマジ勘弁って感じです。</p>
		<div class="wpulike wpulike-heart " ><div class="wp_ulike_general_class wp_ulike_is_restricted"><button type="button"
					aria-label="いいねボタン"
					data-ulike-id="3720"
					data-ulike-nonce="78a7384e6e"
					data-ulike-type="post"
					data-ulike-template="wpulike-heart"
					data-ulike-display-likers=""
					data-ulike-likers-style="popover"
					class="wp_ulike_btn wp_ulike_put_image wp_post_btn_3720"></button><span class="count-box wp_ulike_counter_up" data-ulike-counter-value="0"></span>			</div></div>
	]]></content:encoded>
					
					<wfw:commentRss>https://blog.catwhisker.jp/archives/3720/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
