rch850 の上澄み

技術的な話題とか、雑談とか。タイトルを上澄みに変えました @ 2020/09/02

Glitch で @fastify/cookie を使おうとしてハマった

tl;dr

  • glitch で普通にパッケージを追加するとバージョンを指定できず @fastify/cookie でハマる。
  • package.json に直接 "@fastify/cookie": "^6.0.0" と書けば良い。

詳しい話

試したいことがあって Glitch でちょっとしたサーバを書こうとした時のこと。Glitch を開くのは数ヶ月ぶりだったんだけど、Fastly の一員になってたんですね。おめでとうございます。引き続きよろしくお願いいたします。

Glitch で "glitch-hello-node" から新しいプロジェクトを作ると、Fastify を使ったプロジェクトになっている。今回は cookie を操作したかったので、ちょっと調べてみたところ @fastify/cookie というものがあることが分かった。これを Glitch 側でインストールしてみようとすると、こうなった。

バージョン 7.0.0 が入るんだねってことでインストール。そして fastify.register するコードを書いてみたんだけど、glitch 側のログがうんともすんとも言わずに、ただただ Status 表示が赤くなる状態になってしまった。

さっぱり分からないので周辺の状況を整理してみたら、このようになった。

なんだかよく分からない状況で、さらに調べて行き当たったのがこの issue のコメント。

github.com

  1. A new fastify-cookie package would be published at version 5.7.0 (up from 5.6.0). This package will wrap the exports of 5.6.0 with a deprecation notice.
  2. A new @fastify/cookie package would be published at version 6.0.0. This package will have the same code as 5.6.0.

Any subsequent changes to comply with fastify@4 would bump @fastify/cookie to 7.0.0.

どうやら fastify が v4 になるのに伴って、パッケージ名をガッツリ変えるプロジェクトが進行中のようだった。@fastify-cookie に関しては 6.0.0 で fastify-cookie から @fastify/cookie に移行して、さらに fastify@4 は @fastify-cookie@7 を参照する形になる様子。

ここから @fastify/cookie@6.0.0 を入れればいいだろうと推測。glitch の "ADD PACKAGE" ボタンではバージョンを指定できないので、直接 package.json"@fastify/cookie": "^6.0.0" と書いたら無事にインストールできて、cookie をつけることもできた。めでたし。

Logseq で遊んでみたところ日誌ファーストなのが気に入った

ちょっと前に名前を目にした Logseq で遊んでみた。

  • 小さなメモ書きを蓄積していくためのツール。メモ書き同士はリンクできて、ネットワーク状のグラフとして表示することもできる。
  • データは基本的にローカルに Markdown で保存される。
  • 関連する用語は Personal Knowledge ManagementZettelkasten など。
  • 似たようなツールとしては ObsidianScrapbox あたり。特に Obsidian は近い。

ざっと紹介するとこんなところだけど、個人的に刺さったのが、起動して最初に出てきたのが Journals(日誌)という画面だったこと。

Notion に Diary/yyyy/mm というページを作って、雑にメモをとる拠点として使っていたのだけど、そのままそれっぽく使えそうだと思った。

これは Notion の Diary/2022/05 の様子。

さらに、Notion で日記を書くときに、最初から箇条書きになっていてほしいと思っていたのが、Logseq だと最初から箇条書きなのが良さそうだった。逆に箇条書きしか書けないのだけど、今のところ困ってない。

ただ、個人的には、さっき「雑にメモをとる拠点」と書いた通り、スマホで気になるニュースがあったらメモ、それを後からPCでじっくり読む、と言った使い方をすることがよくあって、そのためには同期していてもらいたい。同期についてはまだいろいろ開発中みたいなので、今後に期待!

参考にした記事:

ポップ体 vs. 幼児の感覚

息子(年中)にひらがなを練習してもらうためのウェブアプリ「ひらがなのおけいこ」を作っている。

このアプリのタイトルなどのフォントをどうしようか迷ったので、ユーザー自身に選んでもらうことにした。

Google Fonts のサイトでスクショを撮って、このように並べてどっちがいいか聞いてみた。

f:id:rch850:20220308224635p:plain

すると、少し考えたあと、下の Zen Maru Gothic がいいと答えてくれた。

ノータイムでポップ体を指差すこともあるかなと予想していただけに、ちょっと意外だった。ついでに妻にも聞いて、同じ答えだったので、自信を持って Zen Maru Gothic を使うことにした。

ちなみに、おけいこのお手本として表示しているひらがなは Klee One を使っている。選ぶときに特に気を使ったのが「き」や「さ」で、一般的なフォントだと「き」が3画のところ、手書きのように4画になっていることが必須条件だった。

若者たちの話し合いに「最後だけ入って確認してもらえれば大丈夫です」と言われておじさんは安心した

仕事の話なんだけど、若者たちに意見を出し合ってもらいことがあった。そこで、若者たちに「ちょっと集まって話し合ってもらっていいかな」と呼びかけた。

呼びかけた後に、これはおじさんが入らない方が好き勝手話せていいんじゃないか?と思って「入らない方がいいかな?」と聞いたら、「入ってもらわずに進めて、最後だけ入って確認してもらえれば大丈夫です」と言われた。

これを聞いてとても安心したという話。

自立している

自分達だけで話を進めることができるという意思表示に安心した。

過剰な遠慮がない

「入らなくていい」という意志を、率直に伝えてくれたことに安心した。

適切な配慮を感じた

一方で、最後だけ入ってもらいたいというところで、こちらの立場だったり、こちらの時間を最小限に留めたりといった適切な配慮を感じて安心した。

些細な出来事かもしれないけど、このやりとりで、なんだかおじさんはとても安心しました。

MacBook Pro(14インチ、2021)に移行アシスタントで引っ越し(アプリケーション編)

これの続き。

rch850.hatenablog.com

事前に移行元で brew list して、メモっておきました。

Homebrew 入れ直し

何はともあれ Homebrew をインストールして、次に iTerm2 を入れようとした時のこと。

$ brew install iterm2  
/usr/local/Homebrew/Library/Homebrew/brew.sh: line 839: /usr/local/Homebrew/Library/Homebrew/vendor/portable-ruby/current/bin/ruby: Bad CPU type in executable
/usr/local/Homebrew/Library/Homebrew/brew.sh: line 839: /usr/local/Homebrew/Library/Homebrew/vendor/portable-ruby/current/bin/ruby: Undefined error: 0
Error: 'git' must be installed and in your PATH!
/usr/local/Homebrew/Library/Homebrew/brew.sh: line 839: /usr/local/Homebrew/Library/Homebrew/vendor/portable-ruby/current/bin/ruby: Bad CPU type in executable
/usr/local/Homebrew/Library/Homebrew/brew.sh: line 839: /usr/local/Homebrew/Library/Homebrew/vendor/portable-ruby/current/bin/ruby: Undefined error: 0

あぁ、いきなり何か踏みましたね。どうも何かが残っていて動いてくれない様子。

そういえば Homebrew はホームディレクトリ以下にも何かファイルを保存していた気がしたな。もしかして意図しないファイルが移行されてしまったか?と考えて、次のように Homebrew を一旦アンインストールして再インストール。手順はこれを参照。

❯ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/uninstall.sh)"
❯ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

こうしたら brew install iterm2 がうまく行きました。無事インストールできた iTerm2 を起動したら、さっきまで移行元で動かしてたターミナルの内容がそのまんま出てきて面食らいました。すごい引っ越し力。多分 iTerm2 のパワーなんでしょうけどねこれ。

f:id:rch850:20211211010812p:plain

Session Contents より上の行が、引っ越し前の mac で表示されていた内容です。

nvm など入れ直し

とりあえず node でも動かすかと思って、おもむろに node -v を打ったら、またこけた。

❯ node -v
zsh: bad CPU type in executable: node
❯ command -v node
/Users/rch850/.nvm/versions/node/v16.13.0/bin/node

あー、これもホームディレクトリで引っ越しちゃったやつね。そりゃ壊れるわ。こちらもアンインストール、インストールしました。

❯ nvm uninstall --lts
❯ nvm install --lts

ちなみにここでは nvm を使ってますが、この後 asdf-vm に切り替えます。Ruby のバージョン管理も rbenv 使ってて同じような状況になっていました。

Rosetta2 に抗うも押し切られる

日本語入力がしんどいな、と思って Google 日本語入力を入れようとしたら、なんと M1 非対応とのこと。ここは Rosetta 使わず粘ってみるか。

と思ってたんですが、AtCoder の準備を整えていた時に、AtCoder の Go が 1.14.1 で mac の arm64 バイナリが提供されていなかったため、ここで Rosetta 導入となりました。無念。

❯ asdf install golang 1.14.1
mkdir: /Users/rch850/.asdf/downloads/golang/1.14.1: File exists
Platform 'darwin' supported!
URL: https://dl.google.com/go/go1.14.1.darwin-arm64.tar.gz returned status 404
tar: Error opening archive: Failed to open '/Users/rch850/.asdf/downloads/golang/1.14.1/archive.tar.gz'

❯ arch -x86_64 asdf install golang 1.14.1

❯ asdf shell golang 1.14.1

❯ go version
go version go1.14.1 darwin/amd64

以上、引っ越しがらみでのアプリケーションがらみのいろいろでした。

MacBook Pro(14インチ、2021)に移行アシスタントで引っ越し(データ編)

ってことで M1 Pro デビューしました。移行アシスタントで M1 Pro の MacBook Pro に引っ越した記録を残しておきます。初めての移行アシスタントだったので、不慣れな進行です。

基本的には公式の新しい Mac にコンテンツを移動するを見ながら進めたいところだったんですが、説明がざっくりしてたので参考程度です。「MacBook Air (M1)をMacBook Air (Mid 2011)から移行する」という記事が、タイトルの通りかなり世代を飛ばした移行事例だったので、励みになりました。

まずは移行元と移行先の MacBook Pro を仲良く起動。ちなみに移行元は MacBook Pro (Retina 13-inch, Early 2015) です。OS は Monterey まで上げてあります。移行先は、これが初回起動。「こんにちは」とか「Hello」とか表示されるアレです。

起動して、移行元では Launchpad から「その他」の移行アシスタントを起動。移行先では他の Mac から移行っぽい選択肢を選んで進めていきます。移行するデータの選択では、ホームディレクトリのデータや、システム環境設定のネットワーク設定のみにしていた気がします。アプリケーションは明らかにハマりそうなので外しました。ホームディレクトリの容量ですが du -hs ~ してみたところ 159G という結果でした。これはすごそう。

そして途中経過がこれ。USB ケーブルで繋がってますが、接続方法が Ethernet となっていますが、これが Wi-Fi 接続と USB 接続のどちらを示しているのか、この時点ではよく分かっていませんでした。

なかなか「ユーザの書類を転送する準備をしています…」から進んでくれないところで、ふと、移行作業をしていたコワーキングスペースのネットワークが、端末間の通信に少し厳しかったようなことを思い出しました。

一応有線では繋いでいるものの、それが使われる保証がなかったので、一旦処理をキャンセルして、両方のマシンで Wi-Fi の AP 情報を削除し、再チャレンジ。ここでも接続方法が Ethernet と表示されていたため、どうやら AP 情報消さなくても USB 接続になっていたっぽいです。

30分ほど経過して、ようやく次のステップ「ユーザ "xxx" の書類を転送中」に進みました。この写真を撮ったのは3時25分でした。

AP 情報を削除する前に30分も待っていたのかというと、そんなことはなくて、元々30分待てば成功していたのかもしれません。

その後、表示が変わって、残り時間が出てきました。

f:id:rch850:20211120154407j:plain

残り1時間9分。撮影したのが3時44分。これならだいたい5時前には終わるかなといった感覚でいたのですが……

4時4分にはこのリンゴマーク。思ってたより速い!いつもOSアップデートで待たされてる身からすると、これはかなり嬉しい誤算でした。

そして無事起動。内部の諸々の引っ越しはさておき、大まかに引っ越しが終わりました。

ここまでの振り返り。

  • Keep
    • 移行アシスタントなかなか悪くない。数時間レベルかと思ってたけど、正味1時間程度で済んだ。
    • 移行するデータ選択からアプリケーションを外すのは間違いなさそう。
  • Problem
    • 有線接続を優先させるのに手間取った。
  • Try
    • node_modules のようにファイル数が異常に多い部分は、削除してから移行したほうが速かったかもしれない。
    • なんなら clone した git リポジトリ自体が移行不要だったかもしれない。

この後、アプリケーション編に続きます。ざっくり予告。

  • アプリケーションを引っ越したつもりがなくても引っ越されているアプリケーションたち。
  • iTerm2 か移行アシスタントか分からんけどシームレスすぎてすごい。

近況

気づいたら2ヶ月も何も書いてなかったのでざっくり近況。

ISUCON 11 に出て潔く散った

  • どれぐらい潔いかと言うと、最後まで負荷分散しなかった。
  • 今回のようにあまりにも DB 負荷が高い場合は、中盤で負荷分散したほうがいいかもしれない。最近は、負荷分散でのスコア上昇にあぐらをかくのが怖くて、17時のスコアフリーズ後という方針だったけど、負荷分散後に課題が見えるケースもあるので、柔軟に。

息子を連れて文殊山に登った

二上コース 〔約50分〕 福井市街地に近いこともあり人気コース。

というコースで、たくさん休憩したり、遊んだりしながら、1時間40分。途中、もう限界かな?って思うところがあったけど、最後はかっぱえびせんの小袋片手になんとか登りきってた。がんばったなぁ。

オンボーディング準備にチームで取り組んでいる

これは仕事の話。新卒対応してた人、したい人に声をかけて、チームを作って来年度新卒のオンボーディングの準備を進めている。半年前から動き始めるのは今回が初めて。技術面だけでなく、カルチャーをふりかえるいい機会になりそう。

ゆとりの法則を読んだ

こちらのスレッドを読んだのがきっかけ。

もう20年も前の本だけど、気付かされることが多かった。個人的には、ゆとりによるプロジェクトの成功やチームの成長といった話題より、リーダーシップの話が刺さった。まぁ読むきっかけがそれだったというのはある。あとでちゃんとまとめたい。