「技術系」カテゴリーアーカイブ

PICO Motion Trackerで初フルトラ

PICO4持っているのでPICO Motion Tracker買いました。

トラッカー2個セットで11,800円。他社だと1個19,000円で3個必要だったりするので大分安い。

セットアップ

準備は足首にベルトで巻いて電源ボタン押すだけ。あとはトラッカー用アプリに従い数分動かせばセットアップ完了。アプリ2回目以降は10秒もかからず完了。簡単だ。

VRChat内でも設定からT字になってトリガー押すだけでフルトラになれる。簡単。

VRChatで試す

初めてのフルトラッキングなんだけど、鏡の前で動くだけで感動するね。

今までの3点トラッキングだと、頭と胴体がほぼ固定で手足だけ動くロボットみたいな感じだったのが、普通に人間みたいに動ける。

PICOの謎技術で腰の動きもトレースしてるし、ほんと自然に動く。微妙に自分の動きと違うけど「足の長さが自分とアバターで違うから」と言われた。そりゃそうかw

身体が自由に動くだけでほんと楽しいです。こうなるとカッコいい、可愛いポーズを意識したくなるね。日常生活ではやらないポーズだろうし、アニメとかを参考にすれば良いのかな。

まとめ

お手軽にフルトラになれて実に素晴らしいです。買って良かった。

ノートパソコンが修理から返ってくる

3年ほど前に購入したVAIO SX14ですが、突然勝手に電源が切れるようになりました。

電源ケーブルつないだままにしてると、グングン熱が上がっていってそのまま落ちる。ケーブルつながなくても処理が重たい状態。

さすがに仕事にならないので修理に出しました。オーナーサイトから依頼し、電話で細かい症状を聞かれたのち出荷。

数日後、マザーボードの回路を修理したと連絡が来ました。やっぱり故障だったんだな。ギリギリ保証期間内だったので無料で修理完了です。9日後には手元に返ってきました。

事前にデータバックアップとかしたけど必要なかったな。ま、念のためだね。

ちなみに故障から修理完了までの数週間は、8年くらい前に買ったVAIOZを使ってました。起動が遅かったり、たまにマイク・スピーカーが使えなくなるけど意外と何とかなった。

SX14は環境を元に戻して戦線復帰です。

SwitchBotハブミニでエアコン操作

寒くなってきたのでエアコンつけようとリモコンのボタン押しても反応しない。前々から接触悪かったんだけど、今は数十回に1回しか反応しなくなった。

電池とかの問題ではなく暖房ボタンだけ利きが悪いんだよね。バラして修理できないかと考えてたけど、SwitchBotハブミニ持ってるのを思い出した。

去年もボタンの利きが悪くてハブミニ買ったんだけど、その時はちゃんとつくようになったので放置してたのでした。

セットアップ

スマホにアプリをインストールしてハブミニとBluetooth接続。Wi-Fiの設定を登録したら本体の設定完了です。エアコンを登録するため型番検索。一致する型番が無かったので似た型番を入力したらなんか認識しましたw

スマホから暖房にしてONボタンを押すと… ちゃんとエアコン動き出した! いやぁ良かった。

ハブミニはAmazonのAlexaと連動して音声認識で操作もできるみたい。あとタイマーや遠隔操作なんかも。便利そうだね。追々いじっていこう。

まとめ

スマホでエアコン操作できるの楽しいね。ともかくこれで冬が越せます。

EvernoteからUpNoteに乗り換える

かれこれ13年ほど使っていたEvernoteですが、使える端末数に制限ができたり、アプリが微妙に使いづらくなったりと、だんだん不便になっていきました。

最近はブラウザ版がよく動かなくなって、数日ごとにキャッシュクリアする必要があったり。そもそもブラウザ版重いし。

かと言ってアプリ版のために有料プランに切り替えようにも、年額9300円に値上げしたのでとてもじゃないけど払えない…

数日前にはEvernote社がアメリカの従業員ほぼ解雇したというニュースもあって不穏だしね。

乗り換え先検討

そんな訳で他のアプリに移行することにしました。実は移行自体数年前から考えてはいたんだけどね。

OneNote、Notion、Google Keepなど、色々アプリを試したもののしっくり来なかったので、だらだらとEvernote使い続けてました。

少し前に新海誠監督がEvernoteからUpNoteに乗り換えたというつぶやきをしていたので、俺も試してみることにしました。

UpNote使用感

見た目はEvernoteそっくりだね。操作感もだいたい同じ。

無料版だとインポートが使えないけど、コピペするとデザイン込みで貼り付けられる。

Evernoteに無くてずっと欲しかった機能である「目次」がありました。長いノートは目次がないと不便で困ってたんだよね。素晴らしい。

端末制限もなくてPC、Android、iPadなどでアプリが使える。

ブラウザのアドオンである「UpNote Web Clipper」はURLしか貼り付けられない? 使い方よくわからず。まあページをコピペできるからいいか。

そんな感じで、しばらく試して問題ないと判断し、課金しました。買い切り4000円のところ、セールで3400円です。ただ過去の記事を見ると2800円で売ってたっぽい? 別にいいけど…

課金したのでEvernoteにあるノートを全部インポート。ノートは約4500件ありますが、そのうち4100件はTwitterのつぶやきログですw

これにて乗り換え完了です。

まとめ

Evernoteライクな操作感だし、問題なくインポートできたし、スムーズに移行できました。

買い切りで購入したし、長く付き合っていくつもりです。

サーバの初期設定する(Rocky Linux 9.1)

CentOSからRocky Linuxに乗り換えました。

さくらのVPSを使っているので、ところどころ www????.sakura.ne.jp として入力しています。

ユーザ作成

まずはrootのパスワードを変更します。

# passwd

作業用アカウントを作成します。

ユーザーhoge作成
# useradd hoge

hogeのパスワード設定
# passwd hoge

hogeをwheelグループに入れる
# usermod -G wheel hoge

作業用アカウント(wheelグループ)以外ではrootになれないように制限します。元から設定済みでしたが念のため。

# visudo

この行を有効化
%wheel ALL=(ALL) ALL

suできるユーザを指定。

# vi /etc/pam.d/su

この行を有効化
auth required pam_wheel.so use_uid

rootはパスワードでログインできないようにします。

# vi /etc/ssh/sshd_config

この行を有効化
PermitRootLogin prohibit-password

鍵なしログイン可にする(コメントアウトのままでOK?)
PasswordAuthentication yes

SSH再起動。

# systemctl restart sshd

Rocky LinuxでのSSHのアクセス制限はfirewalldでやる必要があります。未対応。

パッケージ管理

必要なリポジトリを追加します。

# dnf upgrade
# dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm
# dnf install https://rpms.remirepo.net/enterprise/remi-release-9.rpm

Remiを指定してインストールする場合には以下のように記述します。

# dnf --enablerepo=remi install (パッケージ名)

全部のアプリをアップデートする。

# dnf --enablerepo=remi update

ファイアウォール

さくらのVPSはコントロールパネルからポート制限できるので設定不要?

起動
# systemctl enable firewalld
# systemctl start firewalld

設定追加
# firewall-cmd --add-service=http --zone=public --permanent
# firewall-cmd --add-service=https --zone=public --permanent
# firewall-cmd --add-service=smtp --zone=public --permanent
# firewall-cmd --add-port=110/tcp --zone=public --permanent
# firewall-cmd --add-port=587/tcp --zone=public --permanent
# firewall-cmd --reload

現在の設定は以下で確認できます。

# firewall-cmd --list-all --zone=public

繋がらない時は一旦firewalld止めて試してみる。終わったらfirewalld起動。

PHP

PHP8.2とそれに関係するものをインストール。

# dnf module enable php:remi-8.2
# dnf install php-fpm php-mysqlnd php-pear php-mbstring php-pdo php-gd php-json ImageMagick ImageMagick-devel php-devel
# pecl install imagick

各種設定。

# vi /etc/php.ini

post_max_size = 128M
upload_max_filesize = 128M
date.timezone = "Asia/Tokyo"
display_errors = On
error_reporting = E_ALL & ~E_NOTICE
extension = imagick.so

起動。

# chown nginx /var/log/php-fpm/
# systemctl start php-fpm
# systemctl enable php-fpm

Composerインストール

# curl -sS https://getcomposer.org/installer | php
# sudo mv composer.phar /usr/local/bin/composer

webサーバ

Apacheからnginxに変えました。

# dnf install nginx

ログの保持期間変更

# sudo vi /etc/logrotate.d/nginx

rotate 10 を 30とかに増やす

起動

# systemctl start nginx
# systemctl enable nginx

PHP-FPMの権限をapacheからnginxに変更

# vi /etc/php-fpm.d/www.conf

user = nginx
group = nginx
# systemctl restart php-fpm

ドメインごとに管理するユーザを分けます。普通にユーザを作成すると自分のホームディレクトリより上の階層に行けてしまうので、chrootを使って行けないようにします。

グループ作成。

# groupadd sftpgroup

グループに所属するユーザにchrootを適用します。

# vi /etc/ssh/sshd_config

サブシステム変更
#Subsystem sftp /usr/libexec/openssh/sftp-server
Subsystem sftp internal-sftp -u 0022

グループと行ける範囲を末尾に追加
Match group sftpgroup
ChrootDirectory ~
ForceCommand internal-sftp -u 0022

sshdを再起動します。設定間違うとサーバにアクセスできなくなるので、念の為ターミナルをもう1つ開いておいたり。

# systemctl restart sshd

あとはユーザを作成していけば /home/hoge/ がsshのルートディレクトリになります。

ユーザ作成
# useradd -g sftpgroup hoge
# passwd hoge

ホームディレクトリの所有者をrootにする
# chown root:root /home/hoge
# chmod 755 /home/hoge

ディレクトリ作成とパーミッション変更
# mkdir /home/hoge/public_html
# chmod 777 /home/hoge/public_html

バーチャルホスト

ドメインごとにconfファイルを作成します。以下はhoge.com用です。

# vi /etc/nginx/conf.d/hoge.com.conf

server {
listen 80;
server_name hoge.com;
root /home/hoge/public_html;
index index.php index.html index.htm;

access_log /var/log/nginx/hoge.com.access.log;
error_log /var/log/nginx/hoge.com.error.log;

client_max_body_size 128M;

# BASIC認証(必要なら)
auth_basic "Restricted area";
auth_basic_user_file /etc/nginx/.htpasswd;

# WordPress用
location ~ /.well-known {
auth_basic off;
allow all;
}
location / {
try_files $uri $uri/ /index.php?$args;
}

location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/run/php-fpm/www.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}

公開前にサイトを確認できるようにします。こんなURLで見れるようになります。
http://www????.sakura.ne.jp/hoge/

# vi /etc/nginx/conf.d/default.conf

server {
listen 80;
server_name www????.sakura.ne.jp;
root /var/www/html;
index index.php index.html index.htm;

access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;

client_max_body_size 128M;

# BASIC認証(必要なら)
auth_basic "Restricted area";
auth_basic_user_file /etc/nginx/.htpasswd;

# WordPress用
location ~ /.well-known {
auth_basic off;
allow all;
}
location / {
try_files $uri $uri/ /index.php?$args;
}

# サブディレクトリで閲覧
location /hoge {
alias /home/hoge/public_html;
index index.php index.html index.htm;
location ~ \.php$ {
fastcgi_pass unix:/run/php-fpm/www.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $request_filename;
include fastcgi_params;
}
# WordPress用
try_files $uri $uri/ /index.php?$args;
}
}

再起動

# systemctl restart nginx

WordPress

公式サイトからダウンロードしたzipを解凍してアップロードし設定を記述。

# cp wp-config-sample.php wp-config.php
# vi wp-config.php
データベース情報
define( 'DB_NAME', 'database_name_here' );
define( 'DB_USER', 'username_here' );
define( 'DB_PASSWORD', 'password_here' );

ファイル内に書かれたurlで秘密鍵を生成して設定
define( 'AUTH_KEY', 'put your unique phrase here' );
define( 'SECURE_AUTH_KEY', 'put your unique phrase here' );
define( 'LOGGED_IN_KEY', 'put your unique phrase here' );
define( 'NONCE_KEY', 'put your unique phrase here' );
define( 'AUTH_SALT', 'put your unique phrase here' );
define( 'SECURE_AUTH_SALT', 'put your unique phrase here' );
define( 'LOGGED_IN_SALT', 'put your unique phrase here' );
define( 'NONCE_SALT', 'put your unique phrase here' );

SSH接続するためSSH SFTP Updater Supportプラグインをダウンロード、解凍してから以下にアップロード。

/wp-content/plugins

設定ファイルに追記。

# vi wp-config.php

define('FS_METHOD', 'ssh2');

所有者の変更。WordPressのあるディレクトリで実行。

# chown -R nginx:sftpgroup ./

うまく行かない場合は開き直ってパーミッション変更。危険なので後で戻す。

# find ./ -type d -exec chmod 775 {} +
# find ./ -type f -exec chmod 664 {} +

おまけ:urlを変更する場合はMySQLで以下実行。

UPDATE wp_options SET option_value='http://hoge.com' WHERE option_name IN ('home','siteurl');

SSL

OpenSSLは既に入っているので、mod_sslをインストールします。

# dnf --enablerepo=remi install mod_ssl

証明書は無料のLet’s Encryptを使います。

インストール
# dnf install certbot

ドメイン追加
# certbot certonly --webroot -w /home/hoge/public_html -d hoge.com
メールアドレス入力
規約に同意:y
メールでお知らせ:n

バッチで証明書を自動更新します。

# crontab -e

PATH=/sbin:/bin:/usr/sbin:/usr/bin
0 4 1,15 * * certbot renew && systemctl restart nginx

もしくは

PATH=/sbin:/bin:/usr/sbin:/usr/bin
0 4 1,15 * * certbot renew && systemctl restart nginx && postmap -F /etc/postfix/tls_server_sni_maps && systemctl reload postfix dovecot

SSLサーバの設定はドメインの設定ファイルに追加します。

# vi /etc/httpd/conf.d/hoge.conf

server {
listen 443 ssl;
server_name hoge.com;
root /home/hoge/public_html;
index index.php index.html index.htm;

access_log /var/log/nginx/hoge.com.access.log;
error_log /var/log/nginx/hoge.com.error.log;

client_max_body_size 128M;

# BASIC認証(必要なら)
auth_basic "Restricted area";
auth_basic_user_file /etc/nginx/.htpasswd;

# WordPress用
location ~ /.well-known {
auth_basic off;
allow all;
}
location / {
try_files $uri $uri/ /index.php?$args;
}

location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/run/php-fpm/www.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}

ssl_certificate /etc/letsencrypt/live/hoge.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/hoge.com/privkey.pem;
}

ちなみにlisten 80の方に以下のreturn行を入れるとhttpsにリダイレクトする
server {
listen 80;
server_name hoge.com;
return 301 https://$host$request_uri;
}

設定できたら再起動。

# systemctl restart nginx

MySQL

# dnf install mysql mysql-server

起動

# systemctl enable mysqld
# systemctl start mysqld

初期設定

# mysql_secure_installation
出てくる質問は以下の通り(英語)。
・VALIDATE PASSWORD利用:y
・パスワード検証ポリシー:0
・rootのパスワード:
・rootのパスワード確認用:
・いいですか?:y
・匿名ユーザの削除:y
・リモートからrootユーザ接続禁止:y
・テスト用データベースの削除:y
・変更を有効にする:y

デフォルト文字コードはutf8mb4だったので、そのままにしておきます。

終わったら再起動。

# systemctl restart mysqld

パスワードの制限をゆるくする。

# mysql -uroot -p

mysql> SET GLOBAL validate_password.policy=LOW;
mysql> set global validate_password.length=8;

データベースhogeとそのDBに紐づいたユーザhogeを作成します。

mysql> CREATE DATABASE `hoge`;
mysql> CREATE USER `hoge`@`localhost` IDENTIFIED BY 'パスワード';
mysql> GRANT ALL PRIVILEGES ON `hoge`.* TO `hoge`@`localhost`;
mysql> FLUSH PRIVILEGES;

phpMyAdmin

せっかくなのでMySQLの管理ページを入れる。

# dnf install --enablerepo=remi phpmyadmin

こんなURLで見れるようになります。
http://www????.sakura.ne.jp/phpMyAdmin/

# vi /etc/nginx/conf.d/default.conf
server {}の中に以下を追加

location /phpMyAdmin {
root /usr/share;
index index.php;

# BASIC認証(必要なら)
auth_basic "Restricted area";
auth_basic_user_file /etc/nginx/.htpasswd;

location ~ \.php$ {
fastcgi_pass unix:/run/php-fpm/www.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
include fastcgi_params;
}
}

あとはnginx再起動。

メールサーバ(送信)

Postfixの設定。

# dnf install postfix cyrus-sasl cyrus-sasl-md5 cyrus-sasl-plain

# vi /etc/postfix/main.cf
以下のように修正
myhostname = www????.sakura.ne.jp
mydomain = www????.sakura.ne.jp
myorigin = $mydomain
inet_interfaces = all
#inet_interfaces = localhost
inet_protocols = ipv4
home_mailbox = Maildir/
smtpd_banner = $myhostname ESMTP unknown

以下を追加(スパム対策)
disable_vrfy_command = yes
smtpd_helo_required = yes
anvil_rate_time_unit=60s
smtpd_client_message_rate_limit=200
smtpd_soft_error_limit = 5
smtpd_hard_error_limit = 8
smtpd_error_sleep_time = 70
smtpd_delay_reject = yes

以下を追加(スパムをメールアドレス単位で拒否する場合。reject_senderに記述。正規表現を使う場合はhashをregexpにする)
smtpd_sender_restrictions = reject_unknown_sender_domain,reject_non_fqdn_sender hash:/etc/postfix/reject_sender

以下を追加(バーチャルドメイン用)
virtual_alias_maps = hash:/etc/postfix/virtual

以下を追加(SMTP-Auth用)
smtpd_sasl_auth_enable = yes
smtpd_sasl_type = cyrus
smtpd_sasl_path = smtpd
smtpd_sasl_local_domain = $myhostname
smtpd_recipient_restrictions = permit_mynetworks,permit_sasl_authenticated,reject_unauth_destination
smtpd_relay_restrictions = permit_mynetworks,permit_sasl_authenticated,reject_unauth_destination

以下を追加(メールへの添付可能サイズを無制限にする)
message_size_limit = 0
mailbox_size_limit = 0

以下を追加(SSL化する場合)
tls_server_sni_maps=hash:/etc/postfix/tls_server_sni_maps
smtp_tls_security_level = may

スパムを登録して反映。ドメインかメールアドレスで指定できる。

# vi /etc/postfix/reject_sender

example.com REJECT
spam@example.com REJECT

正規表現(regexp)の場合は以下のようになる。

/@example\.com$/ REJECT
/spam@example\.com$/ REJECT
/.*@example\.com$/ REJECT
# postmap /etc/postfix/reject_sender

メール送信時にサブミッションポート(587)を使用します。

# vi /etc/postfix/master.cf

以下の行のコメントアウトを外す
submission inet n - n - - smtpd
-o smtpd_sasl_auth_enable=yes
-o smtpd_relay_restrictions=permit_sasl_authenticated,reject
-o milter_macro_daemon_name=ORIGINATING

SSL化する場合以下の行のコメントアウトも外す
-o smtpd_tls_security_level=may
smtps inet n - n - - smtpd
-o smtpd_tls_wrappermode=yes
-o smtpd_sasl_auth_enable=yes
-o smtpd_recipient_restrictions=permit_sasl_authenticated,reject

SSL化する場合証明書を記述、再起動。

# vi /etc/postfix/tls_server_sni_maps

hoge.com /etc/letsencrypt/live/hoge.com/privkey.pem /etc/letsencrypt/live/hoge.com/fullchain.pem
# postmap -F /etc/postfix/tls_server_sni_maps
# systemctl restart postfix

起動。

# systemctl start postfix
# systemctl enable postfix

SMTP認証のためにSaslauthdを使用します。アプリと認証処理を分離してくれるものらしい。

# vi /etc/sysconfig/saslauthd

Linuxユーザのパスワード(/etc/shadow)を使う
MECH=shadow

起動します。

# systemctl enable saslauthd
# systemctl start saslauthd

メールサーバ(受信)

Dovecotの設定。

# dnf install dovecot

# vi /etc/dovecot/conf.d/10-mail.conf
以下の行のコメントアウトを外す
mail_location = maildir:~/Maildir
# vi /etc/dovecot/dovecot.conf
protocols = imap pop3 lmtp
listen = *
# vi /etc/dovecot/conf.d/10-auth.conf
パスワードを平文にする
disable_plaintext_auth = no
# vi /etc/dovecot/conf.d/10-ssl.conf
SSL有り無し両方対応
ssl = yes

SSL化する場合以下追加
local_name hoge.com {
ssl_cert = </etc/letsencrypt/live/hoge.com/fullchain.pem
ssl_key = </etc/letsencrypt/live/hoge.com/privkey.pem
}

Dovecotを起動します。

# systemctl enable dovecot
# systemctl start dovecot

useradd時にメールボックス用のディレクトリを自動で作成されるようにします。

# mkdir -p /etc/skel/Maildir/{new,cur,tmp}
# chmod -R 700 /etc/skel/Maildir/

こんな感じで作られる。

/home/hoge-info/Maildir/new/
/home/hoge-info/Maildir/cur/
/home/hoge-info/Maildir/tmp/

メールアドレス作成

メールアカウント用のユーザをシェルログイン不可で作成します。

# useradd -s /sbin/nologin hoge-info
# passwd hoge-info

メールアドレスとその振り分け処理を作成します。ドメインごとにanythingの行を入れないとメールが使用できません。

# vi /etc/postfix/virtual

hoge.com         anything
info@hoge.com hoge-info
web@hoge.com hoge-web

振り分けを反映させます。

# postmap /etc/postfix/virtual

まとめ

WordPressの設定は毎回忘れる…

アップルストアで液晶壊れたiPadを交換してもらう

結構前からiPad Proの液晶に1本線が入るようになりました。これがたまに2本線になったりチラついたりして気になる。

そういえばまだ買って1年経ってないから保証期間内じゃんということで、Apple渋谷に予約してから行きました。

時間ちょうどにGenius Barに着いたんだけど、混んでて待たされる。仕方ないので隅っこでAndroidスマホいじってましたw

10分後ようやく俺の番に。症状を説明するとiPadの四隅などを確認し「綺麗に使っていただきありがとうございます」と言われました。
後から来たメールにも「外装の状態: 特筆すべき損傷見受けられず」と書かれてたし、ぶつけて壊したかどうかで保証が変わるのかな。

ちゃんと全面保護カバー付けて大事に使ってたよ!

「ちょうど今、1台だけ在庫が残ってました」との事で、その場で新しいiPadと交換してもらえました。しかも保証期間内だから無料。素晴らしい。

ちなみに保証外だと82,545円かかるらしい。定価じゃん。今まで保証入らなくてもいいやって思ってたんだけど、やっぱ必要かな。

同意したり署名したりして正味5分で完了。スピーディーだね。こんなに簡単ならもっと早くに来ればよかった。これでまだまだ使い倒せます。

Wi-Fi6ルーター(AM-AX3600HP)購入でPICO4快適に

Aterm AM-AX3600HP購入しました。

せっかくPICO4買ったのにWi-Fi5だと重たかったので。

既存ルーターと置き換えで本機を設置したら、特に何もしなくてもWANにつながった。V6だから簡単だね。

試してみた

PICO4とPCはVirtual Desktop経由で接続してます。PCのGPUはRTX2070Superです。

表記上の速度としてWi-Fi5は866Mbpsと表示されていました。これがWi-Fi6では1200Mbpsになった。およそ1.4倍ですが、この1.4倍が大きかった。

ビートセイバーはWi-Fi5だと表示ガクガクで難易度EXPERTとかクリア無理なほど酷かった。これがWi-Fi6だとスムーズに。72Hzに落としてたのを90Hzにしても問題なし。ようやくちゃんとプレイできます。

SKYBOX VR Video PlayerはVDの画質Mediumでもちょっとフレーム飛んでる感じだったのが、Wi-Fi6だと画質Godlikeでくっきりスムーズに再生された。素晴らしい。

VRChatは35fpsくらいであんまり変わってない気がする。設定かなあ。ただGodlikeで遅延をそれほど感じなくなったので安定はしたかな。

(追記)その後PICO4アップデートでStreaming Assistantが有能になり、VRChatで70fps以上出るようになった。画質はGodlikeに負けるけど、ほぼ不満はなくなった。

まとめ

これでPICO4快適に利用できます。実は最初は有線1000Mbpsだから無線はWi-Fi5の866Mbpsで十分じゃんって思ってたんだよね。でもこれ理論値なので、実際は全然遅かったということですね。

PICO4(128GB)購入! 初代Questから乗り換え

PICO 4 128G VR ヘッドセット購入しました。

初代Quest持ってるのでQuest3出るの待ってたんだけど、発売は2023年後半(1年くらい先)との発表があったので、諦めてPICO4に乗り換えました。

比較

持ってるのは初代QuestとPICO4ですが、ついでにQuest2も載せておきます。
こうして見ると、会社は違うけど順当に進化してるのがわかるね。

Meta QuestMeta Quest 2PICO 4
解像度(片目)1440×16001832×19202160×2160
メモリ4GB6GB8GB
視野角100度100度105度
リフレッシュレート72Hz72Hz, 90Hz, 120Hz72Hz, 90Hz
重量596g503g588g
価格62,800円59,400円49,000円
発売2019年5月2020年10月2022年10月

※Quest2の視野角は非公開らしく、110度って書いてある所もあった
※価格は128GBのもの。初代Questは購入可能当時、それ以外は現在の価格

設定

そんなに苦労せずできました。ただアプリの購入方法がわからずちょっと手間取った。「VRアシスタント for PICO」というアプリをスマホにインストールして、そっちで購入できた。

それにしてもインターフェイスがQuestと似てるなあw

PCと接続する際はもちろんVirtual Desktop(VD)を使います。実はQuestでもAir Link開始するまではVD使ってました。とは言え設定は色々見直す必要がありそうです。

使用感

とにかくグラフィックが綺麗! 解像度がピクセル比で2倍以上になってるから当然だけどね。あと視野角も広くなり、画面が広く感じます。

VDの画質設定をMediumからGodlikeにしたらさらに綺麗になった! VDのMediumは多少ジャギってたのに対し、Godlikeは細部までクッキリです。処理速度はともかく、画質に関しては全く不満がなくなった。

操作性はQuestとあんまり変わらないね。コントローラーにボタンが1つずつ増えてるので、ちゃんと使えば便利なのかも。

バッテリーが後頭部側に付いたので本当に軽く感じる。Questは額が圧迫されててそれがVR酔いに関係してるんじゃないかと怪しんでたので、もしかしたら酔いが軽減されるかも。

パススルーがカラーになったの良いね。Questはモノクロで画質もいまいちだから手探りよりまし程度だったけど、これならわかりやすい。

VRChatやったらこんなに綺麗な世界だったんだと感動した。初代Questだと液晶が格子状に表示されてて細かい所があんまりよく見えてなかったんだよね。

ビートセイバーやったらちょっと遅延が気になった。VDの設定かなあ。

ちなみに購入直後はバッテリーが60%くらいだったので、すぐなくなった。1.5GBのアップデートもあったしね。充電完了後またいじります。

まとめ

VRの進化を感じました。たまにもたついたりするけど、設定かアップデートで解決するはず。

グラフィック綺麗になったし、過去にプレイしたゲームとかまたやってみようかな。

サーバの初期設定する(Amazon Linux 2)

AWSを使う機会があったので忘れないようにメモ。数年前にも触ったことはあるんだけど、もう忘れてたw

サーバ準備

AWSコンソールから設定していきます。

リージョン
「アジアパシフィック(東京)」にする。

ネットワーク
VPCダッシュボードからVPCウィザードを起動。以下の設定でVPC作成。

・作成するリソース:VPC、サブネットなど
・名前タグ:任意の名前
・IPv4 CIDRブロック:10.0.0.0/16
・テナンシー:デフォルト
・DNS ホスト名を有効化:チェック
・DNS 解決を有効化:チェック

これでVPC、サブネット、インターネットゲートウェイ、ルートテーブルが自動生成される。便利だねえ。正直この辺ややこしいし。

セキュリティグループ
EC2のセキュリティグループから作成。アウトバウンドグループ(外に出ていく通信)は全部通す。インバウンドグループ(中に入ってくる通信)はsshやhttp、mysqlなど必要なものだけ通す。
ソースには全部許可のAnywhere-IPv4 (0.0.0.0/0)。

インスタンス
EC2の「インスタンスを起動」から作成。

・名前とタグ:任意の名前
・アプリケーションおよび OS イメージ:Amazon Linux 2
・インスタンスタイプ:適切なもの
・キーペア:新しいキーペアの作成
・ネットワーク設定:右側にある編集ボタン押す
・VPC:上で作成したもの
・サブネット:上で作成したもの(public1, private1等をちゃんと確認)
・パブリック IP の自動割り当て:有効化
・ファイアウォール:「既存のセキュリティグループを選択する」で上で作成したもの
・ストレージ:適切なもの

データベース
RDSの「データベースの作成」から作成。

・データベース作成方法を選択:標準作成
・エンジンのオプション:MySQL
・バージョン:適切なもの
・テンプレート:本番稼働用
・可用性と耐久性:単一のDBインスタンス
・設定:DBインスタンス識別子やパスワード設定
・インスタンスの設定:任意のインスタンス
・ストレージ:適切なもの
・コンピューティングリソース:ECコンピューティングリソースに接続しない
・VRC:上で作成したもの
・DBサブネットグループ:新規?
・パブリックアクセス:なし
・VRCセキュリティグループ:既存の選択
・アベイラビリティーゾーン:指定なし
・データベース認証:パスワード認証

Elastic IP
EC2の「Elastic IP アドレスを割り当てる」から作成。アクションボタンの「Elastic IP アドレスの関連付け」でインスタンス関連付け。

これでサーバが用意できました。慣れれば簡単なんだろうけど、調べるのに結構時間かかりました。コロコロ仕様変わってるみたいで、ネットに書かれた通りに行かなかったりするし。

サーバーログイン

コンソールのEC2のインスタンス>接続ボタン>sshクライアントで接続方法わかります。

$ ssh -i key.pem ec2-user@(IPアドレス)

sshのタイムアウトが早いので延ばします。60秒ごとチェックで30分アクセスなければタイムアウトに変更。

$ sudo vi /etc/ssh/sshd_config
ClientAliveInterval 60
ClientAliveCountMax 30

$ sudo service sshd restart

ついでにタイムゾーンも変更。

$ sudo timedatectl set-timezone Asia/Tokyo

ユーザ作成

IDパスワード設定。

$ sudo useradd test
$ sudo passwd test

sudoできるようにする。

$ sudo usermod -G wheel test

$ sudo visudo
以下の行を有効化
%wheel ALL=(ALL) NOPASSWD: ALL

鍵作成。

$ sudo su - test
$ ssh-keygen -t rsa
何も入力せずエンター

公開鍵の設定
$ cd ~/.ssh
$ cat id_rsa.pub >> authorized_keys
$ chmod 600 authorized_keys
$ exit


作成されたid_rsaファイルをダウンロードして、ファイル名をkey.pemに変更。このファイルを鍵としてログイン出来るようになります。

アプリインストール方法

Amazon独自のリポジトリを使います。まずは以下のようにインストール可能なアプリのバージョンを確認します。ここではPHP。

$ sudo amazon-linux-extras |grep php

するとphp7.4とphp8.0がインストール可能と出ました。そこでphp8.0を以下のようにインストールします。
$ sudo amazon-linux-extras install php8.0

終わり。簡単だね。この手順を元に以下やっていきます。

amazon-linux-extrasで見つからない場合は、他のOSと同じく他のリポジトリから持ってくることも可能です。

webサーバ関係

nginx

$ sudo amazon-linux-extras install nginx1
$ sudo systemctl start nginx
$ sudo systemctl enable nginx

サブドメイン設定

$ sudo vi /etc/nginx/conf.d/(ドメイン名).conf
server {
listen 80;
server_name (ドメイン名);
root /home/(ユーザ名)/public_html;
index index.html index.htm index.php;

location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/run/php-fpm/www.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}

再起動

$ sudo systemctl restart nginx.service

php

$ sudo amazon-linux-extras install php8.0
$ sudo yum install php-cli php-pdo php-fpm php-json php-mysqlnd php-mbstring

$ sudo vi /etc/php.ini
date.timezone = "Asia/Tokyo"

$ sudo vi /etc/php-fpm.d/www.conf
user = nginx
group = nginx

$ sudo chown nginx /var/log/php-fpm/
$ sudo systemctl start php-fpm
$ sudo systemctl enable php-fpm

再起動
$ sudo systemctl restart php-fpm.service

composer

$ cd /home/ec2-user
$ sudo curl -sS https://getcomposer.org/installer | php
$ sudo mv composer.phar /usr/local/bin/composer

Git

$ sudo yum install git

SSL(Let’s Encrypt)

$ sudo amazon-linux-extras install epel
$ sudo yum install certbot
$ sudo certbot --nginx
$ sudo certbot certonly --webroot -w /(パス)/public_html -d (ドメイン名) --email (メールアドレス)

$ sudo vi /etc/nginx/default.d/(ドメイン名).conf
server {} 内に以下追加
listen 443 ssl;
ssl_certificate /etc/letsencrypt/live/(ドメイン名)/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/(ドメイン名)/privkey.pem;

$ sudo systemctl restart nginx.service

バッチでSSL証明書自動更新(※後でチェック)
$ sudo crontab -e
0 4 1,15 * * root certbot renew && systemctl start nginx

データベース

EC2にMarinaDBインストールします。

$ sudo amazon-linux-extras install mariadb10.5
$ sudo systemctl start mariadb
$ sudo systemctl enable mariadb

rootにはパスワードが設定されてなくてログインできません。なのでセーフモードで設定します。
RDSに繋ぐ場合は設定しなくても大丈夫です。

$ sudo systemctl stop mariadb
$ sudo mysqld_safe --skip-grant-tables --skip-networking &

$ mysql -u root
> FLUSH PRIVILEGES;
> ALTER USER 'root'@'localhost' IDENTIFIED BY '(パスワード)';
> FLUSH PRIVILEGES;
> exit

$ sudo kill `sudo cat /var/run/mariadb/mariadb.pid`
$ sudo systemctl start mariadb

ユーザを作成します。RDSの場合はもちろんRDS上でやります。

$ mysql -u root -p
> CREATE USER '(ユーザ名)'@'localhost' IDENTIFIED BY '(パスワード)';
> GRANT ALL PRIVILEGES ON *.* TO '(ユーザ名)'@'localhost';

特定のテーブルのみ、かつ外部からのアクセス許可(%)の場合は
> CREATE USER '(ユーザ名)'@'%' IDENTIFIED BY '(パスワード)';
> GRANT ALL PRIVILEGES ON (テーブル名).* TO '(ユーザ名)'@'%';

まとめ

結構調べるのに苦労しました。まあでもこれでAWSの案件が来ても大丈夫。

ちょこちょこ記述が足りない箇所がありますが、後日追加予定。

11インチiPad Pro 256GB スペースグレイ(2021)を買う

2021 Apple 11インチiPad Pro (Wi-Fi, 256GB)スペースグレイを購入しました。去年の春くらいに出た機種です。

数カ月後には次の機種が発表されそうなタイミングだけど気にしない。

今使ってるのが4年半前に買ったもので、さすがにバッテリーがヘタってるし、あと最近Kindleアプリが異様に重いのがストレスだったので…

セールで割引

お正月に複数のセールが重なったタイミングで購入できました。

コンビニでApple Gift Card 10%還元10,000円引
楽天リーベイツ 5%還元5,516円引
楽天リーベイツ 初回購入者限定ボーナス500円引
Appleの初売り iPad Pro12,000円引
Appleの初売り Apple Pencil3,000円引

合計で31,016円、およそ25%引です。最近のタブレットは10万円超えだから、少しでも安くなるとありがたいです。

初期設定

前日に「iCloud+にバックアップしますか?」みたいなメッセージが来たのでバックアップ。iPad届いたらそこから自動的にインストール済みアプリや設定が読み込まれました。便利だねえ。

お陰で一部のアプリはログイン済み。それ以外はひたすらログイン作業だけど、だいぶ省略できました。

使用感など

ついにホームボタンが無くなりました。まあ既にスマホで慣れていたので問題なし。その分、機体サイズそのままで画面が上下に広くなったので良い。

音が良くなった気がする。

液晶が角丸になったのにちょっと違和感。まあすぐ慣れるだろうけど。

充電ケーブルがLightningからUSB-Cに。これでケーブル1本減らせる。

懲りずにApple Pencil(第2世代)購入w 第1世代を買った時、数回だけ使って放置してたらバッテリーが死んでそれっきりだったんだよね(汗) 今回はちゃんと使おう。

まとめ

順当に進化してるようで良いね。Apple M1チップの性能は使っていけばわかるかな。