2021/10/24 昼 思考の垂れ流し

マウスの充電が切れそう。というわけでケーブルを繋いだら、5分もしないうちに5%→10%→15%とみるみる回復していく。5%は単に表示上の問題だったのか、それともマウスは2~3ヶ月持つ低消費電力なデバイスなので100%の天井が意外と低いのか。

Yahooカードからお知らせメールが届いたので、さっそく購読解除の手続きをしようとした。最近のYahooはIDパスワードではなくSMSへのワンタイムパスワードだけで認証する仕組みになっている。2要素ではなく1要素。パスワードは使わない。いい取り組みだよなぁとYahooへの好感度が高まった次の瞬間、Tポイント会員への登録画面が現れた。しまったリンクを押し間違えたのかなと思ったら、下の方に小さく『登録せずにカード会員サービスメニューに進む』の文字。ダークパターンだ!こういう不誠実なやり方は好きじゃない。自分の中のYahooの好感度が今日の始値を下回った。

今日はAngularの学習か、鮮度くんの開発か、その両方をやりたい。心は鮮度くんの方に傾いてる。でも今優先度が高いのはAngular。鮮度くんは後回し。でも鮮度くんのherokuデプロイは早いうちにやりたい。

2021/10/23 朝 思考の垂れ流し

最近鼻がムズムズする。寒暖差アレルギーというものがあるらしい。詳しいことは知らない。でもGoogle日本語入力でも一発で出てくるから概念自体は存在するのだろう。このご時世、何かしらのカテゴリに入れて説明可能にしていないと都合が悪い。

そろそろ外出しなければいけないのに、iPad Proの充電が5%しか終わってない。もっていくのを諦めるか、それとも持っていくか。10%まで粘れば今日の役割は果たせるかもしれない。しかしそれだとお昼ごはんの時間が犠牲になる。充電しながらコンビニに行って、先に済ませてしまうというのもある。こういう時にモバイルバッテリーがあれば良いのだが、探せば多分あるのだが、それもきっと充電切れに違いない。となるともう、お昼を先に済ませて、その間に充電をする他無い。だからブログを書いている暇はない。だから文章はここで終わる。

文章再開。コンビニに行ってチーズバーガーとポテトとナゲットを買ってきた。何が悲しくてコンビニでマクドナルドのメニューをなぞらなければならないのかと思わなくもないが、せっかくお腹が空いてないので、自分の欲望に惑わされず、普段自分が選ばないチョイスをしようと思い至り奇行に走ることになった。

そう言えば昨日鹿児島mkのオンラインもくもく会に初めて参加した。顔ぶれは初めてではないので当たり前ではあるけれど、なかなか居心地が良かった。自分はそこで開発中の鮮度くんの作業を進めた。もう少し形になったらQiitaなり別の場で発表しようと思う。そう言って「まだ発表できるクオリティでない」→「もうあれは自分の中で終わった」といういつもの流れでお蔵入りになったことが多々あるので、これもそのひとつに加わってしまうかもしれない。そうならないように気をつけよう。

充電は13%。お昼ごはんを食べを終わったらすぐに出る。

長文を書くことを目的として長文を書く。

ブログ作ってもそのうち面倒くさくなって書かなくなるんだろうな…と思っていたが、案の定書かなくなった。書き始めた時と比べて最近はイベントごとが起きなくなったかと言えば全然そんな事はなく、時間が取れなくなったかと言えばそんな事もない。日々刺激を受け可処分時間も(24-8)時間しっかり確実に取れている。それなのになんとなく優先順位が低くなってブログを書くのが途絶えてしまった。思えば子供の頃から作文を書くのが苦手だった。正確には自分を主語にした文章を書くのが苦手だった。今もそれは変わらず、己のプライベートを開示することにとてつもなく苦痛を感じてしまう。自分が生き生きと文章を書くことが出来るのは、自分ではなく第三者が主役のはてなブックマークくらいだ。しかしそうこう言い訳しても仕方がないので、この記事は質より量で5000字埋めようと思う。今この時点で400字にも満たない。思考をひたすら垂れ流して文字で埋めていくしかない。自分の引き出しはそんなに多く無いのだから。とりあえず、そうだ。今日のニュース。今日のニュースを眺めて所感を書く。それで埋めよう。それなら自己開示せずに済む。わざわざ自分で心の内を開示せずとも、何かに対する反応を集めていけば、勝手にパーソナリティは自然と浮き彫りになっていくもんだろう。そういうので良い。で、今日のニュース。北朝鮮がミサイル発射。しかも2発。…物騒ですねとしか反応しようがない。遺憾の意。政府の見解と相違はない。はてブに書く時は何を書くだろう。いつも選挙前にミサイルが飛んでくることについて茶化したコメントを書くかもしれない。でもこのブログは自分と紐づくブログだから、そういう安直な陰謀論は書きたくない。党派性みたいなものも極力見せたくない。あー多分そういう心のバリアーが自分をブログを書くことから遠ざけるいたのだろう。自分の同一性と紐づく場面では何も言えなくなる。匿名掲示板に長くいすぎたせいで、名無しさんでなくなった瞬間に何も言えなくなる。千と千尋の神隠しカオナシみたいなものだ。カオナシはカエルを飲み込んだ時だけ饒舌になった。素の自分では何も語れない。…この言説もどっかの受け売りだった気がする。気を取り直して次のニュース。新型Mac Book Proの発売。これは語れそう。新型Mac Book Proの売りと言えば新しいM1チップ。そしてMag SafeにSDカードに物理ファンクションキー。そろそろ 「買わない理由」は値段以外なくなってきた。仕事ではまだM1がちょっと怖いところがあるけれど、プライベートで使うぶんにはもう良いだろう。良いんだろうけど、最近はWindowsも魅力的に思えてきている。何よりWSL2。これのおかげで「開発目的ならMacが無難」というかつてのベストプラクティスが揺らいできている。Docker使うならMacじゃなくて良いじゃん。何ならWindowsの方がLinuxと親和性が高いまである。WSL上のUbuntuで「code .」と打ったらUbuntuに何も準備してなくても勝手にVisual Studio Codeがサーバーモードで立ち上がる。便利。こんなに便利ならもうこれからの開発は全部devcontainer前提で良いんじゃないかと最近は思ってる。だからいくらMac Book Proがハードとして魅力的でも、MacかーMacだよなーとなる。いや今一番触ってるOSはMacだし、自分がこれまで個人用として買ってきたハードもMacが一番多いから、別にアンチマックとかそういうものじゃないんだけれど、かつてほど「Windowsはダサい」という感情は抱かなくなっている。むしろそういう一昔前の認識でWindowsを評価しないことのほうがダサいんじゃないかと思ったりもする。…今やっと1500字くらい。5000字書くと書いていた箇所を修正して3000字にしようかと思ったが、ハードルをズルズル下げるのが自分の悪い癖なので、グッと我慢した。結果的に5000字書けなくたって構わないじゃないか。それを誤魔化して「最初から目標は3000字でした」と振る舞う方がよくない。だから目標は5000字のまま、結果的に3000字でもなっても良いというラインを今の所の落とし所にしたいと思う。辛くなったら無理はしなくていい。目標達成してもそれでブログを書くのが嫌になって二度と書かなくなったら本末転倒だ。というわけで次のニュース。『ヤフコメが中傷投稿を非表示に AI導入で新機能』。これ。はてなブックマークにも導入されている建設的APIというヤツでAIが質の低いコメントを自動で非表示にするらしい。どちらかと言うと極左リベラルな自分は表現の自由に対しては最大限尊重されるべしというスタンスなんだけど、Yahooニュースのコメント欄に関してはさもありなんという感想を抱いてしまう。これも党派性なんだろうな。自分が鼻をつまみたくなる意見こそ率先して守らねばならないのだけど、流石にあれは、ねぇ、と思ってしまう。こういうとこで自分という人間の懐の浅さが出るよなぁ。でもYahooニュースの中の人もそういう議論は散々やった上で「流石にこれは、ねぇ」と踏み切ったのだとは思う。「それは仕方ないよね」という判断の積み重ねで地獄に突き進んでいくのが世の常だというのが自分の持論で、このニュースからも若干その匂いがしないこともない。気を取り直して次のニュース。『元AKB店主の梅澤愛優香さん、「ラーメン評論家」はんつ遠藤さんを提訴へ』…これはあんまりコメントしたくない。いや、コメントしたい欲はあるけれど、この手のニュースに触れすぎると自分で自分を嫌いになってしまいそうな予感がする。同じ理由で小室圭さんのニュースにもコメントしたくない。次のニュース。『衆議院選挙 「必ず行く」56%』衆院選どうしようか迷ってる。行くには行くけど投票先。左寄りの自分としては宏池会に好意的な感情を持ってて、普段野党に投票してるけど今回くらいは比例か小選挙区のどっちかを自民にご祝儀で投票しても良いかな、と思いつつ、最近の岸田政権のトーンダウンぶりに「せめて選挙が終わるまでは期待抱かせてくれよ」と思わなくもない感じが無くもない。次。次のニュース。ない。無いので増田をネタにする。『電機業界で技術屋をしているんだけど、長期的に見て車の電動化が進むのは間違いないと思っている。そのうえで気になるのは、技術の普及タイミングってそんなに正確に見切れるかなという事。』この記事。そうだよなぁ。ビルゲイツが昔なにかのインタビューで「我々は方向性を間違えたことはない。間違えるのはタイミングだけだ」と言っていた。そうなんだよこれが難しい。今話題のアレとかコレを数十年前に先取りしていたものが実はありました~なんて話はよくある。任天堂が生き残りセガが退場したのはセガが未来を見誤ったのではなく、挑戦を続ける体力が無かったからに違いない。任天堂花札屋だけあってギャンブルの鉄則を理解している。無限に金があれば倍プッシュ戦略でいつかは絶対ギャンブルに勝てる。…あぁなんか思考が雑になってきた。疲れた。そろそろ3000字でキリが良いのでこの辺でやめよう。ここでちょうど3000字。はい、おしまい。

go getで案内している古いReadme.mdをgo intallに置き換えた

Go言語のお話。

これの対応を行った。

future-architect.github.io

昔はgo言語で作られたコマンドを自家製ビルドしてインストールするには

go get github.com/usename/reponame

のコマンドが使えたんだけど、go getの位置づけがライブラリ用パッケージマネージャに変わって来たので、コマンドインストールする用途は

go intall github.com/usename/reponame@X.Y.Z

こっちでやりましょうね…という流れになってきている。

という訳で、自分が作ったコマンドのReadme.mdの記述を全部置き換えた。

Railsチュートリアル終わった

自分は中の仕組みが分からない状態というのがあまり好きではなく、そのため重厚なフレームワークとは距離をとっていた。

でも実際こうやって体系的に学んでいくとその偏見は薄らいでいき、ベストプラクティスがある程度敷かれてる環境の良さが分かってきた。「実際このやり方で世の中のWebサービスの大多数は上手く回ってるよ?」の説得力は大きい。

中の仕組みが分からないと言っても、頑張ってRailsのソースを読めばその懸念は払拭できる訳だし、何も恐れる必要はなかった。人生損してたなぁ。まぁでも今気づけてよかった。

Github Codespacesを使ってみたメモ

Windowsにちょっと古いAnglarの環境を構築しようとしたところ、やれnpm 7.xは駄目だ6.x使えだとか、nodistはメンテされてなくてnpmインストールしようとするとエラーになるだとか、散々な目にあったのでGithub Codespacesに手を出してみた。

まずはローカルで

いきなりやっても上手く行かないだろうから、devcontainer(VS Code + Docker)の環境を最初に作った。

/.devcontainer/devcontainer.json を用意する。

VS Codeのパレットで

Remote-Containers: Add Development Container Configuration Files

を打つと各言語のテンプレートが選択できるので、Node.js & TypeScriptのものを選んだ。

{
    "name": "Node.js & TypeScript",
    "build": {
        "dockerfile": "Dockerfile",
        "args": {
            "VARIANT": "12"
        }
    },
    "settings": {},
    "extensions": [
        "dbaeumer.vscode-eslint"
    ],
    "mounts": [
        "source=hello-modules,target=${containerWorkspaceFolder}/hello/node_modules,type=volume"
    ],

    "remoteUser": "node",
    "postCreateCommand": "sudo chown node ./hello/node_modules"
}

変更したのは以下の箇所。

"mounts": [ "source=hello-modules,target=${containerWorkspaceFolder}/hello/node_modules,type=volume" ],

"postCreateCommand": "sudo chown node ./hello/node_modules"

これはnode_modulesをホスト側と共有しない設定。 自分はhelloの下にnode_modulesを置いてるのでこのような指定になっている。

これを指定しないと我慢ができないほど遅い。指定すれば我慢出来るレベルの遅さになる。

/.devcontainer/Dockerfile を用意する。

これはdevcontainer.json と一緒にできる。

ARG VARIANT="12"
FROM mcr.microsoft.com/vscode/devcontainers/typescript-node:0-${VARIANT}

RUN su node -c "npm i -g @angular/cli@10.2.3"

変更したのは以下の箇所。

ARG VARIANT="12"

テンプレートを作成する時にバージョン12を指定したのに、なぜかここは16で作られていた。 自分の理解が浅いためか、正直よくわからない。何を指定してもdevcontainer.jsonの設定で上書きしてくれるのだろうか。

追記:上書きされるみたい Dockerfile ARG入門 - Qiita

RUN su node -c "npm i -g @angular/cli@10.2.3"

angularをインストールしている。

空のプロジェクトフォルダを作成する

ここの手順は正直正しいのか自信がないが、先に空フォルダを作っておかないと権限周りで行き詰まった。

hello

VS Codeでコンテナを立ち上げる

VS Code の右下にある><みたいなアイコンをクリックして、Open Folder in Containerを実行する。 すると定義したDockerfileに応じたコンテナが起動する。

Angularのプロジェクト作成

コンテナの中で ng new hello といった形でAnglarプロジェクトを作成する。

自分はここで権限エラーに遭遇して苦しんだ。 コンテナを初回起動する前に先に空フォルダを作っておくことで回避できた。

npm インストール

プロジェクトフォルダに移動してnpm iを実行。

npm start

実行できることを確認。

githubにpush

push push

Github Codespacesを試す

Codespacesを有効にする

ここに行って「ベータ版を申し込む」を押す。

github.co.jp

Codespaceを作成

リポジトリページの緑色のCode▼のボタンをクリックするとCodespacesのタブが追加されてるので、そこからCodespaceを作成。

やってみた感想

とにかく権限周りで躓いた。

苦労してnode_modules周りを隔離しても、Windows + WSL2 + Dockerは結構重い。

Codespacesの方が断然軽かった…と思ってCodespaceのインスタンスの種類を調べたら、4core 8GB RAMだった。そりゃ速いに決まってる。個人の利用は今のところ無料だけど、本来なら1時間$0.36のプラン。1日8時間20日使ったら6000円くらいになる。まぁアリっちゃアリか。