にしし ふぁくとりー:西村文宏 個人サイト

Presented by Nishishi via Movable Type. Last Updated: 2024/05/31. 22:51:16.

てがろぐに「簡易適用スキン」の設定が勝手に切り替わるバグがあった話

こんなバグがあるとは

拙作のフリーCGI「てがろぐ」で、久々になかなか予想しないバグが発見されて驚きました。
どへぇ。どへぇ。どへぇ。┌(:3」└)┐

現在のてがろぐ(Ver 4.3.0)には、ある条件を満たすと『簡易適用スキンの設定が勝手に切り替わってしまう』という下記に解説するバグ(表示上の問題)があります。おそらく、予約投稿機能を実装したときから存在したバグだと思いますから、Ver 4.0.0~4.3.0の間に存在するバグだと思います。(※β版も含めると、Ver 3.9.3β以降)

(★追記:2024/05/29)
過去に1度も予約投稿をしたことがない場合には、このバグは問題を起こさないことが新たに分かりました。(つまり、発生条件は2条件ではなく3条件です。下記の話を更新しました。)

(★追記:2024/05/31)
➡ このバグは、Ver 4.3.1βで解消しました。最新版をご使用頂けば、問題はなくなります。

▼このバグの影響が元々ないのは……

  • 過去に1度も予約投稿をしたことがない場合には、何も影響はありません。
    (※予約投稿をしたことがあっても、予約日時の到来後にその投稿を消すか再編集するかなどして「予約(掲載済)」フラグの付いた投稿が存在しなくなっている場合にも影響はありません。)
  • 今、予約投稿機能OFFに設定している場合には、何も影響はありません。
    (※過去に予約投稿をしていても、今の設定がOFFなら影響はありません。)
  • 過去に予約投稿をしたことがあり、今も予約投稿機能がONの状態でも、複数のスキンを併用していない場合には、何も影響はありません。
    (※とはいえ、たとえ通常モードで使うスキンが1種類だけでも、ギャラリーモードやサイトマップページモードを併用しているなら、それ用のスキンが存在するハズですので影響がある点にご注意下さい。)
  • あくまでも「表示上の問題」なので、そのバグによって何らかの危険があるわけではありません。
    とはいえ、簡易適用スキンの設定が勝手に切り替わってしまうと困るでしょうから(特にアクロバットにたくさんのスキンを役割別に併用している場合など)、下記で紹介する発生条件に該当していないかどうかの確認はお勧め致します。

今後のバージョンで解消はしますが、とりあえず応急的に、現時点での解決策は3点あります。
そのどれかの対処をお勧め致します。

話を早く済ませたい場合(簡単な対処方法)

※過去に1度も予約投稿をしていない場合には、そもそも何も問題ありません。(何も対処は要りません。)

てがろぐで予約投稿機能を使っていないか、使う頻度が低い場合は、とりあえず予約投稿機能をOFFに設定しておくことをお勧め致します(※初期状態でOFFです)。予約投稿機能が無効なら、本件のバグは特に問題を起こしません。

※予約投稿機能をOFFにするには、管理画面の[設定]→[投稿欄の表示]→【日時ボタンの表示設定】→[▼未来の日時で投稿された場合の動作]で、下図の水色矢印の先のように、『予約投稿として扱う』ではなく『そのまま表示する』の方を選択して保存します。(既に『そのまま表示する』が選択されている場合は、予約投稿機能はOFFになっています。)

予約投稿機能をOFFに設定する画面位置

※予約投稿機能は、デフォルトでOFFです。(なので、自ら設定をONに変更していない限り、本件のバグの影響はありません。)

バグの内容(詳細)

特定の発生条件(後述)を満たすと、簡易適用スキンの設定が勝手に切り替わってしまうバグです。
単に「簡易適用スキン」が切り替わるのではなく、「簡易適用スキンの設定」自体が切り替わってしまいます。(そのため、全閲覧者に一斉に影響します。)

※簡易適用スキンの設定のほか、「1ページに表示される投稿数」の設定も、そのスキンに合わせて設定値自体が変化します。

▼バグの主な発生条件

以下の3条件すべてを同時に満たしている場合にだけ、上記の問題が発生します。

  • 【条件①】未来の日時を『予約投稿として扱う』よう設定されている。(=予約投稿機能をONに設定している)
  • 【条件②】メインで使うスキン以外のスキンに、新着投稿リストを表示するための記法 [[LATESTLIST]] が記述されている。(=メインで使うスキン以外のスキンで生成されるページ上に、新着投稿リストが表示されている)
  • 【条件③】過去に1度でも予約投稿をしたことがあり、その投稿を(掲載日以降に)再編集または削除していない。

この3条件を同時に満たしているときに、『そのスキンを表示すると、簡易適用スキンの設定が勝手に切り替わってしまう』という問題が発生するバグがあることが分かりました。

▼バグの回避方法

次のバージョンで、このバグは解消します。(作者のローカルにあるソースは既に修正しました。)
現状のバージョンでこのバグを回避するには、下記のA・B・Cのどれかの方法をご使用下さい。

  • 【暫定解決策A】予約投稿機能をOFFにする。(=未来の日時を『そのまま表示する』に設定する)
  • 【暫定解決策B】メインで使うスキン以外のスキンには [[LATESTLIST]] を書かない。(=メインで使うスキン以外では新着投稿リストを表示しない)
  • 【暫定解決策C】過去に予約投稿機能を使って投稿した投稿(※管理画面の記事一覧で $ps=scheduled で検索すると見つかります)をすべて再編集する。(中身は変化させなくて良いので、てがろぐ上で再編集画面を出して保存するだけでOKです。要は「予約投稿だった」というフラグをなくせば良いので。)

もしかしたら他にも回避方法があるかもしれませんが。今のところ上記の3つの方法があります。(どれか1つだけで充分です。)

※解決策Aの場合:予約投稿に設定している投稿がない状況でも、設定で「予約投稿機能がON」の状態ならバグの影響を受けますのでご注意下さい。「使わなければ良い」のではなく「無効に設定する」必要があります。

▼バグの動作例

例えば、

  • 一度でもギャラリーモードで表示すると、それ以後は、通常モードに戻っても、ギャラリー用スキンが簡易適用されて表示される。(※管理画面の「スキンの切替」で、ギャラリーモード用スキンが簡易適用されている旨が表示される。)
  • 一度でもサイトマップページモード表示すると、それ以後は、通常モードに戻っても、サイトマップページ用スキンが簡易適用されて表示される。(※管理画面の「スキンの切替」で、サイトマップページ用スキンが簡易適用されている旨が表示される。)
  • 一度でもskinパラメータを使う方法で何らかのスキンを表示に使うと、それ以後はずっとそのスキンが簡易適用されて表示される。(※管理画面の「スキンの切替」でも、そのスキンが簡易適用されている旨が表示される。)

……などのパターンがあります。

要するに、本来は「メインで使うスキン」で表示されるはずの通常モードでも、「直前に適用されていたスキン」で表示され続けてしまうバグです。
しかも、「簡易適用スキンの設定」自体が変化するので、閲覧者1人だけの問題ではなく、『誰かがギャラリーモードを表示すると、それ以後は全閲覧者に対して(通常モードでも)ギャラリーモード用スキンで表示されてしまう』というような影響があります。

▼既にこのバグの影響を受けている場合の解決操作方法

既にこのバグの影響を受けて、意図しないスキンが常時表示されてしまっている場合は、次の2操作を行って下さい。

  1. 管理画面の[設定]→[投稿欄の表示]→【日時ボタンの表示設定】→[▼未来の日時で投稿された場合の動作]で、『予約投稿として扱う』ではなく『そのまま表示する』に変更して保存します。
  2. 管理画面の[スキンの切り替え]画面を表示し、普段の状況に戻します。
    • もし、tegalog.cgiと同じディレクトリにあるスキンを使っていたなら、『デフォルトスキンの適用に戻す』ボタンを押して、スキン状態を元に戻します。
    • もし、何らかの別のスキンを簡易適用して使っていたなら、一覧からそのスキンを探して「本番適用(簡易)」ボタンを押して、望みのスキンに切り替えます。

上記のように操作すると、表示は元通りになり、それ以後はこのバグによる表示上の問題は発生しないはずです。

予約投稿を使わないなら、設定でOFFを推奨

普段に予約投稿機能を使っていない場合でも、「もしかしたら使うかも」と思って予約投稿機能をONに設定している方々もいらっしゃるかもしれません。

しかし、

  • 予約投稿機能を有効にしている状態で、
  • 過去に1度でも予約機能で投稿を掲載したことがある場合(※かつ、その投稿を予約日時の到来後に再編集していない場合)

……は、てがろぐにアクセスされるたびに(毎回)設定ファイル(標準では tegalog.ini)の書き換えが発生する仕様ですので、無駄な処理が増えます。(将来的には改善したいと思っていますが。)

したがって、予約投稿機能を使わないなら、そもそも(今回のバグの影響があるかどうかに関係なく)予約投稿機能は無効に設定しておくことをお勧め致します。

※時々は使うという場合でも、その頻度が低いのであれば、「使うときにだけONにする」という運用形態にする方が、無駄な処理は抑えられます。

自力では間違いなく気付けなかったな……という話

なかなか予想しない驚きのバグでした。
そもそも、

  • 私が個人的には予約投稿機能を使っていない
  • 標準添付のスキンでは(ギャラリーモード用スキンでもサイトマップページモード用スキンでも)サイドコンテンツは少なめで、新着投稿リストは含んでいない

……ので、ユーザさんから動作不具合をお知らせ頂いて調査してみなければ、ほぼ100%発覚しないバグだったと思います。

ご報告頂けてとてもありがたいです。
バグ報告を下さった方に感謝致します。

まだバグの解消はしていないのですが、解消方法は概ね分かりましたので、次のβ版で修正します。 ➡Ver 4.3.1βで解消しました。

▼補足:バグの稀な発生条件

発生頻度はかなり低そうな気がしているのですが、以下の条件でも同様の問題が発生するかもしれません。

  • 前提:メインで使うスキン以外のスキン内に、日付限定プルダウンメニューまたは日付リンクリストを掲載している。
  • 条件:日付リンクリストや日付限定プルダウンメニューのキャッシュデータを更新する(=再生成する)タイミングで、メインで使うスキン以外が表示されていた場合。

ただ、このような条件が成立することがあるかどうかハッキリとはしないのですけども。
(もしこの問題がある場合で、これを回避する必要がある場合には、(今のところは)スキンの中に日付リンクリストや日付限定プルダウンメニューを含まないようにするくらいしかありません。)

まあ何にしても、次のバージョンで修正します。 ➡Ver 4.3.1βで解消しました。

コメント

コメント数: 0件

コメント投稿欄 この日記に対するコメント投稿を歓迎します。



※本文中にURLは書けません。(書くと投稿が拒否されますのでご注意下さい。)

※ご投稿頂いた内容は、掲載前に管理者が確認する設定にしている場合があります。たいていは数日以内には表示されるはずですので、気長にお待ち願います。m(_ _)m

著者紹介


にしし(西村文宏)

にししでございます。本書いたり記事書いたりしてます。あと萌えたり。著書5冊発売中です(Web製作系4冊+小説1冊)。著書や記事は「西村文宏」名義。記事は主にAll Aboutで連載。本の最新刊は2011年3月に発売されたライトノベルでございますよ。

Twitter:にしし/西村文宏
にしし/西村文宏 on facebook にしし/西村文宏 on mixi フォローはお気軽に!

にしし(西村文宏)連絡先
☕ コーヒーをおごる

著書一覧と詳細

にししふぁくとりー Sakura scope内限定での主要なカテゴリ

--- 当サイト内を検索 ---