Contents - 目次
iPhoneだけ表示がおかしい。
WindowsもMacもAndroidも問題なく、iPhoneだけ。
iPhoneのブラウザでだけ表示がおかしい。
iPhoneのブラウザ(Safari、Chrome、Edge)でのみ、表示に不具合がある。
このような現象は見たことも聞いたこともなく、ネット上を調べてみてもどこにも情報が見つからない。
だけども今現在、実際に起こっている。
文字コード?
エディタはVS Code。デフォルトで-UTF-8になる。
VS Codeで作成したファイルは、デフォルトで文字コードが「UTF-8」、改行コードが「LF」、BOMは「なし」となる。
参照元:VS Code PowerShell Microsoft
これは特にVS Codeに限ったことではなく、現在主流のエディタでは普通の初期設定だろう。
UTF-8はスタンダードな文字コード。
UTF-8。
2006年、2007年にはすでに、UTF-8はスタンダードになり始めていた。
2010年代に職業訓練校で講師をしていた時期があるが、そのときのカリキュラムでもUTF-8で作成することになっていた。
そもそもエディタの初期設定がUTF-8なのだ。
(※HTMLファイルのmeta要素や、CSSファイルの1行目でも当然、UTF-8を指定。)
なので、個人でも会社でも授業でも、UTF-8以外でサイトを制作したことが一度もない。
サーバーにファイルをアップロードすると文字コードと改行コードが変わってしまう。
サーバーのメンテナンス?
該当サーバーではないのに。
ところが、ここ2年くらい、10年ほど前から使用しているレンタル共用サーバー(さくらインターネット)で不可思議な現象が続いている。
昨年、2022年9月にサーバーの大きめのメンテナンスがあり、事前にもメールで連絡が届いていたが、該当サーバーには入っていなかった。
ただし、その後に該当サーバーではないサイトが完全に表示不可となっていることを、クライアント様からの連絡でわかった。
突然の大量メール。
半日ほどで1,800通の迷惑メールが届く。
先月末、2023年3月30日に同じサーバー内の別サイトで、1分間に数十通、半日ほどで1,800通以上という大量メールが届いたことがあった。
このサイトのクライアント様は、メールの宛先を私とご自身のキャリアメール宛を希望しているため、クライアント様の携帯へも1,800通のメールが届いた可能性がある。(携帯キャリア側の迷惑メールフィルターが効いていない場合など。)
サーバーへ問い合わせた約10時間後に、ようやく止まった。
クライアントの方はサーバーはもちろん、インターネットやホームページも得意ではない方なので、こちらからはあえて報告等はしなかった。
サーバーの迷惑フィルターは「推奨の設定」にしていたが、迷惑フォルダへは振り分けられなかった。
(※その後、2023年か2024年に、「高性能迷惑メールフィルター」的なものが追加されていた。)
データベース接続確立エラー。
他のサイトも一時表示不可。
同日早朝には、同じサーバー内の別サイト2つで、「データベース接続確立エラー」も発生していた。
このときも契約しているプランとは別のサーバーで複数の障害が発生しており、2日前にメンテナンスも行われていた。
過去に経験のない現象。
原因がわからない。
15年以上のキャリアで、少なく見積もっても数十サイトは制作しているが、文字コードの問題と大量メールは初めてのことだった。
他社サーバーでもなく、携帯のキャリアメールでも経験がない。
ウィルス、マルウェアなどの被害も一度もない。
WindowsからのメールやファイルがShift-JISで届き、Macで開くと文字化けしていた、くらい。
2013年頃のWordPressの事例。
WordPressの不正アクセス。
このときは他社のサーバーだったが、2013年頃に「WordPressの不正アクセス」の問題が発生したことがある。
WordPressサイトへの不正アクセスによる、データの改ざんや、踏み台となっていたらしい。
WordPressサイトが対象というアナウンスだったが、なぜか「WordPressではないサイト」が閲覧不可となった。
その日はクライアントの方から夕方から夜間に連絡があり、サーバー窓口へ連絡したところ、至急対応をしていただけすぐに復旧した。
今回同様、クライアント経由で判明した事例なので、ある意味証人がいる。
サーバーのスペックは?
さくらインターネットのビジネスプラン。
ビジネス向けの、比較的料金高めのサーバー。
2年くらい前に、2日間ほどVS CodeやCodaからのファイルのアップロードができないという現象があり、その際にサーバー会社のサポートへ問い合わせたところ、なぜか繰り返し「FileZillaを使ってアップしてください。」と言われたことがあった。
おそらく、ただマニュアルに書かれていることをそのまま言っているだけなのだろう。
携帯電話の通信だったら?
これがもし携帯電話だった場合、通信が2日間つながらなければかなり大きな問題となる。
通信障害は、2022年にも大手キャリアで実際に起こっている。
大手銀行のシステム障害も同様、起こり得ること。
言葉が伝わらない。
誰かを責めたい、ヒューマンエラーを指摘したいのではなく、問題が解決すればよいと繰り返し伝えていたのだが、この言葉自体が伝わらないので参ってしまう。
埒が明かないので結局サーバーを変えて対処したが、今回、簡単にはサーバーを変えられない事案が発生してしまった。
たまたまのサイト更新依頼で判明。
MacやWindows、AndroidのChromeやiPadのSafariはOK。
今回は2015年に制作したサイトの更新依頼があり、その作業をしようとしたところ、なぜかiPhoneのブラウザでのみ、表示が不安定という現象に陥った。
クライアント様から保守・管理の費用をいただいているわけではないので、もし更新依頼がなければ気がつかなった。
MacやWindowsの主要ブラウザでは全く問題なく、AndroidのChromeやiPadのSafariでも問題がない。
なぜか、iPhoneのブラウザだけ、Safariでも、Chromeでも、Edgeでも、表示不具合な状態となっている。
ファイルマネージャーからアップロード。
原因切り分けのため、FTPソフトの原因を省く。
ファイルマネージャーからアップロード。
2年前に理解に苦しむ対応を受けた経験があったので、今回はFTPを使わず、わざわざサーバーのコントロールパネル内のファイルマネージャーからアップロードを行なった。
ちなみにファイルマネージャーからのアップロードは、5MBまでしかできない。(メールでも20MBは送れる。)
これで使用ソフト(といっても現在主流となっているVS Code)が原因である可能性を消すことができる。
が、しかし、iPhoneでのみという、レアな表示不具合は解決されなかった。
検索して探し回る。
延々とネット上やサーバー会社のヘルプページを探し回ってみても、解決の糸口が見つからない。
そんな中ふとまた2年前のことが頭をよぎり、その際に文字コードのエラーが表示されたことを思い出した。
ファイルマネージャーを確認。
EUC-JP?
すぐにファイルマネージャーを確認したところ、なぜかファイルが「EUC-JP」の「CR+LF」という全く身に覚えのない設定に変わっていた。
文字コードがEUC-JPに?
EUC-JPとCR+LF?
文字コードや改行コードは、ファイルマネージャー内でも変更できる仕様となっており、プルダウンメニューで「UTF-8」や「LF」を選択できる。
なのでファイルマネージャーから変更を試みたところ、「改行コード」は変更できるが、「文字コード」の変更ができない。
何度やっても、VS CodeでもCodaでもAtomでも、ネット上の文字コード変換サイトでも試してみたが、ファイルマネージャーへアップした途端に、単なるHTMLやCSS、JavaScriptの一部のファイルが「EUC-JP」となってしまう。
(※Atomは開発終了しているが、ローカル上のエディタとしては特に問題なく使える。)
文字化けしているわけではない。
文字コードが違う場合パッと思い浮かぶのが、「文字化け」。
だが、文字化けをしているわけではなく、表示がされたりされなかったり途中で消えたりという、不安定な状態が起きている。
EUC-JPとUTF-8のシェア率。
近年のWebサイトにおける「EUC-JP」のシェア率は0.1%であり、97%以上は「UTF-8」である。
参照:Historical yearly trends in the usage statistics of character encodings for websites, August 2024
参照:UTF-8が増加 – 1月Webサイト向け文字エンコーディングシェア | TECH+(テックプラス)
日本語サイトもほとんどが「UTF-8」なので、全く意味がわからない。
どうしようもないので、サーバー会社へ問い合わせ。
サーバーの良し悪し。
自分の周りでもネット上でも、サーバーの良し悪しは常に話題となっている。
新規でサイトを作るときは、ほぼ100%、どこのサーバーが良いかを聞かれる。
なので正直なところ問い合わせには躊躇するが、クライアント様のサイトで発生しているため問い合わせざるをえない。
しかも未だにコールセンターがコロナの影響で閉鎖中となっているので、メールで連絡を行った。
ユーザー側の問題?
サーバーの文字コードは、こちら側のコンテンツではない。
ファイルマネージャーや文字コードの件で連絡をしているのに、案の定、その場しのぎのような理屈の合わない理由をつけられ、「こちら側が作ったコンテンツ」、「こちら側のプログラム」の問題にされてしまった。
文面に惑わされるので、改めて整理すると、
- サーバーのファイルマネージャーは「こちら側が作ったコンテンツ」ではない。
- 今回のサイトを構築しているHTMLやCSS、SSIは、正確には「プログラム」や「プログラミング言語」とは呼ばない。
- SSI(Server Side Includes)は、サーバーのヘルプに記載されている方法で読み込んでおり、実際に7年以上問題なく表示されていた。
- 文字コードの件は完全にスルー。
以上のように状況を整理し、返信をしたが、土日を迎えてしまった。
これでまた2日間、ホームページの表示に不具合がある状態となる。(iPhoneのみだが使用率が高い。)
ChatGPTへも相談。
AIの活用。
とにかく復旧させるべく、ChatGPTへも相談してみた。
Google翻訳を使い、つたない英語でサーバー担当者になってもらい、状況を説明。
ChatGPTはこのような内容は得意だと思われる。
すると、なかなか具体的な回答があった。
なるべく精度を高めるため英語で質問。
Google翻訳で日本語にしたもの。
担当者「person in charge」のスペルを打ち間違えて「person in change」と入力してしまったが、意図はChatGPTに伝わっている。
こういうときのChatGPTは優秀。
VS Codeやその他のエディタの複数で「UTF-8」ファイルを作成し、FTP経由ではなくサーバーのファイルマネージャーからアップしている。
なので、ChatGPTによる提案の「2」と「3」の項目は外れる。
その他の、
- 「1」については、0.1%のシェア率の文字コードを利用する理由がない。なので97%以上のUTF-8にする方が現実的。
- 「4」については、W3CのバリデータとChatGPTによるチェックで問題なしと確認。
- 「1」については、もともとUTF-8で作成しており、その後サーバー内で「UTF-8」と「EUC-JP」が混在しているため、除外される。
- 「2」については、FTPソフトを使用するとソフトの原因と言われてしまうので、消去法としてファイルマネージャーからアップロードしている。
- 「3」については、日本のサーバーなので、言語は必然的に日本語である。
- 「4」の「特殊文字」は使用していない。
SSI(Server Side Includes)の認識。
少なくとも自分の周りにはSSIのことをプログラムと呼んでいる人は過去にも現在にもいない。
念のためChatGPTにも聞いてみると、
のようだ。
HTMLファイルとCSSファイルのチェックは問題なし。
W3CのバリデータとChatGPTで。
HTMLファイルのコードは、ChatGPTとW3CのMarkup Validation Serviceで確認したが、No errorsであり、Validだ。
CSSファイルも、W3CのCSS Validation Serviceでエラーなしと確認済み。
同時期に制作した他のSSIのサイトは異常なし。
WordPressサイトではないのでSSIを使用しているが、2015年〜2022年までは特に問題なく、同時期にSSIを使用して制作した別サイトは今現在でも問題なく表示されている。
もしこの別サイトも同じ現象であればSSIの可能性を疑えるが、事実として問題がなく、むしろSSIの問題ではないことを証明できるサイトとも言える。
SSIのチェックも問題なし。
.htaccessでSSIを有効化し、サーバーのヘルプページに記載されているSSIの読み込みコードとも一致している。
.htaccessでのSSI有効化。
Options +Includes
AddHandler server-parsed .shtml
SSIの読み込み。
<!--#include virtual="xxxxx/xxxxx.shtml"-->
(※「xxxxx」の部分には実際のパスやファイル名が指定されている。)
コンソール。
404でfaviconが見つかりませんという旨のエラーが出ているが、該当サイトはロゴが2つあるためファビコンを設定していない。
また、それ以外にエラーはない。
補足。
- iPhone以外では正常に表示されているので、パスの問題でもない。
- 拡張子はもともと.htmlにしていたが、2022年にサーバー会社の指示により.shtmlに変更。
- 前述の、SSIを使用している別サイトでは現在でも.htmlで問題がない。
サーバー費が未納では?
年間契約をしているので、すでに金額の支払いが済んでいる。
容量の問題では?
ストレージ使用量600GB中、7.25GBしか使用していない。
転送量は「無制限」である。
結論、結果、そして後日追記。
ローカルの文字コードと、iOSのバージョンと、サーバーのデフォルト文字コード。
ローカル上の文字コード。
VS Codeでは「UTF-8」となっている。
当初はAtomでコーディングされ、UTF-8で保存されていたが、VS CodeでもUTF-8で保存し直していた。
Appleからの通知。
Appleからアップデートの通知が届き、iOS16.4.1へアップした後、自然に解消。
2015年から特に問題なかったサイトが、たまたまiOSのバージョンと文字コードなどの相性が悪かったため、一部のiOSのバージョンのiPhoneのみ表示に不具合が出ていたということになる。
サーバー側からの返答。
サーバーの担当者の方からも回答が届いた。
ローカル上のエディタではUTF-8で保存されているファイルに、マルチバイトが含まれていないものがあったため、サーバー側でASCIIとの判定となり、文字コードがサーバーデフォルトのEUC-JPへ変わった、ということがあるそうだ。
ちなみにマルチバイト(日本語など)が含まれていない半角英数のみだったファイルは、リセットCSSくらいだった。
まぁ様々が絡み合った結果、iPhoneのみでサイト表示に不具合が出た、というレアなケースだった。
サーバーが変わっていた。
別件でサーバー会社からメールが届き、同時期に旧サーバーから新サーバーへのリプレイスが行われていたとのこと。
となると、当然、サーバー側で作業があったということになる。
しかし問い合わせ時にはそのような情報は、一切教えていただけていない。こちら側とApple社の原因として処理されている。
新サーバーでは逆に速度が低下。
しかも、新サーバーへ以降後に速度が低下している。
PageSpeed Insightsで20点ほど下がった。ちなみに他社サーバーでは変わらず90点ほど。
送信エラーでメールが送れない。
さらにメールの送信エラーも出た。
こちら側の環境(使用PCやソフト、ネットなどのインフラ類も。)は一切変わっていないのに、サーバーの証明書の問題でメールの送信ができない状況となった。
すぐにはわからなかったので、わざわざiPhoneから送ることとなった。
その後時間ができてから、「続ける」から進んで設定をアップデートすると解消されたが、これもサーバー側でなんらかの作業があった証拠にもなるのではないだろうか。
こういうことがあるので、ユーザー側は困るのだ。
WordPressのメディアファイルが空白に。
メディアの追加もアイキャッチ画像の設定もできない。
iPhoneのみの表示不具合の件のことをすっかり忘れていたころに、また不可思議な現象が起こった。
突然、WordPressのメディアファイルが空欄になった。
参考:投稿へメディアの追加とアイキャッチ画像の設定ができないときのWordPress。
iPhoneのみのブラウザ不具合と、その後のメールエラーのように。
同日の深夜、サーバーの設定で拒否しているはずのフォルダやファイルへのアクセスログが残っていた。
この件も時間がかかったが結局文字コードの問題であり、少し前に、メールの送受信サーバーの設定方法が変わるという連絡が届いていた。
WordPressサーバーと、それ以外のサーバーのように。
メールサーバーとWebサイトのサーバーは異なっていると思うが、タイミング的になんらかの原因で影響が出た可能性がある。
サーバーエラーの発生がひどく、SEOに大ダメージがあり、4ヶ月続いていた月間30,000人のアクティブユーザー数が、3ヶ月ほどで半分に。
検索順位やユーザー数が大きく減少したのは初めての経験で、Googleのコアアップデート(2024年3月と8月)とも重なっておらず。
そのため、やむなくエックスサーバーへ移転。(前払いのサーバー代約30,000円も無駄に。)
エラーログを見てみたところ、1日で300,000件超のエラーが度々あり。(最高で700,000超。)
エックスサーバーが全て良しというわけではなく、エラーの基準も違うはず。それでもサーバーのエラーログは、あっても1日数件か十数件です。
以上、参考になれば幸いです。
※Webデザインは実務数年、職業訓練校講師数年、フリーランス数年、計15年以上のキャリアがありますが、一気にがぁっと書いているので「です・ます調」ではありません。(元々はメモ書きでした。) ※事実や経験、調査や検証を基にしていますが、万一なにかしら不備・不足などがありましたらすみません。お知らせいただければ訂正いたします。 ※写真は主にUnsplashやPixabayのフリー素材を利用させていただいております。その他の写真や動画もフリー素材やパブリックドメイン、もしくは自前のものを使用しております。