golangでYAMLで動的型

仕事の愚痴です
0
(change of )*state @TuvianNavy

あ~あ、役所に出す書類を作るのって何でこんなに辛いんだろう

2019-09-19 21:13:50
(change of )*state @TuvianNavy

場合によっちゃ本籍とかいうすごいアクセスコストの高いリンクリストを辿らされる

2019-09-19 19:47:03
(change of )*state @TuvianNavy

あと印鑑登録証明書とかいう失効するトークンの取得処理のレイテンシほんとつらい、

2019-09-19 19:43:37
(change of )*state @TuvianNavy

役所の書類とか不動産屋の書類とか、すごく有能な担当者だと付箋と鉛筆で記入箇所を明示してくれるけど、たとえばYAMLで与えられたマニフェストテンプレートのどこを書き換えたらいいのかってあんまりわからない(計算機に渡すときに付箋をつけ鉛筆で囲むのが自分のしごと)

2019-09-17 15:55:52
(change of )*state @TuvianNavy

この手の官僚的なシステムのためのフォーム埋め(PHPでのHTML生成だろうが、JSONツリーの書き換えだろうが)、計算機にやらせる仕事として本質的じゃないって思う向きが多数だろうし実際全然ありがたみもないけど、自分は「計算」の抽象的な理解の果てに人間がやろうとしてるのは結局これだと思う twitter.com/TuvianNavy/sta…

2019-09-18 16:56:48
(change of )*state @TuvianNavy

官僚的な書類の根拠は行政手続き上の妥当性であって、法の規定から項目を演繹できない、つまりありきたりの申告書の型はダックタイピングせざるを得ない twitter.com/TuvianNavy/sta…

2019-09-19 19:09:41
(change of )*state @TuvianNavy

実印を要求するか、マイナンバーを要求するか、金額はどのような制約を満たすか、シャチハタは許容されるか、修正申告が規定されているか、等々

2019-09-19 19:15:14
(change of )*state @TuvianNavy

EdibleとかWearableみたいなよく参照するトレイトと違って毎回脳のキャッシュに読み込まないといけない

2019-09-19 19:30:41
(change of )*state @TuvianNavy

たとえば弥生やFreeeのように限られた数の書式を扱う場合は書式の型は演繹せずに完全に構成的に扱えるが、我々が毎回うんざりしてる少なくない割合はこの型推論

2019-09-19 19:21:06

この場合行政書式のダックタイピングを行っているのは記入する人間だけど、例えば毎年微妙に仕様が変わる場合に毎年の書式に厳格にマッチした型定義をすることは望ましい対処方針だろうか?

(change of )*state @TuvianNavy

ああGolang書きたくないよーー

2019-09-10 09:42:22
(change of )*state @TuvianNavy

短いんだけど面倒なものばかり書く必要に迫られてる

2019-09-10 09:44:13
(change of )*state @TuvianNavy

golangのInterface型の扱いに嫌でも詳しくならざるを得ない状況。産業Haskellとか言ってるのはこれのもっと酷いやつか。。 VB6/VBAの人にはvariant型の話ですよと言えばたぶん通じる

2019-09-05 11:10:54
(change of )*state @TuvianNavy

golangってクラウド時代のVB6だよなあ

2019-09-18 09:19:01
(change of )*state @TuvianNavy

go vet go run go fmt を繰り返してると、Turbo Pascalの偉大さを25年遅れ位で追体験してる気になる もちろん厳格な1-passコンパイラだとシンボルの後方参照すらできないんだけど、今の時代でこれに対応する制約ってなんだろ、

2019-09-21 21:31:38
(change of )*state @TuvianNavy

golangのinterface{}とCOMのIUnknownって似ているというか、昔のC++が言語単体では面倒みれなかったところがgolangでは型システムに入っているわけで そして言語エコシステムの設計的にIDispatchに相当するものは入れられない これencoding/yamlを理解したらgolang詳しくなれるってことだよなあ twitter.com/TuvianNavy/sta…

2019-09-06 12:44:35
(change of )*state @TuvianNavy

訂正:encoding/yaml→gopkg.in/yaml.v2 アノテーションで `yaml:` と書くべきとこで `json:` と書くと何が起きてるのかしばらくわからなくて楽しい twitter.com/TuvianNavy/sta…

2019-09-12 07:00:13

yaml.v2でパーズしているのでStructTagにjson:~とか指定しても意味ないですが、自分ではyaml:~と書いてるつもりで、そこのフィールドに(StructTagを無視して)ちゃんと値が取れていること「も」あるので(つまり時々失敗する)困惑しました、皆も気をつけてね

(change of )*state @TuvianNavy

golangのStructTagって何かに似ているなーと思ったら、埋め込みSQLとかか まあ巧緻の極みみたいなマクロやむやみに高階なメタ計算だけではないところがポイントなのか

2019-09-12 07:17:04
(change of )*state @TuvianNavy

実質的にはIDLを埋め込んでるようなもんだよね

2019-09-12 07:21:34
(change of )*state @TuvianNavy

広義のOR mappingが必要なところではどこでも非衛生マクロとかメタプログラミングが暗躍するので

2019-09-12 07:55:50
(change of )*state @TuvianNavy

プリント基板にVccだのGNDだのパターンで描いてあるようなものかも、電気回路としてはつながないと機能しないし、ただ、それを適切な先につなぐところまでは基板を作った人は制御できない

2019-09-12 07:29:12

OLE Automation (COMのIDispatchによるLate Bindingの実現) と Visual Basicのvariant型はVisual BasicをVBAとしてExcelに組み込む際に必要となった仕様で、当時MicrosoftのルーキーだったJoel Spolskyが要件定義に関与した
https://gihyo.jp/dev/serial/01/developers-perspective/000102

Late Bindingの別の観点からの理解としてのDuck Typingの概念の発祥については、Ruby界隈の発祥という説がある
https://en.wikipedia.org/wiki/Talk:Duck_typing#Coined_by_Dave_Thomas?

(change of )*state @TuvianNavy

コンセプト、ミキシン、トレイト、型クラス、、、プロトコル?ダックタイピング?? 全ての言語が多かれ少なかれlisp化した2000年代だったけど、なんかsmalltalk化の流行なのか

2019-09-05 23:10:31
(change of )*state @TuvianNavy

Duck Typingを造語したのは誰かって議論あるのな。。

2019-09-06 15:29:22