さくらのオブジェクトストレージからR2に移行

晴れ前にCloudflareを置き、さくらのクラウドのコンテンツをエックスサーバーに移す作業。 一気にやるのは無理なので、まずはさくらのオブジェクトストレージを使っている部分をCloudflare R2に移行する作業をやった。 R2に他社ストレージからの移行ツールというのがあってそれを使ってみたが、16万ファイル中、12,000ファイルがエラーになった。 エラーの原因がわからないし、エラーファイルだけの再試行というのもなかったので移行ツールは使ったが作業自体は完了できなかった。
プログラム組めばできなくはないけど、組むのが面倒なので、Firezilla Proでさくらのオブジェクトストレージに接続し、全ファイルをローカルにダウンロード。 その後R2にアップロードという手法を取った。 ファイルサイズが違う場合のみ上書きという設定でアップロードしたので、成功したものはスルーされる。
そんな感じでR2にデータを移すことができた。
ウェブサイト側でさくらのオブジェクトストレージにアップロードしている部分をR2に変えるのは容易だったが、実際アップロードをやってみてわかったが、R2へのアップロードは意外に遅かった。 まぁそれはプログラムで裏側でアップロードするなどの手法で体験的なものは損なわずにいけるので、それほど気にしないでいいか。
R2に対応するWorkersを作成し、アクセスをR2に流すことができた。
だが、Workersの無料枠は1日10万リクエストまでで、17時間くらいで94,000くらい使ってしまったので無料枠には収まらなさそうだった。 なのでWorkers有料プランを契約することに。 有料プランと言っても月額$5で、1000万リクエストまで対応でき、その後は100万リクエスト毎の課金となっている。 1日10万じゃ足りないけど、月間1000万なら十分だろう。 Cloudflareなら完全無料でいけるかな?と思ったけど、さすがにそれは厳しかったか。

夜はジョギングへ。 大会2日前。 主要なトレーニングは昨日で全て終了していて、今日は軽く調整ジョグをするだけ。 ペースはめちゃめちゃゆっくりで、距離も短く。
7.11, 7.21, 7.23, 6.58と、3.8kmを27分57秒で、キロ7分13秒ペースだった。

Nintendo Switch2

晴れ今日の午前中にSwitch2が届く。 いつ来てもいいように準備をしておいて、届いたのが昼前くらい。 届く前に、今Switchを設置している場所を片付けるのを忘れていて、まずはSwitchを撤去して掃除してからSwitch2を設置する。 Switch2はサイズが1回り大きくなっているような感じだった。 プロコントローラーは軽くなっている。
初代SwitchからSwitch2へデータ転送というのができて10分ほどで完了。 その後、ソフトウェアをダウンロードするのだけど、マリオカートワールドを最優先でダウンロードして、残りのソフトは順次ダウンロードされていくような感じ。 とりあえずゼルダを起動してみたが、HDR対応したためか、画面がものすごい明るすぎてダメだった。 なのでHDRはオフにした。 明るすぎて目が悪くなりそう。
Switch2

めぼしいソフトはマリオカートワールドしかないが、妻と子供たちはマリオカートワールドを楽しんでいた。

夜はジョギングへ。 大会3日前なので、今日がきついトレーニングラスト。 15秒や40秒を速いペースで走るトレーニングはやってきたので、最後の仕上げで2km全力で走るトレーニングを。
レースは1500mなので今日走るスピードよりは上がるけれど、距離が75%になるので耐えられるかどうか、それと速いペースで8分間とか走ってなかったので、どこまでペース感覚を掴めるかも確認しておきたい。
コースは7.3kmコースで5~7km地点までの2kmを全力で行く。 なので5kmまではペース気にせず走っていく。
5.32, 5.33, 5.30, 5.37, 5.40と5kmまで走って、そこから全力で2km。
最初の1kmは3.37、全力とはいえまだ継続できないほどの全力ではない、呼吸は苦しいけど吐くほどではない。 だけど次の1kmがけっこうきつくて3.45とタイムが落ちる。 2km平均がキロ3分41秒となってしまった。 1500mのベストがキロ3分37秒平均の5分25秒なので、本番ではどうだろうか? ギリギリベストが出せそうなラインではある。
今日の全体の結果的には、7.3kmを37分09秒で、キロ5分04秒ペースだった。

ゼルダ終了

晴れNintendo Switch2発売前日。 明日にはSwitch2が届くので、それまでにゼルダを終わらせなくてはならない、という目標を掲げて、3月くらいから2ヶ月間ほど頑張ってプレイしてきた。 とりあえず終わらせないといけないので、エンディングは見てきた。 ずっとプレイしているので、ボス自体は弱かった。
クリアをするとセーブデータに星マークがつき、マップを開くとマップ完成度が表示される。 完成度は94.46%くらいだった。 本当は100%にしたいのだが、100%にするのはまず無理だから、簡単にできる地名を集めたり魔神像やゴーレムを集めたりして、98.01%くらいまでは増やしたが、これが限界かな。 地底は全部コンプリートしたはず。

夜はジョギングへ。 日曜日がレースなので調整期間。 今日は足を少し疲れさせて、明日最後のきついトレーニングをする予定なので、足を疲れさせるために、ゆっくり長くのコースを走ることにした。
久々に14.4kmコース+トイレで800m距離が伸びる。 最近あまり12kmコースにすら行ってないので、15kmは結構長かった。
5.43, 5.29, 5.36, 5.22, 5.40, 5.34, 5.43, 5.29, 5.36, 5.37, 5.33, 5.28, 5.13, 5.27, 5.35と、15.2kmを1時間24分21秒で、キロ5分32秒ペースだった。

ブログサーバー移転

雨のち曇り朝方は結構な雨が降っていた。 起きたらほぼ止んでいたけれど。
今日はこのブログのサーバー移転を行っていた。 現在のサーバーはさくらのVPSで、東京リージョンの一番安いプラン。 サーバーを作ったのかかなり前なので未だにセキュリティパッチの期限が切れたCentOS7で運用していた。 新しいサーバーは、自分で管理するのを止めて、エックスサーバーのプレミアムプラン。 ブログだけならスタンダードで十分すぎるけれど、他にも自分で管理しているサーバーがあって、そこに入っている33のサイト群も同じサーバーに入れたいので。
サーバー移転するだけなら簡単なのだが、画像類をどうするかが問題だった。 サーバー移転などを簡単にする為に、画像自体は、さくらのレンタルサーバーのライトプランを契約し、そこをストレージ代わりに使っていた。 だけど、ドメインはブログのドメインでアクセスさせたいので、/images/にアクセスがあった場合、nginxのリバースプロキシで、画像サーバーへ接続するようにしていた。 エックスサーバーはレンタルサーバーなので、リバースプロキシとか設定できない。 プログラミング的に考えると、/images/にアクセスがあった場合はプログラムを呼び出して、そのプログラムが画像サーバーへアクセスし画像を取得し返す、必要ならキャッシュを持ったりすればいいかなとは思うが、それでは前時代っぽい。

それを解決する手段として、今回はCloudflareを利用した。 Cloudflareはリバースプロキシ的な機能がデフォルトの動作なので、それに少し手を加える感じで。 ネームサーバーをCloudflareにものに変更。 AレコードなどはCloudflare側で設定したproxyのAレコードが返却されるようになる。 そこにアクセスがあると、Cloudflare内のproxyが動き、Cloudflareから自分のブログにアクセスが来て、コンテンツが返却されるという仕組み。 なので自分のサーバー的には、アクセス元IPアドレスはCloudflareのアドレスになる。 そこまでやっているのが大前提で、CloudflareでWorkersというのを作成する。
これはJavaScriptで書くのだけど、書いてある内容は/images/にアクセスがあった場合、/images/の後の文字列を、特定のURLにくっつけて、アクセスして返却する、返却時にブラウザキャッシュさせる、という感じで、全部で25行しか書かれていない。 それを、/imgaes/にバインドさせて完成。

エックスサーバーとCloudflareで、今までVPSで実現していたことを、サーバー管理無しで実現することができた。 サーバー移転も簡単に終わった。
今までVPSで不便だったことがいくつかあって、
・サーバーのセキュリティリスク
・PHPのアップグレードが面倒
・たまにMariaDBが落ちる
・Let’s Encryptの更新が手間(一応自動化はしていたけど)
・データベースのバックアップが面倒(自動化はしていたけど)
・コンテンツのバックアップが面倒(自動化はしていたけど)
・メールサーバーの設定が超絶面倒(このドメインでメール使うことないので設定すらしなかった)
というのが解決した。

さくらのクラウドで運用している他サイトも全部この方式にしたいが、6月中に終えることができるだろうか? こちらはオブジェクトストレージを使っていて、それの料金も痛いため、Cloudflare R2に移行する。
月々10,000円以上サーバー台で支払っているのが3,000円くらいになる見込みだ。 金額が減るのは嬉しいが、何より管理の手間がほぼゼロになるのが非常に嬉しい。 Cloudflareはこんな素晴らしい機能があるのに、ほぼ0円で使わせてもらって本当にいいのだろうか?

Cloudflareが落ちたら全サービス死ぬ問題はあるけれど、AWSだとしても同じだし、それは考慮しない。

夜はジョギングへ。 今日は大会前の繋ぎジョグ。
5.20, 5.05, 5.16, 5.16, 5.07, 5.04, 5.06, 5.02と、7.3kmを37分53秒で、キロ5分10秒ペースだった。

高校バスケ準決勝

曇り朝はコーンフレーク+ゼルダのいつもの感じで時間を潰す。

今日は平日だけど次女のバスケの総体の準決勝が三豊市総合体育館で行われるため、仕事を抜け出して観戦に行ってきた。 相手は高松北高校。 余裕で勝てる相手なのかな?と思ったが全くそんなことはなくて、最後の最後まで負けるかと思うような試合だった。
第1クォータは23-10でリードしていたが、第2クォータで一気に追いつかれ38-35。 第3クォータ終了時点では52-54と逆転を許す。 第3クォータでは5分くらいの時点でチームファウルが7で、全てのディフェンスファウルが相手のフリースローになってしまう。 キャプテンは個人ファウルが4つで、あと1つで退場なのでベンチに下げられていた。
最終の第4クォータはお互い点を取りつつのシーソーゲームで、どちらが勝つか全くわからない状況。 スリーポイントで点を入れ、相手に2点を2度入れられ、スリーポイントで更に逆転し、というのが残り2分くらいまで続く。 残り2分くらいに連続でスリーポイントとフリースローが決まり68-62と6点差で少々余裕ができたように見えた。 だが、残り時間は少ないし相手がものすごい圧力で迫ってくる。 なるべく時間を使おうとパス回ししているように見えたが、相手は鬼気迫る物があった。 残り30秒くらいで5点差あったので、そのまま逃げ切れそうだった。 タイムアウトでボールを前に進める戦略などで、残り9.6秒で5点差、相手ボールからだった。 9.6秒で5点差追いつくのはまず無理だが。 スリーポイント決めても2点差、自分たちのボールからで時計は止まらず、ギリギリまで中にボールを入れず逃げ切れる。
そういう戦略なのかと思ったが、9.6秒から再開されたゲームで相手がスリーポイントを打ってきた。 そのシュートは入らなかったが、味方がシュートモーション中にファウルしてしまい、相手に3本のフリースローを与えてしまう。 相手が2本決め、3本目を外して、そのボールを相手が取り、2点+ファウルか、スリーポイントを決めれば同点とされる。 そんなものすごい大事な1本目のフリースローを外す、2本目も外す。 相手の選手は泣きそうになっていた。 この時点でほぼ勝ちは確定。 3本目は決めて4点差となったが、残り5秒くらいしかない。 スローインから相手が迫ってくるが5秒間逃げて、ギリギリの試合に勝利した。 見ていたやばい試合だったな……

三豊からとんぼ返りで戻ってきて、残りの時間は仕事。

夜はジョギングへ。 レース1週間前なので、ポイント練習を頑張る。 キロ3分15秒ペースで40秒間を7本、リカバリーは3分間ジョグ。 2週間くらい前にもやったメニューなので、3分15秒くらいなら余裕だなと思って。 アップとダウンはキロ5分15秒ペースで10分間と15分間。 アップが終わって、いよいよ疾走区間。 走る前に考えていた通り、きついはきつかったが、ペース的にはバッチリだった。
3.12, 3.05, 3.02, 2.59, 3.06, 3.09, 2.51ペースで、全体を均すと3.03ペースで、余裕でクリアだった。

今夜もゼルダを楽しむ。

野球とバスケ2

晴れ朝は8時過ぎくらいに起床。 今日も特に予定が無いので、少年野球チームの練習試合に行ってきた。 9時集合で10時くらいから1試合目開始。 自分はもうただのOBなので審判などはやらず。 やってもいいが、現役のやりたい人に譲らなくてはならない。 外からプレーに対して声かけたり応援したり、第三者的な感じで見ることができるので、結構楽しかった。
昨日の練習を見る限り、このチームは全然強くないように見えるのだが、大野相手にタイブレークまでもつれ込んだり、今日の練習試合の相手は県スポ少大会ベスト8の榎井だったのに、15-6で大勝したり、練習と試合では強さが全く異なる。 そんな不思議なチームだった。 自分たちの代の時は、練習でも試合でもほとんど上手さや強さは変わらなかったと思う。
12時過ぎくらいに1試合目が終わり昼休憩となる。 午後からもう1試合あるが、自分はここで帰ることに。

帰宅してシャワーを浴びてからは、三女と次女のバスケの3回戦を見に高松高校へ。 県内屈指の進学校の高松高校に入るのは初めて。 近隣のコインパーキングに車を停め、高松高校の体育館へ。 体育館は2階、観覧スペースは3階だったが、観覧スペースはかなり狭かった。 それと体育館は外の光が入ってこないので、結構暗かった。
試合は快勝で、明日の準決勝に進むこととなった。

バスケ観戦が終わってからはゆめタウンに行ってから、スポーツデポで三女のテニス用品の買い物。 テニスシューズを買おうと思ったが、靴は試し履きだけしてネットで買うことに。 ネットの方が4,000円も安いので……
それと練習ウェアの上を2着、下を1着、靴下を2足、日焼け帽子のインナーを1着、シューズケースを購入して、全部で18,000円くらいかかった。 靴はネットで15,000円。 練習ウェアは消耗品的なものなので、年に1着以上は買わないといけないと思うけれど、これで一通りテニスに必要なものは揃ったか?

夜ご飯は「美月」で。 ビール大ジョッキを2杯飲んでしまった、家に帰ってきてからは500mlのハイボールを飲んで、今夜は少し飲みすぎてしまったなぁと思いつつ、ゼルダを楽しんだ。