ゆずめも

メモ的なブログです。主に勉強した事について書いてます。

ラズパイとお別れしてミニPCに置き換えた

学生時代に手に入れたラズパイ2 model bが壊れてしまったので代わりとしてミニPCを買った。ネイビーのやつより黒っぽいグレーの方がいいなと思ってグレーのメモリ8G版を購入した。

外観

商品画像だとグレーっていうよりブラックだと思ってたのに、届いた商品見たらだいぶグレーで全然ブラック感なかったのはちょっと悲しい。画像はiphone7との比較。ラズパイよりは大きいが会社から貸与されてたmac miniよりだいぶ小さいので満足。

性能レビュー

とりあえずラズパイで動かしてたアプリ類を移してみた所、そもそもLANポートが100Mから2.5Gになったのでiphoneとの通信とかその他諸々が爆速になった。有線接続したまともなLANポートのpcで初めてネット速度を測ったら*1、インターネットへの通信が500Mbpsを超えてて自宅のlanそんな早かったのかと驚いた。

sdからssdに変わったのもあってR/Wが安定したのもとても良い。

ubuntuに入れ替える

そもそもこのミニpcにはwin 11 proが入っていたがwinサーバーを運用することは今後仕事でも無さそうだし、いつも通りubuntuクリーンインストールして使っている。

インストール自体は特につまずく所も無くいつも通りだった。ただ有線が爆速で嬉しくなってて気づいてなかったが、ubuntuにするとこのミニpcに入っているwi-fi 6のモジュールが対応しておらずwifi接続を使うことができない。インストールしたubuntuが22.04 LTSだったので最新にしたら使えるようになるのかと思ったがgihyoの記事を見るに23.04にしても使えないみたい。

gihyo.jp

感想

最近ラズパイが結構いい値段するので、値段下がらなければ…と考えてたけど結局下がる事はなかった。そんな感じで購入した割にはすごく満足度が高い。元々GPIO使ってなかったし。

ちょっと気になる所としては、主な用途が日次処理で基本何もしてないのだけど、ラズパイに比べると消費電力は大きいはずなので24h/365day動かした場合に電気代どうなるのかはとても気になる。

またこの記事書くためにamazon見たら買ったときにはなかった16GBのグレーが3000円位の差で販売されててそっちがよかったかもしれん…

intellij ideaでgo modulesを使おうとしたら認識しなくてハマった

intellij ideaで久しぶりにgolangを書こうと思ったらgo modulesがうまく認識されなくて手間取ってのでメモ

状況

適当にディレクトリを作成しgo mod init xxxxして、そのディレクトリをintellijで開いた

環境に$GOPATHが定義されているのでそっちが優先されて?go.modを認識してくれず、go.modに書かれている依存が解決できない

解決方法

go modulesの機能を有効にする

最近はデフォルトで有効になっているらしいが一応確認。ちゃんと有効になっていた。

$GOPATHを使わないようにする

設定されている$GOPATHを使うのチェックを外す必要があった(この辺自動で認識して切り替えてくれるもんだと思ってた)

ここのチェックを外すとgo.modに書かれている依存を認識してくれるようになった

astroを実践投入してみた

所属企業のHPのホスティングサービスを引っ越ししようとしたら、最新LTSのnodejsでビルドできなくなっていて会社に相談した所手を入れる時間を確保できたのでライブラリのアップデートなど色々手を入れてみた。

astro.build

tl;dr

astro簡単に導入できたし、アイランドアーキテクチャとして色々なコンポーネントを使えるの面白い*1

ただしgoogle analyticsだけは動いてるけどまだ完全には解決していない。

そもそもの運用

元々は入社する前にwordpressで作られていたものだったが、以下の理由でwordpressの使用をやめた

  • 社内にwordpress知見を持っている人がおらずバージョンアップが躊躇われた
    • バージョンアップして壊れた時に対応できる時間があるとは限らない
    • そのせいで対応が遅れてしまう
  • ページ数も5ページほどしかなくwordpressはオーバースペック

そのためsassで書かれたcssなどをwebpackでbundleして、それをwordpressが生成したhtmlから読み込んで運用していた。

改善部分

生のhtml運用だったのでheadタグ内などを書き換えたい時にページ数分書き換える必要があるので共通部分は共通化したかった。SSIなども考えたが、サーバー用意するのが面倒なのでSSG一択。

そこで話題になってたastro触って見ようと思ってたらいつの間にか2.0が出てしまっていたので、触ってみていい感じだったのでそのまま導入した。

astroの面白かった所

入門的な記事はいっぱい出てくるだろうから面白いと感じた所を抜粋

astroのフォーマット

説明のためにastroファイルの書式はこんな感じ

Components 🚀 Astro Documentation

---
// componentなどのimport文等
import Layout from './layout.astro'
---

<!-- domを普通に記述 -->
<Layout>
  <h1>Index Page</h1>
</Layout>

<style>
h1 {
  color: red;
} 
</style>

アイランドアーキテクチャ

astroの中にはreactやsvelteなどを同時に扱う事ができる

---
import Foo from './Foo.tsx'
import Bar from './Bar.svelte'
---

これによって過去の資産使いまわせたり、一部をsvelteで書いてみるなどというお試し導入が簡単にできるのが良い

ssg

本題のssgに関してastroは基本的には静的なものの生成を目指す。例えばreactで書かれたコンポーネントを配置しビルドした時には、jsはビルド時のみ実行されレンダリング結果がビルド結果としてアウトプットされる

コンポーネントをクライアントで実行したい場合はclient:onlyをつける必要がある*2

<SvelteComponent client:only />

Template Directives Reference 🚀 Astroドキュメント

scriptタグ

frontmatter的な部分はサーバーサイドで実行されるが<script>タグで囲んだものはastroによって自動的にbundleされる

スクリプトとイベントハンドリング 🚀 Astroドキュメント

この当たり考えなくてもastroが裏で勝手にやってくれて賢い

astroの困った所

google analytics

全く気づかなかったがgoogle analytics見たらうまく動いて無さそうだった。 そこで調べてるとastroのメンテナーさんの記事が出てきてPartytown経由で実行すると良いらしい

www.kevinzunigacuellar.com

これで一応取れていたので一旦様子を見ている

今後

全ページのcssを1つのcssとしてビルドし読み込んでいるので、これを分解していきたいとは思ってはいる。
ただページ数が少ないのもあって全ページのcssをバンドルしてると言っても、そこまで大きなサイズになっていないので特に困っていない。

astroのプロジェクトを試しに作成したりしてみたのも含めて、大枠の移行を1日で完了できたくらいには簡単に移行することができたのは良かった。

振り返って

wp剥がすことを決めた当時に話していた「ちゃんとwpアップデートの面倒を見てくれる人員を確保できている時のみ自社でwpを運用すべきなのでは」という会話を思い出した。

定期的に見直すものでもないので自分たちでアップデートできないなら制作会社だったりが管理してくれるならお金払ってやってもらったほうが良さそうだよね*3

もしも会社のHPを改変されたらというのを考えてみたが、自分は住所入力のための会社概要しか見ないので気づける気がしないな

*1:色々入れると後でメンテナンスするの大変だから試しただけで実運用していないが

*2:これをちゃんと読みきれてなくてsvelteのコンポーネントがうまく動作しなかった

*3:それをするならmicrocmsだったりcontentfulに課金する方が安そうではある