2
0

More than 3 years have passed since last update.

あなたのファイル、ソーシャルディスタンス保てていますか?

Posted at

注意

この記事は今の御時世に関係ありますが、まじめな記事ではございません。

はじめに

最近コロナのせいで、いつも以上に電車やバスなどで他の乗客との距離感が気になったり、
ドラマや映画で密になっていたりすると「これめっちゃ密やん」って思ったりしますよね。

それと同じで、ファイルの中身を見ているとなにかムズムズしませんか?

しますよね?

それって行間のソーシャルディスタンスが保てていないからじゃないですか?

そんなムズムズを解消してくれるプログラムを 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文字の間隔がムズムズしてきたな。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0