next build で heap out of memory 発生

next build を実行すると次のエラーが発生した。

FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory

Node のデフォルトのヒープサイズでは、next build には足りなかったようだ。

環境変数 NODE_OPTIONS--max_old_space_size=<MB> を設定することで回避できた。

NODE_OPTIONS=--max_old_space_size=4096

違う環境でまた発生したとき、自分のブログを検索して解決できるように、メモを残しておく。

パッケージを更新しやすくするために npm-check-updates 導入した

新しいバージョンが存在するかの確認は npm outdated でもできるけど、更新を手動でやるのは面倒なので、npm-check-updates を導入した。

github.com

グローバルにインストール。

npm install -g npm-check-updates

プロジェクトのディレクトリで、新しいバージョンが存在するか確認してから、更新。

# 新しいバージョンがあるか確認
ncu

# package.json を更新
ncu -u

# 新しいバージョンをインストール
npm install

パッケージのバージョンはこまめに上げておかないと、後で酷い目に遭うからね…。

3月のライオン(16)

川本家の三姉妹は、彼女たちの境遇からすると、奇跡のように真っ直ぐに育ったな。陽だまりのような暖かさ。

対象的に零は境遇通り難義に育ったけど、川本家の暖かさに触れて氷解。今までは生きていくために指すしかなかった将棋に、楽しさを感じられるようになって良かった。二階堂が思ったように、別ルートを探すスタートラインに立ったってことか。

あと、川本三姉妹が、まさかのジグソーパズルガチ勢だったとはね。ジグソーパズルで戦略とか考えたことなかったな。せいぜい、外枠から組み立てるぐらい。ポテチとチョコを用意して、ジグソーパズルパーティやりたくなる不思議な魅力だった。

MVU 時代のメンタルモデル

MAUI 自体が .NET 6 に入らず、2022 Q2 に延びたのは残念。MAUI の MVU には期待していたのに。

というのも、ここ数年、React を使ったフロントエンド開発をやってきて、アプリ開発のメンタルモデルが変わってきた感がある。React の関数コンポーネントは、状態を受け取ってビューを返す関数。同じ状態を渡せば同じビューが返ってくるというのは、なるほどシンプルで、すっと腑に落ちた。

View = Component(State)

また、誰が書いた記事かは忘れてしまったけど、「アプリは現在のステートとアクションを受け取って、次のステートを返す関数」という意見を読んで、「それってまさに Redux の Reducer じゃん」て思った。コードっぽく書くなら下みたいな感じ。

State = App(State, Action)

その記事を読んだとき、React の関数コンポーネントに触れて変わりつつあった自分のメンタルモデルが、一気に変わった感がした。

React Hooks 時代になって、Recoil や Jotai といった React Hooks と親和性の高い状態管理ライブラリを最近は使うようになったけど、React + Redux は自分の中で結構しっくりきてたな。

Redux は Elm 由来。MVU も同じく。MAUI の MVU に期待するなというのは難しい。

コンディトライ神戸のフレンチトーストラングドシャ

大丸福岡天神店で開催されていた『全国うまいもの大会』のチラシの中で、子どもが一番食いついたフレンチトーストラングドシャを、仕事帰りに買って帰った。

f:id:griefworker:20210923215249j:plain

f:id:griefworker:20210923215237j:plain

バター香るリッチなラングドシャと、メープル風味のホワイトチョコレートの組み合わせなんて、最高に決まっている。ブルボンのブランチュールの上位版、なんていったら怒られるか。

f:id:griefworker:20210923215230j:plain

お取り寄せもできるけど、送料分がもったいないので、こういった催しを毎月開催してほしいところだ。外食ままならないから、コロナ禍の間は毎月何か買いそう。

コンディトライ神戸は文字通り神戸だし、地下に入ってるアンリシャルパンティエも発祥は神戸らしい。コロナが落ち着いたら神戸に旅行に行って、スイーツを食べまくりたい。

Terraform を v1.0 にアップグレードした

v1.0 が出たことだし、仕事で使っている Terraform のバージョンをそろそろ上げようかな、と。思い立ったが吉日だ。

まず、Terraform v1.0.7 をダウンロードしてインストールする。Windows かつ PowerShell なので tfenv が使えないのは、まぁしゃーない。Git Bash は使ってないし。

www.terraform.io

あとは下記のコマンドを順番に実行。

$ terraform init --reconfigure
$ terraform plan
$ terraform apply -refresh-only

v0.14 からのアップグレードだったので、特にハマることなく終わった。ステートが壊れたらどうしよう、とドキドキしてたけど一安心。何事もなくて良かった。マジで。

Xamarin.Forms でアイコンフォントの導入が簡単になっていた

  • アイコンフォントファイルを入手

github.com

  • Xamarin.Forms 共有プロジェクトにアイコンフォントファイルを追加
    • Fonts フォルダを作って、その下に置くのが無難
  • アイコンフォントファイルのビルドアクションを Embeded Resources にする
  • ExportFontAttribute でフォントファイルを登録する
[assembly: ExportFont("MaterialIcons-Regular.ttf", Alias = "MaterialIcons")]
  • あとは Label や FontImageSource とかで使う
    • Alias は FontFamily の指定に使える
<FontImageSource FontFamily="MaterialIcons"
                 Color="White"
                 Glyph="&#xe5d3;"/>
  • C# での書き方
new FontImageSource
{
    FontFamily = "MaterialIcons",
    Color = Color.White,
    Glyph = char.ConvertFromUtf32(0xe5d3),
};