Raspberry pi と snowboy で Alexa
- カテゴリ: Raspberry pi
- 投稿日時: 2019/05/05(日) 09:38:22
令和最初のエントリは Raspberry pi です。
職場の若いヤツに Raspberry pi 2B を譲ってもらいました。ちょっと前のモデルですね。
Raspberry pi 、興味はあったものの、何に使えるものなのか全くわかってなかったので、そっち方面に詳しいひとに聞いてみました。ネットワーク絡みで何かを制御するようなものが得意ですよとのこと。いわゆる IoT 向きの模様。
OctoPrint で3Dプリンタのホストにするとか、カメラ繋いでドラレコもどきにするとかいろいろ考えましたが、面白そうだというだけの理由でスマートスピーカー化することにしました。
スマートスピーカーは、実質 Google と Amazon の二択です。両方試してみましたが Google はうまくいかなかったので Amazon Echo 化することに。いくつかハマりどころがあったので、備忘録を兼ねてまとめておきます。
このエントリで目指すもの
Raspberry pi にALEXA をインストールする方法は Web にあふれています。ただ旬が過ぎてしまったのか、全体的に情報が古い。そのあたりを補完していきます。avs-device-sdk のバージョンは 1.12.1 です ( 2019.5.3現在 ) 。
素のままだとウェイクアップワードの反応が悪いのでライブラリを入れ替えます。デフォルトの Sensory は使わずに最初から snowboy を入れます。これも先駆者の事例が山ほどあるのですが、avs-device-sdk のバージョン違いのおかげで手順が微妙に異なりました。
Raspberry pi 単独で Amazon Echo のように使うために、シャットダウン/再起動ボタンを装備します。また、電源投入で ALEXA が自動起動するように構成します。
用意したもの
- Raspberry pi 2 Model B
- 純正 Wi-Fi アダプタ
- MicroSD カード (15GB)
- AC-DC アダプタ (DC5V 2A)、給電用USBケーブル
- Web カメラ ロジクール C270
- 百均のピンジャック接続パッシブスピーカー
- タクトスイッチ、ジャンパーワイヤー、ブレッドボード
Raspberry pi にはマイク端子がありません。なので、USBで接続できるマイクが必要です。
最初は手持ちのコンデンサマイクと1815一石の自作マイクアンプ、USB 接続の DAC で頑張ってみましたが、どうにもうまく行かなかったので、やはり手持ちだった Web カメラをマイクとして使うことにしました。ええ、Ciclop で使ってたヤツです。
この web カメラのマイク、意外と性能が良いです。Web カメラとしても安いしおすすめの商品ですね。
スピーカーはアンプの入ってるパッシブスピーカーでないとだめかなと思っとりましたが、100円ショップのもので問題なかったです。
タクトスイッチはシャットダウンボタンとして使います。なにかの基板から剥ぎ取ったジャンク品。
全体の完成図はこんな感じになります。今はバラック状態ですがいつかまともなケースをつくりましょう。Raspbian のインストール
Raspbian は Raspberry pi の公式 OS です。正直、Linux 系は苦手なんですが致し方ない。
ここからダウンロードします。
自分は初心者なので NOOBS を利用しました。玄人の方は Raspbian Stretch with desktop のイメージを使うのもいいでしょう。
SDカードのフォーマッタはそれ用のものを使った方がいいです。これとか。
OS をインストールしてもろもろ設定すれば、Windows PC から ssh や vnc で遠隔操作できるのですが、最初は Raspberry pi にキーボード、マウス、モニタを繋いで作業したほうが無難です。っていうか自分はそうしました。
参考にさせていただいたのはこちら
ラズパイを買ったらそのあとは?地獄の初期設定をしよう【OSインストール・日本語設定編】
なお、日本語化や日本語入力の設定は、今のバージョンだとこんなに難しくはありません。
Raspbian のインストールが終了したら IP アドレスを固定します。DHCP で取得だと都度 IP アドレスが変わってしまうので、遠隔接続するのが面倒だからです。 /etc/dhcpcd.conf を編集します。
$ sudo nano /etc/dhcpcd.conf
下記を追記します。
interface wlan0
static ip_address=192.168.0.214/24
static routers=192.168.0.1
static domain_name_servers=192.168.0.1
無線接続なのでwlan0の項目を設定します。有線ならeth0でしょう。
これはうちの環境なので、適宜変更しましょう。
自分のように Linux 苦手なひとは、右クリックから選べるテキストエディタ nano を使用するのが吉です。ctl + o でセーブ、ctl + x で終了、カーソルキーで移動です。
最後に ssh と vnc を有効にしておきます。設定 > Raspberry Piの設定 > インターフェイスタブ
VNC サーバーも昔は自前で立てなければならなかったようですが、現在は RealVNC がプリインストールされてます。便利ですね。
ここまでできたら一旦シャットダウンして、キーボード、マウス、ディスプレイをはずしてしまいます。あとの作業はすべて Windows PC から行います。
Windows PC に VNC Viewer を入れときます。ここからダウンロードします。インストールは簡単。
ssh クライアントとして TeraTerm を使用します。これも特に難しいことはありません。
マイク・スピーカーの動作確認
いちばん最初にやらなければならないのは、マイクとスピーカーの動作確認です。これがだめだとこのあといくら頑張ってもどうにもなりません。
どうやるかというと、標準コマンドを使って録音と再生をしてみるわけです。以降は ssh 接続した TeraTerm のコンソールから行います。
参考にさせていただいたのはこちら
【マメ知識】ラズパイに接続したロジクールC270で録音をする
参考というかそのまんまなので詳細は割愛。
lsusb でマイクデバイスが認識されているか確認、
arecord でカード番号とデバイス番号の確認、
amixer でマイクのボリュームの設定、
arecord で録音、
aplay で再生、です。
うまくいったら、録音した wav を削除しておくといいでしょう。rm か、vnc の GUI で。
余談です。このときの回路をもとにしてコンデンサマイクとマイクアンプをつくってみましたが、小さいけど音割れしているという状態で諦めました。USB-DAC はこれです。自作回路がだめなのか、激安 DAC がだめなのか、はたまた百均のハンズフリーイヤホンから取ったマイクがだめなのかは定かではありません。
Raspberry Pi Quick Start Guide with Script
Raspberry pi に ALEXA を入れる方法はいろいろあるようですが、現状では avs-device-sdk を利用するのが一番良さそうです。
github にクイックスタートガイド (英語) がありますのでこれに沿って進めます。
Raspberry Pi Quick Start Guide with Script
あと、こちらのサイトをかなーり参考にさせていただきました。
【Raspberry Pi】【AVS Device SDK】ラズパイでAlexaする
製品登録とセキュリティプロファイルの作成
製品登録といっても、市販する本番製品の登録ということではないです。実際、この時点で Raspberry pi が準備できていなくても問題はありません。
ひとまず Raspberry pi は置いておいて、 Windows PC から Amazon Devewloper のサイトにアクセスします。
ここで必要な情報を入力すると、最後に「config.json」というファイルがダウンロードできます。Raspberry pi に avs-device-sdk をインストールする際、このファイルが必要になります。
Amazon 開発者ポータル左下の Alexa Voice Service をクリック。製品を作成するをクリック。この先、キャプチャし忘れました。
製品名: 「RaspberryPiAlexa」としました。適当で可
製品ID: 「RaspberryPiAlexa」としました。適当で可
製品タイプ: 「Alexa内蔵の端末」
コンパニオンアプリ: 「いいえ」
商品カテゴリー: その他「RaspberryPi」としました。適当で可
製品概要: 「Alexa voice service on RaspberryPi」としました。適当で可
エンドユーザーは、商品とどのようにやり取りするのでしょうか ?: 「タッチで開始される」「ハンズフリー」にチェック
この製品を商品として配信する予定ですか ?: 「いいえ」
お客様の端末は以下のために使用されますか Alexa for Business?: 「いいえ」
この端末は1つまたは複数のAWS IoTコアアカウントに関連付けられていますか?: 「いいえ」
続いてセキュリティプロファイルの設定を行います。
セキュリティプロファイル: 「Alexa Voice Service on Rapsberry Pi」としました。適当で可
セキュリティプロファイルの説明: 「Alexa Voice Service on Rapsberry Pi」としました。適当で可
これでクライアントIDとクライアントのシークレットが作成されます。
「ウェブ」というタブがアクティブになっていて、暗号めいた文字列や URL など表示されていますがここは完全に無視。「他のデバイスやプラットフォーム」のタブを開きます。
さっき入力したクライアント ID 名と、自動生成されたクライアント ID が表示されています。心配ならどこかに控えておいても良いですが、特にメモとか取る必要もありません。同じ囲みの中にある「ダウンロード」ボタンを押すと「config.json」というファイルがダウンロードされます。中にはクライアント ID 名とクライアント IDが埋め込まれています。後で使うのでどこかに保存しておきましょう。
セットアップ準備
ここからは Raspberry pi に ssh で接続した端末を操作していきます。
パッケージを最新に更新。これやっとかないと build の時に謎のエラーが出まくります。
$ sudo apt update
$ sudo apt upgrade
ホームディレクトリにフォルダを作成しカレントを移動。フォルダ名は何でもよいです。このフォルダに avs-device-sdk をインストールしていきます。
$ mkdir ~/sdk-folder
$ cd ~/sdk-folder
ダウンロードしておいた config.json を ~/sdk-folder に転送しておきます。
VNC を使うのが簡単です。
端末にもどって、セットアップスクリプトをダウンロードします。
wget https://raw.githubusercontent.com/alexa/avs-device-sdk/master/tools/Install/setup.sh \
wget https://raw.githubusercontent.com/alexa/avs-device-sdk/master/tools/Install/genConfig.sh \
wget https://raw.githubusercontent.com/alexa/avs-device-sdk/master/tools/Install/pi.sh
スクリプトを書き換えてライブラリを入れ替えます。デフォルトの Sensory は使わずに最初から snowboy を入れるようにします。書き換えるのは「pi.sh」です。
なにか適当なテキストエディタを使いましょう。ここでは nano を使用しました。
$ sudo nano pi.sh
書き換える場所は三箇所あります。
■一箇所目
SOUND_CONFIG="$HOME/.asoundrc"
START_SCRIPT="$INSTALL_BASE/startsample.sh"
CMAKE_PLATFORM_SPECIFIC=(-DSENSORY_KEY_WORD_DETECTOR=ON \
-DGSTREAMER_MEDIA_PLAYER=ON -DPORTAUDIO=ON \
-DPORTAUDIO_LIB_PATH="$THIRD_PARTY_PATH/portaudio/lib/.libs/libportaudio.$LIB_SUFFIX" \
-DPORTAUDIO_INCLUDE_DIR="$THIRD_PARTY_PATH/portaudio/include" \
-DSENSORY_KEY_WORD_DETECTOR_LIB_PATH=$THIRD_PARTY_PATH/alexa-rpi/lib/libsnsr.a \
-DSENSORY_KEY_WORD_DETECTOR_INCLUDE_DIR=$THIRD_PARTY_PATH/alexa-rpi/include)
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
SOUND_CONFIG="$HOME/.asoundrc"
START_SCRIPT="$INSTALL_BASE/startsample.sh"
CMAKE_PLATFORM_SPECIFIC=(-DKITTAI_KEY_WORD_DETECTOR=ON \
-DGSTREAMER_MEDIA_PLAYER=ON -DPORTAUDIO=ON \
-DPORTAUDIO_LIB_PATH="$THIRD_PARTY_PATH/portaudio/lib/.libs/libportaudio.$LIB_SUFFIX" \
-DPORTAUDIO_INCLUDE_DIR="$THIRD_PARTY_PATH/portaudio/include" \
-DKITTAI_KEY_WORD_DETECTOR_LIB_PATH=$THIRD_PARTY_PATH/snowboy/lib/rpi/libsnowboy-detect.a \
-DKITTAI_KEY_WORD_DETECTOR_INCLUDE_DIR=$THIRD_PARTY_PATH/snowboy/include)
■二箇所目
build_kwd_engine() {
#get sensory and build
echo
echo "==============> CLONING AND BUILDING SENSORY =============="
echo
cd $THIRD_PARTY_PATH
git clone git://github.com/Sensory/alexa-rpi.git
bash ./alexa-rpi/bin/license.sh
}
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
build_kwd_engine() {
#get snowboy and build
echo
echo "==============> CLONING AND BUILDING snowboy =============="
echo
cd $THIRD_PARTY_PATH
git clone https://github.com/Kitt-AI/snowboy.git
}
■三箇所目
generate_start_script() {
cat << EOF > "$START_SCRIPT"
cd "$BUILD_PATH/SampleApp/src"
./SampleApp "$OUTPUT_CONFIG_FILE" "$THIRD_PARTY_PATH/alexa-rpi/models" DEBUG9
EOF
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
generate_start_script() {
cat << EOF > "$START_SCRIPT"
cd "$BUILD_PATH/SampleApp/src"
env PA_ALSA_PLUGHW=1 ./SampleApp "$OUTPUT_CONFIG_FILE" "$THIRD_PARTY_PATH/snowboy/resources"
EOF
三箇所目の「DEBUG9」を削ると、Alexa 実行中のログ表示が簡潔になります。不安ならそのままで良いでしょう。
----------- 2019.07.20 追記 -----------------
最新の Raspbian strech 4.19.58-v7+ で環境変数の変更があったようです。サンプルアプリ startsample.sh を実行すると portaudio 関係のエラー
Failed to open PortAudio default stream:errorCode=-9997
で起動できません。
上記三箇所目最初の env PA_ALSA_PLUGHW=1 を入れると実行できるようになります。
ソース: Failed to create SampleApplication! #1413
----------- 追記ここまで -----------------
snowboy を入れると build 時に Google Test (GTest) 関連のエラーが出ます。使ってないので実質問題はないのですが、気持ち悪いので入れておきます。
$ sudo apt-get install libgtest-dev
こちらは snowboy の依存ライブラリ。行列計算ライブラリらしいです。
$ sudo apt install libatlas-base-dev
以下は参考にさせていただいたサイトでやっていたので実施。必要かどうかはよくわかりません。(たぶん不要)
$ curl -kL https://bootstrap.pypa.io/get-pip.py | sudo python3
$ sudo apt install gstreamer1.0-alsa
セットアップ
下準備が終わったのでやっとセットアップスクリプトを実行できます。
$ sudo bash setup.sh config.json -s 123456
実行してすぐに入力待ちになりますので「AGREE」と入力。
あとはほっとけば最後まで走るはず。
Sensory は使わないので、ライセンス規約に同意するためにENTER押したりyesとタイプしたりすることはないです。
**** Completed Configuration/Build ***
と表示されて終了します。
自動生成された alexa.umdl を snowboy/resources にコピーします。
$ sudo cp -a ~/sdk-folder/third-party/snowboy/resources/alexa/alexa-avs-sample-app/alexa.umdl ~/sdk-folder/third-party/snowboy/resources/
build でエラーになっているところを修正します。
$ sudo nano ~/sdk-folder/avs-device-sdk/build/cmake/BuildOptions.cmake
# Set up the compiler flags.
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
# Set up the compiler flags.
add_definitions (-D_GLIBCXX_USE_CXX11_ABI=0)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
ウェイクアップワードを認識したら「ポーン」という音を出すようにします。
$ sudo nano ~/sdk-folder/avs-device-sdk/SampleApp/src/UIManager.cpp
case DialogUXState::LISTENING:
ConsolePrinter::prettyPrint("Listening...");
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
case DialogUXState::LISTENING:
system("aplay /home/pi/sdk-folder/third-party/snowboy/resources/dong.wav 1>/dev/null 2>/dev/null ");
ConsolePrinter::prettyPrint("Listening...");
ちなみに上のように case 文の直下に system 文を入れる例が多いんですが、うちの環境では音が鳴らないことも。ConsolePrinter の後にしたらうまくいったりして、よくわかりません。
もう一度セットアップスクリプトを実行します。
$ sudo bash setup.sh config.json -s 123456
実行してしばらくすると待ちになりますので「AGREE」と入力。
あとはほっとけば最後まで走るはず。
最初よりも時間はかかりません。変更されたところだけ build するんですね。賢い。
認証とサンプルアプリの実行
startsample.sh を実行します。
$ sudo bash startsample.sh
以下のような表示が流れて認証待ちになります。
#################################################
# NOTIFICATION INDICATOR STATE: OFF #
#################################################
##################################
# NOT YET AUTHORIZED #
##################################
################################################################################################
# To authorize, browse to: 'https://amazon.com/us/code' and enter the code: XXXXXX #
################################################################################################
#################################################
# Checking for authorization (1)... #
#################################################
(カッコ内の数字が(2)(3)…と増えていく)
端末はこのままほっておいて、Windows PC のブラウザで認証を行います。
コードを入力します。さっきの端末の画面、赤字のところです。
continue 、 Allow と進んで
成功しました。
端末に戻ると
###########################
# Authorized! #
###########################
#############################
# Connecting... #
#############################
########################################
# Alexa is currently idle! #
########################################
となっているはず。これで認証完了です。
この時点でもう Alexa は起動しています。ひとまず日本語化しましょう。
>c
+----------------------------------------------------------------------------+
| Setting Options: |
| Change Language: |
| Press '1' followed by Enter to see language options. |
| Change Do Not Disturb mode: |
| Press '2' followed by Enter to see Do Not Disturb options. |
+----------------------------------------------------------------------------+
>1
+----------------------------------------------------------------------------+
| Language Options: |
| |
| Press '1' followed by Enter to change the language to US English. |
| Press '2' followed by Enter to change the language to UK English. |
| Press '3' followed by Enter to change the language to German. |
| Press '4' followed by Enter to change the language to Indian English. |
| Press '5' followed by Enter to change the language to Canadian English. |
| Press '6' followed by Enter to change the language to Japanese. |
| Press '7' followed by Enter to change the language to Australian English. |
| Press '8' followed by Enter to change the language to French. |
| Press '9' followed by Enter to change the language to Italian. |
| Press 'a' followed by Enter to change the language to Spanish. |
| Press 'b' followed by Enter to change the language to Mexican Spanish. |
| Press 'c' followed by Enter to change the language to Canadian French. |
+----------------------------------------------------------------------------+
>6
###################################
# locale set to ja-JP #
###################################
シャットダウンボタン
ここまででもう Alexa とおしゃべりはできるんですが、startsample.sh の実行とシャットダウンのためには、いちいち端末を開かなきゃなりません。面倒です。
まずは、物理的なシャットダウンボタンをつくります。参考にさせていただいたのはこちら
ラズパイでシャットダウンボタンを付ける(ついでに起動ボタン)
参考というかまんまです。
systemd を使ってサービスを自動起動するわけですね。
プログラムを作成します。python ですね。
$ sudo nano /home/pi/sdk-folder/shutdownd.py
#!/usr/bin/python
# coding:utf-8
import time
import RPi.GPIO as GPIO
import os
pinnumber=23
GPIO.setmode(GPIO.BCM)
#GPIO23pinを入力モードとし、pull up設定とします
GPIO.setup(pinnumber,GPIO.IN,pull_up_down=GPIO.PUD_UP)
while True:
GPIO.wait_for_edge(pinnumber, GPIO.FALLING)
sw_counter = 0
while True:
sw_status = GPIO.input(pinnumber)
if sw_status == 0:
sw_counter = sw_counter + 1
if sw_counter >= 50:
print("長押し検知!")
os.system("sudo shutdown -h now")
break
else:
print("短押し検知")
break
time.sleep(0.01)
print(sw_counter)
作成したら実行権限を付与しておきます。
$ sudo chmod +x /home/pi/sdk-folder/shutdownd.py
サービスファイルを作成します。
$ sudo nano /lib/systemd/system/shutdownbuttond.service
[Unit]
Description=Shutdown Daemon
[Service]
ExecStart =/home/pi/sdk-folder/shutdownd.py
Restart=always
Type=simple
[Install]
WantedBy=multi-user.target
サービスファイルのパーミッションを変更します。
$ sudo chmod 644 /lib/systemd/system/shutdownbuttond.service
デーモンを再読み込みします。
$ sudo systemctl daemon-reload
サービスを有効化します。
$ sudo systemctl enable shutdownbuttond.service
サービスを開始します。
$ sudo systemctl start shutdownbuttond.service
サービスが有効になっているか確認します。
$ sudo systemctl status shutdownbuttond.service
有効になっていない場合は、打ち間違いがないかよく確認しましょう。何気に Raspberry pi 自体を再起動したりすると良いかもしれません。
自動起動
電源投入で startsample.sh を自動起動するようにします。
シャットダウンボタンと同じく systemd を使ってサービスを自動起動します。参考にさせていただいたのはこちら
Running SampleApp automatically on system boot #539
参考というかまんまです。(またか)
手順的にはシャットダウンボタンと同じなのですが、実は今のまま startsample.sh を自動起動にしてしまうと、CPU 使用率が 100% になってしまいます。
startsample.sh がキーボードの入力待ちをしているのが原因のようです。なのでキーボードからの入力待ちをしないように改変してしまいます。
ただしそうすると、ウェイクワードを認識しないときに「t」をタイプするとか、設定を変更するために「c」をタイプするとか、そういうことが一切できなくなってしまいます。
自動起動に設定する前に、ちゃんと Alexa が反応するか確認してからのほうが良いでしょう。
キーボードからの入力待ちをしないようにするためには、UserInputManager.cpp というファイルを書き換えて再ビルドする必要があります。
$ sudo nano /home/pi/sdk-folder/avs-device-sdk/SampleApp/src/UserInputManager.cpp
SampleAppReturnCode UserInputManager::run() {
bool userTriggeredLogout = false;
m_interactionManager->begin();
while (true) {
char x;
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
SampleAppReturnCode UserInputManager::run() {
bool userTriggeredLogout = false;
m_interactionManager->begin();
while (true) {
// ADD THIS
std::this_thread::sleep_for(std::chrono::hours(1));
continue;
char x;
セットアップスクリプトを実行して再ビルドします。
$ sudo bash setup.sh config.json -s 123456
スクリプトを作成します。
$ sudo nano /home/pi/sdk-folder/alexa.sh
#!bin/bash
sudo /bin/bash /home/pi/sdk-folder/startsample.sh
作成したら実行権限を変更しておきます。
$ sudo chmod +x /home/pi/sdk-folder/alexa.sh
サービスファイルを作成します。
$ sudo nano /lib/systemd/system/alexa.service
[Unit]
Description=Amazon Alexa
After=network.target network-online.target
[Service]
Type=idle
ExecStart=/bin/bash /home/pi/sdk-folder/alexa.sh
WorkingDirectory=/home/pi/sdk-folder/build/SampleApp/src
User=pi
[Install]
WantedBy=multi-user.target
サービスファイルのパーミッションを変更します。
$ sudo chmod 644 /lib/systemd/system/alexa.service
デーモンを再読み込み、サービスを有効化、サービスを開始します。
$ sudo systemctl daemon-reload
$ sudo systemctl enable alexa.service
$ sudo systemctl start alexa.service
サービスが有効になっているか確認します。
$ sudo systemctl status alexa.service
これで完成です。
今後の予定
スキルを追加したり、GPIO 経由でなにかを動かしたりするのが楽しそうです。なにかできたらまたエントリにアップしますね。
ウェイクワードの反応が鈍い時は
ウェイクワードの反応が鈍いときは snowboy の感度とボリュームを変えると幸せになれるかもしれません。
sudo nano ~/sdk-folder/avs-device-sdk/KWD/KWDProvider/src/KeywordDetectorProvider.cpp
/// The sensitivity of the Kitt.ai engine.
static const double KITT_AI_SENSITIVITY = 0.6;
/// The audio amplifier level of the Kitt.ai engine.
static const float KITT_AI_AUDIO_GAIN = 2.0;
赤字のところを変更します。うちの場合、KITT_AI_SENSITIVITY を 0.7、KITT_AI_AUDIO_GAIN を 0.5 にしました。変更したら setup.sh を再実行してください。
Tweet
コメント
この記事へのコメントはありません