OpenSSHサーバでSFTP(公開鍵認証)

直前の投稿「OpenSSHサーバでSFTP」の続きです。
前回はパスワード認証だったので、今回は公開鍵認証でユーザ認証できるようにします。

環境について

※ 前回と同じ、サーバはUbuntu を使っています。

クライアントの環境構築

キーペアの生成

公開鍵認証で使うデジタル署名Ed25519のキーペアを生成

ssh-keygen -t ed25519
→ Your identification has been saved in /Users/xxx/.ssh/id_ed25519
   Your public key has been saved in /Users/xxx/.ssh/id_ed25519.pub
  • 任意のパスフレーズを設定します
  • 生成されるキーペアは、id_ed25519 が秘密鍵、id_ed25519.pub が公開鍵
  • キーペアのファイル名を指定したい場合は、-f オプションを使って指定します(今回は指定しなかったのでデフォルトの”id_ed25519″で作成されました)

公開鍵をサーバにアップロード

前回設定したSFTP(パスワード認証)を使ってアップロードします。
※ 公開鍵 id_ed25519.pub/var/sftp/sftpuser にアップロードします。

sftp sftpuser@<hostname またはipaddress>
→パスワードを入力してユーザ認証

cd sftpuser
put ~/.ssh/id_ed25519.pub
quit

OpenSSHサーバの環境構築

前回作成したユーザ「sftpuser」のユーザ認証の方式をパスワード認証から公開鍵認証に変更します。

公開鍵の設置

SSH接続できるユーザでサーバにSSH接続して、公開鍵を設置します。

su - sftpuser
mkdir ~/.ssh
chmod 700 ~/.ssh
cat /var/sftp/sftpuser/id_ed25519.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
exit

sudo rm /var/sftp/sftpuser/id_ed25519.pub

OpenSSHサーバの設定

設定ファイルの編集

sudo vi /etc/ssh/sshd_config

設定した内容(一部抜粋)

PubkeyAuthentication yes
AllowTcpForwarding no
X11Forwarding no
Subsystem sftp  internal-sftp

Match User sftpuser
    ChrootDirectory /var/sftp
    ForceCommand internal-sftp
    PasswordAuthentication no
    AuthorizedKeysFile /home/sftpuser/.ssh/authorized_keys
  • PasswordAuthentication no により、パスワード認証ができないようにする
  • AuthorizedKeysFile で公開鍵を指定する

設定の有効化

OpenSSH サーバを再起動

sudo systemctl restart sshd

接続確認(クライアントからサーバ)

SFTP接続の確認(成功)

Mac のターミナルを使ってネットワーク経由でSFTP接続の確認

echo "test" > testfile.txt

sftp -i ~/.ssh/id_ed25519 sftpuser@<hostname またはipaddress>
→パスフレーズを入力して公開鍵認証

cd sftpuser
put testfile.txt
ls
quit

SSHとSCP接続の確認(失敗)

SSHの接続を試してみると失敗します

ssh -i ~/.ssh/id_ed25519 sftpuser@<hostname またはipaddress>
→パスフレーズを入力して公開鍵認証
→ This service allows sftp connections only.

SCPの接続を試してみると失敗します

scp -i ~/.ssh/id_ed25519 testfile.txt sftpuser@<hostname またはipaddress>:
→パスフレーズを入力して公開鍵認証
→ This service allows sftp connections only.

あとがき

パスワード認証の場合、パスワードが漏洩すると第三者がログインできてしまいますが、公開鍵認証はクライアント上に保存した暗号鍵とパスフレーズの両方が第三者の手に渡らなければ第三者によるログインが成功しないので、より安全なユーザ認証の方式といえると思います。

設定がパスワード認証に比べると面倒かもしれませんが、なるべく公開鍵認証を使うようにした方がよいのでしょう。

OpenSSHサーバでSFTP

クライアント上のファイルをサーバにSFTPでアップロードできるようにします。
今回解説する手順は、SFTP専用のユーザを作成して、Chrootにより限定された場所にファイルをアップロードできるようにする手順となります。

環境について

サーバ側の環境

  • Ubuntu
  • OpenSSHサーバ ※インストール済み

クライアント側の環境

  • macOS Monterey

OpenSSHサーバの環境構築

SFTP専用ユーザーの作成

sudo adduser sftpuser

ユーザ認証はパスワード認証を使うので、任意のパスワードを設定します。
※ 公開鍵認証も可能ですが、SFTP中心の解説にしたいので省略します。

SFTP専用グループの作成

sudo groupadd sftponly

ユーザをグループに追加 ※セカンダリグループ

sudo adduser sftpuser sftponly

SFTP専用ディレクトリの作成

SFTP専用ディレクトリの作成 ※Chrootディレクトリ

sudo mkdir /var/sftp
sudo chown root:root /var/sftp

SFTP専用ユーザのディレクトリの作成 ※ここにアップロードする

sudo mkdir /var/sftp/sftpuser
sudo chown sftpuser:sftponly /var/sftp/sftpuser
sudo chmod 755 /var/sftp/sftpuser

OpenSSHサーバの設定

設定ファイルの編集

sudo vi /etc/ssh/sshd_config

/etc/ssh/ssh_config というファイルもあるけれども、設定するのは/etc/ssh/sshd_config

設定した内容(一部抜粋)※既存の設定の変更やコメントアウトなど

AllowTcpForwarding no
X11Forwarding no
Subsystem sftp  internal-sftp

設定した内容 ※末尾に追記

Match User sftpuser
    ChrootDirectory /var/sftp
    ForceCommand internal-sftp
    PasswordAuthentication yes
  • ChrootDirectory は、SFTP接続した際のルートディレクトリを/var/sftp に設定する
  • ForceCommand internal-sftp により、SFTP の利用に限定する(SSHとSCPが使えない)
  • ChrootDirectoryForceCommand internal-sftp の両方を設定することでChroot とSFTP 限定が有効になるようです

設定の有効化

OpenSSH サーバを再起動

sudo systemctl restart sshd

接続確認

サーバのローカル環境上でのSFTP接続の確認

sftp sftpuser@localhost

接続確認(クライアントからサーバ)

SFTP接続の確認(成功)

Mac のターミナルを使ってネットワーク経由でSFTP接続の確認

echo "test" > testfile.txt

sftp sftpuser@<hostname またはipaddress>
→パスワードを入力してユーザ認証

pwd
→ Remote working directory: /
put testfile.txt
→ remote open("/testfile.txt"): Permission denied
cd sftpuser
put testfile.txt
ls
quit
  • 接続した時点のカレントディレクトリは/var/sftp がルートディレクトリとなっていて、ディレクトリの所有者とグループがroot なのでput でファイルをアップロードしようとすると失敗します。
  • cd でカレントディレクトリを/var/sftp/sftpuser に変えてからput するとアップロードが成功します。

SSHとSCP接続の確認(失敗)

SSHの接続を試してみると失敗します

ssh sftpuser@<hostname またはipaddress>
→ This service allows sftp connections only.

SCPの接続を試してみると失敗します

scp testfile.txt sftpuser@<hostname またはipaddress>:
→ This service allows sftp connections only.

あとがき

ChrootDirectory/var/sftp としましたが、ユーザのホームディレクトリ/home/sftpuser を指定してもよさそうです。

SFTPでファイルのアップロード・ダウンロードをするのが専用のユーザなので、SSH接続できるユーザがそのファイルのコピー等をするのにどこが運用上望ましいかで判断する感じでしょうか。

Apple SiliconでAkai Pro MPK mini MK3

Apple Silicon のMac を入手して何か新しいことしたくなり、勢いでAkai ProfessionalMPK mini MK3 というMIDIキーボードを購入しました。

ネットで調べると初期セットアップの手順が分かりづらく手こずったという意見がよくみられたので、ここではM1 Mac でMPK mini MK3 を使い始めるまでの初期セットアップの手順を整理したいと思います。

使ったMac はM1 ProチップMacBook Pro で、OSはmacOS MontereyRosetta 2 はインストール済みです。

MPK mini MK3

Apple Silicon のMac で使うことについて

M1 Mac正式にはサポートしていないようでしたが、動いたと書いているブログや通販サイトのコメントがあったので、多分大丈夫なんだろうという軽い気持ちで購入を決めました。

結論としては、なんとか動いている感じです。
なんとかというのは、Garage Band とMPK mini MPK に付属するMPC Beats などのソフトウェアが、初心者向けDAWの使い方のようなサイトを参考に一週間ほど操作していて、普通に使うことができたという程度の確認しかしていないからです。

免責としてお伝えしておく必要があると思うのですが、あくまでも初心者が使ってみたら動いた、という程度のものでしかないので、きちんとした動作検証を行なっている訳ではないという点はご理解をお願いいたします

初期セットアップ

商品にクイックスタートガイドソフトウェアダウンロードカードが同梱されていましたが、そこには「akaipro.com でアカウントを作って、製品を登録すれば付属するソフトウェアをダウンロードできる」という程度のことしか書いてありませんでした。

akai-pro.jpMPK mini MK3 のページからダウンロードできるセットアップガイドMPC Beats クイックスタートガイドのPDFの資料に日本語で詳しい手順が書かれていたので、こちらを参考にしました。

  • MPK mini MK3 (akai-pro.jp) – inMusic Japan (日本語)

まずは、akaipro.com のアカウントの作成から始めます。

1. akaipro.com のアカウント作成

akaipro.com のサイトにアクセスして、右上の[ACCOUNT] をクリックすると下記のページが表示されます。

akaipro.com
akaipro.com

[CREATE ACCOUNT] ボタンをクリックします。

create profile 1

氏名、メールアドレス、誕生日、パスワード、国を入力して下の[NEXT STEP] ボタンをクリックします。

create profile 2

「Akai ProはinMusic社のブランドの一つです。興味あるブランドがあれば選んでください」と書かれているので、興味があるブランドを選択して、プライバシーポリシーと利用規約に同意のチェックをONにして[CREATE ACCOUNT] ボタンをクリックします。

すると、akaipro.com からメールが届くので届くので、メール本文の[Confirm Your Account] ボタンをクリックするとアカウントの作成が完了します。

2. akaipro.com のアカウントに製品を登録

akaipro.com のサイトで右上の[ACCOUNT] から、登録したメールアドレスとパスワードを入力してログインします。

register new product 1
※イメージは製品を登録後の状態です

メニューの[MY HOME] または[MY PRODUCTS] にある[REGISTER NEW PRODUCT] ボタンをクリックします。

register new product 2

購入した製品「MPK mini MK3」の背面に記載されているシリアル番号を入力し、[CHECK SERIAL] ボタンをクリックすると製品の登録が完了します。

3. MPK mini Software Manager のインストール

akaipro.com のサイトにログインした状態で、メニューの[MY PRODUCTS] に表示されているMPK mini mk3 の”DOWNLOAD (MAC)” のリンクをクリックして、MPK mini Software Manager をダウンロードします。

端末上にZip形式のファイルが保存されるので、展開するとMPK mini Software Manager というアプリケーションファイルが展開されるので、このファイルをアプリケーションにドラッグしてインストールします。

4. MPK mini Software Manager の初回起動

MPK mini Software Manager を起動します。

MPK mini Software Manager
MPK mini Software Manager

[Let’s Go!] ボタンをクリックします。

MPK mini Software Manager

MPK mini MK3MacUSBケーブルで接続して[NEXT] ボタンをクリックします。

MPK mini Software Manager

Instruments でインストールする音源を選択して[NEXT] をクリックします。

MPK mini Software Manager

Apps でDAWソフトのMPC Beats を選択して[NEXT] をクリックします。

MPK mini Software Manager

MPC Sound Packs でインストールするサウンドパックを選択して[FINISH] をクリックすると、選択したソフトウェアのダウンロードが始まります。

5. iLok のアカウント作成

MPK mini Software Manager でソフトウェアのダウンロードが始まると、下記のウィンドウが表示されます。

MPK mini Software Manager

[Create iLok account] ボタンをクリックすると、ブラウザに下記のiLok のアカウントを登録するページが表示されます。

iLok アカウント登録

ユーザID、氏名、メールアドレス、パスワード、生年月日、秘密の質問と回答を入力し、プライバシーポリシーと利用規約に同意のチェックをONにして[CREATE ACCOUNT] ボタンをクリックします。

※ プライバシーポリシーのチェックは、上はアカウントとアップデートの情報の通知について、下はソフトウェアベンダーからの特別なオファーの通知についてです。(おそらく両方とも必須ではない)

すると、iLok からメールが届くので、メール本文のilok.com のURLのリンクをクリックするとアカウントの作成が完了します。

6. iLok License Manager のインストール

iLok から届いたメールのURL のリンクをクリックすると、ブラウザにiLok のサイトのログインページが表示されます。

ilok.com
ilok.com

iLok のアカウント作成時に登録したユーザIDとパスワードを入力してログインすると、アカウントが有効化されたというページが表示されます。

ilok.com

ここでの操作を記録し忘れたので定かではないですが、下記のiLok のトップページの左側「iLok License Manager」の”macOS” のリンクをクリックして、iLok License Manager をダウンロードします。

端末上にZip形式のファイルが保存されるので、展開するとiLok License Manager のインストーラがディスクイメージファイルで展開されるので、このファイルを起動してウィザードに従ってiLok License Manager をインストールします。

7. iLok License Manager の初回起動

iLok License Manager を起動します。

iLok License Manager
iLok License Manager

左上の[Sign In] ボタンをクリックします。

iLok License Manager

iLok アカウントのユーザIDとパスワードを入力してログインします

iLok License Manager

この時点では、左上に”0 Licenses”、左のLocal に”0 Activations”、上のAll Licenses 等は”0″ の状態です。

8. Hybrid 3 など音源のインストール

MPK mini Software Manager を起動します。

MPK mini Software Manager
MPK mini Software Manager

Hybrid 3 の”Get Activation Code” という青い字をクリックすると、下記のウィンドウが表示されます。

MPK mini Software Manager - hybrid 3

ウィンドウには下記のようなことが記載されています。

あなたのアクティベーションコードは、Akaiアカウントで利用できる状態になっています。以下の手順でアクティベーションコードを入手してください。
1. iLok アカウントを作成
2. Akai Pro アカウントにログインする
3. ソフトウェア 登録ページを表示する
4. ソフトウェア のアクティベーションコードをコピーする
5. アプリを起動してアクティベーションコードを入力する」

1. iLokアカウントを作成は完了しているので、2.以降をやります。
[Open My Akai Acccount] ボタンをクリックすると、ブラウザが開きakaipro.com のサイトが表示されるので、ログインしてメニューの[MY PRODUCTS] をクリックします。

MPK mini mk3 の[SEE DETAILS, DOWNLOADS, AND OFFERS] ボタンをクリックすると、下記のように詳細が表示されます。

akaipro.com
akaipro.com

ここで、右下の[GET ACTIVATION CODE] ボタンをクリックすると、”Serial:” に続けてハイフン区切りの長い数字の羅列が表示されます。

この数字がアクティベーションコードで、後で使うことになります。

MPK mini Software Manager に戻り、Hybrid 3 の[Install] ボタンをクリックすると、下記のウィンドウが表示されます。

MPK mini Software Manager - hybrid 3

ウィンドウには下記のようなことが記載されています。

ソフトウェアを使うにはアクティベーションコードが必要です。下記の手順でインストールとアクティベーションコードを取得してください。
Step 1. 今すぐインストール
Step 2. アクティベーションコードを取得

[Step 1. Install Now] をクリックするとHybrid 3 のインストーラが起動するので、ウィザードに従ってHybrid 3 をインストールします。

インストールが完了したら、上記のウィンドウを閉じます。

Hybrid 3

MPK mini Software Manager に戻ると、ボタンが[Open] に変わっているので、ボタンをクリックしてHybrid 3 を起動します。

Hybrid 3
Hybrid 3

右下の[Activate] ボタンをクリックします。

Hybrid 3

akaipro.com のサイトに表示されていたアクティベーションコードをコピーして貼り付け、[Next] ボタンをクリックします。

Hybrid 3

メールアドレスを入力し、”Register with my existing iLok.com account” のチェックをONにして[Continue] ボタンをクリックします。

Hybrid 3

iLok アカウントのユーザIDとパスワードを入力して[Next] ボタンをクリックします。

Hybrid 3

アクティベーションコードを有効にする場所(端末)を選択して[Next] ボタンをクリックするとHybrid 3 の有効化が完了し、下記のウィンドウが表示されます。

Hybrid 3

[Continue] ボタンをクリックすると、Hybrid 3 が起動します。

Hybrid 3

この後、残り2つの音源Mini GrandVelvet)をHybrid 3 と同じ手順でインストールします。

Hybrid 3 のインストール時にアクティベーションコードの有効化をしていたからだと思いますが、この2つのインストール時にはアクティベーションコードを有効にする手順がありませんでした。

なお、音源の有効化が完了すると、iLok のサイトiLok License Manager にログインすると、有効化した音源が一覧に表示されるようになっていました。

9. MPC Beats のインストール

MPK mini Software Manager MPC Beats の[Install] ボタンをクリックするとMPC Beats のインストーラが起動するので、ウィザードに従ってMPC Beats をインストールします

MPK mini Software Manager に戻ると、ボタンが[Open] に変わっているので、ボタンをクリックしてMPC Beats を起動します。

MPC Beats
MPC Beats

MPK mini MK3MacUSBケーブルで接続して[Next] ボタンをクリックします。

MPC Beats

ドロップダウンリストで”Akai MPK mini 3” を選択して、[Next] ボタンをクリックします。

MPC Beats

Simple” か”Advanced” を選択して[Next] ボタンをクリックすると、MPC Beats のプロジェクトを選択するウィンドウが表示されます。

※ 初心者なので”Simple” を選択しました。
※ 後で、メニューの[View] > [Workspace] で変更できます。

MPC Beats
MPC Beats

以上で、初期セットアップは完了となります。

あとがき

MPK mini MK3 にした経緯

最近、音楽は専ら聴くことしかしていなかったので、値段が手頃である程度面白そうなものを探していて、ちょうど良さそうだったのがこのAkai ProfessionalMPK mini MK3 でした。

MPK mini Play MK3 という見た目がほぼ同じでスピーカーが付いてパソコンに接続せずに使うことができるものもあったので悩んだのですが、家でしか使わないのと比較すると安かったのでMPK mini MK3 にすることにしました。

MPK mini Play MK3

初期セットアップの手順についての感想

基本的に、アカウント登録するウェブサイトとソフトウェアは英語でしたが、冒頭で紹介したPDFの資料に日本語で詳しい手順が書かれていたので、言語の壁はあまり感じなかったです。

akaipro.comアカウントとilokアカウントの2つを使い分ける必要があるのと、音源の3つのソフトウェアをiLok License Manager というソフトウェアを使って有効にする方法が感覚的に分かりづらかったので少し混乱しましたが、行き詰まるということはなかったです。

Apple Silicon (M1) Mac を使ったことについては、初期セットアップ完了後にインストールしたソフトウェアのプロパティを確認するとすべて”Intel” だったので、現状はRosetta 2 が必須ということになります。

これからのこと

直近では、MPK mini Editor というMPK mini MK3 のパッドやノブに機能を割り当てるツールをまだ使っていないので、これを使ってみたいと思っています。

Garage Band やMPC Beats のDAWソフトの使い方を覚えるのはその後です。道のりは長そうなのでのんびりやっていければと思います。

参考

MPK mini MK3 のカラーバリエーション

Bing のSEO対策

Google のSEO対策の投稿「Google のSEO対策」の続きとして、今回はMicrosoft Bing のSEO対策について整理しようと思います。

WordPress のブログ立ち上げの流れなので、WordPress と絡めた整理になります。

Microsoft Bing

Microsoft 社が提供する検索サービスです。

以前は単に「Bing」という名称でしたが、2020年10月に「Microsoft Bing」に名称が変更されました。
この変更により、Microsoft が提供するWindowsタスクバーやWindows 365など他のサービスが行っている検索サービスを含めた総合的な名称として「Microsoft Bing」を使うことになったようです。
Bing の仕組み自体は変わっていないようです。

Webmaster Tools

ウェブサイトのサイトマップの登録や、インデックス登録の依頼などをすることができるサービスとして、Webmaster Tools というものが用意されています。
Google のSearch Console と同様の機能があり、操作も似ているのでSearch Console を使ったことがあれば、抵抗なく使えるのではないかと思います。

Webmaster Tools – Microsoft Bing
Webmaster Tools help & how-to – Microsoft Bing

Webmaster Tools を始める

1. Webmaster Tools にアクセス

Webmaster Tools のサイトにアクセスして [サインイン] ボタンをクリックします。

Webmaster Tools
Webmaster Tools トップページ

2. サインイン(アカウントの選択)


Microsoft、Google、Facebook のいずれかのアカウントでサインインします。

アカウントの選択
アカウントの選択

今回、Google のアカウントを選択しました
[Google] ボタンをクリックし、Google のアカウントでログインすると下記のページが表示されました。

Google Search Console からのインポートが可能
Google Search Console からのインポートが可能

ログインしたGoogle のアカウントでGoogle Search Console を使ってウェブサイトを登録していると、その登録したウェブサイトの情報をWebmaster Tools にインポートすることができます。
今回は、インポートせずに、右の手動で追加する方法でウェブサイトの情報を登録することにしました

3. ウェブサイトを追加

登録する自サイトのURL を入力して[追加] ボタンをクリックします。

自分のサイトを手動で追加
自分のサイトを手動で追加

4. 所有権の確認

追加したウェブサイトの所有権を確認する方法を選択するページが表示されます。

所有権の確認
所有権の確認 > XMLファイル

所有権の確認は、下記の3つの方法から選択できます。

内容
XMLファイル指定されたXMLファイルを自身のウェブサイトのルートフォルダにアップロードする
HTMLメタタグ指定されたHTMLメタタグを自身のウェブページのHTMLページのheadタグ内に記述する
※<meta name=”msvalidata.01” 〜
CNAME レコードをDNSに追加指定されたCNAMEレコードを自身のウェブサイトのDNSレコードに追加する
所有権の確認方法

今回、”XMLファイル” を選択しました
以下、XMLファイルで所有権の確認をする手順を記載します

  1. XMLファイルの[↓ BingSiteAuth.xml] ボタンをクリックして、XMLファイルを端末上にダウンロードします
  2. FTPツール(FileZillaなど)を使って、ダウンロードしたXMLファイルを自身のウェブサイトのルートフォルダにアップロードします
  3. アップロードしたファイルのパーミッションを読込のみ(404など)に変更します
  4. [確認] ボタンをクリックすると所有権の確認処理が始まり、処理が完了すると下記の”サイトの追加に成功しました” のページが表示されます
所有権の確認が完了
所有権の確認が完了

右下の[完了] ボタンをクリックすると、Webmaster Tools の管理画面が表示されます。

Webmaster Tools の管理画面
Webmaster Tools の管理画面

5. サイトマップの送信

ウェブサイトのサイトマップをBing に送信します。

サイドメニューの[サイトマップ] をクリックすると、下記のページが表示されるので、[サイトマップを送信] ボタンをクリックします。

サイトマップ
サイドメニューの[サイトマップ]

ウェブサイトのサイトマップのURL を入力するフォームが表示されるので、URL を入力して[送信] ボタンをクリックします。

サイトマップを送信(URLを入力)
サイトマップを送信(URLを入力)

送信が完了すると元のページに戻り、今回送信したサイトマップの情報が表示されます。
送信してすぐは状態が”処理中” となっていましたが、少し待つと”成功” に更新されました。

サイトマップ(送信後)
サイトマップ(送信後)

6. URL検査の実行

サイドメニューの[URL検査] をクリックすると、URL の入力を求められるので、自身のウェブサイトのURLを入力して[検査] ボタンをクリックします。
今回、「https://madoverload.com」を入力しました。

URL検査(URL入力)
サイドメニューの[URL検査]

URL検査の処理が開始され、検査結果として下記のメッセージが表示されました。

URL検査(検査結果)
検査結果(URL検査)

検査の結果、指定したURL のインデックスが登録されたようです。

URL検査を実行する前に、Bingの検索結果に既に表示されていたので、検査結果が登録されたなのは、既に登録されていたからなのかもしれないです。

改めて送信後に検索すると、下記のように検索結果に表示されました。
※ インデックス登録を確認するコマンドは、Googleはsite:、Bingはurl:と異なります

Bing検索結果
Bing 検索結果(インデックス登録の確認)

7. URL送信(インデックス登録)

サイトの特定のページにインデックスを付ける場合は、URL 送信 ツールを使用してページにURLを送信します。

サイドメニューの[URL送信] をクリックすると、下記のページが表示されるので、[URLの送信] ボタンをクリックします。

URL送信
サイドメニューの[URL送信]

ウェブサイトのURL を入力するフォームが表示されるので、URL を入力して[送信] ボタンをクリックします。

URLの送信(URLを入力)
URLの送信(URLを入力)

送信が完了すると元のページに戻り、今回送信したURLが一覧上に表示されます。

URL送信(送信後)
URL送信(送信後)

ウェブサイトからの更新の通知

ウェブサイトに新しいページや更新されたページがある場合に、ウェブサイト側からBing に通知をして、Bing のクローラが通知されたページのURL にアクセスしてページを検出する仕組みがあります。
調べてみると、Bing には下記の2つの仕組みがありました。

前者は従来からあったもので、後者は最近できたようです。

WordPress には、それぞれ対応するプラグインがあったので、以下プラグインについて記載します。
なお、プラグインの開発者は同じbingwebmastertools でした。
Webmaster Tools のウェブサイトからプラグインを紹介するリンクがあったので、Webmaster Tools の開発チームが作成したものなのではないかと思われます。

Bing URL Submission

Bing URL Submissions Plugin

WordPress のサイトに新しいページの作成やページが更新されると、ページのURLをBingインデックスに自動送信するプラグインです。

プラグインをインストールし有効にした後に、Webmaster Tools で入手したAPI key を設定することで通知が行われるようになります。

IndexNow

IndexNow Plugin

Microsoft Bing とロシアの検索エンジンの Yandex が共同開発した、サイトの更新を検索エンジンに通知して素早くインデックス登録する仕組みです。

プラグインをインストールして有効にした後に、サイドメニューの[設定] > [IndexNow] をクリックすると下記のページが表示されます。

サイドメニューの[設定] > [IndexNow]
サイドメニューの[設定] > [IndexNow]

[Let’s Get Started!] ボタンをクリックすると下記のページが表示され、サイトを更新すると自動でBing に通知されるようになります。

IndexNowプラグインの設定ページ
IndexNowプラグインの設定ページ

また、”Manual URL submission” の[Submit URL] ボタンをクリックすると、URLを入力するウィンドウが開き、手動で送信することもできるようになっています。

今回、当ブログでは、Index Now プラグインを使うことにしました。
Index Now は更新が早くインデックスに反映されると強調されていたのと、Bing URL Submissions プラグインは半年くらいアップデートが行われていなかったので、とりあえず新しい仕組みを期待してみることにしました。

その他

モバイルフレンドリーテスト

ウェブサイトの特定のURL に対して、モバイルデバイスでのページの使いやすさをチェックすることができます。

Robots.txt テスター

Webmaster Tools のサイドメニューの[ツールと機能強化] > [Robots.txt テスター] で、robots.txt に対して、以下のチェックをすることができます。

  • robots.txt の構文とロジック上の問題がないかのチェック
  • ウェブサイト上の特定のURLに対して、Bing のクローラをブロックできているかのチェック

あとがき

Google のSEO対策に続けて、Microsoft Bing のSEO対策について簡単に整理してみました。
他にも、DuckDuckGo やQwant、Startpage、Baidu など色々な検索サービスがありますが、検索エンジン自体はGoogle を使っているというように、独自の検索エンジンでサービスを提供している訳ではなかったりするので、機会があればその辺の整理をしてみたいと思います。

参考

Apple SiliconでHomebrew

Apple Silicon のMac を入手したのでHomebrew を使えるようにします。
Mac は、M1 ProチップのMacBook Pro です。

Homebrew とは

Homebrew

macOS 向けのパッケージ管理ソフトです。
いわゆる、Mac でソフトウェアのインストールやアンインストールをCLI でできるようにするツールです。

Homebrew のシステム要件

Homebrew の公式サイトに下記の記載がありました。

macOS Requirements
macOS Requirements

日本語にすると、下記のような感じです。

  • 64ビット Intel CPUまたは Apple Silicon CPU
  • macOS Catalina (10.15) 以上
  • Command Line Tools for Xcode または Xcode
  • Bourne-again shell (bash) ※インストールで使う

1つ目のハードウェア要件と2つ目のOSの要件は満たしているのでOK。
3つ目は、事前にインストールが必要で、
4つ目は、ワンライナーのインストールコマンドの実行で必要

ということで、まずは4つ目が簡単にできるので、bash が使えるかを確認します。

bash の確認

bash が使えるか確認します。

cat /etc/shells | grep bash
> /bin/bash
which bash
> /bin/bash

bashはインストールされていてパスも通っているので問題なさそうです。

ついでにデフォルトシェルが何か確認しておきます。

echo $SHELL
> /bin/zsh

bashではなくzshでした。
インストールコマンドを見てみると、bashをパス指定(/bin/bash)で実行しているので、デフォルトシェルではなくても問題ないです。

Command Line Tools for Xcode または Xcode について

どちらか一方をインストールすればよいみたいですが、実際にはXcode をインストールした場合も、Command Line Tools for Xcode(以下、CLT) のインストールは必要でした。

Xcode にCLT が内包されていると書いてるブログもあったのですが、実際にはXcode をインストールすると自動的にCLTもインストールされるという訳ではなかったです。

今回、Xcode だけをインストールした状態でHomebrew のインストールコマンドを実行したのですが、インストールの最初の方でCLT をインストールするか質問され、拒否するとインストールが中断されてしまいました。

質問で拒否しなければ、CLT のインストールが始まりHomebrew のインストールが継続して行われますが、事前にインストールしておけば質問自体がされないのではないかと思われます。

Command Line Tools for Xcode と Xcode のサイズ比較

何も考えずに大は小を兼ねる程度の感覚でXcode をインストールするというのはちょっと雑なので、それぞれのサイズを比較してみました。

Apple Developer のサイトでサイズが確認できました。

Xcode
Xcode
Command Line Tools for Xcode
Command Line Tolls for Xcode
  • Xcode (10.1 GB
  • Command Line Tools for Xcode (564.48 MB

ファイルの形式が違うので単純に比較できませんが、随分と差があります。両方ともサイズが圧縮される形式ですが、Xcode はCLT の18倍くらいあります。

ちなみに、Xcode のダウンロードしたファイル Xcode_13.2.1.xip から展開されたアプリケーションファイルは32GB ありました。

Xcode は使わないし端末のストレージ容量を無駄に使いたくない、というのであれば、CLT のみインストールした方がよいかもしれません。

Xcode のインストール

今回、Xcode をインストールしてから、Homebrew をインストールすることにしました。

※ Xcode をインストールしない場合は、この章はスキップして、次の「Command Line Tools for Xcodeのインストール」からになります。

Xcode のインストール方法

調べてみると、下記の2つの方法がありました。

  • Apple Developer でファイルをダウンロードしてインストール
  • App Store から直接インストール

後者は、自動アップデートを個別に制御できないようなので、前者の方法でインストールすることにしました。
あと、後者はインストールに時間がかかるや途中で止まったという評価が幾つかあったので、ちょっと不安になったというのもあります。実際やってみないとなんとも言えませんが。。

以下、Apple Developer でファイルをダウンロードしてインストールする手順を記載します。

Apple Developer でファイルをダウンロード

Apple Developer のダウンロードページにアクセスし、自身のApple ID でログインします。

検索窓で”Xcode” と入力して抽出された中から最新のXcode を探します。
古いバージョンやBeta版もあるので注意

Xcode
Xcode

ダウンロードするXcode が見つかったら、青字の[↓ Xcode 13.2.1.xip]をクリックしてxipファイルをダウンロードします。

ダウンロードしたファイルを展開してインストール

ダウンロードしたファイルはxip 形式のアーカイブファイルなので、アーカイブユーティリティを使って展開します。

Xcodeダウンロードファイル

xipファイルと同じフォルダにアプリケーションファイルが展開されるので、アプリケーションにドラッグ&ドロップしてインストールします。

これでXcode のインストールは完了です。

Command Line Tools for Xcodeのインストール

Xcode をインストールしない場合はこちらの「Command Line Tools for Xcodeのインストール」を行います。

ただ、このタイミングでCTL をインストールしなくても、次の「Homebrewのインストール」の途中でインストールできるので、この章もスキップしてもよいかもしれません。

今回、私はXcode をインストールした後にHomebrew をインストールしたので、ここの手順は行わなかったです。

Command Line Tools for Xcode のインストール方法

調べてみると、下記の2つの方法がありました。

  • Apple Developer でファイルをダウンロードしてインストール
  • ターミナルで以下のコマンドを実行してインストール
xcode-select --install

前者は、ダウンロードするファイルがdmg ファイルなので、ダブルクリックで普通にインストールできそうなので、説明は省略します。

なお、Xcode を起動してメニューの[XCode] > [Open Developer Tool] > [More Developer Tools…] をクリックすると、ブラウザが起動してApple Developers のダウンロードページが開きました。
Xcode の画面操作でCLT をインストールできる訳ではなかったです。

Homebrew のインストール

Homebrew のウェブサイトのトップページにアクセスします。

トップページにワンライナーのインストール用のコマンドが掲載されているので、コマンドをコピーします。

Homebrewインストールコマンド
インストール用のコマンド
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

コマンドのテキストを参考のために掲載しましたが、実際にインストールを行う際は、こちらではなくウェブサイトに掲載されているコマンドをコピーしてください。

ターミナルを起動して、コピーしたコマンドをペーストしてコマンドを実行します。
コマンドを実行すると、以下のように処理が進められます。

1. パスワードの入力

==> Checking for `sudo` access (which may request your password)...
Password:

パスワードの入力が求められるので、端末のログインパスワードを入力します。
Apple IDのパスワードではない

2. Command Line Tools for Xcodeのインストール

==> The Xcode Command Line Tools will be installed.

Press RETURN to continue or any other key to abort:

CLT をインストールするか、インストールを中断するか、選択が求められので選択します。
※ 前述「Command Line Tools for Xcodeのインストール」でCLT をインストールしていた場合、この確認は求められないと思われます。

  • Enterキー
    • CLT をインストールする(Homebrew のインストールを継続する)
  • Enterキー以外
    • Homebrew のインストールを中断する

Enterキーを押下すると、CLT のダウンロードが始まり、そのままCLT とHomebrew のインストールが続けて行われます。

Homebrew のインストールが完了すると、下記のようなメッセージが表示されます。

ターミナル(Installation successful)
ターミナル(Installation successful)

3. Homebrew フォルダにパスを通す

インストール完了のメッセージに、/opt/homebrew/bin にパスが通っていないので指定したコマンドを実行するようにと記載があります。
言われた通り、指定されたコマンドをターミナルで実行します。
※ コマンドの”xxx” の箇所はユーザ名です

echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> /Users/xxx/.zprofile
eval "$(/opt/homebrew/bin/brew shellenv)"

上記のコマンドを実行後、以下のコマンドでbrew コマンドにパスが通っているか確認します。

which brew
> /opt/homebrew/bin/brew

brew コマンドのパスが通っていました。

4. Homebrewの動作確認

Homebrew が問題なく動作するかを確認するコマンドを実行します。

brew doctor
> Your system is ready to brew.

正常に動作していることが確認できたので、これでHomebrew のインストールは完了です。

Homebrew を使う

Homebrew を使って1Password をインストール

Homebrew のスポンサーである、1Password をインストールしてみます。

Homebrew のウェブサイトのパッケージを検索するページがあります。
※ トップページの検索窓でも検索できますが、パッケージ以外の情報も検出されるので、ここではパッケージのページで説明します。

パッケージの検索画面
パッケージの検索画面

検索窓に薄い色で”Search Homebrew Formulae” と表示されています。
“Formulae” はHomebrew が扱うパッケージのことです。

今回、1Password を探すので、”1password” と入力します。

1password検索

すると、入力したキーワードで検出されたパッケージが表示されるので、今回インストールする1password を選択すると、下記の1Password のパッケージのページが表示されます。

1Passwordのページ
1Passwordのページ
brew install --cask 1password

1Password をインストールするコマンドが記載されているので、コマンドをコピーしてターミナルに貼り付けてコマンドを実行します。

1Password のインストールが完了すると、下記のようなメッセージが表示されます。

ターミナル(successfully installed)
ターミナル(successfully installed)

インストール完了メッセージに、/Application/1Password 7.app にインストールしたと表示されています。

Finder でアプリケーションフォルダを見ると、1Password のアイコンがありました。

1Passwordアイコン
Finder > アプリケーション

GUI アプリのインストールが、1つのコマンドをコピー&ペーストするだけでできるようになりました。
インストール完了です。

その他、参考情報

とりあえず、よく使いそうなコマンドを掲載しておきます。

# Homebrewの動作確認
brew doctor

# Homebrewのバージョンを表示
brew --version
brew --v

# Homebrewのシステム構成を表示
brew config

# インストール済みパッケージ一覧の表示
brew list
brew ls

# パッケージの検索
brew search <keyword>
brew -S <keyword>

# パッケージのインストール
brew install <package-name>

# パッケージのアンインストール
brew uninstall <package-name>

# Homebrew本体のアップデート、インストール可能なパッケージ一覧の更新
brew update

# アップデート可能なパッケージをアップグレード
brew upgrade <package-name>

# インストールの統計情報を表示
brew info

# インストールしたパッケージの統計情報を表示
brew info <package-name>

# サブコマンドの表示
brew

# コマンドの一覧を表示
brew commands

# コマンドのヘルプを表示
brew help <command>

あとがき

GUI のソフトウェアのインストールが、ファイルをダウンロードして、ダウンロードしたファイルを開いてアイコンをアプリケーションフォルダにドラッグ&ドロップする、という方法より断然楽になりました。

ソフトウェアのインストールは基本的にHomebrew を使う、というように一元管理すれば、OSをクリアインストールして環境を再構築するのもそれほど苦にはならなそうです。

Mac を買ったら一番最初にインストールしておきたいソフトウェアです。

参考

Google のSEO対策

Google の検索結果に自身のウェブサイトが表示されるようになりましたが、SEO対策については行きあたりばったりでやっていたので、一度立ち止まってGoogle のSEO についての基本的なことを整理しておこうと思います。
WordPress のブログ立ち上げの流れなので、WordPress と絡めた整理になります。

1. はじめに

Google の検索結果に自身のウェブサイトが表示されるようにするためには、Google にインデックス登録してもらう必要があります。
クローラ等によりウェブサイトのページが検出されますが、検出されたページは内容を分析された上でGoogleインデックスに登録されます。

インデックスとは

ウェブサイトのURLを登録するGoogleの大規模なデータベースのことをインデックスと呼びます。インデックスに登録されると検索結果に表示されるようになります。

ちなみに、インデックスという用語は、Google検索セントラルというGoogle のSEO関連のサポート用のページで下記のような使い方をされていました。

  • (Googleは)定期的にウェブを探索し、見つかったサイトを Google のインデックスに登録しています
  • Google はインデックスに追加するサイトを自動で探しています

また、インデックスを使った以下のような表現もあります。

  • Googleインデックス
    • Googleのインデックスのこと
  • インデックス登録
    • クローラが検出したページの内容を把握しようとするプロセスのこと
    • インデックス登録をリクエスト:ウェブサイトの運営者がGoogleにインデックスの登録を依頼すること

2. Google がウェブサイトを検出する方法

Google がウェブサイトのページを検出する方法は、いろいろな方法があるようですが、ここでは下記の3つのパターンに分けて整理してみようと思います。

  • Googleのクローラによるウェブサイトの検出
  • ウェブサイトの運営者からのインデックス登録の依頼
  • ウェブサイトからの更新の通知

それぞれ、章を分けて説明します。

3. Google のクローラによるウェブサイトの検出

Googleのクローラは、既知のウェブサイトのリンクをたどる等により新しいページや更新されたページを検出します。

クローラとは

正式には「ウェブクローラ」。
定期的にウェブを探索して、新しいページや更新されたページを検出するプログラムのことをクローラと呼びます。
また、クローラに関連する用語に以下のようなものがあります。

  • クローリング
    • クローラがウェブを探索すること
  • クロール
    • 「クローリング」と同じ意義
  • クローラビリティ
    • ウェブサイトのページが クローラからアクセス可能なこと、および正しく認識されること
  • Googlebot
    • Google のクローラの総称

クローラによるページの検出は以下の方法で行われます。

  • 既知のページのリンクをたどって検出
  • ウェブサイトの運営者から提出されたサイトマップのURLを元に検出

既知のページのリンクをたどって検出

ウェブサイトが他のブログやウェブサイトでリンク付きで紹介されていると、そのリンクのURLをたどってクローラがページを検出します。

ウェブサイトの運営者から提出されたサイトマップのURLを元に検出

Google Search Console を使ってウェブサイトのサイトマップのURL をGoogle に送信すると、クローラがサイトマップに記述されているページのURL にアクセスしてページを検出します。

4. ウェブサイトの運営者からのインデックス登録の依頼

Google Search Console を使ってインデックス登録したいページのURL をGoogle に送信すると、クローラがそのURL にアクセスしてページを検出します。

5. ウェブサイトからの更新の通知

外部のウェブホストなどからの、新しいページや更新されたページがあることの通知を受けて、クローラがそのページのURL にアクセスしてページを検出します。

調べてみると、この方法がインデックス登録に有効に働くのか良くわからないですが、仕組み自体がなくなっている訳ではないので記載しておきます。

更新情報サービス(XML-RPC ping)

WordPress は標準で、投稿の新規作成や更新をすると、更新情報サービスの設定で登録したURL に向けてXML-RPC ping を送信して、投稿の新規作成や更新があったことを通知する機能があります。
※ XML-RPC ping は、リクエストボディをXML で記述したPOST のHTTP リクエスト

更新情報サービスは、サイドメニューの[設定] > [投稿設定] で登録することができます。

サイドメニューの[設定] > [投稿設定] > 更新情報サービス

デフォルトで”Ping-o-Matic” というWordPress Foundation が運営している更新情報サービスのURLが登録されています。

ここに、他の更新情報サービスのURL を追加すれば、追加したURL にもping が送信されるようになります。

WordPress.org の「更新通知サービス」のページに、例として更新情報サービスのURLがたくさん掲載されていますが、”停止しているものもあるかもしれませんのでご注意下さい” と注意書きがあるので、単純に全てコピペすればOKという訳ではなさそうです。

試しにいくつかのURLにアクセスしてみると、301エラー(Moved Permanently)や404エラー(Not Found)が返ったり、ドメインの名前解決ができないものがありました。現在ではあまり活用されていない仕組みなのでしょうか。

ちなみに、Google は2014年頃にブログ検索というサービスが終了した時点でpingを受けなくなっているようです。

個人的には、意味のない通信を送出するのはあまり気持ちの良いことではないので、当ブログには元々登録されていたPing-o-Matic だけ登録した状態にしておくことにしました。

WebSub(旧名:PubSubHubbub)

WordPress の標準機能ではないですが、プラグインを追加することで前述の「更新情報サービス(XML-RPC)」と同じような、投稿の新規作成や更新をすると、投稿の新規作成や更新があったことを通知するWebSub(旧名:PubSubHubbub)という仕組みを使うことができます。

WebSub のことを簡単に記載しておきます。

  • WebSub はPublisher、Subscriber、Hub の三者で構成される
  • ブログの場合、Publisher(ブログ)、Subscriber(Google)、Hub(Hubサービス) という位置づけになる
  • Publisher が投稿を追加するとHub に通知され、通知を受けたHub はSubscriber にPublisher の投稿が追加されたことを通知する

WordPress のプラグインは下記の2つがよさそうでした。

  • WebSub (FKA. PubSubHubbub)
    • PubSubHubbub Team が開発している
    • WordPress 5.9 リリースの翌日に5.9の対応版がリリースされた(最終更新日:2022/1/27)ので、継続してメンテナンスされていることが期待できる
    • デフォルトの通知先:Google PubSubHubbub Hub、SuperFeedr、WebSubHub
  • PuSHPress
    • Automattic 社がプラグインの開発に関わっている
    • プラグインにHub が組み込まれているので、WordPress からの通知はSubscriber に直接送られる(他のプラグインは、WordPress →Hub →Subscriber の経路で送られる)

当ブログでは、WebSub (FKA. PubSubHubbub) プラグインを使うことにしました。
通知先のHub は、サイドメニューの[設定] > [WebSub] で登録することができます。

WordPressの管理画面 サイドメニューの[設定] > [WebSub]

デフォルトで3つのHub のURL が登録されていました。
一番上の”https://pubsubhubbub.appspot.com” は”google” という文字がないですが、Google のHub のようです。

6. Google Search Console について

過去の投稿でGoogle Search Console を使ってサイトマップの送信とインデックス登録について記載しているので、ここではGoogle Search Console の便利なツールについて簡単に記載します。

サイトマップの登録

サイトマップのURL をGoogle に登録することができます。
登録しておくと、Google はサイトマップに更新がないかを定期的に確認するようになります。

URL検査(インデックス登録)

ウェブサイトの特定のURL に対して、Google にインデックス登録を依頼することができます。
インデックスに登録するかどうかは、Google がページを分析して決定するので、依頼すれば必ず登録される訳ではないです。

robots.txt テスター

robots.txt に対して、以下のチェックをすることができます。

  • robots.txt の構文とロジック上の問題がないかのチェック
  • ウェブサイト上の特定のURLに対して、Google のクローラをブロックできているかのチェック

後者は、例えばGoogle画像検索で表示されたくない画像のURLに対して、Googlebot-Image クローラをブロックできているかのテストができます。

モバイルフレンドリーテスト

ウェブサイトの特定のURL に対して、以下のチェックをすることができます。

  • モバイルデバイスでのページの使いやすさのテスト
  • クローラがページにアクセス可能で、コンテンツを正しく認識できるかのテスト

7. あとがき

SEO の基本を整理しよう、ということでGoogle のSEO対策についてざっと整理してみました。なんとなく要点はつかめたような気がしています。

これまでSEO ということでGoogle のことを取り上げていましたが、今後はMicrosoft のBing のSEO対策など、横に展開することもしていきたいと思います。

参考

Google Search Console(その2)

前々回の投稿「WordPressのサイトマップ」でサイトマップをGoogleに送信しましたが、その後なかなかGoogleの検索結果に表示されないのでGoogleの「初心者向けSEO」というページを調べてみると、Search Console の[URL検査] というツールでインデックス登録の依頼ができることが分かりました。
以下、その作業記録を記載します。

Googleにインデックス登録を依頼する

1. Search Console のページを開く

Google Search Console のページを開き、左上のプロパティが対象のウェブサイトのURL が選択されていることを確認します。

Search Console

2. URL検査 の実行

サイドメニューの[URL検査] ボタンをクリックすると、検索窓へのURLの入力を求められるので、自身のウェブサイトのURLを入力します。
今回、「https://madoverload.com」を入力しました。

すると、URL検査の処理が開始され、しばらくすると検査結果として下記のメッセージが表示されました。

URLがGoogleに登録されていません
検査結果(インデックスの登録)
検出-インデックス未登録
検査結果(カバレッジ)

どうやらエラーはないけれども、まだインデックスに登録されていないようです。

3. 公開URLをテスト

URL検査の検査結果が表示されたページの右上の[公開URLをテスト] ボタンをクリックします。
この[公開URLをテスト]は、指定したURL がGoogle でインデックス登録ができるかどうかを確認する機能のようです。

公開URLをテストしています
公開URLをテスト実行中

公開URLのテストが完了すると、検査結果の文言が更新されました。
・更新前:URLがGoogleに登録されていません
・更新後:URLはGoogleに登録できます

URLはGoogleに登録できます
検査結果(公開URLのテスト後)
検査結果(登録の可否の詳細)

登録の可否に記載されているメッセージ「特定の条件が満たされている場合にのみ、URLはインデックスに登録されます」の特定の条件のリンク先を見てみると、インデックスの登録が上手く行かない時に役立ちそうな情報が記載されていたので、リンク先を記載しておきます。

4. インデックス登録をリクエスト

URL検査の検査結果の”インデックス登録をリクエスト” がリンクになっているのでクリックすると、下記のメッセージが表示されました。

インデックス登録をリクエスト済み

ウィンドウ右下のOKをクリックして検査結果のページに戻ると、リンクになっていた箇所の文言が更新されました。
・更新前:インデックス登録をリクエスト
・更新後:インデックス登録をリクエスト済み

検索結果(インデックス登録をリクエスト後)

5. インデックスの登録完了

翌日、URL検査を再度実行してみると、検査結果がインデックスに登録さたという内容に更新されていました。

検査結果(インデックス登録をリクエストの翌日)

Googleでsite:クエリにドメイン名を指定して検索してみると、検索結果に表示されるようになっていました。

Google検索結果「site:madoverload.com」

あとがき

ブログを開設してから1ヶ月過ぎていますが、ようやくGoogleの検査結果に表示されるようになりました。

今回、ブログを開設してからGoogleの検索結果に表示されるようになるまで、ざっくり表現すると、下記の流れでやりました。

  1. WordPress のブログ開設
  2. サイトマップの作成
  3. Googleにサイトマップ送信
  4. Googleにインデックスの登録を申請
  5. Googleのインデックスに登録(検索結果に表示される)

SEO対策について詳しくないので、行きあたりばったりなところがありましたが、正直なんとかなったという感じです。

SEO対策に力を入れるつもりがなくても、SEOの基本的なことの理解が不十分であることが分かったので、この機会にいろいろ調べて整理しようと思います。(その投稿がいつできるかは整理の進み具合により時間がかかる可能性があるので未定)

参照

Google Search Console(その1)

直前の投稿「WordPressのサイトマップ」で、ブログのサイトマップをGoogle Search Console を使ってGoogle に送信しましたが、このSearch Console を使い始める際の手順を記載していなかったので記載しておきます。

Search Console についての解説は最低限に留め、あくまでも今回の作業記録を記載します。

Google Search Console とは

Google が提供する無料のサービス(ツール郡)で、自身のウェブサイトのコンテンツをGoogle に送信したり、Google での検索の状況を確認することができます。

Google Search Console を始める

1. Search Console にアクセス

Google検索セントラルのサイトにアクセスして[ご利用開始] ボタンをクリックして表示されるページで、[Search Console に移動] ボタンをクリックします。

2. プロパティタイプを選択

登録するウェブサイトをドメインまたはURL のどちらで指定するのかを選択します。

プロパティタイプの選択

ドメインとURLプレフィックスの違いを簡単に記載しておきます。

ドメインURLプレフィックス
ウェブサイトの入力
(例)
example.com
sub1.example.com
https://example.com
https://www.example.com
https://sub1.example.com
所有権の確認方法ドメイン名プロバイダ以下のいずれか
・HTMLファイル
・HTMLタグ
・Google Analytics
・Googleタグマネージャー
・ドメイン名プロバイダ
比較(ドメイン⇔URLプレフィックス)

今回、”URLプレフィックス” を選択したので、下記のように自サイトのURLを入力して[続行] ボタンをクリックしました。

URLプレフィックスを選択

3. 所有権の確認(URLプレフィックス)

プロパティタイプ:”URLプレフィックス” を選択すると、所有権の確認方法を選択するページが表示されます。

所有権の確認 > HTMLファイル

所有権の確認は、下記の5つの方法から選択できます。

内容
HTMLファイル指定されたHTMLファイルを自身のウェブサイトのルートフォルダにアップロードする
HTMLタグ指定されたHTMLメタタグを自身のウェブページのHTMLページのheadタグ内に記述する
※<meta name=”google-site-verification” 〜
Google AnalyticsGoogle Analytics のアカウントを使用する
(自身のウェブページのHTMLページのheadタグ内に以下を記述する)
・Google アナリティクス タグ
・トラッキング コード
GoogleタグマネージャーGoogleタグマネージャーのアカウントを使用する
(自身のウェブページのHTMLページのbodyタグ内に以下を記述する)
・タグ マネージャー コード
ドメイン名プロバイダ指定されたTXTレコードを自身のウェブサイトのDNSレコードに追加する
所有者の確認方法

今回、”HTMLファイル” を選択しました。
以下、HTMLファイルで所有権の確認をする手順を記載します。

  1. 「1. ファイルをダウンロード」の「↓ xxxx〜xxx.html」ボタンをクリックして、HTMLファイルを端末上にダウンロードする
  2. FTPツール(FileZilla など)を使って、ダウンロードしたHTMLファイルを自身のウェブサイトのルートフォルダにアップロードする
  3. アップロードしたファイルのパーミッションを読込のみ(404など)に変更する
  4. 所有権の確認の[確認] ボタンをクリックすると所有権の確認処理が始まり、下記の”所有権を証明しました” のページが表示された
所有権を証明しました

4. 所有権を証明した後の作業

この後、直前の投稿「WordPressのサイトマップ」の「サイトマップをGoogle に送信する」に記載した作業を行いました。

あとがき

今回、プロパティタイプは”URLプレフィックス”、所有権の確認は”HTMLファイル”を選択した理由を記載しておきます。

  • プロパティタイプ:”URLプレフィックス” を選択した理由
    • 所有権の確認を”HTMLファイル”にしたかったため
  • 所有権の確認方法:”HTMLファイル” を選択した理由
    • ブログのウェブページとDNSサーバの設定に影響がない
    • 他の確認方法と比べて、第三者が確認方法を特定しづらい
    • 静的HTMLファイルをサーバーに配置するのみで容易
    • Google Analytics と Googleタグマネージャーを使っていない

今後、以下のようなことがあれば、変更を検討することになりそうです。

  • Google Analytics を使うことになった場合、”Google Analytics”
  • Googleタグマネージャーを使うことになった場合、”Googleタグマネージャー”
  • サブドメインを使うことになった場合、サブドメイン向けの”HTMLファイル”を追加するか、プロパティタイプを”ドメイン”に変更する
  • 所有権の確認が2つ以上の方法で行われるようにしたくなった場合、HTMLファイル+HTMLタグ+ドメイン名プロバイダ

参照

WordPressのサイトマップ

WordPress のサイトマップについて調べてみました。

サイトマップとは

サイトマップは、ウェブサイトの投稿やページ、その他のファイルの情報を記述したファイルで、Google などの検索エンジンがこのファイルを読み込むことで、ウェブサイトの情報を効率的に収集することができるようになります。

サイトマップにはオプションとして、コンテンツがいつ更新されたのかや、ウェブサイトがどれぐらいの頻度で更新されているのか等の検索エンジンにとって有益な情報を記述することもできます。

サイトマップの記述ルール等の仕様は、大手検索エンジンのGoogle、Yahoo、Microsoft で標準化を行っています。

  • Sitemaps.org − Sitemap.org (スポンサー:Google、Yahoo、Microsoft)

WordPress 標準のサイトマップ

WordPress は標準でサイトマップが出力されるようになっています。
以前はプラグインが必要でしたが、どうやらWordPress 5.5 で出力されるようになったみたいです。

サイトマップの場所は、ルートの”wp-sitemap.xml” です。
当ブログのサイトマップは下記のURLになります。
※ “sitemap.xml” にアクセスすると”wp-sitemap.xml” にリダイレクトされるようになっていました。

ブラウザからアクセスすると、下記のように表示されます。

WordPress標準のサイトマップ

なお、デフォルトのままでは問題や改善すべき点があったので、以下その対応について記載します。

ユーザ名を非表示にする

デフォルトでは”wp-sitemap-users-1.xml” というサイトマップにWordPress に登録しているユーザのユーザ名が表示されてしまうので、function.php を更新してこのサイトマップを非表示にします。
※ ユーザ名が漏洩すると、攻撃者に管理画面でユーザ名を固定したパスワードのブルートフォース攻撃の機会を与えてしまうので、ユーザ名の漏洩はセキュリティの観点であまり望ましくないことと考えています。

function.php に下記を追記します。(末尾に追記しました)

/**
 * Removing Certain Sitemaps
 * users
 */
add_filter(
    'wp_sitemaps_add_provider',
    function( $provider, $name ) {
        if ( 'users' === $name ) {
            return false;
        }
        return $provider;
    },
    10,
    2
);

これで、“wp-sitemap-users-1.xml” が出力されなくなりました。

“wp-sitemap-users-1.xml” が表示されなくなった

最終更新日を表示する

デフォルトでは最終更新日が出力されないので、function.php を更新して出力されるようにします。
※ 最終更新日がないと、検索エンジンのクローラがコンテンツがいつ更新されたのかや、ウェブサイトがどれぐらいの頻度で更新されているのか等が判断できないので、表示した方がよいみたいです。

function.php に下記を追記します。(末尾に追記しました)

/**
 * Adding Additional Tags to Sitemap Entries
 * lastmod
 */
add_filter(
    'wp_sitemaps_posts_entry',
    function( $entry, $post ) {
        $entry['lastmod'] = date('c', strtotime($post->post_modified_gmt));
        return $entry;
    },
    10,
    2
);

これで、下記のように最終更新日が表示されるようになりました。

最終更新日が表示されていない
最終更新日が表示されるようになった

なお、後述「サイトマップのカスタマイズについて」で案内しているリンク先に最終更新日を追加するサンプルコードが記載されていますが、そのままだと日付の書式がW3C Datetime フォーマットになっていなかったので、W3C Datetime フォーマットで出力されるようにしました。
(Google Search Console でサイトマップのステータスが、”無効な日付” でエラーになっているのがこれで解消されました)

サイトマップのカスタマイズについて

他にも、カスタムサイトマップの追加や、特定の投稿やページの除去、サイトマップ自体を完全に表示しないようにするなど色々できるみたいです。
詳しくは、以下のサイトをご参照ください。

サイトマップまわりの仕組み

robots.txt

robots.txt は、検索エンジンのクローラに対して、サイトのどの URL にアクセスしてよいかを伝えるものです。
robots.txt の場所は、ルートの”robots.txt ” です。
当ブログのrobots.txt は下記のURLになります。

WordPress 標準のサイトマップが出力される状態でrobots.txt を見てみると、下記のようにサイトマップのURLが記述されていました。
この記述により、クローラがサイトマップファイルを見つけることができるようになります。

Sitemap: https://madoverload.com/wp-sitemap.xml

robots メタタグ

robots メタタグは、HTMLページのheadタグ内に「<meta name=’robots’ 〜」と記述するもので、ページ単位で検索エンジンに対して、登録の是非や、ユーザに対して検索結果をどのように表示してもらいたいのかを指定するものです。
当ブログのHTMLページのrobots メタタグは下記の記述になっていました。

<meta name='robots' content='max-image-preview:large' />

WordPress の設定

WordPress の設定画面で、検索エンジンのクローラにサイトマップやページを読み込んでもらいたいかどうかを設定することができます。
管理画面の[設定] > [表示設定] の”検索エンジンでの表示” で行います。

管理画面の[設定] > [表示設定]

“検索エンジンがサイトをインデックスしないようにする” のチェックをOFFにしていると、サイトマップ、robots.txt、robots メタタグはこれまで説明した状態になっていました。

試しにチェックをONにすると、下記の状態になりました。

  • サイトマップのURLにアクセスすると、”お探しのページが見つかりません”というWordPressのページが表示される
  • robots.txt から「Sitemap: https://madoverload.com/wp-sitemap.xml」が消える
  • robots メタタグが下記の記述になる(noindexはページをインデックスに登録してもらいたくない、nofollowはページのリンクを辿ってもらいたくない)
<meta name='robots' content='noindex, nofollow' />

当ブログはもう初期設定も終え、投稿もいくつかしているのでチェックをOFFにして検索エンジンのクローラを受け入れる状態にしておきますが、ブログの開設中はチェックをONにしておいた方がよかったのかもしれません。
(とはいえブログを開設して1ヶ月経ちますが、ドメイン名をググってもヒットしませんでした)

サイトマップをGoogle に送信する

当ブログは開設して1ヶ月になりますが、誰も存在を知らない状態です。Twitter への自動投稿でブログのURLを貼るようにしましたが、アクセス数が0という日も普通にあります。

せっかくサイトマップが出力されるようになっているので、Google にサイトマップの存在を知らせてインデックスに登録してもらうよう働きかけてみたいと思います。

調べてみると、Google Search Console にサイトマップを送信することで、それができるようです。
以下、その手順を記載します。

1. Search Console にブログを登録する

サイトマップをGoogle Search Console に送信する為には、Search Console に自身のウェブサイトのドメインまたはURLを登録して、そのウェブサイトが自身に所有権があることを証明する必要があります。
具体的な手順は省略しますが、今回は下記で行いました。

  • プロパティタイプの選択:URLプレフィックス
  • 所有権の確認:指定されたHTMLファイルをダウンロードして自サイトにアップロード

2. Search Console にサイトマップを送信する

Search Console にウェブサイトを登録すると、Search Console の管理画面が表示されます。
サイドメニューの[インデックス] > [サイトマップ] をクリックすると、”新しいサイトマップの追加” というサイトマップのファイル名を入力するフォームが表示されるので、ファイル名を入力して[送信] ボタンをクリックします。

サイドメニューの[インデックス] > [サイトマップ]

サイトマップの送信が完了すると、下記のメッセージが表示されます。

[OK] ボタンをクリックすると元の画面に戻り、送信する前は何も表示されていなかった”送信されたサイトマップ” に、今回送信したサイトマップが表示されます。
送信してすぐはステータスが”取得できませんでした” となっていましたが、1〜2分待つと”成功しました” に更新されました。

サイドメニューの[インデックス] > [サイトマップ]

ここで、送信したサイトマップをクリックすると、読み込まれたサイトマップの処理結果を確認することができます。

読み込まれたサイトマップ(エラーあり)

ステータスがエラーになっているサイトマップがあるので、エラーになっているサイトマップをクリックすると詳細情報が表示されます。

サイトマップの詳細情報(エラー)

サイトマップの読み込みはできるようですが、「親タグ:url、タグ:lastmod」の日付の値に問題があるということです。

このエラーは、前述「最終更新日を表示する」に記載した最終更新日の日付の書式がW3C Datetime フォーマットになっていなかったことが原因によるもので、W3C Datetime フォーマットで出力されるようにすることで解消することができました。

読み込まれたサイトマップ(エラーなし)

エラーが解消されたサイトマップをクリックすると、詳細画面も”サイトマップは正常に処理されました” となっていました。

サイトマップの詳細情報(正常)

なお、エラーの原因を解消しても直ぐにはステータスが更新されず、24時間経ってから見てみるとステータスが”成功しました” に更新されていました。
試しに、送信した日にSearch Console に登録したサイトマップを削除し、再度”新しいサイトマップの追加” をしてみたのですが、エラーのままだったので、この登録はキャッシュに登録されて定期的に処理されているのかもしれません。

サイトマップの再送について調べてみると、Search Console のヘルプに「サイトマップを変更した場合でも、Google がすでに認識しているサイトマップを再送信する必要はありません。Google は、次にサイトをクロールしたときに、変更を検出します」という記載がありました。
これは、再送は即時に反映される訳ではないということの裏返しの表現なのかもしれません。

あとがき

サイトマップを表示させるためにはプラグインの導入が必要と思っていましたが、調べてみるとプラグインがなくてもなんとかなりました。
ただ、プラグインを入れたからこそできることというのがあるかもしれないので、もし必要にかられたら導入を検討したいと思います。

サイトマップのGoogle への登録が成功し、エラーもなくなりましたが、今回の作業が完了した後にドメイン名をググってもヒットしませんでした。
はたして、いつになったら検索結果に表示されるのでしょうか。。

参考

WordPress→Twitter の導線

WordPress のブログからTwitter への導線について考察してみます。
ブログを見に来てくれた人がTwitter をやっていることに気づき、ツイートを見に来たり、アカウントをフォローする流れが感覚的にできる状態になっているのかを整理したいと思います。

Twitter のフォロアーになってくれれば、タイムラインに流れるTwitter へのブログの自動投稿が目に入り、ブログに来てくれることにつながるので、ブログとTwitter の両方を運用するのであれば意識しておいた方がよさそうです。

1. Twitter をやっていることに気づく

ブログのトップページや投稿のページを開いた時は、PCとスマホともに画面上にTwitter をやっていることがわかるボタンやアイコンは表示されていないです。
ただ、投稿を読んで気に入ってくれた時に気づいてもらえれば良いというのと、デザイン上もページが表示された時にあまり雑音がない状態にしておきたいので、これでよいことにします。

上記の「投稿を読んで気に入ってくれた時に気づいてもらえれば良い」という点で、投稿の下には共有ボタンを表示するようにしてあります。

また、PCではサイドバーが右に表示されるので、投稿を読んでいる途中でサイドバーにあるTwitter ボタン(フォローボタンとメンションボタン) に気づいてもらえるかもしれません。

あと、ページの先頭になければ末尾に探しに行くという行動を想定して、ページの末尾のフッター部にTwitter アイコンを表示してあります。

2. Twitter のツイートを見に来たり、アカウントをフォローする

投稿の共有ボタン

投稿の下に共有ボタンを表示してあります。
投稿の先頭に配置してもよいのかもしれませんが、投稿を読み終わった時にそのままシェアという行動に移れるので、ここに配置するのが自然かと思います。

共有ボタンをクリックすると、Twitter のツイートするウィンドウが開き、そこには投稿のタイトルとURLが既に入力された状態になります。

サイドメニューのTwitterボタン(フォローボタン)

サイドバーに“@RodentGiantさんをフォロー” というボタンを表示してあります。
このボタンのデザインから、このボタンをクリックすればフォローする流れにつながると予想できると思います。

ボタンをクリックすると、Twitterアカウントのページが開き、[フォロー] ボタンが表示されるようになっています。

サイドメニューのTwitterボタン(メンションボタン)

サイドバーに”@RodentGiantさんへツイートする” というボタンを表示してあります。
このボタンのデザインから、このボタンをクリックすれば@RodentGiant 宛にツイートする流れにつながると予想できると思います。

ボタンをクリックすると、Twitter のツイートするウィンドウが開き、そこには”@RodentGiant” が入力された状態になります。

このTwitter ボタンはTwitter Publish で生成したHTMLコードをウィジェットに貼り付けて表示しています。

ページ末尾のTwitterアイコン

ページの末尾のフッター部にTwitter アイコンを表示してあります。
鳥の絵だけの文字がないアイコンのデザインなので、このアイコンをクリックすればTwitter のアカウントのページが表示されると予想できると思います。

このアイコンはWordPress 標準のソーシャルリンクメニューを使って表示しています。
以下、表示させる手順を記載します。

  1. [外観] > [メニュー] をクリック
  2. [メニューを編集]タブの[メニュー構造] を編集する
    • Twitter 以外(Facebook、Instagram、メール)のカスタムリンクを削除
    • Twitter のURLに自身のTwitter アカウントのURLを指定
  3. [メニュー設定] の[メニューの位置] にある”ソーシャルリンクメニュー” のチェックを入れて、[メニューを保存] ボタンをクリック

※ 上記の手順だけでなく、[外観] > [カスタマイズ] > [メニュー] > [サブメニュー] でも同じ設定ができます。

3. その他

投稿の本文へのツイートの埋め込み

直前の投稿「Twitter Publish」で記載した方法で、Twitter の特定のツイートを投稿に埋め込むことができるので、ここからTwitter のツイートのページを表示させることができます。

位置づけがなんとなく上記「2. Twitter のツイートを見に来たり、アカウントをフォローする」と違うのでその他として記載しておきました。

  • 自分以外のTwitter アカウントのツイートの埋め込み
    • クリックすると、その人のツイートが表示される
    • 投稿に誰かのツイートを掲載したい時に使う
  • 自分のTwitter アカウントのツイートの埋め込み
    • クリックすると@RodentGiant のアカウントのツイートが表示される
    • 自分のツイートを掲載したい時に使う(やる機会があまりなさそう)

あとがき

投稿の共有ボタンを表示する方法について、今回は記載しませんでした。機会があったら書こうと思います。

参照