2023,江端さんの技術メモ

Golang 文字列を数値に変換する方法で、文字列→実数なら、これが一番てっとり早そう

dest_lat, err := strconv.ParseFloat(row[2], 64)

strconv.ParseIntstrconv.ParseUnitは、文字列を解析して整数型を返す関数
それぞれ符号付き整数型と符号なし整数型に対応している。

 

2023,江端さんの技術メモ

I hope you could understand the min-max method of Fuzzy reasoning, using the following Go programming list.

package main

import (
	"fmt"
	"os"
)

func max_2(a, b float64) float64 {
	if a > b {
		return a
	} else {
		return b
	}
}

func min_2(a, b float64) float64 {
	if a > b {
		return b
	} else {
		return a
	}
}

type condition_MF3 struct { // Base class for condition_MF3
	center  float64
	width   float64
	express string
}

func new_condition_MF3(_center, _width float64, _express string) *condition_MF3 {
	c3 := new(condition_MF3)
	c3.center = _center
	c3.width = _width
	c3.express = _express
	return c3
}

// Class for the membership function (3 mountains) of the former case
func (c3 *condition_MF3) func_X(_x float64) float64 {
		// x,y denote coordinates on the membership function
	x := _x
	y := 0.0 // The value of y is always greater than or equal to 0 and less than or equal to 1

	if c3.express == "LESS" {
		if x <= c3.center-c3.width {
			y = 1.0
		} else if x <= c3.center {
			y = -1.0 / c3.width * (x - c3.center)
		} else {
			y = 0.0
		}
	} else if c3.express == "COMMON" {
		if x <= c3.center-c3.width {
			y = 0.0
		} else if x <= c3.center {
			y = 1.0/c3.width*(x-c3.center) + 1.0
		} else if x <= c3.center+c3.width {
			y = -1.0/c3.width*(x-c3.center) + 1.0
		} else {
			y = 0.0
		}
	} else if c3.express == "MORE" {
		if x <= c3.center {
			y = 0.0
		} else if x <= c3.center+c3.width {
			y = 1.0 / c3.width * (x - c3.center)
		} else {
			y = 1.0
		}
	} else {
		fmt.Println("MF3: wrong expression")
		os.Exit(1)
	}
	return y
}

type condition_MF5 struct { // Base class for condition_MF5
	center  float64
	width   float64
	express string
}

func new_condition_MF5(_center, _width float64, _express string) *condition_MF5 {
	c5 := new(condition_MF5)
	c5.center = _center
	c5.width = _width
	c5.express = _express
	return c5
}

func (c5 *condition_MF5) func_X(_x float64) float64 {
	// Class for the former membership function (5 mountains)
	// x,y are the coordinates on the membership function

	x := _x
	y := 0.0 // The value of y is always greater than or equal to 0 and less than or equal to 1

	if c5.express == "LESSLESS" {
		if x <= c5.center-2.0*c5.width {
			y = 1.0
		} else if x <= c5.center-c5.width {
			y = -1.0/c5.width*(x-(c5.center-2.0*c5.width)) + 1.0
		} else {
			y = 0.0
		}
	} else if c5.express == "LESS" {
		if x <= c5.center-2.0*c5.width {
			y = 0.0
		} else if x <= c5.center-c5.width {
			y = 1.0/c5.width*(x-(c5.center-c5.width)) + 1.0
		} else if x <= c5.center {
			y = -1.0/c5.width*(x-(c5.center-c5.width)) + 1.0
		} else {
			y = 0.0
		}
	} else if c5.express == "COMMON" {
		if x <= c5.center-c5.width {
			y = 0.0
		} else if x <= c5.center {
			y = 1.0/c5.width*(x-c5.center) + 1.0
		} else if x <= c5.center+c5.width {
			y = -1.0/c5.width*(x-c5.center) + 1.0
		} else {
			y = 0.0
		}
	} else if c5.express == "MORE" {
		if x <= c5.center {
			y = 0.0
		} else if x <= c5.center+c5.width {
			y = 1.0/c5.width*(x-(c5.center+c5.width)) + 1.0
		} else if x <= c5.center+2.0*c5.width {
			y = -1.0/c5.width*(x-(c5.center+c5.width)) + 1.0
		} else {
			y = 0.0
		}
	} else if c5.express == "MOREMORE" {
		if x <= c5.center+c5.width {
			y = 0.0
		} else if x <= c5.center+2.0*c5.width {
			y = 1.0/c5.width*(x-(c5.center+2.0*c5.width)) + 1.0
		} else {
			y = 1.0
		}
	} else {
		fmt.Println("MF5 func_X(): wrong expression")
		os.Exit(1)
	}

	return y
}

/////////////////////////////

type action_MF5 struct { // Base class for action_MF5
	center  float64
	width   float64
	express string
	x       float64
	y       float64
}

type action_MF3 struct { // Base class for action_MF3
	center  float64
	width   float64
	express string
	x       float64
	y       float64
}


func new_action_MF5(_center, _width float64, _express string) *action_MF5 {
	a5 := new(action_MF5)
	a5.center = _center
	a5.width = _width
	a5.express = _express

	if a5.express == "LESSLESS" {
		a5.x = a5.center - 2.0*a5.width
	} else if a5.express == "LESS" {
		a5.x = a5.center - a5.width
	} else if a5.express == "COMMON" {
		a5.x = a5.center
	} else if a5.express == "MORE" {
		a5.x = a5.center + a5.width
	} else if a5.express == "MOREMORE" {
		a5.x = a5.center + 2.0*a5.width
	} else {
		fmt.Println("new_action_MF5: wrong scale expression")
		os.Exit(-1)
	}

	a5.y = 0.0

	return a5
}

func new_action_MF3(_center, _width float64, _express string) *action_MF3 {
	a3 := new(action_MF3)
	a3.center = _center
	a3.width = _width
	a3.express = _express

	if a3.express == "LESS" {
		a3.x = a3.center - a3.width
	} else if a3.express == "COMMON" {
		a3.x = a3.center
	} else if a3.express == "MORE" {
		a3.x = a3.center + a3.width
	} else {
		fmt.Println("new_action_MF3: wrong scale expression")
		os.Exit(-1)
	}

	a3.y = 0.0

	return a3
}


// The latter membership function (5 mountains) class
func (a5 *action_MF5) func_Y() float64 {
	return a5.y
}

// The latter membership function (3 mountains) class
func (a3 *action_MF3) func_Y() float64 {
	return a3.y
}

func (a5 *action_MF5) func_Max(b float64) {
	a5.y = max_2(b, a5.y)
}


func (a3 *action_MF3) func_Max(b float64) {
	a3.y = max_2(b, a3.y)
}


func (a5 *action_MF5) func_X() float64 {
	return a5.x
}

func (a3 *action_MF3) func_X() float64 {
	return a3.x
}


func fuzzy_reasoning(temp, humi float64) float64 {

	// Temperature(former)
	Temp_Less := new_condition_MF3(20, 10, "LESS")
	Temp_Common := new_condition_MF3(20, 10, "COMMON")
	Temp_More := new_condition_MF3(20, 10, "MORE")

	// Humidity(former)
	Humi_Less := new_condition_MF3(50, 20, "LESS")
	Humi_Common := new_condition_MF3(50, 20, "COMMON")
	Humi_More := new_condition_MF3(50, 20, "MORE")

	// Switch(前件部)
	Switch_Less := new_action_MF3(0,1,"LESS")
	Switch_Common := new_action_MF3(0,1,"COMMON")
	Switch_More := new_action_MF3(0,1,"MORE")

	// [Rule 01] 
	Rule01 := min_2(Temp_More.func_X(temp), Humi_More.func_X(humi))
	Switch_Less.func_Max(Rule01) // the latters values are overwritten if the value is large enough.
	fmt.Println("Rule01", Rule01)

	// [Rule 02] 
	Rule02 := min_2(Temp_Common.func_X(temp), Humi_More.func_X(humi))
	Switch_Common.func_Max(Rule02) // the latters values are overwritten if the value is large enough.
	fmt.Println("Rule02", Rule02)

	// [Rule 03] 
	Rule03 := min_2(Temp_More.func_X(temp), Humi_Common.func_X(humi))
	Switch_Less.func_Max(Rule03) // the latters values are overwritten if the value is large enough.
	fmt.Println("Rule03", Rule03)

	// [Rule 04] 
	Rule04 := min_2(Temp_Less.func_X(temp), Humi_Less.func_X(humi))
	Switch_More.func_Max(Rule04) // the latters values are overwritten if the value is large enough.
	fmt.Println("Rule04", Rule04)


	// Reasoning calculations
	numerator :=
			Switch_Less.func_X()*Switch_Less.func_Y() +
			Switch_Common.func_X()*Switch_Common.func_Y() +
			Switch_More.func_X()*Switch_More.func_Y() 

	denominator :=
			Switch_Less.func_Y() +
			Switch_Common.func_Y() +
			Switch_More.func_Y() 


	reasoning := numerator / denominator

	return reasoning

}

func main(){

	 fmt.Println(fuzzy_reasoning(27.0, 67.0))
}

2023,江端さんの忘備録

という訳で、本日、私、40年ぶりくらいに「丸刈り」にしてきました。

昨日から、鏡の前に立つたびに、東条英機元首相が登場して、ビックリしています。

Since yesterday, every time I stand in front of the mirror, I am surprised to see former Prime Minister Hideki Tojo appear.

しかし、これはチャンスかもしれない。

But this could be an chance.

コスプレか・・・、コスプレいいかも!

Cosplay..., cosplay sounds good!

-----

江端:「・・・という訳で、丸メガネの老眼鏡と、軍服を買いたい。特別予算の申請をします」

Ebata: "I want to buy reading glasses with round glasses and a military uniform. I will apply for a special budget."

嫁さん:「却下」

Wife: "Rejected."

2023,江端さんの忘備録

私が床屋に行くタイミングは ―― 「頭髪がうっとうしく感じた時」の一択です。

The only time I go to the barber is -- "when I feel my head of hair is annoying".

「容姿を気にする」というフェーズは、とうの昔に終っています。

The phase of "caring about appearance" has long since ended.

今の私の頭髪基準は『社会人として許される限界まで短く』です。

My current hair style standard is 'short to the limit allowed for working people'.

目的は、頭髪時間とコストの削減です。

The objective is to reduce headcount time and costs.

-----

『なるべく短く。髪の毛が逆立ってもOK。できるだけ髪を軽くするために梳いて』

"Keep it as short as possible. Combed as much as possible"

と、10年近く言い続けてきたのですが、私の希望するドンピシャの短髪にしてくれる理容師さんが少ない。

I have been saying this for almost 10 years, but there are not many barbers who can give me the don't-short hair I want.

特に女性の理容師さんは、『バッサリとやって欲しい』という私のニーズと合わないことが多いようです。

Especially female barbers often don't seem to match my need for a 'buzz off'.

これは、理髪に関する男女の価値観の相違 ―― ではなく、「理髪に1mmも価値を持たない人間」を相手にしなけばならない、女性理容師さんとのミスマッチと言うべきかもしれません。

This is not a difference in values between men and women regarding barbering, but rather a mismatch with female barbers who have to deal with "people who do not value barbering even a millimeter".

『自分のことは自分で』が正論ですが、残念ながら、理髪と病気の2つは、自己実施が難しいのです。

The correct answer is 'take care of yourself,' but unfortunately, hairdressing and illness are two of the most difficult things to self-implement.

そんなわけで、ここ数年は、「スポーツ刈り」というものを選んできました。

That is why I have chosen to use "crew cut" for the past few years.

しかし、その「スポーツ刈り」ですら、私が選ばなければならないパラメタがいくつもあるのです。

But even that "crew cut" has a number of parameters that I have to choose from.

例えば、「もみあげ」「かりあげ」「トップ」「サイド」「襟足」など、うっとうしいことこの上もありません。

For example, "fir," "kariage," "top," "side," "collar," etc., are nothing short of annoying.

-----

今になって思えば ―― 『目の前にあることにすら、全く気がつななかった』 ―― と感じです。

Looking back on it now, I feel like, "I didn't even notice what was right in front of me".

あるじゃないですか。リクエストパラメータ"ゼロ"の、究極の、そして、私と理容師さん両方にとってのWin-Winの最高のヘアースタイルが。

There is, isn't there? The ultimate, best hair style with "zero" request parameters, and a win-win situation for both me and the barber.

―― 丸刈り

It is "buzz cut".

です。

いや、早かった。

It was quick.

あっという間に終わりました。

It was over in a matter of minutes.

駅ナカの理容室で、作業時間は4分間でした。

The work took 4 minutes at the station barber shop.

理容師さんには、鏡を見せられて『これでいいですか?』と言われましたが、「丸刈り」のリカバリーって、可能なのでしょうか?

The barber showed me a mirror and said, 'Is this okay?' but is it possible to recover a "buzz cut"?

-----

という訳で、本日、私、40年ぶりくらいに「丸刈り」にしてきました。

So, today, for the first time in about 40 years, I have had a "buzz cut".

家族がギョっとしないように、理髪直後に家族SNSで写真を送っておいたのですが、嫁さんは、写真を見ていなかったようで ―― 言葉を失っていました。

I had sent a picture of it on the family social networking site right after the haircut so that the family wouldn't be giddy, but the wife didn't see the picture -- she was speechless.

嫁さん:「それ、気にいっているの?」

Wife: "Do you like that?"

江端:「うむ、これで半年近くは理髪にいかなくて良いかと思うと、嬉しい」

Ebata: "Well, I'm glad I won't have to go to the barber for almost six months now.

嫁さん:「ずっと『丸刈り』を続けるという訳ではないんだ。安心したよ」

Wife: "You are not going to keep the 'buzz cut' . That's a relief."

-----

ちなみに、私、「丸刈り」については、中学生のころ、(生徒会会長の職権を使った)全校を巻き込むような事件を起こしかけたことがあります。

Incidentally, as for "buzz cut", when I was in junior high school, I almost caused an incident (using my authority as president of the student council) that would have involved the entire school.

私の動向を察知した生徒会顧問の教諭に、直前に阻止されましたが ―― 今も、忸怩たる悔悟の思いです。

The advisor of the student council, who was aware of my movements, stopped me just before I left. Even now, I still feel ashamed and regretful.

後日、この話をしたいと思います。

I would like to discuss this later.

2023,江端さんの忘備録

3月に、大学生の学生の講義のコマを3つ持つ旨、担当指導教官から指示を受けています。

In March, I have been instructed by my supervisor to have three lecture sessions for university students.

これも、履修単位の為の必要な要件らしいです。

This also seems to be a necessary requirement for course credit.

で、今、その準備として業務履歴の日本語を、英語に変換する作業をしているのですが、

And now, I'm working on converting the Japanese of the business history into English as a preparation for that.

―― 昔のことを思い出す度に、怒りが甦ってきます。

"Every time I remember the old days, my anger comes back"

『あの時は、滅茶苦茶な日程でプレゼン資料を作らされたなぁ』

"I remember that time when they made me work on a presentation with a crazy schedule"

『あの国のあの野郎(研究者)は、1mmも動いていないのに、研究成果報告書に記載された私の名前を消して、自分の名前に置きかえやがったなぁ』

"I remember that "The bastard (researcher) in that country has not moved a millimeter, and yet he erased my name from the research report and replaced it with his own name"

などなど。

e.t.c

-----

私の業務経歴は、「成果」ではなくて「怒り」で記載可能のようです。

My work history seems to be able to be listed under "anger" instead of "results".

2023,江端さんの技術メモ

A社 CSVファイルパース用テストコード (用事が終わったら消すこと)

package main

import (
	"encoding/csv"
	"fmt"
	"log"
	"os"
	"regexp"
	"strings"
)

func main() {

	file, err := os.Open("tracking_data.csv") 
	if err != nil {
		log.Fatal(err)
	}
	defer file.Close()

	r := csv.NewReader(file)
	rows, err := r.ReadAll() // csvを一度に全て読み込む
	if err != nil {
		log.Fatal(err)
	}

	lat := [10000]string{}
	lng := [10000]string{}
	speed := [10000]string{}

	// [][]stringなのでループする
	for j, v := range rows {

		if j == 0 {
			continue // CSVのヘッダー行を無視
		}

		//fmt.Println(v[3])
		// v[3]をバラバラに分解する
		// v3 := regexp.MustCompile("[() ,]").Split(v[3], -1)
		v3 := regexp.MustCompile("}, {").Split(v[3], -1)

		for i, s := range v3 { // i: 数
			//fmt.Printf("%s\n", s)
			v31 := strings.Replace(s, "\"lat\": ", "", -1)
			v32 := strings.Replace(v31, "\"lng\": ", "", -1)
			v33 := strings.Replace(v32, "[{", "", -1)
			v34 := strings.Replace(v33, "}]", "", -1)

			v35 := regexp.MustCompile(",").Split(v34, -1)

			for k, s5 := range v35 {

				//f64, _ := strconv.ParseFloat(s5, 64)
				//fmt.Println("string", i, s5)
				if k == 0 {
					lat[i] = s5
				} else {
					lng[i] = s5
				}
			}

		}

		//fmt.Println(lat[0], lng[0], lat[19], lng[19])
		//fmt.Println()

		// v[4]をバラバラに分解する
		v41 := strings.Replace(v[4], "[", "", -1)
		v42 := strings.Replace(v41, "]", "", -1)
		v43 := regexp.MustCompile(",").Split(v42, -1)

		for k4, s4 := range v43 {
			speed[k4] = s4

			fmt.Println(k4, ",", lat[k4], ",", lng[k4], ",", speed[k4])

		}

	}
}

2023,江端さんの忘備録

先日、家族で金沢旅行に行ってきました。

I recently took a trip to Kanazawa with my family.

もはや、めったなことでは家族全員での集合の機会はありません。

The whole family can no longer gather together on rare occasions.

今回の旅行がファイナルかもしれませんが、まあ、そういうものでしょう。

This trip may be the final one, but that's okay.

-----

もはや、全員が成人になっていますので、居酒屋でのネタにも制限はありません。

Since we are all adults now, there are no longer any restrictions on the stories we can tell in the pub.

マッチングアプリの活用方法などを含め、赤裸々な話を聞かされました。

I heard some naked stories about how to use matching apps.

まあ、私は、ノンアルコールビールを飲みながら、だまって聞き流していました(体調が悪く、ノドも潰していたので)。

Well, I just sat back and listened while drinking my non-alcoholic beer (I was sick and my throat was crushed).

-----

話題が『人生で、目もくらむほどの幸福感に浸ったことがあるか』というネタになった時です。

This is when the topic turned to a story about 'Have you ever been dazzlingly happy in your life?'

私は「大学院で自分の好きな研究を続けていたとき、ときどき幸せを感じていた」という話をしたのですが、

I told them that I sometimes felt happy when I was in graduate school continuing my own favorite research, however,

嫁さんと長女は、「恋愛一択」でした。

My wife and senior daughter chose "love affair" only and said,

―― 道行く人々の全てに声をかけて、この幸せを分けてやりたいと思うほどの幸せな気持ちになった

"They felt so happy that they wanted to call out to all the people on the street and share this happiness with them"

のだそうです。

二人で『そう!そうだよ!!』と盛り上がっていたので、客観的な事実であるようです。

They both said, 'Yes! Yes!!!' ' and they were so excited, so it seems to be an objective fact.

次女は、「よく分からん」といった風だったようですし、私に至っては、全く分かりませんでしたが。

My junior daughter seemed to be "I don't really understand," and I didn't understand at all either.

-----

で、ふと思い出したのが、これ、です。

And then I suddenly remembered this

『ええ、毎日、目が眩むほど幸せです。あなたは違うのですか?』と、気の毒そうな顔をして相手を見てやれば、大体、呆然として立ちすくんでいました。

カルト宗教が、『道行く人々の全てに声をかけて、この幸せを分けてやりたいと思うほどの幸せな気持ち』になれるものであるなら、その価値はあるのかもしれない ――

If a cult is something that makes them 'so happy that they want to call out to all the people on the street and share this happiness with them', then maybe it's worth it....

と、一瞬、思いかけましたが、直ぐに取り下げました。

For a moment, I almost thought that, but I immediately withdrew the idea.

嫁さんと長女の、大切な思い出を『汚された』ような気になったからです。

I felt like I was 'tarnishing' the precious memories of my wife and senior daughter.

-----

今度、街で『あなたは、今、幸せですか』と尋ねられたら、

The next time someone on the street asks me, 'Are you happy right now?'

―― 間髪入れずに、顔面パンチを食らわせてやろう

"I'll punch him/her in the face in no time"

という気持ちになっています。

I have come to think that.

2023,江端さんの忘備録

「サマータイムレンダ」も、「シュタインズゲート」も、ぶっちゃけ荒唐無稽な設定のSFです。

Both "Summertime Render" and "Steinsgate" are, to put it bluntly, science fiction with ridiculous settings.

それでもなお、私がこの2つの作品に魅了される理由は、

Still, I'm still fascinated by these two pieces for a reason.

―― 物語全体に課せられた厳しい時空間のルール

"Strict space-time rules imposed on the entire story"

の設定があるからですね。

That's because of its setting.

時空間を自由自在にコントロールできる存在に対して、3次元空間に拘束されている私たちは、必ず負ける運命にあるはずです。

Against beings who can control space-time at will, we, who are bound in three-dimensional space, must surely be doomed to defeat.

ところが、その厳しいルールの「裏をかく」「組み合わせる」ことで、思いもつかなかった『時空間世界のルールの抜け道』を探し続ける主人公たちの闘いに、私は胸を打たれるのです。

However, I am struck by the struggle of the protagonists who continue to search for "loopholes in the rules of the space-time world" that I had never thought of by "going behind" and "combining" those strict rules.

『そんなやり方があったか!』という驚きに浸れることは、本当に幸せです。

I'm so happy to be able to amaze with saying "I didn't know there was such a way to do that!"

-----

皆さんにお願いがあります。

I have a favor to ask of you all (Warning: jump to Youtube)

この網代慎平のノートの写し、手に入りませんか?(注意:Youtubeに飛びます)。

Can I get a copy of this Shinpei Ajiro's notes? (Warning: jump to Youtube).

コミックの方に記載があるなら、購入します。

If the comic is mentioned, I will buy it.

よろしくお願い致します。

Thank you for your cooperation.

2023,江端さんの忘備録

『数百からなるセンサデータと、その組み合わせからなるリアルタイムのチェックプログラムが、ロケットのリフトアップ前に、エンジン点火を自動停止させた』

"A real-time checking program consisting of hundreds of sensor data and their combination automatically shut down the engine ignition before the rocket lifted off"

これを、科学というプロセスをきちんと理解している人間であれば、

If one has a proper understanding of the scientific process, one would say,

「それは一般的に"失敗"とはいいません」

"That is not generally called a 'failure'"

私が勤務している会社で、これを"失敗"などと言ったら、ほぼ100%"ポカーン"とされる、と思う。

If I call this a "failure" at the company I work for, I will be almost 100% treated as "crank".

あるいは幹部から怒鳴られる気がする ―― 『そんな言葉を吐いている時間があれば、必要な作業と人材と時間の見積をとっとと出せ!!』と。

Or I feel like I'm going to get yelled at by executives -- "If you've got time for using the word, get me an estimate of the work, manpower, and time needed!

-----

現在、猛烈な勢いで、システム監視ログと、監視プログラムがチェックが行われているはずです。

Currently, the system monitoring logs and the monitoring program should be being checked at a furious pace.

これは、次回の打ち上げの安全性を1段階、あるいは、それ以上アップしてくれると期待できます。

This can be expected to increase the safety of the next launch by one or more steps.

-----

システムにたずさわっているエンジニアの一人として、今回のシステム直前停止は『まれに見る見事な成功例』に見えます。

As an engineer involved in a system, I can say that the last minute system shutdown looks like a "rare and spectacular success story.

『あの直前でよく中止を成しとげた』って、大絶賛したいくらいですが ―― 世間の(一部の)人には、そう見えないのでしょうか?

I would like to give them a big pat on the back with saying "How wonderful you could stop the system at the moment!". However, could all we not share the same emotion?

2023,江端さんの忘備録

今朝、呼び鈴が鳴って、「宅配かな」と思って、2Fのドアホンから対応に出たところ、変な第一声を聞いて、一気に警戒に入りました。

When the doorbell rang this morning, I thought it might be a delivery, so I answered the doorbell on the second floor to respond and heard a strange first voice that put me on alert at once.

「こんにちは。私は○○といいます」

"Hello. My name is XX."

(無言が5秒続く)

(Silence lasts 5 seconds)

「最近、少しずつ暖かくなって・・・」

"It's gotten a little warmer lately, and..."

と言った瞬間、

The moment I said that.

江端:「失礼します」

I said, "I'm sorry," and hung up the doorbell.

といって、そのままドアホンを切りました。

-----

セールスの電話でも、このメソッドは使えます。

This method can also be used for sales calls.

「江端さまのお電話でよろしかったでしょうか」

"Are you Mr. Ebata? May I interrupt you?"

江端:「はい」

"Yes"

相手:「今、お時間よろしいでしょうか?」

"Would you have a time to talk?"

江端:「死ぬほど忙しい」

"No. I am busy to death"

この対応で、2回目の電話がくることはありません。

With this response, I will not receive a second call.

-----

『話の内容を一切聞かないで、一方的に会話を打ち切る』ということは、重要です。

It is important to 'terminate the conversation unilaterally without listening anything'

一方的に自分の時間に介入された人は、そのような介入を無条件に打ち切る権利があります。

A person who is unilaterally intervened on his or her own time has the right to terminate such intervention unconditionally.

-----

そういえば、私、家の周りに、こんなの貼っています。

Come to think of it, I have these things posted around my house.

「見ているぞ!」 に「ポイ捨て禁止」を追加

これを見ても、なお、江端家のドアホンを押す勇気があることは、見上げたものだと思います。

To see this and still have the courage to press the doorbell of the Ebata family is something to look up to.