『推しが俺を好きかもしれない2』感想(ネタバレ有り)

『推しが俺を好きかもしれない2』読み終わりました。
なんか熱い感想文を書いたのに全部消えたので2回目の熱い文章です。
【全テキストエディタに捧ぐ!!!!】……いや、エディタに怒ってもしゃあないか、保存しとけよ


あらすじからある通り、今回は文芸部の幽霊部員、檜原由女から告白を受ける所から始まります。
一巻から名前と軽いエピソードくらいは出てきましたが……ついに出たな。

続きを読む

『テイルズ オブ アライズ』プレイ感想(ネタバレ有り)

『テイルズオブアライズ』クリアしましたー。

 

サブクエストなり見れるスキットやらイベントシーンを飛ばさずに全部見たためか、

エンドロールの時点でプレイ時間60時間とかになってました。

 

大体の称号をとり、残りは時間かかる奴だなって感じになったので、プレイの感想などを書いてみます。

 

以下ネタバレあり

 

続きを読む

RIDDLE JOKER全ルート完(ネタバレあり)

『RIDDLE JOKER』を全ルートクリアしました。
エロゲ自体は借り物の『リトルバスターズ!』以来でしたが、全ルートとなると初めて。

いやー……長かった。

フルプライスだし長いだろうなーとは思っていたけど、まさかこんなに長いとは
社会人の貴重な土日二回分と平日夜全部つぎ込んでクリアしたので、40時間……いやもっとかな?
そのくらい掛かりました。

以下、ネタバレも含んだ感想

続きを読む

GoogleHomeからローカルの音声ファイルをRaspberry pi経由で流す

きっかけ

目的としては、定時にVOICEROIDの音声で通知して欲しいという考えのもと、
ブラウザから音声のキャストも出来るんだし、簡単だろうとやり始めたところ、
意外とつまりポイントが多かったので、備忘録がてら残します。
引用引用アンド引用となっているので、元のサイトを確認することを推奨します。

よくある検索結果と問題点

検索するとまず出てくるのが、
Google Play Musicに手持ちの曲をアップロードすれば流せる」という情報が出てきますが、こちらの情報は今時点では古いです。

Google Play Musicは、現在Youtube Musicへ移行されたのですが、移行先のYoutube Musicにアップロード後、GoogleHomeに曲を流すように話しかけると 「プレミアムへの登録が必要」という返信を貰います。

試してはいないのですが、もしかするとYoutube Music プレミアムに登録するだけでいけるかもしれません。
ですが、今回の目的だけで課金、というのも二の足を踏んでしまうので、今回は使用しません。

そのため、今回は手持ちのRaspberry pi4から流すようにします。

ウェブ上の音声を流すまで

まず、ラズパイから処理を実行するための下準備として環境を最新化します

sudo apt-get update
sudo apt-get upgrade

続いて、node.js、npmをインストールします

sudo apt-get install nodejs npm
sudo npm install n -g

その後、一旦再起動を行います。

再度コンソール画面を立ち上げ、必要なものをインストールします。

sudo apt-get install -y vim git-core libnss-mdns libavahi-compat-libdnssd-dev


続いて、GoogleHomeから音声を再生するためのソフトとして、
google-home-notifierをインストールします。
こちらを使うことによって、好きな音楽を流せたり、自由にしゃべらせることが可能です。
github.com


google-home-notifierの設置フォルダを適当に作成します。

mkdir homebot
cd homebot

プロジェクトの作成とgoogle-home-notifierをインストール

npm init
npm install google-home-notifier

続いて、google-tts-apiのバージョンアップを行います

vim node_modules/google-home-notifier/package.json
  "bundleDependencies": false,
  "dependencies": {
    "body-parser": "^1.15.2",
    "castv2-client": "^1.1.2",
    "express": "^4.14.0",
-    "google-tts-api": "https://github.com/darrencruse/google-tts/tarball/british-voice",
+    "google-tts-api": "0.0.6",
    "mdns": "^2.3.3",
    "ngrok": "^2.2.4"
  },

というように修正をします。

qiita.com


併せて、browser.jsも修正します。

vim node_modules/mdns/lib/browser.js
 Browser.defaultResolverSequence = [
   rst.DNSServiceResolve()
-, 'DNSServiceGetAddrInfo' in dns_sd ? rst.DNSServiceGetAddrInfo() : rst.getaddrinfo()
+, 'DNSServiceGetAddrInfo' in dns_sd ? rst.DNSServiceGetAddrInfo() : rst.getaddrinfo({families:[4]})
 , rst.makeAddressesUnique()
 ];


続いてこちらを参考に、mp3をGoogleHomeに再生させるスクリプトの作成をします。
scrapbox.io

vim main.js
 #!/usr/local/bin/node
 const home   = require('google-home-notifier');
 const argv   = process.argv;
 const mp3URL = argv[2];
 const device = argv[3] || '';
 const msg    = 'Say "OK Google, Stop" to stop play music.';
 if (mp3URL === undefined) {
     console.error('usage: play.js <url of mp3> <device id>');
     process.exit(1);
 }
 home.device(device, 'ja');
 home.ip('<GoogleHomeのIPアドレス>');
 home.play(mp3URL, () => console.log(msg));

ただ、google-home-notifierを使ったGoogleHomeでの再生は、
google-home-notifierのREADMEにあるとおり、特にGoogleHomeのIPアドレスを指定しなくても起動出来るようなのです。
ただ、私の環境では

Error: getaddrinfo -3008

というエラーが発生するので、こちらを参考に、IPアドレスを指定することでエラーが解消されました。
qiita.com


GoogleHomeのIPアドレスの確認方法は、GoogleHomeアプリから、デバイス情報を確認することでIPアドレスの確認が出来ます。

support.google.com


ファイルに実行権限を付与して、テストで音声を流してみます。

chmod 755 main.js
./main.js 'http://www.ne.jp/asahi/music/myuu/wave/toccata.mp3' Google-Home

音声ストップをする場合には、通常のGoogleHomeと同様にストップなどと言って止めます。

ローカルの音声を流すまで

この段階ではまだ、ウェブ上の音声を流すにとどまるので、
続いて、ラズパイ内の音声ファイルを流せるように、ファイルサーバーをラズパイ上に立てます。

vim mp3server.js
const fs   = require('fs');
const path = require('path');
const app  = require('express')();
const port = 3000;
app.listen(port, console.log('port: ' + port));
app.get('/audio/:file', (req, res) => {
    const f = req.params.file;
    const p = path.join('audio', f);
    fs.readFile(p, (err, data) => {
        if (err)
            res.status(400).send(err.toString());
        else {
            res.setHeader('Content-Length', data.length);
            res.write(data);
            res.end();
        }
    });
});

ファイルサーバーの稼働確認をします

mkdir audio #音声ファイルの設置フォルダの作成
cp <再生したいMP3のファイル名> audio
node mp3server.js

ブラウザから以下のURLにアクセスし、音声が流れるか音声ファイルがダウンロード出来たら成功です。
http://<ラズパイのIP>:3000/audio/<再生したいMP3のファイル名>`


次に、再起動してもファイルサーバーが稼働するようにします。

Ctrl + c    #簡易MP3サーバを停止
sudo npm install pm2@latest -g #pm2のインストール
pm2 start bin/mp3server.js
pm2 startup systemd
[PM2] Init System found: systemd
[PM2] To setup the Startup Script, copy/paste the following command:
sudo env PATH=$PATH:/usr/local/bin /usr/local/lib/node_modules/pm2/bin/pm2
startup systemd -u ??? --hp /home/???
# 表示された指示の通りに、以下のコマンドを実行する
$ sudo env PATH=$PATH:/usr/local/bin /usr/local/lib/node_modules/pm2/bin/pm2 startup systemd -u <あなたのユーザー名> --hp /home/<あなたのユーザー名>
$ pm2 save #設定の保存
$ sudo reboot #設定確認のため再起動


ラズパイへの音声ファイル転送はSSHから送るようにします

まず、ラズパイ側から設定を行います

sudo raspi-config

から、設定画面を開き、以下を選択
Interfacting Options → SSH

enabled?は<はい>を選択します。


次にWindowsです。
今回はWinSCPを使いました。

転送プロトコルは「SFTP」
ホスト名に先に調べておいたIPアドレス
ポートは22
ユーザー名とパスワードは所定のものを入れてログインします。

ラズパイのデフォルトログインユーザーは、
ユーザー:pi
パスワード:raspberry
となっているはずですが、私の場合は変更していないつもりでしたがログインが出来なかったので、
新規でユーザーを管理者権限を付与して作成し、新規ユーザーからログインしました。

sudo adduser testuser
sudo gpasswd -a testuser sudo 


ファイル転送後、音声ファイルを先ほどのフォルダにセットし、スクリプトを実行することで、GoogleHomeから音声が流れます。

./main.js 'http://<ラズパイのIP>:3000/audio/<音声ファイル名>' Google-Home

おわりに

以上がGoogleHomeから音声を流す手順です。
ここからcronを組むなりで色々な活用が出来るかと思います。

今回の利用方法だけでは、ラズパイにスピーカーをつければいいのでは?という利用方法となっていますが、
google-home-notifierを使えばテキストを読ませることも可能なので、改修すれば時報やウェブページの読み上げなども可能かとは思います。

Watson開発入門1

Watsonを使う用ができ、勉強のため、
Watson開発入門の本を買いました

現場で使える! Watson開発入門 Watson API、Watson StudioによるAI開発手法 (AI & TECHNOLOGY)

現場で使える! Watson開発入門 Watson API、Watson StudioによるAI開発手法 (AI & TECHNOLOGY)

アウトプット用で、備忘録として、詰まった点とやったことを書いていきます

今日は1-3章まで読了
IBM Cloudアカウントを登録し、curlコマンドを使い、
音声から文章を作成する、といったところまでができました


cURLですが、使用しているOSがWindows10 1903のため
cURLインストールと、PowerShellエイリアス切り替えを行う必要があるとのこと


記載のリンクから、cURLをダウンロード
https://curl.haxx.se/

適当なフォルダに設置後、環境変数を設定し、コマンド実行ができるようにします


続いてPowerShellの設定

PowerShellにもcurlコマンドが存在するのだが、
Windows独自のcurlとのことで、curlをダウンロードする必要があるとのこと

devadjust.exblog.jp

PowerShellcurlコマンドをエイリアスから切り替えるには

del alias:curl

このコマンドで切り替えができるそうなのだが、
PowerShellを開き直す度にエイリアスが復活しているため、
プロファイルスクリプトに書き込むのがいいそう


%HOMEPATH%\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
に存在するそうだのだが……ない

qiita.com
この内容を見ると、作らないと無いそうなので

プロファイルの存在を確認

Test-Path $profile

無かったので、次のコマンドを実行

New-Item -path $profile -type file -force


作ったプロファイル編集し、
エイリアス切り替えのコマンドを書き込みこれで完了!


……かと思いきや、PowerShell起動時
「このシステムではスクリプトの実行が無効になっているため、……」というエラーが表示される

qiita.com
これも確認してみると、PowerShellスクリプト実行が実行ポリシーが許可されていないため、とのこと

恒久的に実行で良いので、以下のコマンドを実行

PowerShell Set-ExecutionPolicy RemoteSigned

再度開き直すと、エラーもなく、curlのバージョンもきちんと見れます

ここまできてようやく準備段階が完了


ただ、ここから先は特に詰まることもなく、
音声ファイルをcurlコマンドを使って送信することで、
テキスト化された文言が返ってきました

コマンド一つで出来るなんてすごい


日本語でも出来るとあったので、
適当な音声を作って試してみたい

どのくらい長さまで対応してるんだろうか?

といったところで今日はおしまい

MacからUSBにファイルを移動するときのエラー

これから外出することも多くなるだろうし、ノートPC買うかってな勢いで
MBPを買ったのですが、全然趣味レベルを超えてる気がしない僕です

ただ、さすがというか、ちょっと使いたいときにさっと使えるってのはすごくいいですね
あのソフトが無い、この機能がない(Evernoteの置換機能ってWin版にしか無いのか……)
みたいなのはあるにせよ便利です

ただ、さすがにSSDさんを酷使させすぎるのはなあと
ちょこちょこと溜まり始めたファイル類を、USB経由でWin機に移そうとし

ターミナルでパスを指定する際には
/Volumes
の下にあるディレクトリを指定してあげれば良いというのを調べ

ターミナルでおもむろに

mv *.jpg /Volumes/U/

などと打って見たのですが

[Cross-device link]

なるエラーを吐きました

んん?今まで見たこと無いエラーだなあ
なんかよくわからないから、zipで固めてcpコマンドでもやってみるかと

cp *.zip /Volumes/U/

[No Space Left on Device Error]

なるエラーが
調べてみると、ファイルサイズがでかいというふうに怒られているようなのですが
zipファイルたかだか90M位だぜ?そんなでかいか?
とUSBの情報を見てみると

FAT16
FAT16...?

ああ、そういえば思い出しました
たしかそんなフォーマット昔やった気がします
その時はDOSか何かを入れたんだったけかな?
その後、ファイルを消して、大した活用をしてなかったから全く気が付きませんでした

その後、記事を参考にしながらフォーマットを行い、無事、移動が出来ました

『青春ブタ野郎はプチデビル後輩の夢を見ない』読了

『青春ブタ野郎はプチデビル後輩の夢を見ない』
読み終わりました

前巻の『青春ブタ野郎はバニーガール先輩の夢を見ない 』で、
気になる終わり方をしましたが
前回のテーマが「透明人間モノ」と仮定するなら
今巻のテーマ的には「ループモノ」っていう感じなんですかね
おお、王道SFっぽい感じですね
まあ、今までSFモノ書いてるほうが多かったですし
『さくら荘』は書いてる巻数と期間が長かったですが

前回登場した古賀ちゃんが主役というか、メインヒロインですね
偽装カップルの話はちょいちょいありますが
ここまでガッツリ書いてるのは珍しい気がしますね
メインヒロイン差し置いてデートしまくる話で思い出したのは
『瑠璃色にボケた日常』とかですかね
翠は可愛かったなあ
すごい今更だけど、「カッパ」「喝破」が掛かってたんだね、多分だけど

『俺と俺の彼女と幼なじみが修羅場すぎるは、
まあ、話の根幹自体が偽装カップルの話みたいなもんだしなあ
とか思ったり思わなかったり

というか、結構あるかと思ってたら、全然思いつかなくて
慌てて本棚整理しだす有り様
そこまで物覚えがいいわけじゃないので
「あれ?確実に読んでるはずなのに話が全く思い出せない……」
みたいな作品が思いの外多くてビックリしました
読みなおしたほうがいいのかな

話は戻るけど、
なんかこう、年下のこと、何でも言い合える友達、
みたいな関係っていいなあとか素直に思います
ヒロイン準ヒロインが増えていくと、
どうしてもキャラかぶりを防ぐために
年上の先輩として慕ってくれる年下の子、みたいな感じの設定が多くなる傾向にあるのですが
キャラが少ないからこそ、個性的なキャラが出せるのかもしれないですね
まあ、好んでバニーガール姿になりだすのなんて、
桜島先輩か涼宮ハルヒ位なもんだろ
主人公にパンツ渡すのなんか
古賀ちゃんかエリオくらいしか思いつかんし
まあ、それはいいとして

こんだけデートしてる作品ってのもあんまり見たことないかなあ
とか思ってみたり
ありそうなのにね
デート・ア・ライブは、確かに女の子とデートしまくって好感度上げまくる話だけど
なんか想像してるデートと違うんだよなあ……
多分なんか、青春成分かなにかが足りてない気がする

そもそも、学園モノで外出する話が出てくるとか自体すくねえしなあ
昨今のネトゲものブームとかになると余計に
ネトゲと学校もの主体の話だと、外の代わりにバーチャルの世界で事足りるからなあ

それに、メインヒロインが学校の後輩っての時点で少ないのかもしれない
いやまあ、割合が少ないだけでいくらでも出てくるんだろうけどさ
『仮想領域のエリュシオン』とか変態王子と笑わない猫。とかさ
……なんかMF多いな、いいんだけど

あと、タイトルの話しだけど
なんか、だいたいに双葉が絡んでる気がするんだよね
「青春ブタ野郎」って言ってるもの双葉だけだし
ラプラスの悪魔言い出したのも双葉だし
というかなぜブタ野郎なんだろうか
キャラ画像がアクセル・ワールドハルユキ位のビジュアルだったら容易にわかるんだけど