ゴルゴ13、たまに依頼者に"お前のエゴじゃないのか?"みたいな内容のことを突きつけたりすることがあって、皮肉と思ってたけど(皮肉ではあるだろうけど)、住職みたいな見方でいくと、"たしかにそうでした"って己を恥じて依頼をとりやめるチャンスを与えているとも考えられそう。ゴルゴ13に関して何か考えてもそれが正解かどうかとかは特にないので、こういうことを勝手に考えては考えすぎだなって言っている。
NewtとNetlifyでブログをつくって公開してみる
新しいコンテンツ管理の体験 | ヘッドレスCMS「Newt」 というサービスが登場していて、全部用意されていそうだったので、ひとまずブログをつくって公開するところまでやってみた。
アカウント/スペースをつくる
https://www.newt.so/ からできる。登録すると、スペースを作成 → App を作成という流れになる。
スペースひとつに App 複数、というつくり。スペースに他の人を招待することができるので、スペースが人の集まり (会社とかサークルとか) に相当しそう。 App ひとつがブログひとつに相当するので、サークルの技術ブログと日記を分けてつくって、 1スペースで管理、みたいなことができそう。
スペース UID は、あとで API でアクセスするのに使うので、わかりやすい文字列にしておくとよさそう。
App をつくる
App はテンプレートからつくるのと、まっさらな状態からつくるのとで、 2種類のつくり方がある。その App がどういうデータ (モデルと呼んでいそう) を持つかを決めるのだけど、ブログっぽいモデルとか、メンバー一覧っぽいモデルとかがテンプレートとして用意されている。高速にブログをつくるならテンプレートから Blog とかを選ぶとよさそうだったのでそうした。
App UID もあとで API で使う。
画面をつくる
リポジトリの用意
App はコンテンツのデータがあるだけで、 API でアクセスして取得してくることができる。それを HTML に入れて画面をつくるとブログが完成する。
Newt 公式で画面のテンプレート (スターターと呼んでいそう) が用意されていて、これを使ってさっと公開してみることにした。
App に Blog2 のテンプレートを選んだので、スターターも 2カラムブログ GitHub - Newt-Inc/newt-blog2-starter-nuxtjs を選んだ。
まず GitHub にリポジトリがあるので、自分のアカウント (org) に fork する (右上に Fork ボタンがある)。
僕だと hogashi 以下にリポジトリができる (https://github.com/hogashi/newt-blog2-starter-nuxtjs) ので、ここで作業していくことになる。どう作業したらよいかは README に書いてあるので、それにそってやっていくと完成する感じ (実は Step 1 の 3 までが終わっている)。
Step 1 の 4 の CDN API トークンを作成する「スペース設定」はここ。「作成」を押したら作成できる。
Step 2 は、 GitHub 上でもできる。自分のリポジトリの nuxt.config.js をクリックして内容が表示されたら、右上の鉛筆から編集する。
README に書いてある通り、 publicRuntimeConfig
というところの スペースUID
AppUID
CDN API トークン
をそれぞれコピペで埋める。 CDN API トークンは、さっき作ったときの画面からコピーしてこれる。 commit changes すると変更完了。
公開
GitHub のリポジトリからコマンドを叩いて静的サイトをホスティングできるならなんでもよさそう、過去に Netlify (https://app.netlify.com/) を使ったことがあったので今回はそれでやった。
Add new site から、 Import an existing project を選ぶ (GitHub のリポジトリからつくるので)。 GitHub を選んで Netlify を GitHub に連携し、さっきつくった (fork してきた) リポジトリを選ぶ。
README によれば、サイトの生成は yarn generate
なので、 Build command をそう書き換えて、 Deploy site を押したらあとは待つだけ。
Netlify が頑張っている様子は Production deploys の一番上 (最新) をクリックすると見れる。 Deploy log というのがどんどん流れていくはず。
こういう感じになったら成功で、 Preview ボタンが登場するはずなので、それを押すと実際に公開されたサイトを見ることができる。
ためしに高速に作ってみるか、というのができていかにも便利そうだった。あと package.json に不要な末尾カンマがあって JSON としては invalid になっていそうだった (Netlify でエラーが出てそうだった) ので、 p-r を作ってみたところ、爆速でマージされていてありがたい。 https://github.com/Newt-Inc/newt-blog2-starter-nuxtjs/pull/7
■
Go 入門したいけど A Tour of Go とかも挫折しまくってる、しかし入門はしたいって会話をして、歯を食いしばって入門している。昔ほど新しいものがすんなり頭に入ってこなくなってしまっている気がする。
インストール方法はどれがいいのかわかっていない。 brew でも入りそうだけど、何かの拍子に .pkg で入れていたので、同じようにして最新の 1.17.8 にした。(後々 Download and install - The Go Programming Language に気づいたけど、見覚えがあるページだったので、これを見てそうしたのかも。)
簡単な cli ツールをつくって入門するつもりでいて、 Go CLIツールを作る とかを見ると GitHub - spf13/cobra: A Commander for modern Go CLI interactions がいいという話が出るので使ってみようと思って、 README を眺めると installing とか usage とかがあって便利。
しかし installing で go get -u
したり usage を一通り読んで main.go と root.go をつくったたりしたところで、 VSCode で何か怒られている感じだった。
could not import github.com/spf13/cobra (cannot find package "github.com/spf13/cobra" in any of /usr/local/go/src/github.com/spf13/cobra (from $GOROOT) /Users/hogashi/go/src/github.com/spf13/cobra (from $GOPATH)) compiler(BrokenImport)
自身の cmd/ も import できないらしかったけど、それは ~/go/src にないからということだったので、 ~/ghq から自身を移して参照できるようになった (ghq.root に ~/go/src を追加したけど ghq list に出なくて困っている)。これでも cobra は引き続き参照できていない。
ところでどうやって実行するのかと思って How To Write Packages in Go | DigitalOcean とかを見ると go run main.go
っぽいことがわかってやってみたけど、 go.mod がないので help を読んでねとのことだった。
$ go run main.go main.go:4:2: no required module provides package github.com/hogashi/trim-head-space-cli/cmd: go.mod file not found in current directory or any parent directory; see 'go help modules' $ go help modules Modules are how Go manages dependencies. A module is a collection of packages that are released, versioned, and distributed together. Modules may be downloaded directly from version control repositories or from module proxy servers. For a series of tutorials on modules, see https://golang.org/doc/tutorial/create-module. (後略)
Tutorial: Get started with Go - The Go Programming Language を見ると、まさに一通りパッケージをつくって動かすチュートリアルが載っていた。 go mod init
すると go mod tidy
してくれって出て便利。しかし cobra は見つけられているものの自身を見つけるのに (というか download に?) 失敗していそう。download しているとすれば github からだと思うけど、まだ何も push してないからかなと思ったけど、ここまでのファイルを push しても (すでにダウンロードしてしまっているからか) ダメだった。
$ go mod tidy go: finding module for package github.com/spf13/cobra go: finding module for package github.com/hogashi/trim-head-space-cli/cmd go: downloading github.com/hogashi/trim-head-space-cli v0.0.0-20220305043848-94d507708df9 go: found github.com/spf13/cobra in github.com/spf13/cobra v1.3.0 go: finding module for package github.com/hogashi/trim-head-space-cli/cmd hogashi/trim-head-space-cli imports github.com/hogashi/trim-head-space-cli/cmd: module github.com/hogashi/trim-head-space-cli@latest found (v0.0.0-20220305043848-94d507708df9), but does not contain package github.com/hogashi/trim-head-space-cli/cmd
go help mod tidy
とかしたけどキャッシュを使わないみたいなオプションはなさそう。 ~/go/pkg/mod/ にあったのを発見したので消してみた (ディレクトリの権限が 555 になってて sudo しないと消せなかったけどそういうものなのかな……) けどダメで、 ~/go/pkg/mod/cache にもあるのを発見して消したけどダメだった。多分こんなことはしないはずだから何か手立てがあると思うんだけどわからない。
十分素朴だろうと思っていたけど、もっと素朴に、自身のパッケージを import しないようなものを書いてみたら良い気はして、一旦全部消して自前でやることにした。
なんとなく書けたし go run .
できたので push して go install
してみようとしたら、 go.mod の path がおかしいと言われていそう。
$ go install github.com/hogashi/replace-head-space-cli@latest go: downloading github.com/hogashi/replace-head-space-cli v0.0.0-20220305065459-102f3c0c0505 go install: github.com/hogashi/replace-head-space-cli@latest: github.com/hogashi/replace-head-space-cli@v0.0.0-20220305065459-102f3c0c0505: parsing go.mod: module declares its path as: hogashi/replace-head-space-cli but was required as: github.com/hogashi/replace-head-space-cli
上のほうで見てたチュートリアルにならって hogashi/replace-head-space-cli ってしてたけど、 go mod init
で勝手に書かれる内容に直して push した。もののまだダメで、 go clean
とかあるらしいことがわかってやってみたけど依然としてダメそう。どこにキャッシュされているのか、あるいは直す場所が違うのかわからない。
バージョン番号をちゃんとつけたらひとまず新しいものを取得できるはずと思って、 Publishing Go Modules - The Go Programming Language を見て git tag をつけて go install
したら、 latest ではダメ (依然として v0.0.0 を取得してそう) だったけど、 v0.1.0 を明に指定したらちゃんとインストールできた。自前の cli ツールがインストールできるようになって便利。
つくったのはこれで、行頭の空白文字 (タブと全角空白) を半角空白にそろえるツール。
■
何かの拍子に一瞬目が見えなくなった話題を見かけて、ちなみに今目が見えなくなったらどうするといいのか、と考えていた。固定電話もなく、携帯電話はスマートフォンとなった今、覚えている電話番号にも手で電話を掛けることは困難そう。音声入力はあるけど、普段 Google Assistant は英語の設定にして使っているので、日本語の名前が入った電話帳を呼び出すのは難しいかもしれない。 PC の前に座っていたら、キーボードは手で叩けるけど、家族や友人につながる連絡手段は LINE かメールくらいだから、 Gmail が開けて tab で移動とかしてなんとかメールを出せたらなんとかなるかも (メールで返信されると見れないけど、電話を掛けてもらえば取れはしそう)。よく開くツールであるところの Twitter や Slack を開けても、誰かに何かしてもらえることは少なそう (会社の Slack なら人事の方などに伝わってなんとかなるかも)。
災害への備えという話題はよく聞くし、大事さは (それなりにでも) わかっているけど、体の不調の中でも得る情報の大部分を担う目を失ったときにどうするかわかっていないことがわかった。雑に「目が見えなくなったら」とかで検索しても、備え的なページはあまり登場しなさそう。早めに医者にかかってくださいみたいなサイトはあるので、素朴に救急車を呼べるといいのかな、とも思うけど、 Google Assistant で緊急通報はできないらしいので、目を閉じてロック画面から手で緊急通報する練習をしておけるといいかもしれない。しかし実際にかかってしまうと困るわけなので、精度を高めるのは難しそう(ネットワークを切ればあるいはできるかも?)。
通話できる相手
Google アシスタント デバイスで電話をかける - Android - Google アシスタント ヘルプ
重要: 緊急通報は行えません。
■
携帯も PC も画面を黄色めにして(色温度を下げて?)暮らしていて、眼鏡にもブルーライトカットで黄味がかかっている。携帯で写真を撮ったりすると、眼鏡を通した被写体、携帯の画面に出る写真、家に帰って PC で見た写真など、被写体を裸眼で見るとき以外は黄色めにものを見ていることになる。ただそれに慣れると、実際の色がこれくらいだろうというのはわかってきて、日々の暮らしでは特に支障がない。たまに、これは実際の色をちゃんと見たい!となることはあって、そういうときだけ画面を元に戻すのだけど、本当に慣れきっていたらそういうことは思わないはずで、裸眼でものを見ることもあるからか、黄色めを基準にした相対値ではない、絶対値で色を認識しているようで面白い。
カルノー図思い出してる
コードを書いていて、あっちとこっちは同じことを表そうとしているのでは? というのに気づくたびに、カルノー図を思い出している。餅のときと酢飯のときにやりたい処理なら、つまり素材が米のときにやりたいことなのでは? みたいな感じ。
カルノー図 - Wikipedia