Slide 1

Slide 1 text

リプレイスでやったこと めぐろLT#21

Slide 2

Slide 2 text

● 木村宗吾(K1mu21) ○ 社会人2年目です!(高校からプログラミングしてました ) ● 株式会社ラクーンホールディングス技術戦略部 ● バックエンド(+フロントエンド+CI/CD…) ○ 業務ではJava,PHP ○ 趣味ではGo ● 趣味 ○ ライブ ■ ボカロのライブ行きました ○ サウナ ■ 錦糸町の黄金湯が最高です 😆 ○ etc … ● X ○ @detunote

Slide 3

Slide 3 text

やったこと 2024年2月から8月まで弊社公式サイトのリニューアルプロジェクトを行った (関係ないがほぼ全く同じ期間で他のクソでかPJにも参加していた)

Slide 4

Slide 4 text

やったこと 1. Cloudflareでホスティングするようにした 2. CloudflarePagesFunctionのLogをCloudWatchに飛ばすようにした 3. パッケージ管理ツール(Renovate,Dependabot)を入れた 4. biomeの静的解析結果をCodeQuarityに出るようにした(githubではcode inspection?) 5. WordPressの記事,画像データをmicroCMSに移行した

Slide 5

Slide 5 text

Cloudflareでホスティングするようにした 元々社内サーバー内でTomcatを使ってホスティングをしていた 本来はデザインだけの改修予定だったが、↑の部分も回収しようという事になった 色々AWS、GCPなども考えたが、選んだのはCloudflare 無料枠が大きい、値段が安い、機能が要件的に十分だったことが決め手

Slide 6

Slide 6 text

CloudflarePagesFunctionのLogをCloudWatchに飛ばすようにした ● CloudflarePagesFunctionはAWSでいうLambdaみたいなもの ○ CloudflarePagesFunctionを使ってYoutubeAPIを叩いていたが、ログの保管ができない ○ Cloudflare WorkersだとLogPushの機能を使ってS3とかNew Relicにログを送れるけど... ● 監査的にログがないと起こられるので、以下のライブラリを使ってCloudWatchに送 信する仕組みにしてログの保管ができるようにしました https://github.com/aws/aws-sdk-js-v3/tree/main/clients/client-cloudwatch-log s ● Cloudflareの話は別のLTで話してるので興味があったら見てみて下さい https://speakerdeck.com/k1mu21/cloudflareiizo

Slide 7

Slide 7 text

パッケージ管理ツールを導入 ● ライブラリのアップデートを自動で管理してほしかったのでDependaBotを導入しまし た ○ CIで回してるので人の手があまり入らないようになってます ○ GitLabだとgroupsキーが使えなくてかなり微妙でした ● MergeRequest(PR)をGitLabでもまとめることができるRenovateに入れ替えました ○ 入れ替えるにあたった詳細は Zennで書いています ○ https://zenn.dev/aeon_mall/articles/a62a1cf8652f01 ○ https://zenn.dev/aeon_mall/articles/1704bebe048ef0

Slide 8

Slide 8 text

biomeの静的解析結果をGitLab CodeQuarityに出るようにした ● biomeにはreporterという機能があり、これを使うと解析結果をJsonやxmlなどの形式 で出力することができます ○ gitlabを指定すると静的解析結果を CodeQuarity形式で出力することができるようになります ● これをArtifactとして持たせることで、MR上にCodeQuarityで表示することができる ようにしました

Slide 9

Slide 9 text

WordPressの記事,画像データをmicroCMSに移行した ● この作業が一番大変だった ● WordPressをmicroCMSに移行することになったので過去データを移行する必要が 出てきた ○ microCMS公式が出してるやり方だとアイキャッチ画像のみを引っ張ってくることができなかった ■ アイキャッチが本文内にあり、 idなどでアイキャッチ画像の指定がされておらず特定が不可能 ● https://blog.microcms.io/wordpress-to-microcms-tutorial-preparation ● 新しくRestAPIのプラグインを入れることで情報は全て取得できたので解決 アイキャッチは記事の概要の上に来る画像のこと

Slide 10

Slide 10 text

メディア画像の取得 ・WPは/yyyy/mm/画像名の形式で保存されてるので月が変われば同じ画像名が使え る ・curl -oでファイルをダウンロードしていたが、↑の考慮をせずに画像名だけでダウンロー ドしてしまいファイルが上書きされてしまった ・解決した後にダウンロードファイル数が2ファイル足りなくて色々調査したが、全く同じ /yyyy/mm/画像名で形式で保存されていたのでまた上書きされていた

Slide 11

Slide 11 text

メディア画像のアップロード ● マネジメントAPIを使ってアップロードを行いますが、ドキュメントがあるのでそこまで 難しくはないです ● 1秒間に10ファイルしか送れないので1000ファイル以上アップロードしたのでかなり 時間が取られます ● たまに500、429エラーが発生するのでリトライ処理をしないとかなり面倒くさいとい う罠があります

Slide 12

Slide 12 text

記事の取得 新しく入れたWPのプラグインを使うことで、APIを叩くことで必要な記事情報を取ってこ れるようになったので特に難しいことはないよ Advanced Custom Fieldsは許さん

Slide 13

Slide 13 text

記事のアップロード ● microCMSにアップロードする際は勝手にmicroCMSの形式に変換して保存される のでWPの内容を変換する必要があった ○ WP独自の形式で表示されてる部分もありキレてた https://microCMS形式/assets/一度きりの乱数/毎回生成される乱数/ファイル名 ファイル名x240-320.png→ファイル名png=240&w=320

Slide 14

Slide 14 text

まとめ ● 新しいものにリプレイするのマジで大変 ○ それぞれ基本的に互換性がないのでそれに合わせた設計とかを考えないといけない ● 一から作り直すとマジで力がつく ○ インフラ側とかの知識がすごいついた ○ できなかったら代用できる方法がないかと気づける機会が増える ● WordPressほんまカス ○ microCMSに移行できるツールを OSS化したいなと思ってます ○ カスコードなのでリファクタ必須