3月91日
気がついたら3月が終わり4月が終わりGWが始まりGWが開けハイラルに旅立ちコロナに罹りコロナが治り、今です。
3月はお仕事が楽しすぎ期間に入ってしまったので、進捗が悲惨なことになっていました。
4月は3月中サボっていたらソースが赤の他人のコードになってしまったので、解読作業をしていました。
GWは流石に作業をしましたが、MV対応中に見つかった大きめのバグ修正にGWを取られることに……。
地味な割に記事にするには複雑すぎる作業なのですが、とはいえ書くことも少ないのでバグ取りに絡む内容を書いていこうと思います。
Langscoreのキモとなる部分といえばやはりCSVです。
翻訳文は全てCSVで記述するので、この読み書き処理が上手く言ってないと全部ダメになります。
CSVといえばやっぱこんな感じのデータ。
あいうえお,かきくけこ,さしすせそ
","(カンマ)で区切ることで列を表現し、改行することで行を表現します。
CSVの正式名称は"Comma Separated Values"(カンマ区切りの値)なのでまんまですね。
,で区切るだけの簡単な書式……と思いきや、意外とそうでもないのが罠です。
文章に,がある場合
Hello, World といった文章を1つのデータとして扱いたい場合、,で区切られると困ります。
そんな場合は""で括ります。
"Hello, World","Goodbye, World","Goodnight, World"
文章に改行がある場合
改行すると1行とみなされてしまうため、データに改行を入れたい場合も""で括ります。
"あめんぼあかいな
あいうえお","かきのきくりのき
かきくけこ"
文章に"がある場合
,や改行を含めるときに使う"ですが、そもそもデータに含めたい場合は""で表現します。
ど""う""し""て""な""ん""だ""よ""お""ぉ""!""!"",ん""あ""あ""あ""ぁ""ぁ""!""!""
単体で見ると単純なルールですが、複合で来られると意外と面食らいます。
"""Hello, World"",
それはプログラムを書く際の","""謎の呪文""(Mystery spell)―――"
「""Hello ~ 書く際の」「謎の呪文 ~ ―――」で2つのデータです。
今回のバグは""で括った際のデータの扱いを間違えていたため、CSVを読み込む度に""の括りが増えていくというバグでした。
データ量も多いのでデバッグも尚の事めんどくさいという……。
まあ小さいテストを書けって話ですね。
みんなもテスト、書こう!
おしまい