たれぱんのびぼーろく

わたしの備忘録、生物学とプログラミングが多いかも

データ形式

  • message interchange format
  • リアライゼーション形式/serialization format

encoded messages

評価観点

  • speed: serialize/deserizlize time
  • size: serialized data size
  • representation: what format can represent (e.g. type, enum)

型の表現

0"0"を異なる表記にするか
false"false"を異なる表記にするか

型は上位のスキーマレベルで解決すべきという考えもある.
fieldA: stringスキーマで定義されているなら、fieldA: falseconst fieldA: string = "false"しかありえない。
だから「このレイヤーに型は不要でオーバーヘッドを減らし高性能にできる」という主張

false"false"を区別すると、前者をbooleanに割り当てられた1byteで表現できたりする (e.g. MessagePack true = 11000011 = 0xc3)
JSONは峻別するけど文字列フォーマットなのでこの恩恵は受けれない.

Wireプロトコルとinterface

binary wire format.proto

wire format

wire formatは変数名を保持しない。変数識別intを保持する.
これのおかげで小さいsize、interface名のリファクタリングが可能.

protocol buffer encoding

一覧

  • JSON
  • MessagePack
  • Query parameters/Query strings
    • 型がない。1"1"field=1になる

schema+wireProtocolか、schema-lessか

schema/interfaceを前提とすれば、内部表現が自由になる (protobuf .proto & wire protocol)
同時にschema-lessだと「見てわかる内部表現」になっているのは逆説的な利点の1つ(内部が存在しない、ってだけなんだけど)
wire protocol使うとpayload単体を見てもほぼ利用できない
JSON payloadは見ればわかる。怠惰に使える.

自由に使える、マッシュアップ、相手方の厳密性は担保できない、みたいな思想が根底にあるwebだと「みりゃわかる」は強い誘因力を用いそう.
schema-less JSONが流行ったのはそれも一因?

完全に透過できていない内部形式ほど面倒なものはない、もあるんだろうな.
結局どこかで内部形式のデータをみたくなるタイミングが来てしまう。それが頻発してかつそのときのDXが悪いと、その領域では流行らない.

Utilities

  • Query parameters
    • Global.URLSearchParams: QueryParam object. 取り込みや文字列化、Fetch Bodyへの挿入による自動content-typeなどいろいろこなす (c.f. 別記事)

Fetch API周りの丁寧な世界

URLSearchParams

fetch Bodyにセットすると自動でContent-Typeをapplication/x-www-form-urlencoded;charset=UTF-8にしてくれる、安全。

To safely extract a body and a Content-Type value from object, run these steps:
... Set Content-Type to application/x-www-form-urlencoded;charset=UTF-8.
Fetch Living Standard

query parameterを使いたい(not JSON)のならばこのオブジェクト.
ToString()で文字列を吐けるので、POST BodyじゃなくてGET URL querystringにも利用できる.

Live Broadcasting

Live Broadcasting: 記録と同時 (live) に公衆送出 (broadcasting)

語から考えると、使われる技術やコンテンツ種別を問わない。が、慣習的に以下の語句使い分けがある。

  • 電波: 生放送/Live Broadcasting
  • インターネット: 生配信/ Live Streaming

電波の方はTVやラジオ、インターネットの方はライブ配信インターネットラジオと呼ばれる。

broadcastなので送り出すのが前提.
チャットとかはpeer-to-peerな世界観が前提なので、ライブストリーミングと馴染みが深いけど別の枠組みで整理されがち

Live性

Liveだからこそ、という特徴.

  • ライブ感 ~ 無編集感 ~ 荒削りさ ~ リアリティ

先が決定していない => 変えられる
creator側ではない存在から干渉ができる

  • 凸待ち
  • 視聴者アンケ
  • チャット読み

干渉って意味ではリアリティ番組みがやはりあるな.

知らないことは抽象化できない

気づかずに省略、はでき得る
理解した上で適切に省いて抽象化、は知らないとできない

https://note.com/kenta_design/n/n3e57a8f09734

写真のごとくコピーすれば対象を理解せずとも記述できる。
でも例えば「ポップまつぼっくりアイコン」に抽象化しようとした場合、螺旋の規則を理解してない限り、螺旋の要素を簡素にしてアイコンへ取り込むことはできない。

エンタメを見る心理

  • コンテンツの面白さ
  • 一体感
    • 「昨日の○○めっちゃ良かったよなー!」
    • 「それは草」「いやそうはならやんやろww」
  • 親しみ

純粋にコンテンツの面白さだとしたら、何十倍も視聴者数の差がつくのは直感に合わない (どれもそれぞれの良さがあって、何十倍もエンタメ度が高いとは感じない)

他者との一体感 (社会的な生き物)

慣れたものへの安心感、手を伸ばしやすさ、親近感