バベルの図書館は完成しない

Extended outer memory module
for my poor native memory.

Posts:
2020/09/28 gendoc という YAML からドキュメントを生成するコマンドを作った
2020/09/13 ISUCON10 の予選を 7 位で通過した
2019/12/01 Puma の内部構造やアーキテクチャを追う
2019/05/27 Golang の正規表現ライブラリの処理の流れをざっくり掴む
2019/04/29 InnoDB の B+Tree Index について
2019/04/29 InnoDB における index page のデータ構造
2019/04/28 InnoDB はどうやってファイルにデータを保持するのか
2019/01/06 Designing Data-Intensive Applications を読んでいる
2019/01/03 年末年始に読んだ本について、など
2019/01/01 Ruby から ffi を使って Rust を呼ぶ
2018/11/10 ブラウザにおける状態の持ち方
2018/07/01 Rust で web アプリ、 或いは Rust における並列処理
2018/05/14 なぜテストを書くのか
2018/05/13 Rust で wasm 使って lifegame 書いた時のメモ
2018/03/12 qemu で raspbian のエミュレート(環境構築メモ)
2018/03/12 qemu で xv6 のエミュレート(環境構築メモ)
2018/03/03 Ruby の eval をちゃんと知る
2018/02/11 Web のコンセプト
2018/02/03 Rspec のまとめ
2018/02/03 Ruby を関数型っぽく扱う

view テンプレート

僕はもっぱら仕事で rails を書いているが、一向に rails の view テンプレートが好きになれない。 html を生成したいのに ruby の世界から触ろうとしているから不思議な構造になっているというのが一番大きな理由だと思っている。理解しきれていないヘルパーもまだあるだろうし。しかしこれは ruby 以外の様々な言語においても発生していることだろうし、 DSL によって html を生成するか、文字列として扱って頑張るかのどちらかしかない気がしているので、どうしようもないことかなあ。 Jekyll のマークダウンの書き方とかも気持ち悪いし全然好きじゃないんだよね。逆に生の html は冗長だけど納得はできる作りなのであんまり苦じゃない気もする。つらい。

で、話は view テンプレートに留まらず。一対多の関連のモデル同士があった時に、親リソースから子リソースたちを作りやすくするように view を拡張してくれる cocoon という gem があるが、これも同じくというか、これに関しては view テンプレート自体よりも格段に好きになれない。

こっちの理由は自分の中では明確で、(おそらく)汎用的な API を目指したが故に、やりたいことに対して意図の見えづらい使い方を押し付けられているという点だ。

そもそも親リソースに対して子リソースたちが関連しているデータ構造では、情報の更新の際に子リソースたちの差分管理という概念が必要になる。どれが増えて、どれがそのままで、どれが減ったのか、というのを管理するのは少し難しいと思う。なおかつ、js をないものとした場合、入力に対して要素を動的に変化させることも難しい。

この辺りを解決してくれているという点では評価すべきものだと思っているが、いかんせん API がよくないのではないかという気がしている。とはいえぐちぐち言ってても仕方がないので、自分が作るんだったらどうするか考えて、それでまた評価を決めようと思う。もしかすると数日後には大好きになっているかもしれない、とはいえそういうことはよくあることだし気にしないでいいかな。理解できてないものに嫌悪感を覚えるのは恥ずべきことだけど同時に自然なことのような気もするし。うん、とりあえず現時点では全然好きじゃないってことで。

2018/11/14 23:44
tags: minipost
This site is maintained by furuhama yusuke.
from 2018.02 -