2022/09,江端さんの忘備録

社内のチームメンバに、この資料を使って、エージェントシミュレーションの概要を説明していました。

I used this document to provide an overview of the agent simulation to our internal team members.

メンバA:「ところで、このイラストは、江端さんが描いているのですか?」

Member A: "By the way, are these illustrations by Ebata-san?"

江端:「私が"作って"います。特許発明と同じです。『構成要件1と構成要件2と構成要件3からなることを特徴とする本イラスト』です」

Ebata: "I "make" them. It is the same as a patented invention. It is "this illustration characterized by the composition 1, composition 2, and composition 3.

メンバA:「・・・分かりました」

Member A: "... I understand."

-----

メンバB:「コンセプトは、"SG"ですね?」

Member B: "The concept is "SG," right?"

江端:「もちろん、"SG"です。"SG"以外は、ありえません」

Ebata: "Of course, "SG". Nothing but "SG" is possible."

メンバC:「あの、江端さん。"SG"って何ですか?」

Member C: "Um, Ebata-san. May I ask you about "SG?""

江端:「"SG"とは、当然、"シュタインズ・ゲート"のことです・・・え、ご存知ない?本当に??」

Ebata: "'SG' is, of course, 'Steins;Gate'... Oh, you don't know? Really?

-----

―― 弊社のエンジニアが、シュタインズ・ゲートを知らないというのは、由々しき事態だ

"It is a serious matter that our engineers do not know Steins;Gate""

―― シュタインズ・ゲートは、他の人はさておき、エンジニアと研究員の必修科目だ

"Stein's Gate, aside from others, is a required course for engineers and researchers"

―― シュタインズ・ゲートを見ずして、未来の街を設計する仕事をするなど、信じられないことだ

"It would be incredible to work designing the city of the future without seeing Steins;Gate"

―― 当然、『ゼロ』まで完遂しなければならない

"Of course, we must complete to 'Zero'"

と、長々と、まくしたててしまいました。

I've made them a mess for a long time.

-----

チームメンバには、『ドン引き』されていたようですが ―― 構いません。

The team members were put off by what he said, however I don't care of it.

2022/09,江端さんの忘備録

To 日本国総理大臣殿

To Mr. Prime Minister of Japan

私、新人の時に、先輩から

When I was a rookie, I was told by a senior, and scoled

「江端! 『丁寧な説明』っていうのは、『同じ内容を、ゆっくりとしゃべり直すこと』じゃねえぞ!!」

"Ebata! "Careful explanation" does not mean "to talk about the same thing over again slowly!"

と、叱られたことがあります。

御参考まで。

For your information.

2022/09,江端さんの忘備録

私が入社したころは、コンピュータのリソース不足が慢性的な悩みでした。

When I joined the company, the lack of computer resources was a chronic problem.

3桁の2次元配列を作るだけで、プログラムが実行できなくなり、メモリの効率的な利用が、最大の課題でした。

Efficient use of memory was the biggest challenge, as creating a three-digit two-dimensional array alone would not allow the program to run.

職場で、ワークステーションの奪い合いなどもやっていました。

At work, I was fighting for workstations.

しかし、PCが潤沢なリソースを持つようになり、このような問題に直面することはなくなりました。

However, PCs no longer face this problem as they now have ample resources.

並行処理に強いプログラム言語(Go言語等)の登場により、100万オーダのオブジェクトも普通に扱えるようになりました。

With the advent of programming languages (such as Go) that are strong in concurrency processing, objects of the order of one million can now be handled as usual.

ですが、無茶したら駄目ですね。

However, I should not be reckless.

"pq: sorry, too many clients already"

pq: sorry, too many clients already

このようなデータベースの悲鳴に対して、各種の対応を試してきたのですが、リソースマネージャーをみたら、ディスク(書き込み)使用率99%越え、という状況が発生していました。

I have tried various responses to the database screams, but when I checked the resource manager, I found that the disk (write) usage was over 99%.

まあ、dockerの中に作ったDBに、1秒間に30回も100人分のエージェント情報の書き込みをやったら、そりゃ、データベースも悲鳴を上げるだろうなぁ、と、思いました。

Well, I thought, writing 100 agents' information 30 times per second to a database created in docker, the database would scream.

ここ十何年も、リソース不足問題と無縁で生きてきましたので、自分の無茶に気がつなかったようです。

I have been living without resource shortage problems for more than a decade, so I guess I did not realize how reckless I was.

-----

そういえば、嫁さんと会話していた時、

I was having a conversation with my wife.

江端:「データベースがダウンしちゃって・・・」

Ebata: "My database went down..."

嫁さん:「え! それ大変じゃん!! 大丈夫なの?」

Wife: "What! That's an accident! Are you okay?"

と、『何言ってんの?』という感じで、お互いに首をかしげることになりました。

We were both nodding our heads like 'What are you talking about?'

一般の人が「データベース」という言葉から一般の人が連想するのは、行政管理システムとか、電力配送システムとか、アマゾンなどのようなEコマースシステムでしょう。

What the general public associates with the word "database" would be an administrative management system, an electricity delivery system, or an e-commerce system such as Amazon.

その手のデータベースがダウンしたら、社会生活に甚大な影響が出ます。

If that type of database were to go down, it would have an enormous impact on social life.

嫁さんの中では、『私が自分のプログラムの為だけにローカルに作った実験用の小規模データベース』は、データベースに含まれていないようです ――

In my wife's mind, 'a small experimental database that I created locally just for my own programs' is not included in the database.

それが、一般人の感覚である、というのは、私にも分かります。

I think that is the feeling of ordinal persons.

2022/09,江端さんの忘備録

コラムの執筆に時間がかかるのは当然なのですが、最近、最近はイラスト作成にも時間がかかっています。

It is natrual that I pay for time to write my column, however, I have to waste time to make a illustration.

漫画を見ながら、「これ、どうやったら書けるんだろう?」と思いながら、自分なりに、その絵をマネる方法を試行錯誤しています。

Watching manga-books, I woder "how can I draw this", and I try to figure out how to imitate the drawing in my own way,

神の啓示を描いてみた件

毎度同じことを言っていますが、

I say same things again,

―― 絵を描く能力がある人って、やっぱり凄い

"People who have the ability to draw are still great"

と、本当に尊敬してしまいます。

The drawing make me respect them.

2022/09,江端さんの技術メモ

パワポで、バックグランド黒、白い線を複数コピペを繰り返す

SAIで、エラブラシで発光を付ける

線をぼかして、完成

2022/09,江端さんの技術メモ

信者獲得&洗脳シミュレーションプログラム

package main

import (
	"fmt"
	"math/rand"
)

type person struct {
	number             int     // 番号
	mental_strength    float64 // 勧誘に屈しない強さ
	religious_devotion float64 // 信仰力
	church             int     //教会フラグ
}

var p_array []*person // personの配列2
var (
	p_num = 0
)

func person_create() *person {
	p := new(person)
	p.number = p_num
	p_num++                            // 生成された順番に番号を付けていく
	p.mental_strength = rand.Float64() // 勧誘を断わる強さ
	p.religious_devotion = 0           // 信仰力最初は"0"
	p.church = 0                       // 教会フラグ
	p_array = append(p_array, p)       // 配列に放り込む

	return p
}

func (p *person) person_destroy() {
	for index, v := range p_array {
		if v == p {
			p_array = append(p_array[:index], p_array[index+1:]...)
			break
		}
	}
	p = nil //これでいいのかな? ガーベージコレクションが消してくれる、と聞いているが
}

type agent struct {
	number           int     // 番号
	invitation_power float64 // 勧誘力
}

var a_array []*agent // agentの配列
var (
	a_num = 0
)

func agent_create() *agent {
	a := new(agent)
	a.number = a_num
	a_num++                                       // 生成された順番に番号を付けていく
	a.invitation_power = 0.3 + 0.7*rand.Float64() // 勧誘力
	a_array = append(a_array, a)                  // 配列に放り込む
	return a
}

func (a *agent) agent_destroy() {
	for index, v := range a_array {
		if v == a {
			a_array = append(a_array[:index], a_array[index+1:]...)
			break
		}
	}
	a = nil //これでいいのかな? ガーベージコレクションが消してくれる、と聞いているが
}

func (p *person) meet_agent(a *agent) {
	if p.mental_strength < a.invitation_power {
		p.religious_devotion += a.invitation_power * 0.1 // エージェントの説得によって信仰心が微増
		p.mental_strength -= a.invitation_power * 0.1    // エージェントの説得によって心理障壁が微減
		if p.religious_devotion > 1.0 {
			p.religious_devotion = 1.0
		}
		if p.mental_strength < 0.0 {
			p.mental_strength = 0.0
		}

	}

}

func main() {
	for i := 0; i < 1000; i++ {
		person_create()
	}

	fmt.Println("======p_array=========")

	for _, p := range p_array {
		fmt.Println(p.number, ",", p.mental_strength, ",", p.religious_devotion)
	}

	for i := 0; i < 5; i++ {
		agent_create()
	}

	fmt.Println("======a_array=========")

	for _, a := range a_array {
		fmt.Println(a.number, ",", a.invitation_power)
	}

	for i := 0; i < 365; i++ { // 1年間の勧誘
		for _, p := range p_array {
			//fmt.Println(index, ":", v, v.number, v.mental_strength)
			for _, a := range a_array {
				if rand.Float64() < 0.001 {
					p.meet_agent(a)
				}
			}
		}
	}

	fmt.Println("=====p_array after 365days==========")

	for _, p := range p_array {
		fmt.Println(p.number, ",", p.mental_strength, ",", p.religious_devotion)
	}

	fmt.Println("====count2===========")
	count := 0
	for _, p := range p_array {
		if p.religious_devotion > 0.2 {
			p.church = 1 //教会フラグを"1"に変項
			count++
			fmt.Println(p.religious_devotion)
		}
	}
	fmt.Println(count)

	for i := 0; i < 365; i++ { // 2年目の勧誘
		for _, p := range p_array {
			//fmt.Println(index, ":", v, v.number, v.mental_strength)
			for _, a := range a_array {
				if p.church == 1 && rand.Float64() < 0.005 {
					p.meet_agent(a)
				}
			}
		}
	}

	fmt.Println("=====p_array after 365days x 2==========")

	for _, p := range p_array {
		if p.church == 1 {
			fmt.Println(p.number, ",", p.mental_strength, ",", p.religious_devotion)
		}
	}

}

出力結果(エクセルファイル)  → cult.xlsx

2022/09,江端さんの忘備録

現在のロシア(の大統領)が何を考えているか分からない ―― という人がいますが、

I don't understand what the current Russian (president) is thinking -- some people say that, however I want to ask them,

『本当に分からない?』

"You really don't understand?""

と尋ねたいです。

私には、ロシアの考え方が、手に取るように分かります。

To me, the Russian mindset is palpable.

そのユースケースは、1930~1945年あたりの我が国、日本です。

The use case is our country, Japan, around 1930-1945.

-----

■ウクライナ南部の傀儡の新ロ政権の樹立 ---> 中国東北部に暴走した軍部によって作られた大日本帝国の傀儡国家

- Establishment of puppet neo-Russian government in southern Ukraine ---> Puppet state of Empire of Japan (Manchukuo) created by runaway military in northeastern China

■国際連合参加各国からの「ロシアの力による国境変項」への非難決議 ---> 国際連盟の各国からの「日本の力による傀儡国家の樹立」への非難決議(*)

- Resolution of Condemnation of "Border Transformation by the Power of Russia" from the Countries of the United Nations ---> Resolution of Condemnation of "Establishment of a Puppet State by the Power of Japan" from the Countries of the League of Nations (*)

(*)しかも、日本は国際連盟の常任理事国の立場を捨てて(もったいない)、連盟脱退する

(*) Moreover, Japan is leaving the League of Nations, abandoning its position as a permanent member of the League of Nations (what a waste).

■ロシアと中国とイランとの経済連携 ---> ドイツとイタリアと日本の日独伊三国同盟

- Economic partnership between Russia, China, and Iran ---> Tripartite Pact between Germany, Italy, and Japan

■国の領土保全又は政治的独立に対する武力による威嚇又は武力の行使を禁止の禁止(国連憲章第2条4項)の違反 ---> 日ソ不可侵条約の一方的破棄

- Violation of the prohibition against the threat or use of force against the territorial integrity or political independence of a country (Article 2, Paragraph 4 of the UN Charter) ---> Unilateral abrogation of the Soviet-Japanese Nonaggression Pact

ロシアは今回の先導を「自国の自衛権の為」である、と言っていましたが、当時の日本も、満州国建国、南方進出(侵略)も、「我が国の自衛権の為」である、と主張していました。

Russia said that it was taking the lead this time "for its own self-defense," but Japan at that time also claimed that it was "for our self-defense" in establishing Manchukuo and expanding southward (invasion).

ちなみに、当時の日本国民の圧倒的多数が、この「我が国の自衛権」を圧倒的に支持していました。

Incidentally, the overwhelming majority of the Japanese people at that time overwhelmingly supported this "right of self-defense of our country.

私には、今のロシアと、当時の日本、さしたる違いはないように思えます。

To me, there does not seem to be much difference between Russia today and Japan back then.

-----

ちなみに、二国間であれ、多国間であれ、条約は、一方的に、破ることができます。

Incidentally, treaties, whether bilateral or multilateral, can be broken unilaterally.

しかも、ペナルティもありません。実効性のある罰則を実施できる主体がないからです。

Moreover, there is no penalty. This is because there is no entity that can enforce effective penalties.

嫁さん:「じゃあ、何のために条約があるの?」

Wife: "So what's the treaty for?"

江端:「"気休め"くらいかな。もちろん、条約を破った国は国際的信用を失うし、関税を上げるとかの報復手段も取りえるけど、それだけのことだ」

Ebata: "I would say it's only a 'comforting' measure. Of course, countries that break treaties lose international credibility, and they can retaliate by raising tariffs or other measures, but that's about it.

-----

もちろん、ロシアのウクライナ侵攻(侵略)擁護する必要は1mm足りともありません。

Of course, there is no need to defend Russia's invasion of Ukraine, not even a millimeter.

我が国(日本)は、西側諸国の一員として、ロシア非難が心情的な正義であり、かつ、国家としての利益でもあります。

As a member of the Western world, our country (Japan) feels that condemnation of Russia is both an emotional justice and a national interest.

しかし、だからといって、『ロシアの"行動原理"が全く理解できない』と公言する人を、私は理解できません。

But that doesn't mean I don't understand those who profess that they don't understand Russia's "behavioral principles" at all.

近代世界史(の"帝国主義")を、通り一遍り勉強すれば、こんなことは明らかなことです。

A cursory study of modern world history ("imperialism") will make this obvious.

-----

歴史が示すことは、

History has shown us that

―― 自国の安全保障の為であれは、他国の利益など躊躇なく踏み躙る

"For the sake of its own security, any nation will not hesitate to overstep the interests of other nations"

であり、私が知る限り、その例外は一つもない、ということです。

and that, as far as I know, there is not a single exception to that rule.

2022/09,江端さんの技術メモ

Go言語でエージェントシミュレータを作るのに必要なパーツを作っています。

エージェントをオブジェクト風に作って、配列にいれて、終了したら、エージェントを消滅する。

package main

import (
	"fmt"
	"math/rand"
)

type person struct {
	number          int     // 番号
	mental_strength float64 // 勧誘に屈しない強さ
}

var p_array []*person // personの配列

func person_create(num int) *person {
	p := new(person)
	p.number = num
	p.mental_strength = rand.Float64() // 勧誘を断わる強さ
	p_array = append(p_array, p)       // 配列に放り込む
	return p
}

func (p *person) person_destroy() {

	for index, v := range p_array {
		if v == p {
			fmt.Println("hit")
			p_array = append(p_array[:index], p_array[index+1:]...)
			break
		}

	}

	p = nil //これでいいのかな?
}

func main() {
	_ = person_create(0)
	p1 := person_create(1)
	p2 := person_create(2)
	_ = person_create(3)

	for index, v := range p_array {
		fmt.Println(index, ":", v, v.number, v.mental_strength)
	}

	p2.person_destroy()

	for index, v := range p_array {
		fmt.Println(index, ":", v, v.number, v.mental_strength)
	}

	p1.person_destroy()

	for index, v := range p_array {
		fmt.Println(index, ":", v, v.number, v.mental_strength)
	}

}

■出力結果

PS C:\Users\ebata\cult> go run main.go
0 : &{0 0.6046602879796196} 0 0.6046602879796196
1 : &{1 0.9405090880450124} 1 0.9405090880450124
2 : &{2 0.6645600532184904} 2 0.6645600532184904
3 : &{3 0.4377141871869802} 3 0.4377141871869802
hit
0 : &{0 0.6046602879796196} 0 0.6046602879796196
1 : &{1 0.9405090880450124} 1 0.9405090880450124
2 : &{3 0.4377141871869802} 3 0.4377141871869802
hit
0 : &{0 0.6046602879796196} 0 0.6046602879796196
1 : &{3 0.4377141871869802} 3 0.4377141871869802

未分類

エージェントのログトラッキングによって過負荷が発生→一時的に機能を削減

ジャンピングを確認 →

2022/09,江端さんの忘備録

最近、体重が増えています。

Recently, my weight is increasing.

私、体重管理には、自信があったので、ちょっと困惑しています。

I have been confident in "the precision weight control", so I am a bit puzzled.

視力検査とは、「目」で見るのではありません。「心」で計算するものです。

思い当たることがあるとすれば、「筋トレ」でしょうか。

If I had to guess, I would say "muscle training".

上記の経て、「江端マッチョ化計画」・・・もとい、「江端介護向け身体改造計画」を進めております。

今は、懸垂20回、腹筋20回、背筋50回を、負担を感じない程度に、ダラダラと、不真面目に、一日2セットやっています。

Right now, I'm doing 20 pull-ups, 20 sit-ups, and 50 back-ups, lazily and unseriously, two sets a day, as long as I don't feel overburdened.

体がマッチョ化している訳でないですが、贅肉の下で筋肉が製造されているに違いない、と思っています。

My body is not macho-style at all, but I believe that muscle has been manufactured under the fat.

筋肉は脂肪よりも20%ほど重いそうです。

I heard that muscle is 20% heavier than fat.

この「隠れ筋肉」が理由でないとすると、私の体重管理方式が破綻していることとなり、由々しき問題です。

If this "hidden muscle" is not the reason, then my weight management system is out of order, which is a venerable problem.

-----

まあ、そう考えないと食事がまずくなるので、そう思い込んでいます。

I believe it, because the meal will be bad if I don't think so.