2023-01-02
lume との格闘
Table of Contents
やったこと
- lume と格闘していた
- 散歩とドライブをした
- 本を読んだ
lume の理解が深まった一日だった。 生活習慣が壊れかけなので、なんとか矯正する必要がある。
lume で型付けを頑張るのはしんどい
PCを触っていた時間のほとんどが lume との格闘だった。昨日も書いたけど、JSX (TSX)使いからするとこいつは型付けがしんどいフレームワークといえる。lume の API は Nunjucks などのテンプレートエンジンからみた easy さに最適化されている印象で、これをTSの世界から扱おうとすると結局 lume のソースを読んで内部実装を考えながら型の整合性をとることになる。これではTSが全然活きない。
特にページを操作するような機能ではこの傾向が顕著で、ページの境界やページ生成の処理を書くときはかなり気持ちの悪い型付けを頑張る必要がある。 トップページの一覧機能を実装するために Search や Paginate をTSで使おうとしたら大変だった。自作自演の型付けをすることになるし、その労力によって得られるメリットは時間が潰せることくらい。暇人用の苦行コースである。
「ただ使える」ことと「メンタルモデルと合致している」ことは別なんだと再確認する機会だった。進捗はダメでも学びがあったのでよしとします。
型付けに挫折した敗北者こと俺は結局どうしたかというと、一覧機能ページに Nunjucks くんを登用。ライブラリの Author が喜びそうなコードを書いて very easy に一覧機能を作成!最初からこうすればよかった!途中で萎えてクソ適当なマークアップとスタイルにしちゃったし!やる気がでたら直します!
lume の絶対パスの設定がわかりにくかった
GitHub Pages にデプロイすると、周知のとおり domain/repository-name/
にコンテンツが配置される。このとき、絶対パスで指定している情報(トップページへのリンクや、一覧ページから各ポストへのリンクなど)が
domain/repository-name/path とならず domain/path
として生成されてしまい、Pages
上で実際のコンテンツとリンクに不整合が起きる問題があった。
一応 ドキュメント
にしたがってlocationの設定をしていたのだけど、どうもこれが読み込まれていないようだった。
バグか?と思いながらlume本体のコードを読んでいて判明したのは、この location
の設定は Base path
というプラグインと併用するものだということ。プラグインの方にはそれっぽいことが書いてあるけど、本家
location
のほうには曖昧な記述しかない。これはさすがにドキュメントが悪いと思う。コントリビュートチャンスかもしれない。
気になった記事
- 2022年に使った技術・作ったもの・書いたものまとめ
- 具体的な内容とあまり関係ないんだけど、何かを作るための道具として技術に淡々と向き合っている感じがいいなと思った。プライド持って変に擦れてない感じがかっこいい。
- どうして自分を過小評価するのかと言われた話
- こういう話ってなんだか言語化するのが面倒なので、そのへんの感覚が書き出されている良い記事だと思った(何様)。
- Deno に“守り”のコントリビュートをしてきた話
- OSS、自分はどうしてもIssue単位やパッチ単位の局所的な視点ばかりで見ることが多いので、プロジェクトの行く先を考えながらコントリビュートやメンテしてる人、本当にすごいと思う。たくさんお金をもらってほしい。
昨日に引き続き、また書きすぎた。