半空洞男女関係

思ったこととかプログラミングしてるときのメモとか色々かいてます。メールはidそのままgmail

表面的な部分に惑わされない

自分は去年にgolangを始めたのだが、だいぶ面白かった。golangそのものは登場してからすぐ試したりはしていたが、 := といった構文や、型を後ろにつけるスタイル、classがなくstructでよしなにやっていくスタイルなどがなんだか気持ち悪いな、と感じてやめてしまったのを覚えている。あの時もう少しgolangをやっていたらよかったかも、と感じていた。今回も同じような気持ちになった気がしたのでブログが書きたくなった。

TIL: componentDidCatch

TypeScriptでReactを書いていて、エラー処理を知りたいなと思って調べていたら、 componentDidCatch というものを知った。これと getDerivedStateFromError をうまく使えばError Boundaryといって、子Componentのエラーをキャッチして、そのComponentの代わりに他のコンポーネントを出したり、エラーログを送信するような仕組みが作れる。

Error Boundary – React

TIL(2): Susprese

なるほど便利だ。と話していたら、こんなのもあるよ。と id:EBAGmasa に教えてもらった。

ReactのSuspenseで非同期処理を乗りこなす

Suspense は簡単に言ってしまえば「ロード中...」といった非同期処理中にやってあげたい処理を簡単に書ける仕組み。もう少し抽象的に書くと、データの取得と、その状態による動作を分けることができるものと思ってる。これを使うための構文が一見とても奇妙なものになっていることが気になるポイントだった。Promisethrow するのだ。 throwError のために使うものじゃん!?と思っていたから、受け入れがたかった。わかるよ。わかるけどねー。。という気持ち。(詳しくは↑の記事を読む。 wrapPromise の部分)

Algebraic Effects

なんじゃこりゃーと友達とdiscordでわいわいしていたら、 id:progfay がoverreacted.ioのこの記事を教えてくれた。

我々向けの Algebraic Effects 入門 — Overreacted

ReactチームのDanさんの記事で、Suspressの背景を詳しく説明してくれている。Suspressは、Algebraic Effectsというものからインスピレーションを受けたものだった。この記事の中には、何度も繰り返し「見た目に惑わされるな」という文章がたくさん出てくる。

構文自体は大事ではありません、ひとまず概念の表現として必要なものを考えてみただけです。

もう一度いいますが、具体的な構文や特殊なキーワードはあくまでもこの記事専用のものです。そこが問題ではなく、重要なのは仕組みの方です。

(そう、Promise が throw されるんです!心で理解してください)

すいません。すいません。と思いながら読み進めると、背景がよく理解できて面白い。Algebraic Effectsそのものはよくわかっていないが、本当にやりたいのはこういうところなのだと感じた。

Algebraic Effects は JavaScript のようなちっとも純粋ではない言語にとっても、非常に強力な形で「何」と「どうやって」を分離する道具になりうるということです。

謙虚に前置きをしながら、何をしたいのかを説明してくれる。

これは Algebraic Effects それ自体ではありません。この仕掛けはそこからインスピレーションを得たものですが、別物です。それでも同じ目的を達成します。つまりコールスタックの下の方にいるコードが、コールスタックの上にいる何か(ここでは React)に後を譲る際、間にいる関数はそのことを知らず、また async やジェネレータに「感染」しないようにするということです。

この段落はさらにここからが面白い。

もちろん、JavaScript で実行を後から再開することなど本当はできないのですが、React から見ると、Promise が解決した時に再レンダリングをするというのはほぼ同じようなものです。プログラミングモデルが冪等性を前提にしているからこそできる芸当です!

自分が冪等性ということを意識したのはReactを始めてからだと思うけど、その冪等性を守ってきたことで、こういったアイディアを取り入れることができるようになったというのはグッとくる話。(詳しい人には当たり前かもしれないのだが。。。)きっとコンピュータサイエンスの研究者の間では、昔から研究されてきたことなのだと思うけど、それがようやくみんなが使えるレベルまで落ちてきつつある、というのは部分が面白い。overreacted.ioの記事を読んでいてさらに興味深いのは、Algebraic Effectsそのものを実装しようとするというよりは、そのアイディアを拝借するという点。

ちょうどDanさんがこんなツイートをしてましたが、まさにこんな感じなんだろうなと思う。(左下からは「複雑すぎる」右の人からは「全然なってないよ」)

おまけ

実は、公式のドキュメントにはthrowなんて一言も出てないのでした。デモ用のサンドボックスには記載がある。

サスペンスを使ったデータ取得(実験的機能) – React

実際は、データフェッチのライブラリとかを使っていくことになるのかもしれませんね。それでも、こういう内側の概念を知っておくのは重要に感じた。

銀の弾丸

昨日書いたブログにも繋がるかもしれない。マニフェスト掲げたところで実行するのは現場だし社会であるという。

改善は泥臭い。MVPで表彰されたあの人も、その人も、半期でサッとやった訳ではなくてそこまで積み上げてきた誰かの成果だったり、その人の長い努力だったり、タイミングがあったりする。

今では素敵なソフトウェア開発をしているどこかのチームだって地道な改善を少しずつ進めて、うまく行った結果、あそこまで行っている。という価値観でやっている。進みはのろい。

Raft

Raft Consensus Algorithm

Redis Labs、強い一貫性を保ちつつRedisを高可用クラスタ化する「RedisRaft」発表 - Publickey

Raftは知らなかったけどこういうOSSがあるんだなー。Apache Arrowを思い出した(ちょっと違うけど)

都知事選2020

今日は我々都民の知事を決める都知事選の開票日だった。感染症とかの懸念もあるので期日前投票に行こうと思っていたんのけれども、日常が忙しくて時間をとって情報収集することができず、それでは票を入れる人を決められないため、今日までだらだらと引き延ばすことになってしまった。

結果としては、自分が投票しなかった現都知事の小池さんが圧勝ということになった。ただ、自分は実のところ小池さんがすごく嫌なわけでもなかった。今の自分にとっては特に悪影響があるわけでもないし、確かに振り返ると公約は果たしてないし、切り込んで欲しいところには切り込んでないものの、まあまあそれなりにやってるんではないのという印象だったからだ。インターネットの人はそこそこ現都知事に対して怒っている。怒っている原因を調べるとまあ確かにそうかもしれないと思うし、こういった言動をする人が知事なのはどうなのかと思う。しかし他の候補者もなんだかな。というやりとりをしている場面を都知事選中見ることもあって、結局誰がイイんですかねー。と悩む選挙となった。(これだと、言動で判断してるようにも見えるな。ちゃんと政策とかも眺めてますよ)

この都知事選を通して、今の住んでいる社会のことを自分は全く知らないなと再度実感した。もう20代半ばなのに。実際のところ4年間小池さんが何していたかよく知らないし、数字で振り返ろうと思っても全くわからない。行政サービスや政治がどうなって欲しいか、自分の住む地域がどうなって欲しいかさえも、あまり頭の中にないことがわかった。こういった状況では、数年に一度、政治家が都合の良いことを言っているのに踊らされるだけになってしまう...。(一応、自分の頭で考えて「それは現実可能なのか?」など考えたりはしているけど。)とはいえ、よくよく考えてみれば行政にフィードバックする方法は選挙だけではない。日々行政に対してフィードバックしていくことができる。もっと行政や政治と関わった方が、よっぽど建設的だと感じた。選挙だけではだいぶ表面的なところしか見えてこないと思う。

ここ数ヶ月で副都知事の宮坂さんTwitterで知って、情報技術に見識深い人が副都知事に入っていることを知った。(副都知事にそういう人が入ったことを知らなかった。恥ずかしながら。)COVID-19が拡がっていって、市民がオープンなデータを活用してWebサイトを作ったり、接触検知のアプリを作ったりしているのを見ながら、こういった活動にも興味が出てきていたところだった。Civic Techというのは、行政と関わるための良い入り口になるのかもしれない。

Wikipediaで調べたら、宮坂さんを副都知事に起用したのは小池都知事だったらしい。

同年9月に小池百合子東京都知事により、猪瀬直樹以来となる民間出身の東京都副知事への起用が提示され[11]、同年9月10日、東京都議会の同意を経て20日付で東京都副知事に就任し[12]、Society 5.0施策の推進、5G施策の推進、東京の成長戦略及び働き方改革等の都政改革に関する助言を担任事項とした[13]。

宮坂学 - Wikipedia

出来る限りの範囲で、行政と積極的に関わり合いながら生活できると良いなと感じたという話でした。(本当は、関わらずにはいられないはずなのだ。)


最後に書いたブログ記事はちょうど一年前のものなのだが、そろそろブログを再開したいなと思って数週間、ちょうどブログに書きたいネタを思いついたので書いてみた。全然うまく書けないけど少しずつ書いていきたい。