「あの人も読んでる」略して「も読」。さまざまな寄稿者が最近気になった情報や話題をシェアする企画です。他のテックな人たちがどんな情報を追っているのか、ちょっと覗いてみませんか?
マイナポータルのCSV
Xで、マイナポータルで出力されるCSVが、CSVと言えるのか、と話題になっていました。
たしかに、一般的なフォーマットではないので正しい形式かRFCを読んでみました。
RFC 4180 - Common Format and MIME Type for Comma-Separated Values (CSV) Files 日本語訳
確認したところ、CSV形式には正式な仕様はないとのことでした。
CSV形式にはさまざまな仕様と実装がありますが(Ex。[4]、[5]、[6]、[7])、CSVのさまざまな解釈を可能にする正式な仕様はありません。ファイル。このセクションでは、ほとんどの実装が続くと思われる形式を文書化します。
紹介されているABNFを見る限り、マイナポータルのCSVはValidでしょう。
file = [header CRLF] record *(CRLF record) [CRLF]
header = name *(COMMA name)
record = field *(COMMA field)
name = field
field = (escaped / non-escaped)
escaped = DQUOTE *(TEXTDATA / COMMA / CR / LF / 2DQUOTE) DQUOTE
non-escaped = *TEXTDATA
COMMA = %x2C
CR = %x0D ;as per section 6.1 of RFC 2234 [2]
DQUOTE = %x22 ;as per section 6.1 of RFC 2234 [2]
LF = %x0A ;as per section 6.1 of RFC 2234 [2]
CRLF = CR LF ;as per section 6.1 of RFC 2234 [2]
TEXTDATA = %x20-21 / %x23-2B / %x2D-7E
確かに、CSVのようなheaderとrecordで構成される形式では、無意識のうちに第一列にカラムは入らないと考えがちです。しかし、正式な仕様がなく、データ形式として正しいのであれば、安易に非難できないのかなと思いました。
読みやすいコード
コードの要素の依存をグラフとして表現することで、コーディングのベストプラクティスとされるものの理論的背景が見えてとてもよかったです。
本編ではなぜimmutableな変数の方がmutableな変数より良いのかやglobalな値が良くない理由などがかかれていましたが、システム設計レベルでも同様に考えてよさそうだなーと思っています
Pythonの定数
友人から「コードベースがでかくてmypy入れられないんだけどどうしたらいいかな?」と聞かれたので、調べてZennの記事にまとめました。紹介したなかだとenumかdataclassを使うと良さそうです。
from dataclasses import dataclass
@dataclass(frozen=True)
class Constants:
PI: float = 3.14
from enum import Enum
class Constants(Enum):
PI = 3.14