2020/10,江端さんの忘備録

今週末、新シリーズのコラムの準備 ―― というか、ひらすら勉強をしていました。

This weekend, I was preparing for a new series of columns -- I was studying all day.

最近、資料の収集は市民図書館とAmazon頼りにしてきましたが、さすがに新シリーズということで、市営図書館の本館と街の本屋に行こうと思いました。

Lately I've been relying on the Civic Library and Amazon to collect materials, but for preparing a new series, I decided to go to the main branch of the city library and the city bookstore.

しかし、大きな本屋のある街に出るのに、1時間弱の時間電車に乗らなければならないというのもあり、ちょっと面倒だなと思っていました(台風も来ていましたし)。

However, I had to take the train for less than an hour to get to the city with a big bookstore, so I thought it was a little troublesome (a typhoon was also coming).

その時、隣街にある大型ショッピングセンター「コーチャンフォー」のことを思い出して、車で行ってきました。

That's when I remembered the large shopping center in the next town, "Coachandfour", and I drove there.

とにかく大きな本屋なので、技術書の場所が分からずに迷っていたら、本屋の奥の方に、技術専門書だけで20ライン以上はある、広大なエリアを見つけて、感動のあまり声を失いました。

Anyway, it's a big bookstore and I was confused about where to find the technical books. I found a huge area in the back of the bookstore, with over 20 lines of technical books alone, so I was so impressed and lost my voice

―― 圧倒的な数の技術書に囲まれる快感

"Pleasure surrounded by an overwhelming number of technical books"

うん、ここになら、一日、25時間以上滞在していたい、と思えるほどでした。

Yeah, I wanted to stay here for more than 25 hours a day.

----

『わーい、オライリーのGo言語の並列処理の本だ。だけどWebSocketを使った並列プログラムのサンプルがないなぁ』

"O'Reilly's Go language parallel processing book. However, there is no sample parallel program using WebSocket. "

『やった! Visual Studio Codeの教本めっけ! Docker連携について知りたかったのでこれ欲しいんだけど、今週末は勉強に専念しなければならないから、今回は見送ろう』

"Hooray! Visual Studio Code textbook! I wanted to know about Docker cooperation, so I want this, but I have to concentrate on studying this weekend, so let's see it off this time. "

『量子コンピュータの本、どれも、相変わらず難しいなぁ。「やさしい」と冠している本では、何のことやらサッパリ分からん。著者も出版社も苦労しているんだろうなぁ』

"Every quantum computer book is still difficult. I don't understand anything in the book that says "gentle". I wonder if both the author and the publisher are having a hard time. "

というように、「"つまみ読み"できる」が、リアル書店の最大の強みです。

So, "I can browse" is the greatest strength of a real bookstore.

本屋にやってきて本を買う人は、すぐに読みたいから本屋にやってくると思います。

I think that people who come to a bookstore and buy a book want to read the book immediately.

ですので、在庫が豊富なリアル書店であれば、Amazonに販売機会を奪われることもないと思います。

Therefore, I also think that a real bookstore with abundant inventory will not lose sales opportunities.

-----

さて、新シリーズのテーマですが、今回は「ブロックチェーン」になります。

Now, the theme of the new series, will be "blockchain".

「ブロックチェーン」は、ITのどストライクのサービスです。

"Blockchain" is an main service of IT.

ですので、前回の「量子コンピュータ」のように、常に不安と共にあるような執筆にはならないとは思います。

Therefore, I don't think that I will always write something that makes me uneasy like the previous "quantum computer".

しかし、それでも、専門家の方が付いていて頂ければ、私は安心して「暴走」することができます。

But still, if an expert monitors me, I can rest assured that I'll be "runaway."

という訳で、今回も、私の「ブロックチェーン」のコラムの内容を監修して(ツッコんで)頂ける方を探しております。

So, I'm looking for someone who can supervise the contents of my "blockchain" column

江端のコンテンツを上手く受けいれつつ、細かいことはスキップして、「具体例」でアドバイスを頂けける人なら、大歓迎です。

Anyone who accepts Ebata's content well, skips the details, and can give advice with "concrete examples" is welcome.

ブロックチェーンの理論面だけでなく、ビットコインやブロックチェーンのアプリケーションやサービスを、実際に設計、運用している方からご助言頂けたら、大変嬉しいです。

Not to mention the theoretical aspects of blockchain, I would be very grateful if you could give us advice from those who actually design and operate Bitcoin and blockchain applications and services.

今回は、これに加えまして、ビットコインに関わるリアルでドロドロの現場のお話を提供してくる方も、歓迎致します(こちらは、ブロックチェーンの監修とは別枠です)。

This time, in addition to this, I also welcome those who provide real and muddy on-site stories related to Bitcoin (this is another frame from the blockchain supervision).

ちなみに、今回も、私は、ブロックチェーン(ビットコイン等を含む)をディスる、「敵役」として立ち振る舞るまう予定です。そういう連載です)。

By the way, this time as well, I plan to act as an "antagonist" who disrespects blockchain (including Bitcoin).

ご連絡を頂ければ幸いと存じます。よろしくお願い申し上げます。

I would appreciate it if you could contact me.

2020/10,江端さんの忘備録

通信プロトコルを説明する時には、その通信サービスの利用者として架空の人物を使います。

When describing a communication protocol, we use a fictitious person as the user of that communication service.

定番は、Alice(アリス)とBob(ボブ)です。これは、変数のA,Bの代りとして使うのに便利だからです。

The classics are Alice and Bob. This is because it is convenient to use them in place of the variables A and B.

あとは、Carol(キャロル), Charlie(チャーリー), Dave(デイブ), Ellen(エレン)、Frank(フランク)と続きます。

The others are Carol, Charlie, Dave, Ellen and Frank.

-----

仕事の資料や論文の場合はさておき、私は、これらを使いません。気分が乗らないからです。

Aside from work documents and papers, I don't use them. Because I don't feel like it.

とは言え、架空の人物やキャラクターを使うのも、これがなかなか難しいのです。

However, using fictional characters are also difficult to do this.

あるいは、アニメのキャラクター名を引用する、というのもありますが、そのアニメを知らない人にとっては、AliceとBobと同じくらい違和感があるものです。

Alternatively, I can quote the character name of the anime, but or those who don't know the anime, it's as uncomfortable as Alice and Bob.

名前を自動生成していくれるソフトがあるのは知っていたのですが、

I knew that there was software that could automatically generate names,

今回調べているうちに、著作権フリーの顔写真がある、と知って、驚いています。

While researching the web app, I was surprised to find out that there is a copyright-free face photo.

なんでも、"AI"なるものが実在しない写真を作るらしい("イメージ合成技術"だと思いますが)です。

It seems that "AI" makes pictures of non-existent humans (though I think it is an "image composition technology").

https://selfie2anime.com/

また、人間の写真をアニメのキャラクー風に変換するサイトもあって、なかなか面白かったです。

Also, there was a site that converts human photos into an anime character style, which was quite interesting.

ちなみに、私の写真を投入したら、こんな風になりました。

By the way, when I put in my photo, it looked like this.

-----

「シナリオを書いただけで漫画が完成する」という未来は、そんなに遠くないかもしれない ―― と思いました。

I thought that the future of "just writing a scenario to complete a manga" may not be so far.

 

2020/10,江端さんの忘備録

長女:「パパさぁ、"SPSS"って使ったことある?」

Senior Daughter: "Dad, have you ever used SPSS?

江端:「何・・・だと・・・? 今、"SPSS"と言ったか?」

Ebata: "What... what did you...? Did you just say "SPSS"?

-----

長女が、現在、卒業論文作成の為、フィールドのアンケートのデータ収集で、忙しい様子なのは知っていました。

I know that my senior daughter is currently busy collecting data for her field questionnaire for her "Graduation Thesis."

現在のコロナ禍にあって、リモートアンケート環境でのF2Fアンケートで、大変苦労している様子です。

In the current corona disaster, she is having a very difficult time with F2F surveys in a remote survey environment.

敢えて"偏見"を含めて言いますが、

I dare to say that I am "prejudiced".

―― 文系学科の卒論って、そんなに大変なのか?

"Is a thesis in a liberal arts department really that hard?"

と、正直驚いています。

And I'm honestly surprised.

-----

かつて、私が大学在学時代、文系の友人(女性)との会話で、

Once, when I was in college, I had a conversation with a humanities friend (female).

友人:「卒論仕上げるのに、3日間徹夜しちゃったよー」

"I stayed up all night for three days to finish my thesis!"

というフレーズに、何と答えるのが正解なのか、分からなくなったことを覚えています。

But I remember I didn't know what to say to this phrase.

(1)『ヘー、それはラクでいいね』

(1) "Heh, that's easy and nice"

(2)『えー、それは大変だったね』

(2) "Well, that was tough"

なにしろ、その程度の徹夜作業、工学部では、隔週で発生する通常イベントだったからです。

After all, that kind of all-night work was a regular event that occurs every other week in the Faculty of Engineering.

なので、最近の学生(ただし「長女」のみ)の学業への取り組みに、正直驚いています。

So, I'm honestly surprised at the recent efforts of students (but only "my daughter") in their studies.

-----

私が驚いているのは、「私の知見が古い」あるいは「偏見が入っているから」です。

The reason why I am surprised is that "my knowledge is old" or "my prejudice."

もはや、今の大学生は「理系」と「文系」という単純な枠組みでは、把握できないのでしょう。

Today's university students can no longer grasp with the simple framework of "science" and "humanities".

これは、「動ける学生」か「動けない学生」か ―― という学生側のアクションではなく、

This is not an action on the part of the student, "a student who is active" or "a student who is not active".

「動ける人間を作れる大学/学部」か「作れないか大学/学部」か、が問われるようになると思います。

It will be "The university / faculty that can make people who can be active" or "The university / faculty that can make people who can be active".

実際、娘を見ている限り、娘の在学している大学の学部は、私の中では高評価になっています。

In fact, as far as I can see my daughter, the faculty of the university she attends is highly rated by me.

閑話休題

Quiet talk

-----

"SPSS"とは、IBM社が製造・販売している、データ分析のスタンダードソフトウェアです。

"SPSS" is standard software for data analysis manufactured and sold by IBM.

私は使ったことがありませんが、超有名ソフトです。

I have never used it, but it is a very famous software.

ちなみに、私が使い込んだデータ分析ソフトは、概ね、NTTデータ数理システム社の製品です。

By the way, the data analysis software I used is mostly a product of NTT DATA Mathematical Systems

これとか、
これです。

like this and this.

-----

それはともかく。

Anyway,

自分の娘から、"SPSS"の言葉が出てこようとは ――

The word "SPSS" is coming out of my daughter.

『今、娘が大きく羽搏(はばた)こうとしている』

"Now, my daughter is about to flutter in the world."

と、私は、思わず感慨に耽ってしまいました。

I was deeply moved.

2020/10,江端さんの技術メモ

PruneMobile というソフトウェアを作っています。

クライアント側のプログラムで、Golang(Go言語)の 並列(通信)処理を始めて本格的に実装したのですが、サーバ側にエラーが乱発しています。

Golangの通信プログラムの仕様は今一つ分かなくて(C言語なら「私がマニュアルだ」と傲慢に言い放ちますが)、試行錯誤の最中です。

"Go"は"C"と、ポインタや配列も違って、勉強し直し状態です。

それはさておき、クライアント側のプログラムは、以下の通り。ポイントは、

go passenger(1)
go passenger(2)
go passenger(3)
go passenger(4)

でスレッド処理をしてみたところです。

// client6.go ペアは server12.go

package main

import (
	"flag"
	"log"
	"net/url"
	"os"

	"github.com/gorilla/websocket"

	"math/rand"
	"time"
)

// GetLoc GetLoc
type GetLoc struct {
	ID  int     `json:"id"`
	Lat float64 `json:"lat"`
	Lng float64 `json:"lng"`
	//Address string  `json:"address"`
}

var gl [100]GetLoc
var gl2 [100]GetLoc
var c [100](*websocket.Conn)

var addr = flag.String("addr", "0.0.0.0:8080", "http service address") // テスト
//var addr = flag.String("addr", "localhost:8080", "http service address") // テスト
var upgrader = websocket.Upgrader{} // use default options

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

func main() {
	rand.Seed(time.Now().UnixNano())

	flag.Parse()
	log.SetFlags(0)

	go passenger(1)
	go passenger(2)
	go passenger(3)
	go passenger(4)

	time.Sleep(25 * time.Second)
}

func passenger(i int) {

	/*
		gl[i] = GetLoc{
			ID:  0,
			Lat: 35.653976,
			Lng: 139.796821,
		}
	*/

	u := url.URL{Scheme: "ws", Host: *addr, Path: "/echo2"}
	log.Printf("connecting to %s", u.String())

	var err error
	c[i], _, err = websocket.DefaultDialer.Dial(u.String(), nil)
	//c[i] = cc
	if err != nil {
		log.Fatal("dial:", err)
	}
	defer c[i].Close()

	gl[i].ID = 0
	gl[i].Lat = 35.653976
	gl[i].Lng = 139.796821

	if i != -100 {
		log.Printf("before1 %d ID:%d", i, gl[i].ID)
		log.Printf("before1 %d Lat:%f", i, gl[i].Lat)
		log.Printf("before1 %d Lng:%f", i, gl[i].Lng)
	}

	//err = c.WriteJSON(mt, gl)
	err = c[i].WriteJSON(gl[i])
	if err != nil {
		log.Println("write:", err)
	}

	//&(gl2[i]) = new(GetLoc)
	err = c[i].ReadJSON(&(gl2[i]))

	if i != -100 {
		log.Printf("after1 %d ID:%d", i, gl2[i].ID)
		log.Printf("after1 %d Lat:%f", i, gl2[i].Lat)
		log.Printf("after1 %d Lng:%f", i, gl2[i].Lng)
	}

	if gl2[i].ID == 0 {
		// 強制停止
		os.Exit(1)
	}

	gl[i].ID = gl2[i].ID

	for k := 0; k < 20; k++ {
		gl[i].Lat += random(0.5, -0.5) * 0.00001 * 10 * 5
		gl[i].Lng += random(0.5, -0.5) * 0.00002 * 10 * 5

		if i != -100 {
			log.Printf("before2 %d ID:%d", i, gl[i].ID)
			log.Printf("before2 %d Lat:%f", i, gl[i].Lat)
			log.Printf("before2 %d Lng:%f", i, gl[i].Lng)
		}

		err = c[i].WriteJSON(gl[i])
		if err != nil {
			log.Println("write:", err)
		}
		//gl2[i] := new(GetLoc)
		err = c[i].ReadJSON(&(gl2[i]))
		if i != -100 {
			log.Printf("after2 %d ID:%d", i, gl2[i].ID)
			log.Printf("after2 %d Lat:%f", i, gl2[i].Lat)
			log.Printf("after2 %d Lng:%f", i, gl2[i].Lng)
		}
		time.Sleep(1 * time.Second) // 1秒休む
	}

	gl[i].ID = gl2[i].ID
	gl[i].Lat = 999.9
	gl[i].Lng = 999.9

	log.Printf("before3 %d ID:%d", i, gl[i].ID)
	log.Printf("before3 %d Lat:%f", i, gl[i].Lat)
	log.Printf("before3 %d Lng:%f", i, gl[i].Lng)

	err = c[i].WriteJSON(gl[i])

	err = c[i].ReadJSON(&(gl2[i]))
	log.Printf("after3 %d ID:%d", i, gl2[i].ID)
	log.Printf("after3 %d Lat:%f", i, gl2[i].Lat)
	log.Printf("after3 %d Lng:%f", i, gl2[i].Lng)

}

でもって、サーバ側に、

wsarecv: An existing connection was forcibly closed by the remote host.

がでてくるのですが、これがどうにも分からない。

websocket.DefaultDialer.Dialもスレッド単位で分離しているから、良さそうなんだけどなー

サーバ側の出力コンソールは、こんな感じ

first ID:0
117 after gl = <-chan2_1
first Lat:0.000000
94
first Lng:0.000000
126
read: read tcp 127.0.0.1:8080->127.0.0.1:50368: wsarecv: An existing connection was forcibly closed by the remote host.
138
write: write tcp 127.0.0.1:8080->127.0.0.1:50366: wsasend: An existing connection was forcibly closed by the remote host.
after gl2.id = 3
after gl2.lat = 35.653909
after gl2.lng= 139.796333
145
148
113 before gl = <-chan2_1
86
final ID:3
final Lat:35.653909
final Lng:139.796333
94
write: write tcp 127.0.0.1:8080->127.0.0.1:50365: wsasend: An existing connection was forcibly closed by the remote host

とりあえず、忘れそうなので、自分の為にメモを残しておきます。

websocket.DefaultDialer.Dialもスレッド単位ごとに発行しているから分離しているから、良さそうなんだけどなぁ。Websocketの複数のエンドポイントを作って並列処理につっこむには、もう一頑張り必要、ということでしょう。

ちなみに「誰か、私を助けてくれたっていいんだからね!」と申し上げておきます。

 

2020/10,江端さんの忘備録

体育祭の季節です。

It's the season of athletic festival.

もっとも、今年は、コロナ禍によって中止されているようです。

This year, however, the athletic festival seems to have been cancelled due to the corona disaster.

そういう意味では、ごく稀な事例ではありますが、コロナ禍も有効に機能することがある、とも言えるでしょう。

In that sense, it could be argued that corona disasters can also be effective, in if it's a very rare case.

体育祭なるイベントが、

The events called "athletic festival" are

■本人の許諾を得ない、成績の強制公開イベントであり、

- compulsory release of the results without the person's permission, and

■誰も異議申し立てができない、究極の「いじめ」であり、

- the ultimate "bullying" that no one can dispute.

■どれほど「憎悪」していたか

- How much I had hated it

については、すでに山ほど述べてきたので、今回は、割愛します。

I have already mentioned a lot about this, so I will omit it this time.

-----

ところで ――

By the way --

次女は、あいかわらず、私が「中学校で生徒会長をやっていた」ことを、ガンとして信じていないようですが、

My junior daughter still doesn't seem to believe that I was the student council president in junior high school, however,

先日、私が中学二年生の時に

The other day, I said that when I was in the second year of junior high school

『体育祭で、応援団長をやったことがある』

"I was a cheerleader in athletic festival once.

という話をしたら ―― 次女に、もの凄い目で見られました。

she looked at me in a very cold way.

まあ、分からなくもありません。

Well, I could understand her feeling.

私は、学級対抗リレーの選手どころか、徒競走で一番後ろを走っていて、

I was not just a class relay athlete, but running last in a sprint.

組体操にしても、メインのブリッジから、もっとも遠いところに配置されていたような人間です。

and I was placed farthest away from the main bridge in gymnastics.

まあ、"応援団長"という概念から、もっとも遠いところにいたのは確かです。

Well, I was certainly the furthest thing from the concept of a "cheerleader".

理由は色々あるのですが、当時、生徒会長に就任していたことが、最大の要因だったように記憶しております。

There were various reasons, but I remember that being the student president at that time was the biggest factor.

-----

学ランにたすき姿で、グランドの真ん中で大声を出して応援団を統率し、相手側の応援団とエールの交換をする ―― そういうことをやったのです。

I did that in a school uniform, loudly leading the cheering squad in the middle of the ground, and exchanging ale with the enemy cheering party.

本当です。

It's true.

調べてもらっても大丈夫ですし、証人もまだ存命だと思います。

It's okay to have them checked, and I think the witnesses are still alive.

それが、どうして、今の私のように、ここまで捻くれた孤独な・・・もとい、誇り高き孤高のエンジニアになったかというと ―― それはそれは、長い長い物語が必要となります。

How did that make me so twisted and lonely as I am now... I mean "a proud, lone engineer", it will take a long, long story to do that.

本当に、うんざりするほどに、長い話が。

Really, it takes a long story to be disgusting.

2020/10,江端さんの技術メモ

MarkdownをWord形式(docx)に変換する を参考にして、Pandoc をインストールしましたが、とてもキレイに表示されて便利です。

# PruneMobileとは

複数の人間や自動車等の移動体のリアルタイムの位置情報を、地図上に表示する、PruneClusterのアプリーケーションです。

PruneMobileのサーバに対して、任意のタイミングで位置情報を送り込むだけで、地図上にマーカーが表示されます。

## 使用環境

- golang(Go言語)のインストールされていれば良いです。私(江端智一)の環境では以下のようになっています。
```
$ PruneMobile\server>go version
$ go version go1.14 windows/amd64
```

- 実際に動かせば、コンパイラから、あれこれ言われますので、それに対応して下さい。基本的には、
```
$ go get github.com/gorilla/websocket
```
は必要になると思います。

## サンプルプログラムの環境

- Webブラウザで表示される地図は、東京都江東区の豊洲駅を中心にして作ってあります。
  - PruneMobile\server\serverX.go (Xは数字) の中にある、
```
var map = L.map("map", {
   attributionControl: false,
   zoomControl: false
}).setView(new L.LatLng(35.654543, 139.795534), 18);
```
の"35.654543, 139.795534"の座標を変更すれば、地図の中心位置が変わります。

- クライアントプログラムでは、豊洲駅を中心にランダムウォークさせています
  - PruneMobile\server\clientX.go (Xは数字)を起動すると、10秒間程、マーカーが移動して、その後消滅します。

- クライアントプログラム(clientX.go)は複数同時に起動させることができます。

## 現時点で確認している問題点で、いずれ直すもの

- マーカーの消滅のタイミングが、同時になってしまう

- Webブラウザの表示が、最初の1つめしか、正常に動作しない

- ローカルのjs(javascript)のローディングに失敗した為、江端のプライベートサーバ(kobore.net)からローディングしている。PruneMobile\server\serverX.goの以下を参照
```
	<script src="http://kobore.net/PruneCluster.js"></script>
	<link rel="stylesheet" href="http://kobore.net/examples.css"/>
```

# サンプルプログラムの動作方法

## Step 1 サーバの起動

適当なシェルを立ち上げて
```
$ cd PruneMobile\server
$ go run serverX.go (Xは数字)
```
とすると、「Windowsセキュリティの重要な警告(windows10の場合)」が出てくるので、「アクセスを許可する」ボタンを押下して下さい。

## Step 2 ブラウザの起動
Chromoブラウザ(他のブラウザのことは知らん)から、
```
http://localhost:8080/
```
と入力して下さい。豊洲地区の地図が表示されます。

## Step 3 クライアントの起動
適当なシェルを立ち上げて
```
$ cd PruneMobile\client
$ go run clientX.go (Xは数字)
```
とすると、マーカが0.5秒単位でランダムに動きます。

# クライアントプログラムで使うI/F(データ形式)

## 前提

- サーバとwebsocketのコネクションを確立して下さい。方法は問いません。golangでの記述方法はclient/clientX.goを参考にして下さい。

- データ形式はJSONを用います。golangでの記載サンプルは以下の通りです。

```

// GetLoc GetLoc
type GetLoc struct {
	ID  int     `json:"id"`
	Lat float64 `json:"lat"`
	Lng float64 `json:"lng"`
	//Address string  `json:"address"`
}
```

## Step.1 マーカーの登録

IDを"0"にして、最初のマーカーの座標を入力したJSONを、サーバに送付して下さい。golangでの送信方法はは以下の通りです。
```
	gl := GetLoc{
		ID:  0,
		Lat: 35.653976,
		Lng: 139.796821,
	}

	err = c.WriteJSON(gl)
	if err != nil {
		log.Println("write:", err)
	}
```

返り値に入ってきたIDが、これからそのマーカで使うID番号となります。golangでの受信方法はは以下の通りです。

```
	gl2 := new(GetLoc)
	err = c.ReadJSON(gl2)
	log.Printf("after ID:%d", gl2.ID)
	log.Printf("after Lat:%f", gl2.Lat)
	log.Printf("after Lng:%f", gl2.Lng)
```

以後、このID番号(整数)を使用して下さい。この番号と異なる番号を使用した場合、動作は保証されません。

## Step.2 マーカーの移動

指定されたIDを使って、移動後の座標を送付して下さい。
```
	gl := GetLoc{
		ID:  5,         // IDが"5"の場合
		Lat: 35.653923,
		Lng: 139.796852,
	}

	err = c.WriteJSON(gl)
	if err != nil {
		log.Println("write:", err)
	}
```
返り値は、入力と同じJSONが戻ってきますが、必ず受信して下さい。
```
	gl2 := new(GetLoc)
	err = c.ReadJSON(gl2)
	log.Printf("after ID:%d", gl2.ID)
	log.Printf("after Lat:%f", gl2.Lat)
	log.Printf("after Lng:%f", gl2.Lng)
```

## Step.3 マーカーの抹消

指定されたIDを使って、地球上の緯度経度の数値で現わせない座標を入力して下さい。具体的に、latに90.0より大きな値、またはlngに180より大きな値を入力することで、マーカが消去されます。
```
	gl := GetLoc{
		ID:  5,         // IDが"5"の場合
		Lat: 999.9,
		Lng: 999.9,
	}

	err = c.WriteJSON(gl)
	if err != nil {
		log.Println("write:", err)
	}
```
返り値は、入力と同じJSONが戻ってきますが、必ず受信して下さい。
```
	gl2 := new(GetLoc)
	err = c.ReadJSON(gl2)
	log.Printf("after ID:%d", gl2.ID)
	log.Printf("after Lat:%f", gl2.Lat)
	log.Printf("after Lng:%f", gl2.Lng)
```

以上

 

README.docx

 

 

 

2020/10,江端さんの忘備録

昨日の日記について、私の日記の読んで頂いているSさんから、メールでご指摘を頂きました。

Mr. S, who is a reader of kobore.net, pointed out yesterday's diary to me via email.

大変の良いご指摘を頂いたと思いますので、ご本人の許諾を頂き、本日、やり取りをさせて頂きたメールの全文(改行を除き、一切の変更なし)を公開させて頂きます。

I think I have got a very good point. With the permission, I am publishing the full text of the email we exchanged today (without any changes, except for line breaks).

=====

2020年10月7日(水) 10:40 S

October 7, 2020 10:40 S

江端様

Mr. Ebata

こぼれネット読者のSと申します。

My name is S, a kobore.net reader.

何時も興味深い記事をありがとうございます。

Thank you for interesting articles, as always.

標記の件、本日の備忘録を読ませていただきましたが、杉田水脈氏の発言について取り上げている事について、意見させていただきます。

I have read today's memorandum on the aforementioned matter, and I would like to comment on what Ms. Sugita Mio's comments.

女は平気で嘘をつく、という発言ですが、その文脈の前段としては[性暴力事件]ではなく[韓国慰安婦の経歴]を対象とした発言とのことです。

According to her comment of "women lie without hesitation, I have heard that the statement is not about [the sexual violence case] but about [the career of Korean comfort women] in the first part of the context.

http://tsuisoku.com/archives/57245137.html

無論、公的な討論の場において適切な言葉選びかどうか、については考慮の余地はありますが、慰安婦問題の歴史(イ・ヨンスの発言履歴等)から考えれば決して奢った発言ではありませんでした。

Of course, there is room for consideration as to whether the choice of words is appropriate in a public debate. However, given the history of the comfort women issue (Lee Young-soo's history of speaking out, etc.), it was not a deliberate statement.

水脈氏の発言について、メディアの取り上げかたには目に余るものがあり、印象が悪くなるのも、備忘録の記事を書かれるのもやむなしと思います。

Regarding Ms. Sugita's remarks, the way the media picked them up was overwhelming, and I think it would be unavoidable to write a memorandum article, which would make the impression worse.

しかし、日々の江端様の考察の深さに対し、悪印象を持たれる記事であるかも知れないとも感じました。

However, I also felt that the article may give a bad impression against the depth of Mr. Ebata's daily reflections.

もしお暇があれば、今一度背景を見た上で、記事の是非を検討していただけませんでしょうか?

If you have time, could you please consider the pros and cons of the article after looking at the background once again?

不躾ではありますが、よろしくお願いいたします。

I apologize for my rudeness, but I would like to thank you for your patience.

=====

2020年10月7日(水) 11:25

October 7, 2020 11:25

S様

Mr. S

ご指摘ありがとうございます。

Thank you for pointing that out.

本件につきましては、私も重要なポイント(慰安婦問題と、性暴力問題)であると思いましたので、一通りの調査は致しました。

I believe this is an important point (comfort women and sex victims), so I have done a thorough investigation.

私としては、普段私が信用しているソースをベースにしたものであって、通常の商用のコラムと同様に慎重に調査したとはいいかねるものです。(コラムでは、かならずベース記事に辿り付くようにしています)

As for me, it's based on sources I usually trust. Unfortunately, I can't claim to have researched it as carefully for regular commercial columns. (In the columns, I do try to get to the base article)

従いまして、本件、再度調査をしたいと思います。

Therefore, I would like to investigate this matter again.

あわせて、

In addition, about the phrase of

>女は平気で嘘をつく、という発言ですが、その文脈の前段としては[性暴力事件]ではなく[韓国慰安婦の経歴]を対象とした発言とのことです。

"According to her comment of "women lie without hesitation, I have heard that the statement is not about [the sexual violence case] but about [the career of Korean comfort women] in the first part of the context"

についての出典について、当方にソース(URL等)を送付して頂ければ幸いと存じます。

It would be greatly appreciated if you could send us the source (URL etc.)

# 頂いたTwitter等のまとめは、本人の主張 + twitter の発言集であり、私の中では「信頼できるソース」の基準には満たされておりません。

The summary of Twitter and other sources you provided is a collection of her own claims + twitter statements. So I am sorry but it does not come up to the standard of "reliable source" in my mind.

なお、これは私見ですが、私は「仮に、そのスレッドが慰安婦問題であったとしても・・・」と思っております。

In addition, this is my personal opinion, but I think that "even if the thread was about the comfort women issue...".

慰安婦問題の歴史的経緯については、ティーンエイジャのころから追跡を続けており、某新聞社の件も含めて、ずっと監視続けてきています。

I've been tracking the historical process of the comfort women issue since I was a teenager, and I've been monitoring it since then, including the case of the certain newspaper company.

勿論、慰安婦問題と性暴力問題を、同一に語るのは暴力的に乱暴であると思っていますし、「歴史的事実」に立脚するか「考え方」に立脚するかの違いもあると思います。

Of course, I believe that talking about the comfort women issue and the sexual violence issue in the same thread is bordering on violence, and I also think there's a difference between basing it on "historical facts" or "policies".

# 私には、とても難しく、日記の中で記載している「敢えて無視」している案件の一つです。

# This is one of those "dare to ignore" cases in yesterday's diary, because this is very difficult for me.

いずれにしても、Sさまと私の慎重なダブルチェックを行い、その上で、必要なら削除や訂正や追加(出典を明確にする)を行うことも視野にいれております。

In any case, Mr. S and I will carefully double-check the information, and then I will try to delete, correct or add to it (to clarify the source) if necessary.

また、本件も、(S様のご許諾を頂ければ)その経緯の全文を一切の訂正なく私の日記に記載させて頂きたいと考えております。

Also, I would like to show the full text of these mails in my diary without any corrections. (If I could get Mr. S's permission).

お手数ですが、ご協力頂けましたら幸いと存じます。

We would be grateful for your cooperation.

江端智一

Tomoichi Ebata

=====

2020年10月7日(水) 12:29 S

October 7, 2020 12:29 S

江端様

Mr. Ebata

ご返信いただき、ありがとうございます。

Thank you for your reply.

出典元ではなく二次ソースの提示となってしまい、申し訳ございません。

I apologize for the presentation of the secondary source instead of the primary source.

自分の経緯としても、普段の収集先で答弁の動画の提示があったことを確認した後、切り貼りだったという論が広がったため、鵜呑みにしていた次第です。

As for my own background, I was swallowing that the story that it was cut and pasted spread, after confirming that the video of the answer was presented at the usual collection destination.

そのため、再度該当の答弁を確認した後、再度意見をまとめたいと思います。

Therefore, after confirming the relevant answer again, I would like to summarize my opinion again.

不確かな根拠で意見してしまい、申し訳ございません。

I apologize for giving you an opinion on uncertain grounds.

自分としても、歴史が解釈や取り上げかたでいくらでも姿が代わり、それにメディアがどう関わっていたか、を多少なりとも調べる機会があり、それによる不信感が先立っていました。

For me, I had the opportunity to find out more or less how history changed its appearance and how it was related to the media. So my distrust caused by it.

また、自身の答弁への解釈の際、総じて何を言いたいか、を重視し、多少の弁論の荒さは重視しない(そうでなければ、個人の表現や解釈を出しきれないと考えるため)ということがあり、本発言への感性が鈍感であった、とも思います。

I also think that my sensitivity to this statement was insensitive, because I focused on what she wanted to say as a whole in order to explain about her own opinions, and I didn't focus on some roughness. (Even if not, no one can express or interpret in their mind).

なんにせよ、情報がまとまり次第、改めてご連絡させていただきます。

In any case, I will contact you as soon as the information is available.

また、意見した側の責務として、本件が公開される件については同意させていただきます。

In addition, as the responsibility of the opinion side, I agree that this matter will be disclosed.

以上、よろしくお願いいたします。

Thank you for your cooperation.

=====

2020年10月7日(水) 17:20

October 7, 2020 17:20

Sさま

Mr. S

お返事頂きありがとうございました。

Thank you for your reply.

御言葉に甘えまして、頂いたメールの全文公開をさせて頂きたいと思います。

Thanks for your cooperation, I would like to publish the full text of the email you received and I sent

(1)Sさまのお名前は「読者のSさん」と致します。また、Sさまのメールアドレスは絶対的な意味において(どのような圧力があろうとも)非公開を貫きます。

(1) Mr. S's name will be "Mr. S, the kobore.net reader". In addition, Mr. S's email address will be kept private in the absolute sense. (No matter what the pressure).

(2)文言は一文字も換えませんが、改行は私にコントロールさせて下さい(私は、3行でかならず改行を入れるスタイルを採用しています)。

(2) I don't change the wording, but let me control the line breaks (I use the style of always inserting line breaks in 3 lines).

(私のメールについても、原則同様です)

(The same applies to my email)

(3)ただ、日記に展開した内容や構成に関して、Sさまにご不満がありました場合は、理由を問わず、可及的速やかに日記の全部を削除します。

(3) However, if Mr. S is dissatisfied with the contents and structure developed in the diary, I will delete the entire diary as soon as possible regardless of the reason.

(上記(1)-(3)は、これまでもメールを公開させて頂いている方に適用させて頂いている内容となっています)。

(The above (1)-(3) are based on past projects).

なお、本件、私についてご心配頂いた上でのご意見であること、十分に理解しております。

In addition, I fully understand that this is an opinion you have been concerned about me.

このようなチェックを頂ける幸甚に、心より感謝申し上げます。

I would like to express our sincere gratitude to you for the checks.

江端智一

Tomoichi Ebata

2020/10,江端さんの忘備録

(昨日の続きです)

(Continuation from yesterday)

ただし「無視」にも2つあります。

However, there are two ways to "ignore" it.

「(1)黙っているか」か、「(2)痛みで苦しんでいる人を、さらに、痛めて苦しめる」か、です。

Either (1) keep quiet or (2) make the person who is suffering from the pain suffer even more, painfully.

私は、「無視」するなら、最低でも(1)である続けることが、自分なりの矜持だと思っています。

I'm proud to say that if I'm going to "ignore" it, I'm going to continue to be (1) at least.

例えば、高齢者の権力者に阿ねるなどという理由で、(2)を選択することはしないようにしています。

For example, I try not to choose (2) on the grounds that I am beholden to an elderly authority figure.

―― (性暴力事件で)女は平気で嘘をつく

"Women don't mind lying -- in sexual assault cases"

みたいなセリフは、(2)になる、と思っています。

Such a line would be (2), I believe.

まあ、こういうセリフを、"ノリ"で言ってしまうこともありでしょう。

Well, it's possible to say these lines in the "groove".

居酒屋とか、女子会とかでは"あり"なのかもしれません ―― しかし、

I think it's possible at an izakaya or a girls meeting. However, it's out of the question.

『政治集会やら勉強会やらの公の(我々の血税が投じられて開催された)場などのような、特別な場所』

"Special places, such as public, taxpayer-funded venues for political meetings and workshops"

では、論外です。

しかし、そんな人は滅多にいるものではないです ―― 絶望的に低能で非常識な人間でもない限りは。

But such people are rare. Unless they are hopelessly low and insane.

ましてや、『性暴力被害者』のスレッドで、そんなことをセリフを言う人間は ―― もはや、人間ではない。

Anyone who says lines like that in the "Victims of Sexual Assault" thread, is no longer a human being.

-----

まあ、私だって、結構な頻度で、自分のコラムの中で、エンジニア自虐とか、エンジニア自己批判とかやって来ています。

Well, in my columns, I've been doing a lot of self-deprecation and self-criticism of engineers.

読者に媚びるフレーズも平気で書きますし、権力サイドから目を付けられない程度には、表現にも配慮しています。

I don't care of writing phrases that flatter my readers, and I am careful to express myself in order to avoid pressure from the power side.

私は「社会正義」の為に書いているのではなく、「自分(の娯楽)」の為に書いていていて、そんでもって、これからも書き続けたいからです。

I don't write for "social justice", I write for "my (my) amusement", and I want to keep writing.

その為には、社会弱者を意図的に無視することもあります ―― だって、私の手に負えないこともあるし、私にとって都合の悪いことだってありますから。

To do that, I sometimes deliberately ignore the most vulnerable people in society. Because some things are out of my control, and some things are not good for me.

-----

ただ、それでも「無視」をする時でも ―― 『うしろめたさ』を感じながら「黙り」続けます。

But even when I still "ignore" them -- I continue to "shut up" with a sense of "guilt".

「痛みで苦しんでいる人を、さらに、痛めて苦しめること」がないように気を付けます。

I take care not to "make those who are in pain suffer more and more pain and suffering"

だから、私の無礼な友人たちや、遠慮のない家族たちが、私を見張ってくれていることを、感謝しています。

So I'm grateful that my rude friends and unassuming family members are keeping an eye on me.

2020/10,江端さんの忘備録

私が、当初、夫婦別姓制度に反対の立場であったことは、これまで何度もお話してきたと思います。

I think I have told you many times in the past that I was initially opposed to the "conjugal surname system".

同性愛を、精神障害の一態様であるとすら思っていたこともあります。

I once even thought of homosexuality as a form of mental disorder.

今は、そうは思っていません。

Now, I don't think so.

「自分で勉強したから」と言いたいですが、基本的には、「社会の意識の変化に身を委ねてきた」という面が強いです。

I'd like to say "because I learned it myself," however, essentially, I've surrendered myself to the changing attitudes of society.

とはいえ、『多くの人が肯定していれば、多分正しいのだろう』という考え方はリスクがあります。

Nevertheless, the idea that "if a lot of people affirm it, it's probably right" is risky.

しかし、『多くの人が関心を持っているのであれば、ちゃんと自分で調べてみよう』というスタンスなら、良いと思います。

However, if your stance is "if it's the matter that many people are interested in, I'll look into it myself". Then it's good.

-----

新しい考え方(夫婦別姓、同性愛等)を自分に取り込むには、私には結構なエネルギーが必要でした。

It took quite a bit of energy to incorporate new ideas (marital separation, homosexuality, etc.) into my life.

自分の中にある、他の部分の考え方の変更も余儀なくされるからです ―― 正直、これは、「辛い作業」です。

Because it also forces me to change the way of other parts of myself. Honestly, this is "hard work".

特に、既存の価値観で生きてきたシニアにとっては、若い人には想像できないほどの「痛みを伴う」作業なのです。

It's a "painful" process that is unimaginable to younger people, especially for elder people who have lived by existing values.

「痛くて辛い作業」ですので、他人に強要することはできません。

It's "painful work" and I can't force others to do it.

しかし、その「痛くて辛い作業」を経ないと、現状の制度や差別で痛み苦しんでいる人 ―― 私の痛みや辛さとは比較にならない程の ―― に寄り添うことができません。

However, without going through that "painful work," it is impossible to reach out to those who are in pain and suffering from the current system and discrimination. It's so much worse than my pain and hardship.

-----

しかし、基本的には、それは「他人の苦痛」であって、「自分の苦痛」ではありません。

But basically, it's "other people's pain" and not "my pain".

どれほどの痛みや苦しみがあろうが ―― 所詮は、「他人事」です。

No matter how much pain and suffering there is -- it's just for "other people".

あなたは、それを無視したっていいと思います。

You're allowed to ignore it.

私(だけ)は、あなたを責めません。

I (only) don't blame you.

私も、沢山の問題を「無視」し続けています。

I also continue to "ignore" a lot of issues.

私のやっていることは、単なる「問題の数値化」に過ぎません。問題の解決法(ソリューション)に至れているものはほとんどありません。

What I am doing is merely "quantifying the problem". Very few of the problems (solutions) have been reached.

(続く)

(To be continued)

2020/10,江端さんの忘備録

(昨日の続きです)

(Continuation from yesterday)

しかし、一方の私は、「完全な死」など希望していません。

But I, on the other hand, have no hope of "complete death".

■理性的な思考が残存しており、

- Reasonable thinking remains,

■自分の意志が第三者に伝達可能で、

- Being able to convey my intentions to a third party

■自分の肉体が可制御の状態にあって、

- My body is in control

■絶望的な苦痛が到来する前に

- Before the arrival of desperate pain

とっとと死んでしまいたい、という気持ちがあります。

I have a feeling that I want to die suddenly.

私は、苦痛回避の死を肯定し、そして、他者にも実施してきました。

I have affirmed the death of pain avoidance and have done it to others.

「いかなる手を尽しても、絶対的に救えない、究極の死」などというのは ―― 本当に、冗談ではありません。勘弁して下さい、と、全力で土下座できるレベルです。

"The ultimate death that I can never save no matter what I do" is not joking. I can kneel down on the ground with saying "Please forgive me "

-----

私が何を言いたいかというと、

What I want to say, is that

『あらゆる手を尽くして延命を施すという考え方』は、昨日の「江端の腕時計」の話と似ていないか

Isn't "the idea of doing everything possible to prolong life" similar to the story of "Ebata's watch"?

ということです。

私の命を制御する側 ―― 例えば

The side that controls my life, for example

■「医師」の立場からすると、命を可能な限り延すことが「職務」であり、

- From the point of view of a "doctor", it is the "duty" to prolong life as much as possible.

■「身内」の立場からすると、命を可能な限り延すことが「権利」である

- From the standpoint of "relatives", it is "right" to prolong life as much as possible.

かのように思えるかもしれない、ということです。

might think this problem as above.

言い換えるのであれば、

In other words, that means,

『私の腕時計は、耐用年数を越えて、すでに廃棄される状態にある』

"My watch has reached the end of its useful life and is already in a state of disposal."

にもかからわず、

however,

『腕時計の意志を無視して、性能劣化している状態で、見苦しい外観を晒され続け、所有者によって動かされて続けられている』

"Ignoring the will of the watch, it continues to be exposed to its unsightly appearance and kept being driven by the owner, with its performance degraded."

ということです。

-----

『腕時計と人命を同じロジックで説明するのは乱暴に過ぎる』と思う人はいるかもしれません。

Some may think that it is too rough to explain a wristwatch and human life with the same logic.

法律や生命倫理、あるいは、その時点の社会通念や常識など、様々な問題を総合的に考えなければならないことは分かっています。

We know that we have to think comprehensively about various issues such as law, bioethics, and social conventions and common sense at that time.

しかし、私は、この問題、一度、ここまで単純化して考えてみる必要があると思っています。

However, I think this problem needs to be simplified to this point once.

―― 私達は、「腕時計の使用者」であると同時に、「腕時計本体」でもあるのです。

We are not only "watch users" but also "watch bodies".