注意
この記事は今の御時世に関係ありますが、まじめな記事ではございません。
はじめに
最近コロナのせいで、いつも以上に電車やバスなどで他の乗客との距離感が気になったり、
ドラマや映画で密になっていたりすると「これめっちゃ密やん」って思ったりしますよね。
それと同じで、ファイルの中身を見ているとなにかムズムズしませんか?
しますよね?
それって行間のソーシャルディスタンスが保てていないからじゃないですか?
そんなムズムズを解消してくれるプログラムを GO で作ってみました!
ファイルがソーシャルディスタンスを保つ方法
ウェブサイトで推奨されているフォントサイズが__約 3 ~ 4 mm__ 、
日本の社会的距離の推奨距離である 2.0 m から、
__571 行__の行間を開けることで、ファイルに社会的距離を保たせることにしました。
環境
- OS : Windows10
- Go : 1.14.6
- エディタ : Visual Studio Code
プログラム
プログラムのソースコードはこんな感じ。
Goは触って1ヶ月もたってないので、多分ひどいコードだと思います(笑)。
package main
import (
"bufio"
"flag"
"fmt"
"io"
"log"
"os"
"path"
)
func main() {
flag.Parse()
if flag.NArg() != 1 {
fmt.Println("ファイルを1つだけ指定してください(Please specify only one file)")
return
}
filepath := flag.Arg(0)
_, fname := path.Split(filepath)
rfp, err := os.Open(fname)
defer rfp.Close()
if os.IsNotExist(err) {
fmt.Println("ファイルが存在しません。(file does not exist.)")
return
}
wfp, err := os.Create("sdt-" + fname)
defer wfp.Close()
if os.IsNotExist(err) {
log.Fatal(err)
}
lines := bufio.NewScanner(rfp)
for lines.Scan() {
line := lines.Text()
io.WriteString(wfp, (line + "\n"))
for j := 0; j < 571; j++ {
io.WriteString(wfp, ("\n"))
}
}
if err != nil {
log.Fatal(err)
return
}
}
1. ソーシャルディスタンスを保ちたいファイルを読み込む。
2. 書き込み用のファイルをファイル名「sdf-{読み込んだファイル名}」で用意する。
3. 1 行書き込んでは、571 行改行するを繰り返す。
という感じの流れで実装しました。
実行方法
Go を実行できるターミナルなら動く__はず__。
$ go run main.go ファイル名
もしくは
$ go build main.go
$ ./main.exe ファイル名
実際どうなる?
今回は例として「じゅげむ」を用意してみました。
見ているだけで密になっていて__ムズムズ__しますね。
じゅげむ じゅげむ ごこうのすりきれ
かいじゃりすいぎょの すいぎょうまつ
うんらいまつ ふうらいまつ
くうねるところに すむところ
やぶらこうじの ぶらこうじ
パイポパイポ パイポのシューリンガン
シューリンガンのグーリンダイ
グーリンダイのポンポコピーのポンポコナーの
ちょうきゅうめいのちょうすけ
変換前のファイルは、9 行でサイズが 445 バイトでしたが、
ソーシャルディスタンスを保たせると、、、
変換後のファイルは、5149 行でサイズが 5577 バイトになりました!
(ファイルの行数が多すぎてここに掲載できません。)
ファイルサイズは大きくなりましたが、ソーシャルディスタンスを保てていない方が問題ですよね?
まとめ
社会的距離や密を避けるために多大なコストが必要というのは、
__リアルの世界もデータの世界も変わらない__ということがわかりました。
しかしこれで、ファイルのソーシャルディスタンスを保つことができたので快適な生活を送れますね!
GitHubにソースコード上げているので、ここが気に入らないなどがあればプルリク等くださいね!
GitHub:SocialDistanceFile
あれ、今度は1文字1文字の間隔がムズムズしてきたな。