2021/11,江端さんの技術メモ

package main

// C:\Users\ebata\goga\3-12

import (
	"fmt"
	"sync"
	"time"
)

type BUS struct {
	number int
}

//var l sync.Mutex
//var c1 chan int

func (bus *BUS) bus_func_recv(lr *sync.Mutex, cr *sync.Cond) {
	// 受信(ブロードキャスト専用)
	fmt.Println("bus.number by recv:", bus.number)
	lr.Lock()
	defer lr.Unlock()
	fmt.Println("before cr.Wait")
	for {
		cr.Wait()          // ロック
		fmt.Println("hi ") // ここで受信処理を行う
	}

}

func (bus *BUS) bus_func_send(lb *sync.Mutex, ch1 chan int) {
	// 送信専用
	fmt.Println("bus.number by send:", bus.number)

	lb.Lock()
	defer lb.Unlock()
	ch1 <- bus.number
}

func main() {
	//wg := sync.WaitGroup{}
	l := sync.Mutex{}
	c1 := make(chan int)

	l2 := sync.Mutex{}
	c2 := sync.NewCond(&l2)

	for i := 0; i < 10; i++ {
		bus := BUS{i}
		go bus.bus_func_send(&l, c1)
		go bus.bus_func_recv(&l2, c2)
	}

	time.Sleep(time.Second)

	c2.Broadcast()

	for {
		select {
		case v := <-c1:
			fmt.Println(v)
		//default:
		//	fmt.Println("default")
		case <-time.After(3 * time.Second):

			return
		}
	}

	close(c1)

	//wg.Wait()

	//time.Sleep(3 * time.Second)




package main

import (
	"fmt"
	"math/rand"
	"sync"
	"time"
)

type PERSON struct {
	lon_destination float64
	lat_destination float64
	lon_arrival     float64
	lat_arrival     float64
	bus             BUS
}

type BUS struct {
	lon_present float64
	lat_present float64
	//	person      []PERSON
}

func random(min, max float64) float64 {
	rand.Seed(time.Now().UnixNano())
	return rand.Float64()*(max-min) + min
}

func person(i int, wg *sync.WaitGroup) {
	defer wg.Done()
	person := PERSON{}
	// 出発座標、到着座標の入力
	person.lon_destination = random(139.480, 139.460)
	person.lat_destination = random(35.602, 35.586)
	person.lon_arrival = random(139.480, 139.460)
	person.lat_arrival = random(35.602, 35.586)

	fmt.Println(person, i)
}

func bus(i int, wg *sync.WaitGroup) {
	defer wg.Done()
	bus := BUS{}

	fmt.Println(bus, i)
}

func main() {
	var wg sync.WaitGroup
	defer wg.Wait()

	// バスエージェントの生成 3台
	for i := 0; i < 3; i++ {
		wg.Add(1)
		go bus(i, &wg)
	}

	i := 0

	for {

		time.Sleep(3 * time.Second)

		wg.Add(1)
		i++
		go person(i, &wg)
	}

}


package main

// C:\Users\ebata\goga\3-15

import (
	"fmt"
	"sync"
	"time"
)

// BroadCasterは管制システムのイメージに近い だから移動体のオブジェクトには含めない
type BroadCaster struct {
	cond *sync.Cond
	id   int64
	msg  string
}

func (bc *BroadCaster) Send(msg string) {
	bc.cond.L.Lock()
	defer bc.cond.L.Unlock()
	bc.id++
	bc.msg = msg
	bc.cond.Broadcast()
}

func (bc *BroadCaster) Recv(last int64) (int64, string) {
	bc.cond.L.Lock()
	defer bc.cond.L.Unlock()
	for bc.id == last {
		bc.cond.Wait()
	}
	return bc.id, bc.msg
}

// broadcaster_busをグローバルで実体化
var (
	broadcaster_bus = &BroadCaster{
		cond: sync.NewCond(&sync.Mutex{}),
	}
)

// broadcaster_personをグローバルで実体化
var (
	broadcaster_person = &BroadCaster{
		cond: sync.NewCond(&sync.Mutex{}),
	}
)

// 単一通信の構造体
type SingleCaster struct {
	ch   chan int   // 単一通信路
	lock sync.Mutex // 単一通信路のロック
}

// バス用単一通信の実体化
var (
	sc_bus = &SingleCaster{
		lock: sync.Mutex{},
		ch:   make(chan int),
	}
)

// 人間用単一通信の実体化
var (
	sc_person = &SingleCaster{
		lock: sync.Mutex{},
		ch:   make(chan int),
	}
)

// 人間用単一通信の実体化

type CONTROL struct {
	number int // 管制番号
}

func (control *CONTROL) control_start() {

	// バスへの一斉送信
	for i := 0; i < 2; i++ {
		time.Sleep(1 * time.Second)
		broadcaster_bus.Send(fmt.Sprintf("hello, bus world %d", i))
	}

	// 人間への一斉送信
	for i := 0; i < 2; i++ {
		time.Sleep(1 * time.Second)
		broadcaster_person.Send(fmt.Sprintf("hello, person world %d", i))
	}

	for {
		select {
		//		case v := <-c1:
		case v_b := <-sc_bus.ch:
			fmt.Println("catched from bus send", v_b)
		case v_p := <-sc_person.ch:
			fmt.Println("catched from person send", v_p)

		//default:
		//	fmt.Println("default")
		case <-time.After(3 * time.Second):

			return
		}
	}
}

type BUS struct {
	number int // バス車両番号
}

func (bus *BUS) bus_func_recv() {
	last := int64(0)
	for {
		id, msg := broadcaster_bus.Recv(last)
		last = id
		fmt.Println("broadcaset recv:", bus.number, msg)
	}
}

func (bus *BUS) bus_func_send() {
	// 送信専用
	fmt.Println("bus.number by send:", bus.number)

	sc_bus.lock.Lock()
	defer sc_bus.lock.Unlock()
	sc_bus.ch <- bus.number
}

type PERSON struct {
	number int  // 人間番号
	live   bool // 存在フラグ 存在:true 消滅:false
}

func (person *PERSON) person_func_recv() {
	last := int64(0)
	for {
		if person.live {
			return
		}

		id, msg := broadcaster_person.Recv(last)
		last = id
		fmt.Println("broadcaset recv:", person.number, msg)
	}
}

func (person *PERSON) person_func_send() {
	// 送信専用
	fmt.Println("person.number by send:", person.number)

	for {
		sc_person.lock.Lock()
		sc_person.ch <- person.number
		sc_person.lock.Unlock()
		time.Sleep(time.Second)

	}

}

func main() {

	// バス3台
	for i := 0; i < 3; i++ {
		bus := BUS{i}
		go bus.bus_func_send()
		go bus.bus_func_recv()
	}

	// 人間10人
	for i := 0; i < 10; i++ {
		person := PERSON{i, true}
		go person.person_func_send()
		go person.person_func_recv()
	}

	time.Sleep(time.Second)

	control := CONTROL{}
	go control.control_start()

	//close(c1)

	//wg.Wait()

	time.Sleep(10 * time.Second)
}


package main

// C:\Users\ebata\goga\3-17

import (
	"fmt"
	"sync"
	"time"
)

// BroadCasterは管制システムのイメージに近い だから移動体のオブジェクトには含めない
type BroadCaster struct {
	cond *sync.Cond
	id   int64
	msg  string
}

func (bc *BroadCaster) Send(msg string) {
	bc.cond.L.Lock()
	defer bc.cond.L.Unlock()
	bc.id++
	bc.msg = msg
	bc.cond.Broadcast()
}

func (bc *BroadCaster) Recv(last int64) (int64, string) {
	bc.cond.L.Lock()
	defer bc.cond.L.Unlock()
	for bc.id == last {
		bc.cond.Wait()
	}
	return bc.id, bc.msg
}

// broadcaster_busをグローバルで実体化
var (
	broadcaster_bus = &BroadCaster{
		cond: sync.NewCond(&sync.Mutex{}),
	}
)

// broadcaster_personをグローバルで実体化
var (
	broadcaster_person = &BroadCaster{
		cond: sync.NewCond(&sync.Mutex{}),
	}
)

// 単一通信の構造体
type SingleCaster struct {
	ch   chan int   // 単一通信路
	lock sync.Mutex // 単一通信路のロック
}

// バス用単一通信の実体化
var (
	sc_bus = &SingleCaster{
		lock: sync.Mutex{},
		ch:   make(chan int),
	}
)

// 人間用単一通信の実体化
var (
	sc_person = &SingleCaster{
		lock: sync.Mutex{},
		ch:   make(chan int),
	}
)

// 人間用単一通信の実体化

type CONTROL struct {
	number int // 管制番号
}

func control_init(wg *sync.WaitGroup) {
	defer wg.Done()

	// バスへの一斉送信
	for i := 0; i < 2; i++ {
		time.Sleep(1 * time.Second)
		broadcaster_bus.Send(fmt.Sprintf("hello, bus world %d", i))
	}

	// 人間への一斉送信
	for i := 0; i < 2; i++ {
		time.Sleep(1 * time.Second)
		broadcaster_person.Send(fmt.Sprintf("hello, person world %d", i))
	}

	for {
		select {
		//		case v := <-c1:
		case v_b := <-sc_bus.ch:
			fmt.Println("catched from bus send", v_b)
		case v_p := <-sc_person.ch:
			fmt.Println("catched from person send", v_p)

		//default:
		//	fmt.Println("default")
		case <-time.After(3 * time.Second):

			return
		}
	}
}

type BUS struct {
	number      int       // バス車両番号
	person_list []*PERSON // バスに乗っている人
}

func (bus *BUS) bus_func_recv() {
	last := int64(0)
	for {
		id, msg := broadcaster_bus.Recv(last)
		last = id
		fmt.Println("broadcaset recv:", bus.number, msg)
	}
}

func (bus *BUS) bus_func_send() {
	// 送信専用
	fmt.Println("bus.number by send:", bus.number)

	sc_bus.lock.Lock()
	defer sc_bus.lock.Unlock()
	sc_bus.ch <- bus.number
}

func (bus *BUS) add_person_list(person *PERSON) {
	bus.person_list = append(bus.person_list, person)
}

func (bus *BUS) del_person_list(number int) {
	for cnt := range bus.person_list {
		if number == bus.person_list[cnt].number {
			bus.person_list = append(bus.person_list[:number], bus.person_list[number+1:]...)
			return
		}
	}
}

type PERSON struct {
	number int  // 人間番号
	live   bool // 存在フラグ 存在:true 消滅:false
}

func (person *PERSON) person_func_recv() {
	last := int64(0)
	for {
		if person.live {
			return
		}

		id, msg := broadcaster_person.Recv(last)
		last = id
		fmt.Println("broadcaset recv:", person.number, msg)
	}
}

func (person *PERSON) person_func_send() {
	// 送信専用
	fmt.Println("person.number by send:", person.number)

	for {
		sc_person.lock.Lock()
		sc_person.ch <- person.number
		sc_person.lock.Unlock()
		time.Sleep(time.Second)

	}

}

func bus_init(wg *sync.WaitGroup, i int) {
	defer wg.Done()

	bus := BUS{number: i}
	go bus.bus_func_send()
	go bus.bus_func_recv()

}

func person_init(wg *sync.WaitGroup, i int) {
	defer wg.Done()

	person := PERSON{number: i}
	go person.person_func_send()
	go person.person_func_recv()
}

func main() {

	wg := sync.WaitGroup{}

	// バス3台
	for i := 0; i < 3; i++ {
		wg.Add(1)
		go bus_init(&wg, i)
	}

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

	time.Sleep(time.Second)

	// 管制センタ 1つ
	wg.Add(1)
	go control_init(&wg)

	//close(c1)

	//wg.Wait() //本来はこれだが、強制終了の為に
	time.Sleep(10 * time.Second)

}


2021/11,江端さんの技術メモ

うーん、もっとスマートな方法はないかなぁ

package main

import (
	"fmt"
	"time"
)

func main() {
	fmt.Println("Start!")
	// boolの型でchannelを作成する
	ch1 := make(chan bool)
	ch2 := make(chan bool)
	ch3 := make(chan bool)

	// goroutineを生成して、サブスレッドで処理する

	go func() {
		time.Sleep(2 * time.Second)
		// chに対してtrueを投げる(送信)
		ch1 <- true
		ch2 <- true
		ch3 <- true
	}()

	go func() {
		fmt.Println("func2 start")
		<-ch1
		fmt.Println("func2 end")
	}()

	go func() {
		fmt.Println("func3 start")
		<-ch2
		fmt.Println("func3 end")
	}()

	//isFin := <-ch // <-chだけでもブロック出来る
	fmt.Println("before	time.Sleep(10 * time.Second)")
	time.Sleep(10 * time.Second)
	fmt.Println("after time.Sleep(10 * time.Second)")

	<-ch3

	// chをクローズする
	close(ch1)
	close(ch2)
	close(ch3)

	// 受信した値をprintする
	//fmt.Println(isFin)
	fmt.Println("Finish!")
}

2021/11,江端さんの忘備録

以前、非代替性トークン(Non-Fungible Token、NFT)についてのコラムを書きました。

I wrote a previous column about Non-Fungible Token (NFT).

そのコラムの中で、『YouTubeで解説されていたNFTの内容について技術的に検証した結果』の概要を記載しました。

In that column, I outlined the results of a "technical review of the content of the NFT as explained on YouTube.

ちなみに、『私が間違っていれば、是非教えて欲しい』というメッセージも付けておきました。

By the way, I also added a message saying, 'If I misunderstand them, please let me know'.

-----

コラムがリリースされた後、再度YouTubeを確認したら、私が参照したコンテンツが、全部削除されていました。

After the column was released, I checked YouTube again and found that all the content I referred to had been removed.

やっぱり、

Well,

『所感 : "バカ言ってんじゃねーよ"』

"Comment: "Don't be stupid."

などと書かれると、怖くなるのかもしれません。

They may be scared when they read the lines.

いや、『恥をかかされた』と、私を恨んでいるかもしれません。

Rather, they might resent me for 'humiliating' them.

しかし、私は『NFTに関する技術的な解説が間違っている』と言っただけで、NFTそのものを否定している訳ではありません。

However, I just said that the technical explanation of NFT is wrong, not that I am denying NFT itself.

『NFTを通貨として取り扱う世界が、絶対に来ない』とも思っていません。

I don't think that "the world where NFTs are used as currency will never come".

この感じを一言で説明するのであれば、

If I had to describe this feeling in one word, it would be,

『NFTが将来どうなろうが、どーでもいい』という感じです。

"I don't care what the future holds for NFT"

-----

NFTで儲けて幸せになれる人がいれば、素直に「おめでとう」と言います。

If someone can make money with NFT and be happy, I will honestly say "Congratulations".

加えて、NFTで損して不幸せになる人がいなければ、素直に「素晴しい」と言います。

In addition, if no one loses money and becomes unhappy with NFT, I will honestly say "it is great".

ともあれ、私は、

Anyway,

―― 通貨の概念のない未開の地において、コインや紙幣を見せられた原住民程度にしか、"NFT"を理解できないのです

My understanding of NFT is that of a native who was shown coins and paper money in an uncivilized land without concept of currency.

2021/11,江端さんの忘備録

「ここ1ヶ月間のコロナ死者の7割がワクチン未接種、2回のワクチン接種後の死亡者は2%」というニュースが、昨日からニュースサイトに掲載されています。

News sites have been reporting since yesterday that "70% of coronary deaths in the past month were unvaccinated, and 2% of deaths occurred after two doses of vaccine.

でもって、このニュースの内容自体が、マスコミと政府の陰謀と信じている人もいるだろうなぁ、と思っています。

And, I'm sure there are people who believe that this news story itself is a conspiracy of the media and the government.

『政府の陰謀は普通にあると思っているけど、コロナウイルスワクチンに関する陰謀に関しては、ステークホルダーがいないから成立できない』

"I believe that government conspiracies are common, but for the conspiracies about coronavirus vaccines, it is impossible because there are no stakeholders"

という話を、簡単なシミュレーション結果と一緒に、こちらに書いておきました。

I've written about it here, along with the results of a simple simulation.

興味のある方は、ご一読下さい。

If you are interested, please read on.

-----

逆に、今回、私が無理矢理捻り出した、真逆の陰謀論「ワクチン非接種者殺害計画」の方が、現実味を増してきたような気がします。

On the contrary, I feel that the backwards conspiracy theory that I forced myself to come up with this time, the "plan to kill non-vaccinated people," is becoming more realistic.

しかし、こちらも、陰謀論としては『弱い』です。

However, this one is also 'weak' as a conspiracy theory.

例えば、一昨日、政府が「第6波対策の方針」を明確して、この陰謀論を、政府自身が潰しました。

For example, the day before yesterday, this conspiracy theory was squashed by the government itself, as the government clarified its policy on the 6th wave.

-----

総じて、「陰謀のPDCA」は、そもそも、P(Plan)からして難しく、D(Do)は絶望的に難しいです。

In general, the "PDCA of conspiracy" is difficult, just for P (Plan), and D (Do) is hopelessly difficult.

陰謀を実施するだけの価値のある潤沢な資金のあるステークホルダーといえば ―― そうですね、やっぱり「軍需産業のコングロマリット」クラスでないと厳しいのではないかなぁ、と思っています。

Speaking of stakeholders with ample funds worthy of carrying out a conspiracy -- well, I guess it would have to be a "military conglomerate" class.

2021/11,江端さんの忘備録

私は、勉強に勉強を重ねることで、自分の中の差別的な意識を乗り越えるように試みています。

I am a person who want to overcomes my own sense of discrimination by studying and studying.

しかし、このような頭でっかちなロジックでは、現実世界の差別意識との乖離を乗り越えられないことがしばしばあります。

However, I am afraid that this heady logic often fails to overcome the disconnect with real-world discriminatory attitudes.

例1:

Example 1:

おばさんの服を着た、外見が酷い(不潔感MAX)、肥満で、髭の生えた、清潔感がマイナスに振りきれているおっさん(おばさん)が、ソバを食べている私の横に座った時 ―― 加えて、すさまじい凄い体臭で、私の食欲がゼロになってしまった時、

When the old person in aunt's clothes, who looked terrible, obese, bearded, and had a negative sense of cleanliness, sat down next to me eating buckwheat, in addition to that, when my appetite was reduced to zero due to her tremendous, terrible body odor.

『気持ち悪い』『不快』という感情だけで私の脳のパフォーマンスは100%に振り切れて、そのおっさん(おばさん)の前では、"LGBT"という概念は、吹っ飛びました。

Just the feeling of "disgusting" and "uncomfortable" was enough to push my brain performance to 100%, and the concept of "LGBT" was blown away in front of that person.

コミックや小説や映画の「美しい」世界は、現実の世界とは、随分違うものであり、今の私は、その2つの距離を補完する媒介を持ち合わせていません。

The "beautiful" world of comics, novels, and movies is very different from the real world, and right now I don't have a medium to complement the distance between the two.

例2:

Example 2:

「ホモ」と「ゲイ」では、「ゲイ」の方が、差別的な呼称であると長いこと思っていましたが、それが、全く逆であったことを知ったのは2年前です。

For a long time, I thought that "gay" was the more discriminatory term between "homo" and "gay," but it wasn't until two years ago that I learned that it was quite the opposite.

で、その違いをロジックで説明されても理解できず、感覚的にはずっと、「???」という状態が続いていました。

So, even when the difference was explained to me in terms of logic, I couldn't keep understanding it.

ある時、『「ホモ」という言葉は「ニグロ」という差別的用語と同じ意味合いである』と聞いて、ようやく肚の底から納得できました。

One day, I heard that the word "homo" has the same meaning as the discriminatory term "negro," and I was finally convinced from the bottom of my heart.

今では、私は「ホモ」という言葉は使わずに、「ゲイ」で統一しています。

Now I don't use the word "homo", but rather "gay" as a unifying term.

ただ、この話は「ニグロ」という言葉の意味合いが分からなければ、分かりません。

However, you can't understand this story unless you understand the connotation of the word "negro".

実際、嫁さんに、上記の話をしても「???」という感じでした。

In fact, when I mentioned the above to my wife, she looked like "what's what?"

-----

とは言え、私のような「頭でっかちなロジック派」は多いと思うのです。

However, I think there are many "heady logicians" like me.

私のような奴を、「"LGBT"分ったフリ派」とでも言うのでしょうか。

I guess you could call people like me the "LGBT pretenders".

とりあえず、「"LGBT"は分からん、と堂々という奴」よりは、「"LGBT"分ったフリ派」は、ほんのちょっとだけマシですが、やっぱり、まだまだ遠いと思います。

At any rate, the "LGBT pretenders" are only a little bit better than the "people who proudly say they don't understand LGBT".

残念ですが、「この問題を一気に解決する方法」というのは、期待できないと思います。

Unfortunately, I don't think we can expect to find "a way to solve this problem all at once".

LGBTが少しづつ日常的になることで、コミックや小説や映画の「美しい」世界と現実の世界の乖離が、少しづつ埋められていくことが必要なのだろう、と考えています。

I believe that the gap between the "beautiful" world of comics, novels and movies and the real world will be bridged little by little as LGBT people become more and more commonplace.

2021/11,江端さんの忘備録

家族を見ていても、あるいはNetFlixで海外ドラマを見ていても思うことなのですが、

when I watch my family, or even when I watch foreign dramas on NetFlix, I think

―― こいつら、本当に、他人のUSBメモリを、簡単にパソコンに接続するなぁ

"These guys really do make it easy to connect other people's USB flash drives to their computers"

と思います。

私たち企業のエンジニアは、出所不明のUSBメモリを、簡単にはパソコンに接続しません ―― そのように訓練されているからです。

Our corporate engineers do not easily connect USB flash drives of unknown origin to their computers -- we are trained to do so.

私の場合は、まず、そのUSBメモリを

In my case, the first thing I did was to get that USB flash drive, is

(1)ネットワークに繋っていない古いパソコンに繋いで、

(1) To connect it to an old computer that is not connected to the network.

(2)ファイルを一通り目視でチェックして、

(2) To visually check all the files.

さらに

in addition,

(3)ウイルススキャンをかけて、

(3) To run a virus scan

ようやく、メインのコンピュータに繋ぎます。

Finally, I connect it to the main computer.

冗談ではなく『USBメモリ = 爆弾』という認識です。

It's not joking that I'm aware that "USB memory stick = bomb".

-----

以前、屋外実証実験の最中に、緊急にファイルを移動させる必要があり、コンビニでUSBメモリを購入したのですが ―― そのことで、結構な大騒ぎとなりました。

Once, in the middle of an outdoor demonstration, I needed to move a file urgently and bought a USB flash drive at a convenience store -- which caused quite a commotion.

私は、コンビニでのこのUSBメモリの購入に「20秒」必要としました。

I needed "20 seconds" to purchase this USB flash drive at the convenience store.

しかし、このUSBメモリに関して「物理破壊済み証明書」を貰い「滅却完了」まで、少なくとも関係者3人を巻き込んで、少なくとも「のべ20時間以上」を費やしたのは、間違いありません。

However, there is no doubt that it took at least 20 hours, involving at least three people, to get a "Certificate of Physical Destruction" for this USB memory stick and complete its destruction.

大袈裟に言えば、私たちのフィールドでは、「USBメモリの所持」は、「拳銃所持」と同義です。

To put it bluntly, in our field, "possession of a USB flash drive" is synonymous with "possession of a handgun.

-----

とは言え、海外ドラマで、『刑事が犯人から奪いとったばかりのUSBメモリを、いったん署に持ち帰って、USBメモリにウイルスがないことを確認している』という場面を入れたら、

However, if there is a scene in a foreign drama in which a detective brings back to the station a USB memory stick that he/she has just taken from a criminal and checks to see if the USB memory stick contains a virus.

―― 間違いなく、犯罪者はその場で逃走して、事件は迷宮入り

"No doubt, the perpetrator fled the scene and the case went cold"

だろうなぁ、と思います。

I think that.

ドラマの場面の中で、『このUSBメモリが安全であることは、スタッフが確認しています』などとテロップを入れたら、もうドラマは台無しだろうなぁ・・・

If a message such as "The staff has confirmed that this USB memory stick is safe" is inserted in a scene of a drama, the drama will be ruined...

など、下らないことを考えています。

I'm thinking about the trivial things.

2021/11,江端さんの忘備録

ハードウェアとソフトウェア(アルゴリズム)の進歩によって、チェス → 将棋 → 囲碁 のチャンピオンは、全てコンピュータに奪われてきました。

With the advancement of hardware and software (algorithms), the champions of Chess, Shogi, and Go have all been taken by computers.

しかし、チェス、将棋、囲碁のファンが減少しているかというと、そうでもないように思えます。

However, it seems that the number of chess, shogi and go fans is not declining.

私は、これらのゲームのトレンドについては良く知らないのですが、サブカル(コミック、アニメ、ラノベ)については、よく接しています。

I don't know much about these gaming trends, but I do know a lot about the subculture (comics, anime, and light-novel).

これらのフィールドから見ると、これらのゲームを題材としたコンテンツは、むしろ増えているような気がします。

As I look at these fields, I feel that the content based on these games is rather increasing.

-----

考えてみれば、当たり前のことかもしれません。

Needless to say, it may be obvious.

重量上げをやればブルドーザに勝てる訳ありませんし、新幹線より早く走ることのできる人間もいません。

No one can beat a bulldozer when it comes to lifting weights, and no one can run faster than a bullet train.

だからといって、将来オリンピックが無くなるかというと、そういうことにはならないと思います。

But that doesn't mean that the Olympics will disappear in the future.

人間の能力という制約やら、努力やら、信念やら、面倒くさいアナログ属性からなる人間というオブジェクトは、それ自体が興味深いコンテンツです。

The object of human beings, consisting of the constraints of human ability, effort, beliefs, and other troublesome analog attributes, is an interesting content in itself.

それ故、そのオブジェクトとオブジェクトのゲーム対決は、それだけで、「作品」となるものなのでしょう。

Therefore, the game confrontation between the object and the object would be a "work of art" by itself.

-----

先日、NHKスペシャル「2030 未来への分岐点 (5)「AI戦争 果てなき恐怖」」を見ました。

The other day, I watched the NHK special "2030: A Crossroads for the Future (5) 'AI War: Endless Fear'.

これは、上記とは逆に「人間を含めないと、兵器はその能力を最大限に発揮する」ということを証明する内容でした。

This was to prove that, contrary to the above, "weapons reach their full potential when humans are not included.

コンピュータで制御された戦闘機と、パイロットが操作する戦闘機で空中戦(但しシミュレータで)で行ったところ、全ての戦闘でパイロットが敗北となっていました。

When conducted aerial battles (in a simulator) between computer-controlled fighters and pilot-operated fighters, the pilots were defeated in every battle.

色々な要因がありますが、基本的に、「人間がいない戦闘機は、無茶苦茶な操縦 『人間が失神/死亡してしまうような加速度での旋回ができる』という点が大きいです。

There are many factors, but basically, "a fighter without a human being is capable of reckless maneuvering "and turning at accelerations that would cause a human being to faint or die.

つまり「無人兵器は、人間の生存限界を無視できる」ということです。

In other words, "unmanned weapons can ignore the limits of human survival.

それに比べれば、"AIうんぬん"は、小さな要因です。

Compared to that, "AI" is a small factor.

-----

さて、今日ご紹介するアニメは、「ヘヴィー・オブジェクト」です。

Well, the anime I would like to introduce to you today is "Heavy Object".

このアニメ、私の中では、「シュタインズゲート/ゼロ」に匹敵する、全私の中での最高レベルのアニメなのですが、あまり知られていません。

This anime, in my opinion, is one of the best in all of me, comparable to Steins;Gate/Zero, but it's not well known.

いわゆる数理計算、予測、その他『いわゆる』AIの技術者にとっては、こたえられない充実の内容です。

For engineers of so-called mathematical computation, prediction, and other "so-called" AI, the contents are irresistible.

また、『いわゆる』AI戦争と言われているものの、かなり正確な姿を描いている、という点でも高評価です。

It also gets high marks for being a fairly accurate portrayal of the 'so-called' AI wars.

特に、ヘヴィー・オブジェクトの第23話に出てくるセリフ ――

In particular, the line from episode 23 of Heavy Object

■戦争は人間が持つ原始的な本能だ。

- War is a primitive human instinct.

■だからこそ理性で制御されなければならない。

- That is why it must be controlled by reason.

■オブジェクトという力の象徴で、デジタルに管理された戦争は、実は戦争ではない。

- With the symbol of power of The OBJECT, a digitally managed war is not really a war.

■安全のための装置なのだよ。

- It's a safety device.

には、深く考えさせられました。

made me think deeply about the AI-War.

クラウゼヴィッツの「戦争は外交手段の一手段である」から考えれば、

In view of Clausewitz's "War is a means of diplomacy."

- いわゆるAIが、仮想空間で戦闘を行い、数秒で勝敗を決することができて、

- A so-called AI can fight a battle in virtual space and decide the winner in seconds.

- それでもケリがつかない場合は、無人兵器が現実世界で戦闘をすることで、

- And if that doesn't settle the score, unmanned weapons will do the fighting in the real world.

『人的被害がゼロの戦争』を実現できれば、それは、「AI兵器を前提とした、AI外交」みたいなことを実現できる訳です、

If we can achieve such a war with zero human casualties, then we can achieve something like "AI diplomacy based on AI weapons.

-----

―― それは・・・悪くないな

"That's... not bad."

と思いました。

I thought that.

つまり、その戦争におけるヒーローは、私のようなITエンジニアとなる世界です。

In other words, it is a world where the heroes in that war will be IT engineers like me.

それは、数学、科学、ITができない奴が虐げられる世界 ―― 『理系にあらざれば、人にあらず』

It's a world where those who can't do math, science, or IT are oppressed -- "If you're not a person of science, you're not a person"

という、パラダイスです。

It's a paradise.

2021/11,江端さんの忘備録

江端家は、どの駅からも均等に遠く、一番近くのコンビニまで10分の歩行が必要で、一番近くのスーパーマーケットは、徒歩での移動の気力が分かない ―― という立地の悪さです。

The Ebata house is equally far from all the stations, the nearest convenience store is a 10-minute walk away, and the closest supermarket is in a location that I can't muster the energy to walk to -- it's a bad location.

先日、GPSロガーで調べたら、標高76メートルの高台にあるため、浸水被害の可能性はないのですが、近くに土手があるので、土砂災害の可能性を完全には否定できません。

The other day, I checked with my GPS logger and found that there is no possibility of flooding damage because the house is located at an elevation of 76 meters above sea level. However, there is a bank nearby, so the possibility of landslide damage cannot be completely ruled out.

一応、ハザードマップで見たら危険区域には入っていませんでしたが、100メートル離れた場所は、レッドアラートが記載されています。

In case you're wondering, I looked at the hazard map and it was not in the danger zone, but 100 meters away is listed as a Red Alert.

ただ、我が家は、映画館が近いんですよ。

However, our house is close to a movie theater.

裏道を使えば、車で15分くらいで到着するくらいには。

If I take the back roads, it's about a 15 minute drive to get there.

-----

昔は、「映画を見に行く」というのは、ビッグイベントで、ハレでした。

In the past, "going to the movies" was a big event, and a celebration.

年に1回か2回切れるカード、という感じでした。

It was like a card that could be used once or twice a year.

ところが、私を除く家族は、夕食を食べた後で、サクサクとレイトショーを見に行きます。

However, my family, with the exception of myself, go to see the late show easily after having dinner .

-----

これは、「シネマコンプレックス」という、映画館の仕組みにあります。

The reason for this is the "cinema complex" system of movie theaters.

各スクリーンの客席数に差をつけて、集客力の見込める作品は客席数の多いスクリーンで上映し、封切りから時間の経った作品や、集客力の落ちた作品は客席数の少ないスクリーンで上映することができます。

In a cinema complex, the number of seats in each screen is differentiated, so that films that are expected to attract a large number of viewers can be shown on the screen with the largest number of seats, and films that have been released for a long time or have lost their ability to attract viewers can be shown on the screen with the smallest number of seats.

ショッピングセンターや、スーパーマーケットに併設されており、比較的大きな駅にあります。

It is attached to a shopping center and a supermarket, and is located in a relatively large station.

-----

昔は、映画を見るためには、都心に出て『シネラマ』という大画面のある大きな会場に入らねばらなず、当然、インターネット予約などもなく、映画館に入る為に、3~4時間待ち、ということもざらにありました。

In the past, in order to see a movie, you had to go to the city center and go to Cinerama, a large venue with a big screen, and of course, there were no Internet reservations, so it was not uncommon to wait three to four hours to get into a movie theater.

それと、信じられないかもしれませんが、館内で喫煙もできました。分煙にもなっていませんでした。

And, believe it or not, smoking was allowed in the theater. It wasn't even a separate smoking area.

『映画の光に、煙草の煙りが映る』という光景が、映画観賞の「普通」だったのです。

The sight of cigarette smoke reflected in the light of a movie was the "normal" way to watch a movie.

映画の画面をカメラで撮影する奴もいました。

Some of them were taking pictures of the movie screen with their cameras.

映画の画面をフラッシュをたいて撮影する奴もいて、子供心に『世の中には、救いがたいバカがいるものだなぁ』と思っていました。

Some of them were taking pictures with flashes, and as a child, I thought to myself, "There are some irredeemable idiots in this world.

-----

AmazonやらNetFlixやらで、新作映画は、パソコンやスマホで簡単に見れるようになりました。

With Amazon and NetFlix, new movies are now easily available on your computer or smartphone.

これって、映画館としては大打撃だと思うんだけど、製作者としてはペイできる程度の収入は確保できる、ということでしょうか。

I think this is a big blow to the movie theaters, but for the producers, it means that they can secure enough income to pay for it.

いずれにしても、私としては、『映画館にでかけて映画を見る』というイベントは、私の中では、『非日常』のままにしておきたいと思うのです。

In any case, for me, I would like to keep the event of "going to the cinema to see a movie" as "extraordinary" in my mind.

2021/11,江端さんの技術メモ

国土交通省のPLATEAUのサンプルデータを試していますが、3Dデータの高さ方向が出せずにスタックしています。

できるだけ、勉強しないで、てっとり早く成果を出したいだけなんだけどなぁ。

上記の設定にしてみたら、なんかバベルの棟だったか塔だったか、みたいなものが出てきた。

なんか、色々弄っていましたが、

としたら、

のようなものがでてきたけど、多分、これは正解ではないので、また明日以降に挑戦しよう。

あ、ちなみに、QGISのバージョン上げました。