2023,江端さんの忘備録

テレビを見ている嫁さんに、

I said to my wife, who was watching TV,

江端:「なんで、VIVANTは、北朝鮮拉致被害者の救出作戦を行わないんだろう」

Ebata: "Why doesn't VIVANT conduct rescue operations for North Korean abductees?"

と言ったところ

And she just replied, watching TV,

嫁さん:「そうだね」

"Yes, they do."

と、生返事をされました。

-----

フィクションの「イリーガル」を描くのであれば、ここまで振りきってもいい思う。

They can swing so far if they depict "illegal" in fiction.

ただ、裁判所は、「VIVANT」や「スケバン刑事」の活動を、絶対に認可しないと思います(高度な政治的圧力があれば別かもしれませんが)。

ロケ地は<北>の平壌(まあ、当然、北朝鮮は拒否するでしょうが)。

The location is Pyongyang (well, North Korea will refuse).

韓国<南>との共同制作で(あの国こそ、拉致の最大被害国です(500人近くにおよぶそうです))。

It will be a joint production with South Korea (that country is the biggest victim of abduction (nearly 500 people are said to have been abducted)).

この「VIVANT:拉致被害者奪還作戦編」の、日本国内視聴率は、史上最高になるでしょう。

The domestic viewership of "VIVANT: Operation to Retrieve the Kidnapped Victims" will be the highest in Japan.

もちろん、前例のない「もの凄い外交問題」にもなるような気がしますが ―― 下手すると核ミサイルが飛んでくるかもしれません。

Of course, I feel it will be an unprecedented "tremendous diplomatic problem" -- if we are not careful, nuclear missiles may be launched at us.

-----

でも、映画で「シュリ」や「シルミド」があるし、日本でも「KT」とか上映されていたんだから ―― 悪くない企画だと思うのです。リスクも凄いけど。

But we know "Suri" and "Silmido" in Korean movies, and "KT" and others were shown in Japan -- I think it's not a bad project. The risk is significant, though.

2023,江端さんの技術メモ

今回の実験のケースでは、

192.168.11.232/ 255.255.248.0 / 192.168.11.1 あたりにすれば良いのであろう(多分)。

 

2023,江端さんの忘備録

本日、家族でアイスクリームを食べていた時のことです。

When I was eating ice cream with my family today,

娘から、

my daughter said

『ジャニーズに、自分の子どもを入所させた親たち』

"Parents who have enrolled their children at Janny's."

という観点を提示されて ―― 衝撃を受けました。

I was presented with the perspective that -- I was shocked.

はじめて、この事件を『自分の視点から見えた』と思えました。

I could 'see' the case from my view for the first time.

-----

もちろん、この事件は「ジャニーズなんとか」という名前の、運よく鬼籍に入って逃げ切った、鬼畜の所業です。

Of course, this case is the work of a demon named "Johnny's Something," who was lucky enough to get away with his death.

被害者、そして被害者の保護者に、1mmの過誤も瑕疵もありません。

There was not a single millimeter of error or defect on the victim's or guardian's part.

ですが、被害者当人はもちろんですが、その親たちの、悔しさ、悲しさ、そして、その怒りは、私には想像もできません。

However, I cannot imagine the parents' frustration, sadness, and anger, not to mention the victims themselves.

もし、嫁や娘が、こんな形で陵辱されたら ―― 多分、私は『私を止めない』。

If my wife or daughter were to be humiliated this way -- maybe I wouldn't 'stop me.'

-----

この本の中に、古代中国、春秋時代の呉の政治家であり軍人でもあった、伍子胥の話が出てきます。

In this book, there is a story about Corporal Castle, a politician and soldier of the Wu Dynasty in ancient China during the Spring and Autumn period.

彼は、父と兄が楚の平王によって処刑されたため、楚を逃れて呉に亡命しました。

He fled Chuxing and went into exile in Wu after his father and brother were executed by King Ping of Chuxing.

そして、16年後、呉の将軍となった伍子胥は、楚の都郢を陥落させました(紀元前506年)。

Sixteen years later, Corporal Castle, now a general of Wu, fell the capital city of Chu (506 B.C.).

平王は既に死んでいたので伍子胥は王墓を暴き、平王の死体を300回に及び鞭打って恨みを晴らした ―― これが、「死者に鞭打つ(死屍に鞭むちうつ)」の語源になっています。

Since Ping Wang was already dead, Corporal Castle uncovered the royal tomb and whipped Ping Wang's corpse 300 times to settle his grudge -- this is the origin of the phrase "whipping the dead."

-----

同じようなことが、今の我が国で起こったとしても、私は驚きません。

I would not be surprised if something similar happened in our country today.

―― 驚くことに、あの学校は組織的な"ジャニーズ(児童性虐待)"をしていました。

2023,江端さんの忘備録

本当に一所懸命やっているんだけど、法律で定められている時間内では、仕事の量と質から考えても絶対に間に合わない ――

I am working hard, but I will never make it within the legal time frame, given the quantity and quality of the work I have to do.

これって、誰のせい?

Whose fault is this?

私(の無能)のせい?

Is it my (incompetence) fault?

-----

10年前、30年前、そして、有史以来、人類がずっと問い続けてきたことを、リタイアをスコープに入ってきている今でさえ、自分の問題として、自問していることに腹が立ちます。

I am angry that even now, as I am scoping my retirement, I am asking myself the same question humanity has been asking since ten years ago, 30 years ago, and since the beginning of time, as my problem.

もしかしたら、『人間って、本質的にバカなの?』と思ってしまいます。

Perhaps, 'Are humans inherently stupid?' I think.

太陽にブラックホールが突っ込んでくる日が、明日やって来たとしても、今の私は歓迎します(by さよならジュピター(故小松左京先生))。

Even if the day when a black hole crashes into the sun comes tomorrow, I would welcome it now (by Byebye Jupiter (the late Sakyo Komatsu)).

さよならジュピター

2007,江端さんの忘備録

小松左京先生の数多い名著の中でも、群を抜いて優れている著作「さよならジュピター」を読まないまま、研究所に入所してきた若者がいることを知って、結構ショックを受けています。

すでに入手困難本になっているのかもしれませんし、若い世代には、その世代の代表的なSF作品があるだろうから、上記の評価は的を得ていないと思います。

先日古本屋で文庫本を入手して、十何年ぶりに読んだのですが、まったく時代を感じさせない、本当に見事な作品。

舞台が2200年でありながら、「加速度消滅装置」やら「ワープ」やら「タイムリープ」みたな、エネルギー保存法則を無視するようなデタラメな装置を持ち込まず、この21世紀でも十分通用する、無理のない技術の設定が大好きです。

-----

余計なお世話かもしれませんが、エンジニアの独身男性の諸君。

君と結婚を渋っている女性に、この本を勧めてみてはどうでしょうか。

『その主人公の「本田英二」は、要するに俺のことだ!』と彼女に言い切っても良いと思うのです(少なくとも私は許します)。

技術を愛する我々は、皆、宇宙の彼方のフロンティアを目指すエンジニアだと思うのです。

ちょっと我々は早く生まれてきてしまいました。

せめて、私達は、次の世代のエンジニアを、地球という楔から解き離すようにがんばりましょう。

エンジニアに「市場調査」だの「長期技術展望」だのという、下らない検討をさせる世界から脱却させる為にも。

2023,江端さんの忘備録

今日、丸一日かけて苦労して実装したプログラムが

Today, after a full day of hard work, the program that I implemented,

- 予想通りに、動いたのだけど、

- As expected, it worked,

- 予想通りのパフォーマンスを発揮しませんでした。

- It did not perform as expected.

残念ながら、この実装は却下になりました。

Unfortunately, I have had to dismiss the implementation.

時間のない中での、こういう一日は ―― 本当に痛い。

In the absence of time, a day like this really hurts.

2023,江端さんの技術メモ

Go言語で、redisを使って2つの型の異なるデータをブロードキャストしている場合、その受信している部分を1つのswitchで受けとるにはどうしたら良いですか

を、異なるエージェントで、異なるメッセージを受信できるか試してみた件。

 

// C:\Users\ebata\tomioka3B\src\others\main28.go
// 2つのクロック(goroutine)を用意して、異なるエージェントで受けとれるかどうかの実験

package main

import (
	"encoding/json"
	"fmt"
	"sync"
	"time"

	"github.com/gomodule/redigo/redis"
)


type Clock_Info struct {
	VirtualTime time.Time
	RealTime    time.Time
}

type SubClockInfo_2 struct {
    // 異なるデータ型のフィールドをここに追加
    SomeField string
    AnotherField int
}

func BaseClock() {

	// 接続
	conn, err := redis.Dial("tcp", "localhost:6379")
	if err != nil {
		panic(err)
	}
	defer conn.Close()

	// スタート時刻を指定
	startTime := time.Date(2023, 10, 1, 7, 0, 0, 0, time.UTC)

	// 1秒値を保持する変数
	seconds := 0

	var ci Clock_Info

	// ループを開始
	for {
		// 現在の時刻を計算
		ci.VirtualTime = startTime.Add(time.Duration(seconds) * time.Second)
		ci.RealTime = time.Now()

		// 現在の時刻を表示
		// fmt.Println("シミュレータの時刻:", ci.VirtualTime.Format("2006/01/02 15:04:05"))
		// fmt.Println("現在の時刻:", ci.RealTime.Format("2006/01/02 15:04:05")) // "2006/01/02 15:04:05"はフォーマットの形を真似るもので、内容に意味なし

		// パブリッシュ
		json_ci, _ := json.Marshal(ci)
		r, err := redis.Int(conn.Do("PUBLISH", "ClockInfo_1", json_ci))
		if err != nil {
			panic(err)
		}
		fmt.Println(r)

		// 5秒待つ (実際は、0.05秒くらいだが、確認用に長くしている)
		time.Sleep(5000 * time.Millisecond)

		// 1秒値を増加させる
		seconds++
	}
}


func SubClock() {  // 実験用に追加(時間ではなく、単なる文字列と数値を送り込むだけ)

	// 接続
	conn, err := redis.Dial("tcp", "localhost:6379")
	if err != nil {
		panic(err)
	}
	defer conn.Close()


	// 1秒値を保持する変数
	seconds := 0

	var sci2 SubClockInfo_2

	// ループを開始
	for {
		// 現在の時刻を計算
		sci2.SomeField = "ebata is great"
    	sci2.AnotherField = seconds

		// パブリッシュ
		json_sci2, _ := json.Marshal(sci2)
		r, err := redis.Int(conn.Do("PUBLISH", "SubClockInfo_2", json_sci2))
		if err != nil {
			panic(err)
		}
		fmt.Println(r)

		// 7秒待つ (実際は、0.05秒くらいだが、確認用に長くしている)
		time.Sleep(7000 * time.Millisecond)

		// 1秒値を増加させる
		seconds += 1 
	}
}



func person_1(person_num int, wg *sync.WaitGroup) {
	defer wg.Done()
	// 接続
	conn, err := redis.Dial("tcp", "localhost:6379")
	if err != nil {
		panic(err)

	}
	defer conn.Close()

	psc := redis.PubSubConn{Conn: conn}
	psc.Subscribe("ClockInfo_1") // 2つに増やした

	for {	
		switch v := psc.Receive().(type) { // redisのメッセージを受けとると、ここでロックが外れる

		case redis.Message:

			switch v.Channel{

			case "ClockInfo_1":  // ブロードキャスト"ClockInfo_1"のメッセージは、こっちでキャッチ
				ci := new(Clock_Info) 
        		_ = json.Unmarshal(v.Data, &ci)
        		fmt.Println("Person_1:", person_num, "VirtualTime (ClockInfo_1):", ci.VirtualTime)

			case "SubClockInfo_2": // ブロードキャスト"SubClockInfo_2"のメッセージは、こっちでキャッチ
        		subClockData := new(SubClockInfo_2)
        		_ = json.Unmarshal(v.Data, &subClockData)
        		fmt.Println("Person_1:", person_num, "SomeField (SubClockInfo_2):", subClockData.SomeField)
         		fmt.Println("Person_1:", person_num, "AnotherField (SubClockInfo_2):", subClockData.AnotherField)


    	}
		
		case redis.Subscription:
			fmt.Printf("%s: %s %d\n", v.Channel, v.Kind, v.Count)

		case error:
			return
		}
	}

}

func person_2(person_num int, wg *sync.WaitGroup) {
	defer wg.Done()
	// 接続
	conn, err := redis.Dial("tcp", "localhost:6379")
	if err != nil {
		panic(err)

	}
	defer conn.Close()

	psc := redis.PubSubConn{Conn: conn}
	psc.Subscribe("SubClockInfo_2") // 2つに増やした

	for {	
		switch v := psc.Receive().(type) { // redisのメッセージを受けとると、ここでロックが外れる

		case redis.Message:

			switch v.Channel{


			case "ClockInfo_1":  // ブロードキャスト"ClockInfo_1"のメッセージは、こっちでキャッチ
				ci := new(Clock_Info) 
        		_ = json.Unmarshal(v.Data, &ci)
        		fmt.Println("Person_2:", person_num, "VirtualTime (ClockInfo_1):", ci.VirtualTime)

			case "SubClockInfo_2": // ブロードキャスト"SubClockInfo_2"のメッセージは、こっちでキャッチ
        		subClockData := new(SubClockInfo_2)
        		_ = json.Unmarshal(v.Data, &subClockData)
        		fmt.Println("Person_2:", person_num, "SomeField (SubClockInfo_2):", subClockData.SomeField)
         		fmt.Println("Person_2:", person_num, "AnotherField (SubClockInfo_2):", subClockData.AnotherField)
    	}
		
		case redis.Subscription:
			fmt.Printf("%s: %s %d\n", v.Channel, v.Kind, v.Count)

		case error:
			return
		}
	}

}


func main() {

	wg := sync.WaitGroup{}

	//wg.Add(1)
	//go BaseClock(&wg)
	go BaseClock()
	go SubClock()

	for i := 0; i < 5; i++ { // 5人
		wg.Add(1)
		go person_1(i, &wg)
	}

	for i := 0; i < 5; i++ { // 5人
		wg.Add(1)
		go person_2(i, &wg)
	}


	wg.Wait()
	fmt.Println("end of ... main()")
}

ちゃんと動くみたいです。

2023,江端さんの技術メモ

"SubClockInfo_2" チャンネルから受信したデータを処理するために、新しい構造体を定義します。異なるデータ型に合わせて構造体を定義し、Unmarshal でデータを解析します。

"SubClockInfo_2" チャンネルからのメッセージを受け取るために、person 関数内の switch ステートメントを更新します。具体的には、"SubClockInfo_2" チャンネルのデータ型に合わせて処理を分岐させます。

このようにすることで、"SubClockInfo_2" チャンネルから異なる型のデータを受信し、それに応じた処理を行うことができます。異なるデータ型ごとに適切な構造体を用意し、Unmarshal でデータを解析しましょう。

// C:\Users\ebata\tomioka3B\src\others\main27.go
// 2つのクロック(goroutine)を用意して、一つのswitchで受けとれるかどうかの実験

package main

import (
	"encoding/json"
	"fmt"
	"sync"
	"time"

	"github.com/gomodule/redigo/redis"
)


type Clock_Info struct {
	VirtualTime time.Time
	RealTime    time.Time
}

type SubClockInfo_2 struct {
    // 異なるデータ型のフィールドをここに追加
    SomeField string
    AnotherField int
}

func BaseClock() {

	// 接続
	conn, err := redis.Dial("tcp", "localhost:6379")
	if err != nil {
		panic(err)
	}
	defer conn.Close()

	// スタート時刻を指定
	startTime := time.Date(2023, 10, 1, 7, 0, 0, 0, time.UTC)

	// 1秒値を保持する変数
	seconds := 0

	var ci Clock_Info

	// ループを開始
	for {
		// 現在の時刻を計算
		ci.VirtualTime = startTime.Add(time.Duration(seconds) * time.Second)
		ci.RealTime = time.Now()

		// 現在の時刻を表示
		// fmt.Println("シミュレータの時刻:", ci.VirtualTime.Format("2006/01/02 15:04:05"))
		// fmt.Println("現在の時刻:", ci.RealTime.Format("2006/01/02 15:04:05")) // "2006/01/02 15:04:05"はフォーマットの形を真似るもので、内容に意味なし

		// パブリッシュ
		json_ci, _ := json.Marshal(ci)
		r, err := redis.Int(conn.Do("PUBLISH", "ClockInfo_1", json_ci))
		if err != nil {
			panic(err)
		}
		fmt.Println(r)

		// 5秒待つ (実際は、0.05秒くらいだが、確認用に長くしている)
		time.Sleep(5000 * time.Millisecond)

		// 1秒値を増加させる
		seconds++
	}
}


func SubClock() {  // 実験用に追加(時間ではなく、単なる文字列と数値を送り込むだけ)

	// 接続
	conn, err := redis.Dial("tcp", "localhost:6379")
	if err != nil {
		panic(err)
	}
	defer conn.Close()


	// 1秒値を保持する変数
	seconds := 0

	var sci2 SubClockInfo_2

	// ループを開始
	for {
		// 現在の時刻を計算
		sci2.SomeField = "ebata is great"
    	sci2.AnotherField = seconds

		// パブリッシュ
		json_sci2, _ := json.Marshal(sci2)
		r, err := redis.Int(conn.Do("PUBLISH", "SubClockInfo_2", json_sci2))
		if err != nil {
			panic(err)
		}
		fmt.Println(r)

		// 7秒待つ (実際は、0.05秒くらいだが、確認用に長くしている)
		time.Sleep(7000 * time.Millisecond)

		// 1秒値を増加させる
		seconds += 1 
	}
}




func person(person_num int, wg *sync.WaitGroup) {
	defer wg.Done()
	// 接続
	conn, err := redis.Dial("tcp", "localhost:6379")
	if err != nil {
		panic(err)
	}
	defer conn.Close()

	psc := redis.PubSubConn{Conn: conn}
	psc.Subscribe("ClockInfo_1", "SubClockInfo_2") // 2つに増やした

	for {	
		switch v := psc.Receive().(type) { // redisのメッセージを受けとると、ここでロックが外れる

		case redis.Message:

			switch v.Channel{

			case "ClockInfo_1":  // ブロードキャスト"ClockInfo_1"のメッセージは、こっちでキャッチ
				ci := new(Clock_Info) 
        		_ = json.Unmarshal(v.Data, &ci)
        		fmt.Println("Person:", person_num, "VirtualTime (ClockInfo_1):", ci.VirtualTime)

			case "SubClockInfo_2": // ブロードキャスト"SubClockInfo_2"のメッセージは、こっちでキャッチ
        		subClockData := new(SubClockInfo_2)
        		_ = json.Unmarshal(v.Data, &subClockData)
        		fmt.Println("Person:", person_num, "SomeField (SubClockInfo_2):", subClockData.SomeField)
         		fmt.Println("Person:", person_num, "AnotherField (SubClockInfo_2):", subClockData.AnotherField)
    	}
		
		case redis.Subscription:
			fmt.Printf("%s: %s %d\n", v.Channel, v.Kind, v.Count)

		case error:
			return
		}
	}

	/*
	for {
		ci := new(Clock_Info)
		switch v := psc.Receive().(type) {
		case redis.Message:
			_ = json.Unmarshal(v.Data, &ci)
			fmt.Println("Person:", person_num, "VirtualTime:", ci.VirtualTime)
			//fmt.Println("Person:", person_num, "RealTime:", ci.RealTime)

		case redis.Subscription:
			fmt.Printf("%s: %s %d\n", v.Channel, v.Kind, v.Count)

		case error:
			return
		}
	}
	*/

}

func main() {

	wg := sync.WaitGroup{}

	//wg.Add(1)
	//go BaseClock(&wg)
	go BaseClock()
	go SubClock()

	for i := 0; i < 5; i++ { // 5人
		wg.Add(1)
		go person(i, &wg)
	}

	wg.Wait()
	fmt.Println("end of ... main()")
}

出力結果はこんな感じになり、期待した通りの動きをしているようです。

Person: 1 VirtualTime (ClockInfo_1): 2023-10-01 07:00:03 +0000 UTC
Person: 3 VirtualTime (ClockInfo_1): 2023-10-01 07:00:03 +0000 UTC
Person: 0 VirtualTime (ClockInfo_1): 2023-10-01 07:00:03 +0000 UTC
Person: 4 VirtualTime (ClockInfo_1): 2023-10-01 07:00:03 +0000 UTC
Person: 2 VirtualTime (ClockInfo_1): 2023-10-01 07:00:03 +0000 UTC
5
Person: 1 VirtualTime (ClockInfo_1): 2023-10-01 07:00:04 +0000 UTC
Person: 0 VirtualTime (ClockInfo_1): 2023-10-01 07:00:04 +0000 UTC
Person: 3 VirtualTime (ClockInfo_1): 2023-10-01 07:00:04 +0000 UTC
Person: 2 VirtualTime (ClockInfo_1): 2023-10-01 07:00:04 +0000 UTC
Person: 4 VirtualTime (ClockInfo_1): 2023-10-01 07:00:04 +0000 UTC
5
Person: 3 SomeField (SubClockInfo_2): ebata is great
Person: 3 AnotherField (SubClockInfo_2): 3
Person: 0 SomeField (SubClockInfo_2): ebata is great
Person: 0 AnotherField (SubClockInfo_2): 3
Person: 1 SomeField (SubClockInfo_2): ebata is great
Person: 1 AnotherField (SubClockInfo_2): 3
Person: 4 SomeField (SubClockInfo_2): ebata is great
Person: 4 AnotherField (SubClockInfo_2): 3
Person: 2 SomeField (SubClockInfo_2): ebata is great
Person: 2 AnotherField (SubClockInfo_2): 3
5
Person: 3 VirtualTime (ClockInfo_1): 2023-10-01 07:00:05 +0000 UTC
Person: 4 VirtualTime (ClockInfo_1): 2023-10-01 07:00:05 +0000 UTC
Person: 1 VirtualTime (ClockInfo_1): 2023-10-01 07:00:05 +0000 UTC
Person: 0 VirtualTime (ClockInfo_1): 2023-10-01 07:00:05 +0000 UTC
Person: 2 VirtualTime (ClockInfo_1): 2023-10-01 07:00:05 +0000 UTC
5
Person: 3 SomeField (SubClockInfo_2): ebata is great
Person: 3 AnotherField (SubClockInfo_2): 4
Person: 0 SomeField (SubClockInfo_2): ebata is great
Person: 4 SomeField (SubClockInfo_2): ebata is great
Person: 4 AnotherField (SubClockInfo_2): 4
Person: 1 SomeField (SubClockInfo_2): ebata is great
Person: 1 AnotherField (SubClockInfo_2): 4
Person: 0 AnotherField (SubClockInfo_2): 4
Person: 2 SomeField (SubClockInfo_2): ebata is great
Person: 2 AnotherField (SubClockInfo_2): 4
5

以上

2023,江端さんの忘備録

今年、大リーグで、日本人選手がホームラン王を獲得したことで、嫁さんがとても喜んでいます。

This year, a Japanese player won the home run king in the big leagues, which made my wife very happy.

嫁さんが喜んでいるのを見ると、私は幸せな気分になるので、私も一緒に喜んでいます。

Seeing my wife happy makes me happy, so I come to be pleased with her.

それに、日本や世界の人を幸せにしたことは、とても素晴しいことだと思っています。

Besides, I think it is wonderful that I have made people in Japan and worldwide happy.

子どもたちが、このようなヒーロに憧れを持つことも、大変良いことだと思っています。

I believe that it is also very good for children to have this kind of admiration for heroes.

本当です。

It is true.

-----

ただ、私は、自分の子どもであれば、

However, for my children,

こちらのアニメ(グラゼニ)も見せたい

I want to show them this anime (Grazeni) as well.

です。

今、YouTubeで無料配信しています。

The anime is now available for free on YouTube.

私は、子どもには、夢と現実のバランス感覚も持っていてもらいたいと思うのです。

I want my children to have a sense of balance between dreams and reality.

アイドルや芸人として喰っていける確率については、こちらのページとその次のページをご参照下さい。

For more information on the probability of making a living as an idol or comedian, please see this page and the following pages.

「夢」とは、結構な頻度で人生を潰しかねない「毒」にもなります。

"Dreams" can also be "poison" that can often destroy their lives.

そして、その現実を子どもに伝えるのは、大人の責務です。

And it is the responsibility of adults to communicate this reality to children.

『なぜ、本人の年齢や体力を配慮しない、ランナーの体を壊すようなことを"前提"とした走行計画を立案し、それを強行し、それを放映するのか』

2019,江端さんの忘備録

本日は、コラムがリリースされた日なので、日記はお休みです。

My new column is released today, so I am taking a day off.

Let's turn the world by "Number"(61) : Work style reform(20) Final"

The era of "long working hours = virtues" will end. Could "Work style reform" give us a new paradigm?

-----

私、録画しておいたテレビ番組以外は、あまり見ないのですが、先日、スーパー銭湯のサウナの中で、たまたま、キュメンタリ番組を見てしまいました。

I usually don't watch anything other than the TV shows I recorded on an HDD recorder; however, the other day, I watched a documentary program in a sauna in a public bath.

見てしまった以上、語らなければならないと思います。

I think I have to talk because I have seen it.

そして、これから、私が語る内容は、かなり多くの人を不愉快にさせると思います。

And from now on, what I'm talking about will make many people unpleasant.

もしかしたら、私のコラムを愛読して頂いている人の半分がいなくなるかもしれません。

Maybe half of the people who love reading my column are gone.

それでも、私は、このシリーズの最終回に際して、語らずにいられないのです。

Still, I cannot help speaking about the final part of this series.

-----

―― 「24時間テレビ」という番組の、「マラソン」って、あれ、何ですか?

"What is the "marathon" of the program whose title is "the 24-hour TV"?"

あれが「マラソン」を目的とした「マラソン」という企画であるなら、それならそれで良いのです。

If that is a " Marathon " plan for "Marathon," that's fine.

しかし、私が、真摯に、真面目に、真剣に、心の底から理解できないことは、

But what I cannot understand seriously, from the bottom of my heart,

『なぜ、本人の年齢や体力を配慮しない、ランナーの体を壊すようなことを" 前提" とした走行計画を立案し、それを強行し、それを放映するのか』

"Why don't they consider the age and physical strength of the runners?" "Why do they make a running plan with the premise of breaking the runner's body?" and "Why do they force it and air it?"

ということです。

20kmを走るポテンシャルしか持たないランナーに、それ以上を走らせれば、当然、体調を崩しますし、予定外のトラブルが発生するのは、当然です。

If a runner with the potential to run 20km runs only, they will naturally be unwell, and unforeseen troubles will naturally occur.

ランナーをアサインしたその時点で、こうなることは「100%自明」です。

This is "100% natural" when the runner is assigned.

マネージメントの観点から言えば、「もう一人のランナーを用意しておく」が正解です。

From the point of view of management, "preparing another runner" is the correct answer.

-----

では、なぜ、その「もう一人」を準備しないのか?

So why don't they prepare that "another runner"?

その人の有するポテンシャルを超えるアクションを強いれば、当然、その人には、想像を絶する苦痛が発生します。

If the runner is forced to take action that exceeds their potential, the runner will naturally suffer unimaginable pain.

そして、それらの苦痛は、視聴者の過去の苦痛を思い起こさせ、大きな同情心とシンパシーが発生することになります。

And those pains are reminiscent of the viewers' past hurts, generating great compassion and sympathy.

そして、それらの苦痛を乗り超えるシーンは、多くの人の感動を発生させます。

Scenes that overcome those pains generate the impression of many people.

24時間テレビというマラソン的なコンテンツに、この「マラソン」は、完全にコンセプトマッチしているという訳です。

This "marathon" perfectly matches a marathon program called 24-hour TV.

そして ―― こういうコンテンツは「受ける」し「売れる」のです。

And ―― Such content is "acceptable" at a high price.

-----

分っています。

I understand.

私は全てを分かった上で、敢えて不愉快なことを言っているのです。

I know everything and dare to say something unpleasant.

究極、感動系のコンテンツとは、詰まるところ「こういうもの」です。

Ultimately, emotional content is the same.

24時間テレビのマラソンだけを上げて、それを批判するのは、卑怯だ ―― ということも分かっています。

I know it is obscene to pick up only the 24-hour TV marathon and criticize it.

しかし、映画であれば、実際には、役者は「苦痛の演技」をしているだけです。

However, in the case of a movie, the actors are only acting "painful."

24時間テレビのランナーは、間違いなく「苦痛そのものの中」にいます。

The 24-hour TV runner is definitely “in pain”.

私には、「この番組は、人のリアルな苦痛を、娯楽として提供している」としか思えないのです。

I have come to think that "this program offers real human pain as entertainment."

-----

この2年間、「働き方改革」の連載を担当してきた当事者である私は、

As a person in charge of serializing "work style reform" for the past two years, I can't see the following separately.

「自分のポテンシャルを超えることを強いられて苦しんでいる部下」と、

-"Subordinates suffering from being forced to exceed their potential"

「その苦痛に、深い意味がある信じて疑わない上司」と、

- "Boss who thinks it has a deep meaning in pain and believes in doubt."

「自分のポテンシャルを超えて走らされているランナー」と

- "Runners that run beyond their potential"

「そのランナーを見て感動している、テレビの前にいる視聴者」とを、

- "viewers in front of the TV who are impressed by the runner"

―― 切り分けて見ることが、どうしてもできない

-----

24時間テレビの苦痛の表情に歪むランナーの顔を見て、

If Watching the runner's face distorted in the expression of the pain on TV for 24 hours,

なぜチャンネルを変えようとしないのか、

Why don't you change channels?

テレビのある居間から立ち去ろうとしないのか、

Why do you want to leave the living room with the TV?

私には理解できないのです。

I can't understand.

-----

多くの人は、「あれはあれ、これはこれ」と、日常の中で、これらをバッサリと分離することができるのかもしれません。

Many people may be able to separate these from them daily, "that is that, and this is this."

もしそうなら、本当に凄いと思うし、心から尊敬します。

If so, it is amazing, and I respect you.

非日常系コンテンツと、日常のルーティンを、きちんと分けられるなら、何の問題もないのです。

There is no problem if the non-daily content and daily routine can be adequately separated.

-----

ただ私一人が、不器用で、要領が悪くて、壊れているだけ、というなら ―― 私は、本当に嬉しいです。

I'm happy if I'm clumsy, bad, and broken.

でも、本当にそうなんでしょうか?

However, is it true?