妻に誕生日プレゼントでこれを貰った。嬉しい。
そろそろ明日、緊急事態宣言が解除されるらしい。不安と同時に嬉しさもある。
今回の緊急事態宣言に伴い、一部部署を除いて弊社は在宅勤務に移行した。五月中、自分が通勤したのは二度だけで、退勤後に渋谷で飲む予定があったのと、荷物を取りに行っただけ。 リモートでの仕事が可能になったので、開発部に関しては今後も在宅がメインになるかもしれない。
まぁ自分が意外と部屋にずっといるっていうのがストレスになるというか、それにシンプルに太るということが判明したので、気が向いたら出社しようと思う。 あと、妻が緊急事態宣言が解除されたことで出社せざるを得なくなったので一人で家に居続けるのもなーという気持ち。
ただ、通勤時間が減ることで業務効率は上がっていて、具体的に述べるとマージされたPRが二月と四月を比べると二倍近くに増えている。すごい。 運動不足もジムさえ再開すれば解消するのでやっぱり出社しないかもね。
今まで長文はnotionで書いていて、このブログにアップロードするときはmarkdownで吐き出していたんですが、下記のnpmを使って、notionから直接取ってくるようにしました。
nextjsのgetStaticPropsを使っているので、常にAPIをコールするわけではなく、ビルド時のみコールしています。
リンクがサムネイルっぽく表示されるようになって嬉しい。mdxで書いてたときはremark-pluginを作ってなんとかしようとしていましたが、全てのサイトに対応できてなくて、ogpに設定されている画像や動画が大きいとエラーになってしまったり、 そもそも配信サーバに権限で弾かれたりしてうまくいかなかったりしたのでまぁよかったです。
これが作ったやつ
ただ、ここに関してはnotionで管理するようにしていないです。理由として各日記の小見出しはそれぞれanchorリンクになっていて、これを実現しているのがremarkのプラグインだからです。 別になくてもいいっちゃあいいんですが、react-notionを改造すればできる気もするのでそっちに挑戦してからやろうかと思っています。
まぁ一番の理由は考えもなしに全て別のmdxファイルで日記を書いていて、それをnotionの一つのページにまとめるのがどちゃくそめんどいからなんですが。
immutablejsを排除する仕事をしています。めちゃくちゃ辛い。 - 実装は常に新しいObjectを返すというimmutable.jsの仕様を元に書かれてしまっている - ので、愚直にMap=>Object、List=>Arrayと書き換えていくと、更新されないComponentsが出てきたりする。 - Map#reduceとかいうメソッドに混乱する。 - そもそも実装がしんどい感じになっている。
Object#entriesとかを駆使して頑張っているが、今週中に目処が立たなかったら実装全部捨てるつもり。
あまりにも遅すぎるのでブログを色々と見直した。 - firebase hosting + Cloud Functions から CloudRun へ移行 - material-uiの使用をやめる(そもそもそこまで依存してなかった)。 - GoogleFontsをやめる
結果、かなり高速になった。
多分一番効果があったのはGoogleFontsをやめたこと、Windowsだと違う感じに見えるかも…と危惧したけど、思い切ってやめた。まぁこの辺はまた変えるかも。
次はCIの部分をやろうと思う。deployめんどくさいので。
cloud functionsをやめてfirebase hostingのみでやってみたがネスとしたルーティングの設定を手動でやらないといけなかったのと、あまり速くならなかったのでやめた。
中途半端に眠ったせいで目が冴えてしまった。なんかリモートワーク主体になったせいで変に疲れたり、疲れなかったりする。飲みにいけないのがちょっと辛い。
3月9日にgihutb.io から firebase hosting + Cloud Functionsに当ブログを移行したが、Cloud Runにしたくなってきた。
理由としてはCloud Functionsがnode.js@12にいつまで経っても対応しないことと、会社の人に勧められたから。
めっちゃミーハーだ。でもまぁdockerの知識を割と腐らせていたのでいいかなと思ったのと、 nextjsをやめたくなってもアプリケーションのコードを書き書きするだけですみそうな感じがしている。本当か?
今はSSRの部分がCloud Functionsに乗っかってるので、別に乗っかっててもいいんだけど。 まぁ今の構成に不満もないので、4月中にできたらいいなくらいに思っています。
話を変えます。
ずっとjsないしtsで仕事をしてきているんだけども、そろそろ違うプログラミング言語もやりたくなってきてしまいました。仕事でもjs、プライベートでもjs。
js(というかReact)のおかげで転職できたし年収もかなり上がったので今後も触り続けるんですけどね。 というかWebアプリケーションを仕事としていく上では切っても切れない分野だと思っているので、これからも頑張ります。
それで何をちょっとやるかですが、goとrust、rustは去年とか一昨年に少しだけ勉強したんですがめっちゃしんどかった。リベンジしたい。 goは結構みんなgoの話してるなーと思ったので、ミーハーだ。
あとはまぁc++か……。openFrameworksかっこいいから……。
5年くらいかけてやっていきます。今年中には業務でgoかrust使えるようになろう。というかこの辺の目標管理もやるか。
サービスの利用できる/できないを決めるのは運営側なので、利用客をディスるのはかわいそうだなぁと思いました。 宅配サービスはほとんど利用しないのであんまり関係ないんですが、こういう配慮や思いやりを暗に強要するのが最近めちゃくちゃ流行っていて、本当に生きづらくなってきたな。
自分でOGPクライアント作ってみた。動くかテスト。 動かないので消しました
コードはこんな感じ。もう少し改良する。
export const OGP = ({ url }) => {
const [og, setOg] = useState(null)
useEffect(() => {
if (!og) {
Axios.get(url, { responseType: 'document' }).then((res) => {
let [image, title] = ['', '']
res.data.head.childNodes.forEach((child) => {
if (child.nodeName === 'META') {
if (child.getAttribute('property') === 'og:image') {
image = child.getAttribute('content')
}
if (child.getAttribute('property') === 'og:title') {
title = child.getAttribute('content')
}
}
})
setOg({ image, title })
})
}
}, [og])
return (
<Lazy>{og ? <> <p>{og.title}</p> <img src={og.image} width={'50%'} /> </> : 'loading'}</Lazy>
);
}
この挙動知らなかった。でもよく考えたら当然か。
const topFunction = () => ({ first: () => { console.log('hoge') }})topFunction() === topFunction() // false
jest + react-test-rendererでスナップショットテスト書いてるけど、毎回壁にぶちあたる。でも来週で終わりそうな気もしている。
あとえぐい風邪をひいてしまった。喉が痛い、体がだるい。コロナウィルスかと思ったが発熱はないのでただの風邪っぽい。薬飲んだらだいぶ楽になってきている。
ブログをgithub.ioからfirebase hosting + Cloud Functions + next.jsに移行した。CloudFunctions使ってSSRしてるけど、あんまり意味ないかも。firebase hostiong だけでいい気がする。
あと、ドメインの設定もした。mexって適当につけたのをここまで引っ張ってしまった。mexってメキシコの国名コードらしい。アメリカはUSAで日本だとJPN。メキシコはMEX。へぇ。
明日から新婚旅行に行く。行き先は国内でまぁのんびりする予定。
行き先をあれこれ悩み、決めたあとにタクシー料金を計算すると飛行機より高くなっていた。 九州の広さを舐めすぎていたようです。結果、のんびりしたいから九州に行くんだしと開き直って、遠い観光地をバッサリ切った。
さっき妻に準備終わった?と聞いたら半分ほど終わったらしい。俺は何もしてない。
話を変えます。
MONKEYっていう雑誌をご存知ですか?俺は今週まで知らなかった。
なんでも記念すべき 20 号目らしく、豪華作家陣が「探偵」をテーマにした書き下ろした作品が載るそうです。
円城塔も名を連ねていて探偵物とか書くんだと思った。
仕事が忙しい。自分の得意分野で色々やってるので大変ではない。
最近気になっているもの
ユーザの行動分析を動画で確認できるらしい。
LogRocket | Logging and Session Replay for JavaScript Apps
1行のJavaScriptコードでユーザーの行動分析を動画で確認できる「LogRocket」を使ってみた! - paiza開発日誌
あと、jsxでinfrastructure as codeができるの。
Adapt · React for your infrastructure.
おもしろそうですね。