daily ojisan

やりたいこと全部やりたい

2020年2月22日

余裕できたので書くぞ〜〜〜無職は延々とドックフーディングできて最高という気持ちになった。

👨‍🔧バイト1: デプロイする人1

ちょっと前から手伝ってるモバイルWebアプリの開発。デプロイで詰まっていた。S3にホスティングするのだが、実はS3でWebアプリを公開するのが初めてで色々手間取った。NextJSから静的ビルドしたものをホスティングするのだが、ルーティングがうまくいかなかった。いわゆる /signin には繋がらなくて /sign.html にしたら繋がるが、リンクは *.htmlに貼られていないというやつである。これが、S3(もしくはCF)の問題なのか、NextJSのexportsの問題なのかが分からなかった。Netlifyだとrerloadの挙動を記述できるファイルがあってそれを書けばよいのだがS3でのデプロイは初めてだったので苦労した。

さらに厄介だったのがSafariだけ繋がらないという問題で、クッキーがつかないという問題で悩んでいた。それが原因で延々とsigninにリダイレクトされ、.htmlがなくてエラーページという流れになり辛い思いになった。これはSafariは同一ドメインからしか認証が通らない制限があってのことで、そのことを忘れていてバグを踏み続けていた(1週間は有効っていう話と混同していた。)。なのでAPIサーバーと同じサブドメインから入ることで解消できた。

普段はPCChromeで開発していて、今回のはスマホ専用のWebアプリでSafariでの疎通を早い段階でするとなったので踏み抜いてしまったバグだった。スマホWebの開発体験を上げるためにもちゃんと疎通テクニックをまとめようと思った。今日1日でだいぶん学んだ。

🖥趣味プログラミング: Nextjsコードリーディング

上の問題があって、その原因の切り分けも兼ねてNextjsのコードを読んだ。最初は next build と next export した結果を比較しようとしていたのだが、動的に差し込まれまくる webpackの断片が意味わからなさ過ぎて断念。CLIツールの中を読んで、どういう生成をしているのかを追っていった。結局、build/index.tsやexport/worker.ts というファイルが本丸なのだなと分かった。build/index.tsは結局は諸々の設定を受け取ってreact-domのSSRモジュールを呼び出して、JSXをHTMLに変換していて、その前にいろいろな設定をしていた。が、その設定はよく分からなくて、webpackの関数を呼び出したり、そのwebpackは独自のbabel-loaderが挟まっていたりでちゃんとは追いきれなかったがこの辺がファイルの分割やdyanim loadを担っているんだなってことはなんとなーくは雰囲気は感じ取れた。読んでみてフレームワークというよりコンパイラだなという認識を持った。時間さえかければ読み解いていけそうと楽観的に考えている。

##2020年2月15日

🖋技術書典の準備 実は1文字も書いてないw 紙で出さない & 草案は書いてる ので舐めプしていたが流石にやばいので本気出してる。落ち着いたら日報書きます;;

2019-02-13_日報

📚読書: プログラミングの基礎

9章の写経していた。レコード・リストとパターンマッチが入り乱れたソースコードに対して苦手意識がなくった。振る舞いを''宣言''しているんだと意識を改めると途端に苦手意識がなくなった。試しにReasonMLのコードを読んでみたんだけど、どういう処理をしているか説明できるようになっていたので嬉しかった。(型引数はまだよくわかっていないが、それも後の章で説明があるので安心している)

💻趣味プログラミング: Contentful 日頃のTILだけをまとめたページを作ろうと思い、ちょっと前から技術ブログを作ろうと思っていた。で、一度は挫折したContentfulでサクッと作っていた。Contentfulなのかgatsbyのプラグインなのか原因は分からないが、登録したデータモデルをGraphQLで引っ張ってこれないという問題にはまっており苦戦した。適当な空データを登録したら治ったので、どうやらツール側のバグみたい。

またGatsbyもdotenv系のツールいれなくても環境変数を引っ張ってこれると説明はされているものの現実はちがうようで苦戦した。 https://www.tomawari.com/2019/09/gatsby-env-undefined/

💃飲み会 前職の先輩に壮行会ということで銀座の鮨に連れていってもらった。止まっている鮨を初めて食べた。しあわせ・・・

2019-02-12_日報

👨‍🔧バイト: videoタグ職人

動画の閲覧機能みたいなの作ってた。その中で動画一覧を全再生するみたいなのを作る必要があり、ちょっと苦戦した。

videoタグが持ってるplay()などはrefからしかアクセスできず、動画ごとにrefを作ってそれを再生位置などを調整しながら複数件同時再生させるみたいなのが大変だった。

あとemotionを使っているのだが、refをそのまま渡せなくて苦戦した。同様のことはs-cでもv3系ではあり、いわゆるrefではなくinnerRefを渡せってやつで、innerRefのことをすっかり忘れていてどハマりしていた。もともとrefは苦手意識があるので何が悪いのかの検討をつけるのに時間がかかった。

ちなみに何気にvideoタグをproductionで使うのは人生初

🖥趣味プログラミング: 環境構築

やっとVimの環境できた。Vim8 + CoCがうまくいかなかったので、結局NeoVimを入れた。設定そのまま引き継げたので楽チン。

次はDockerコンテナで動かすようVimの設定を書く。最近は本の写経ばかりしていて、環境差異をなくすためにコンテナで写経しているのだが、コンテナの中で作業するようにしているので、そのときの開発体験を向上させたい。

📚読書: Real World HTTP

Vimの環境できたので、vim-goとCoCでGoの環境を作って写経していた。この本は実装パートがあるのでそこを集中的に攻めた。この本はgolangでクライアントを書いていくのがメインなのが、HTTPの勉強はサーバーも書かないと良くわからなんなという気持ちになったので、Statusコード全部返せるまで帰れまてんみたいなことをやろうかなって考えていた。

とりあえず読みたいところは全部読んだので次何読むか悩んでる。せっかくGoの環境を作れたので、自作インタプリタの本やろうかなと思ってる。(ASTの勉強している時に途中までやった。そのときは実践でやることにして途中で読むのを切り上げている)

2019-02-10_日報

🖥趣味プログラミング: Contentful 父ちゃんな、JAM Stackで食っていこうと思うんだ。Gatsbyでコンパイル時にコンテンツ化できるバックエンドの技術選定をしていた。Contentfulはよく聞くので試してみたが、設定がめんどくさかったりmdで開発するのと手間があまり変わらなかったので、採用は見送った。GitHubのIssueをCMSにしようと考えている。

🖥趣味プログラミング: Vimの設定 シェル周りの設定はやりきったのでVimの設定している。本丸のエディタはVSCodeなのであまり時間をかける理由はないが、CUI環境に慣れたいので設定している。

CoCの導入で詰まっていた。Vim8じゃなくて大人しくNeoVim使った方が良いのかな的なこと考えてる。

💃飲み会 前職同期と飲んでた。来た人の半数が退職済みだった。退職の理由聞かれて答えるのはやっぱり慣れない(働きたくない以外の理由がないから)

🎮ゲーム: テイルズオブゼスティリア

多分終盤まで進んだ。訳があって攻略サイトなど見てないからどう着地するかが分かっていない。

📚読書: プログラミングの基礎 7, 8, 9章読んでた。OCamlのデータ構造の話が主で、組・レコード・リストを学んだ。写経しているのでパターンマッチには慣れてきたが、レコードの挙動はあまり慣れない。すでにtypeで型を宣言していれば、レコードを作った時に紐づいていくれるというのが慣れない。そしてそのあとに同じフィールドを持つ型を宣言したあとにレコードを作ると、後に作った型に紐づくというのも慣れない。同一のフィールドを持つ型はひとつしか存在できないということなのだろうか。仮にそうであるなら2回目のtype 宣言でエラーになってほしい。調べ方が悪いからだろうが解説も見当たらなくてうろうろしていた。とはいえこの本を読むにあたっては関係のないことなので先に読み進んでいく。

📚読書: Real World HTTP 7章読んでた。6章の実装をやろうと思ってたけど、まとまった気力が取れなかったので飛ばして先に7章を読んだ。

7章はHTTP2の内容だった。「HTTP1は6本しかコネクション貼れないけど、2は無限ã�