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

先日、『本年度の私の研究のターゲット(の一つ)は「孤独」です』という話をしました。

I mentioned the other day that 'one (of) the targets of my research this year is "loneliness"'.

"ネガティブの感情" ―― フォースのダークサイド ―― の活用方法に関して、私の右に出るものは ―― 少ないと思います。

この件を嫁さんにしたら、『何だって?』と聞き返されました。

When I mentioned this to my wife, she said, 'What?' She asked me back.

嫁さんも、上記の日記に書いた通りの所感を持ったようです。

My wife also had the same impression of the place as I wrote in my diary above.

-----

昨日、ノリーナ・ハーツさんの「THE LONELY CENTURY なぜ私たちは「孤独」なのか」を読了して、今、まとめに入っています。

Yesterday I finished reading "THE LONELY CENTURY Why We Are "Lonely"" by Noreena Hertz and am now putting it together.

「LONELY CENTURY」の感想文を書いています

現在、私に期待されている(と思っている)仕事は「孤独の計測方法」ですが、これがなかなかに難しい。

The work that is currently expected of me (I think) is "how to measure loneliness", but this is quite difficult.

技術的には、各種の手段が取れます。それは現段階の技術でも十分可能な範囲なのですが、当然、プライバシーの問題と絡みあってきます。

Technically, various measures can be taken. Although this is possible even with current technology, it is naturally intertwined with the issue of privacy.

―― プライベートを干渉されたくないが、孤独でいるのもイヤだ

'I don't want my private life interfered with, but I also don't want to be alone.'

という、背反する欲望を、都合よく解決するアプローチが見つからないのです。

I cannot find an approach that conveniently resolves these disparate and conflicting desires.

普通に考えれば、『どちらかを諦めるしかない』が答えです。

Usually, the answer is 'you have to give up one or the other.

一応、「THE LONELY CENTURY」の終章に、ソリューションらしきものは記載されているのですが、「これだ!」と思えるような決定打はないようです ―― まあ、そんなものがあれば、すでに実施されているハズですが。

There is a solution in the last chapter of "THE LONELY CENTURY," but there seems to be no definitive solution -- well, if there was such a solution, it would have been implemented already.

-----

私は、『孤独には価値がある』と考えることができる人間なので、以下のようなテストには、全く躊躇がありません。

I am a person who can think that 'solitude is worth it,' so I have no hesitation in testing the following.

UCLAの孤独感尺度で、江端の孤独度を測ってみた件

TOEICに比べれば、全く抵抗ありません(むしろ受けたい)。

Compared to TOEIC, I don't have any resistance at all (I would rather take it).

-----

ちなみに、この「孤独」の問題を、(気休め程度に解決する)パラダイムシフトの方法があります。

Incidentally, there is a paradigm-shifting way to (comfortably) solve this "loneliness" problem.

「孤独」を「孤高」と読み替える ―― それだけです。

Replace "loneliness" with "isolation" -- that's it.

未分類

1. LONELY CENTURYを読んで

2. 課題

(非公開)

3. プロローグ:"ぼっち"で何が悪い?

3.1. 大丈夫だよ。きっと、もうすぐ友達はできるから

次女(小学生6年生)は、普段から、その父親の行動である「歩き読書」をやっています。

家族からは勿論、地域の住民からも「危ない」「やめろ」と言われても、

―― パパがやっているから

と、論理武装して、平然と続けています。

江端:「パパの場合は、夜中にヘッドライトを付けて、本を読んでいるから、夜道で目立つ。だから、安全なのだ」

と言っているのですが、こんな言い訳では、次女は勿論、自分ですら騙せません。

しかし、次女の行動は思わぬところから、罰を喰うことになります。

次女が、学級の仕事で、朝早く登校する必要があった為、一週間連続で、毎日一人で登校していた時のことです。

ある日の朝、横断歩道のいわゆる「緑のおじさん」から、声を掛けられたのだそうです。

―― 大丈夫だよ。きっと、もうすぐ友達はできるから

■人気のいない通学路で、

■(ひとり)ぼっちで、

■本を読みながら歩く少女

これだけの条件が整えば、「緑のおじさん」の推論が外れていたとして、誰に責めることができるでしょうか。

もっとも、

「私は『ぼっち』じゃない!」

と、次女は激怒していたようですが。

3.2. 「友達がいない」ことは問題ではない。「友達がいないように思われること」が問題なのだ

は、「次女」の名言として、私の名言集に登録されています。

その他のアニメや小説などを読んでみても、ティーンエイジャにとって、「友達」という概念は、私の目からは一種の「拷問」のように見えます。

しかし、振り返ってみるに、昔から集団行動というものが大嫌いだった私にとって、修学旅行や遠足というのは、確かに「拷問イベント」でした。

特に「班分け」という、

―― 校外において、教師が、生徒を管理する負担を減らすために存在している

責任回避システムの為、私は随分苦労させられたのを覚えています。

こういう「拷問イベント」の度に、私は「ぼっち」を回避する為に、姑息な裏工作をしなければなりませんでした。
心底、気が重くて、うんざりでしたものです。

3.3. 私の半生は、このコロナ禍の時代に向けた準備期間であったのかもしれない

思うように外出できないというだけで、多くの人にはストレスが溜る日々だと思います。
人間は社会的存在 ―― つまり、集団として存在することを前提 ―― とされているからです。
しかし、今や、「集団」ではなく、「個」として行動することが推奨される状況になっております。

ところで、私、昔から「個」というか「孤」に抵抗がなかったように思えます。
小学生の頃から、下校時は、頭の中で色々な(中二病的な)ことを考えながら、一人で歩いて帰るのが好きでした。
友人と一緒に帰らなければならない時は、「今日は、(頭の中で)話を作れない」とガッカリしたものです。

そもそも「複数の友人と遊ぶ」というのも、あまり得意ではなかったように思います。
集団を纏めなければならない立場(例:生徒会会長)にあったときでさえ、「自分は一人」という意識が離れることはありませんでした。
デートの後の計画(例:深夜のゼミの研究室に戻ってデータ解析をする)を、デートの最中に考えていました。

そして、コロナ禍が始まる以前から「孤食(ぼっち飯)」「孤読(ぼっち読書)」「孤考(一人ブレスト)」について、日記に書いてきました。
つまるところ、私は「孤」であるということに、他の人よりも高い耐性がありそうだ、ということです。

ただ、私は、これまで、その「弧」を自分の意志で選択してきました。
「弧」以外の選択肢がなくなったときにも、同じ様に考えることができるのか、全く自信がありません。

ともあれ、今や、「「孤」であるということ」が、望ましいこととして、社会から要請されています。

―― 私の半生は、このコロナ禍の時代に向けた準備期間であったのかもしれない

と思うと、なんとも言えない皮肉を感じます。

4. 孤独問題に対する動き

4.1. 新型コロナウイルス感染症のパンデミック

昨今の少子高齢化やデジタル化などに伴い、人々の社会的な関わりにはさまざまな変化が生じつつある。孤独は、その問題の一つである。

孤独問題は、1980年の新自由主義に端を発て、議論・検討され続けてきたが、この問題がクローズアップされてきたのは、2020年に新型コロナウイルス感染症のパンデミックが発生と、それに伴う、社会的な接触の厳しく制限にある。

こうした状況の中、イギリスでは2018年に「孤独担当相」が、日本でも2021年12月に内閣官房に「孤独・孤立対策担当室」が設立されるなど、社会的孤独への対策は国内外で急務となっている。

ここで重要なのが、孤独が「それ自体が問題」であることは勿論であるが、孤独が社会問題であることを、多くの人が共有する認識に至った点である。

4.2. .

5. 社会悪としての孤独

5.1. 健康問題

ヒトにおける「孤独(社会的孤立の主観的認知)」は、うつなどの心の健康だけでなく、心血管系疾患やがんの予後など、身体的健康にも悪影響を及ぼすことが知られている。マウスを使った実験でも、孤独が雄では攻撃性の増大、雌ではうつ様行動や卵巣がんの増悪を招くことが報告されている。

5.2. カルト問題

6. 個人的な害悪としての孤独

6.1. 孤独は

7. 金銭的不利益のとしての孤独

8. 必然としての孤独

8.1. 孤独はトレードオフである

私達は、物理的な一つの固体であり、厳密な意味において、リアルタイムで同時に2つ以上のコミュニティに参加できない。もちろん、会社、家族、町内会からSNSに至るまで、様々なコミュニティに属しているとも言えるし、そういう意味においては、私たちは、Aというコミュニティに属しつつ、Bというコミュニティにも同時に属する量子的存在である、とも言える。

孤独は突然やってくる

9. 孤独から導かれる最悪のシナリオ

9.1. カルトにつけこまれる

10. 孤独の計算方法

10.1. 前提

ここでは、社会全体として孤独についてのモニタリングについては論じない。それらについては、多くの研究において具体的な数値が上げられており、現時点で、それらのデータを疑う合理的な理由はない。本章における、孤独の計算とは、「個人」の孤独の計算を意味するものとする。

10.2. 自殺率

孤独の定量化で、最初に上がるのは、自殺率である。これについては論を待たない。ただ私(江端)の検討結果では、自殺に至る原因のトップ(40%箸キ50%)は、「うつ」という病気であり、これが「孤独」との相関があることは、感覚的には明らかであるが、厳密な意味では疑問はある。

が、自殺率が、孤独計算の重要なパラメタであることは、今さら検討しなくても良いと考える。

10.3. 世帯構成

世帯構成(家族や伴侶の存在)は、孤独を推定する協力なパラメタである。

10.4. 犯罪発生率

これは、孤独から導かれる「貧困」が問題とされている場合は、犯罪の種類によって、孤独を推定できる可能性がある

10.5. 肥満率

アクティビティは、孤独を測る指標となるうるが、個人差が大きいこともあるので、検討が必要である。

10.6. イベント参加率

夏祭りなどのイベントに参加する人間の数は、個人の孤独を特定するには困難であるが、地域の孤独率を算出する方法としては有用であると言える。(画像処理技術などと使えば、人数のカウント等は難しくない)

11. 用語

11.1. 新自由主義

  • 国家による福祉・公共サービスの縮小(小さな政府、民営化)と、大幅な規制緩和、市場原理主義の重 視を特徴とする経済思想のこと。
  • 資本移動を自由化するグローバル資本主義は新自由主義を一国のみならず世界まで広げたもの
  • 対立する概念は、「国家による富の再分配を主張する自由主義」または「社会民主主義」

つまるところ、国家や組織による個人への介入を排して、個人の能力と価値観に強く依拠する自由な社会、という理解で良い。裏を返せば、(1)能力主義、(2)自己責任、(3)競争是認、(4)自力解決を、強いられる社会であると言える。

もっと簡単に言えば、

  • 私に関わるな。私の考え方は私のもの。その考え方に介入し、あるいはそれを妨げること(妨害、等)することは何人たりとも許さん

  • お前のことは、お前のこと。甘えるな。自力でなんとかしろ。(国家も含み)私には関係ない

が同時に存在すること。

11.2. 反知性主義

11.2.1. 「知性主義」から見る「反知性主義」

  • 知的権威やエリート主義に対して懐疑的な立場をとる主義・思想
  • 「知性を否定する」主義ではなく、「知性主義に反対する」という主義であることに、注意すること
  • 乱暴に言えば、「知性主義」とは、科学、計算、統計などのロジックに基づく考え方であり、直感、感情、情緒等を重視しない主義、と言える。
  • さらに乱暴に言えば、知性主義は、基本的に少数のエリートの作る権力基盤のプラットフォーム、コンピュータで言うところのオペレーションシステム(OS)とも言える。
  • (江端主観で)知性主義の最大の特徴は、「見える化」できないという点にある。非常に複雑で、多くの人にとって理解できないものとして、権力のプラットフォームとして稼動し続けるものである。

11.2.2. 反知性主義の実施例とされているもの

個人的であり、主観的であり、かつ観念的であることを承知の上で、江端主観で、反知性主義の実例を上げるとすれば、以下のものが該当すると考える。

  • 選挙前に減税や弱者支援を訴えて当選を得ることを可能とする「ポピュリズム」
  • 2016年のアメリカ大統領選挙におけるドナルド・トランプの掲げた「アメリカファースト」
  • 新型コロナウイルス感染における「ワクチン陰謀論」
  • SNSを用いることで、反対意見を持つ者を簡単にフィルタリングし、極端な思想で強化・先鋭化された「ネオナチ」「イスラム原理主義」

11.2.3. 反知性主義のメリットとデメリット

ロジックで反論できなくとも「嫌なものは嫌」であり「好きなものは好き」という意見は尊重されなければならない。今となっては、タブーとなっている、人種差別、性別差別等も、当時には、それを支える強固な理論(主に権力側の)があったが、それを、反知性主義的な考え方によって、打破されてきた。

そのような意味において、反知性主義は、民主主義の根幹をなすべき考え方であると言える。

一方、反知性主義は、知性主義的なものに対する感覚的な嫌悪をベースとする傾向があるため、科学的、数学的アプローチを嫌い、比較的、簡単に陰謀論に人々を導く傾向が高い(但し、陰謀論と非陰謀論は、完全に分離できるものではなく、現時点で、陰謀論を定義する方法はない)。

このように、反知性主義は、物事を理解する、という面倒くさいプロセスを放棄することを、正当化する手段としても用いられ、ポピュリズムを容認し、カルト集団や原理主義集団を育成するという、社会悪の側面を持つ。

 

 

未分類

望んだ孤独か、余儀なくされた孤独か、その線引きをどう判断するのか。
内閣官房の担当室が着目したのが「UCLAの孤独感尺度」という指標だ。
1978年にアメリカの大学が公表し、国際的にも広く使われているのだという。
指標は、以下のような20の質問項目で構成されている。

「自分には人との付き合いがないと感じることがあるか」
「自分は取り残されていると感じることがあるか」
「自分は他の人たちから孤立していると感じることがあるか」

こうした質問に4段階の程度を回答して点数化し、孤独感を測る。
点数が高ければ高いほど孤独だということになり、最も高いのが80点で、44点以上で「孤独感が高い」、28点未満で「孤独感が低い」と判定するのだという。
(https://www.nhk.or.jp/politics/articles/feature/61791.html)

江端の孤独尺度は"56" 「孤独感が高い」でした。

80点を満点と考えると、江端の孤独度は70%ーーー  「孤独が強く出るだろう」と思ってはいたのですが、思ったほどには悪い値ではなかったな、という自己評価です。

という訳で、皆さんも、56点をベースに「江端より孤独かどうか」を測ってみませんか?

 

 

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

どうせ、また、いずれ、同じ内容で探し回ることになると思うので、今、記載しておきます

utsu_db=# SELECT seq, node, edge, cost, agg_cost FROM pgr_dijkstra('SELECT gid as id, source, target, length as cost FROM
ways',100, 600, false);
seq | node | edge | cost | agg_cost
-----+-------+-------+------------------------+-----------------------
1 | 100 | 41 | 0.0002983579226385357 | 0
2 | 18996 | 21479 | 0.0006788280602488493 | 0.0002983579226385357
3 | 6119 | 24518 | 0.00019027162164538517 | 0.000977185982887385
4 | 19331 | 6766 | 0.0010928248868793096 | 0.0011674576045327702
5 | 18976 | 21474 | 0.0003135978634977571 | 0.00226028249141208
6 | 6120 | 24519 | 0.00014212958875406848 | 0.0025738803549098374
7 | 2595 | 29737 | 0.00012339732574262452 | 0.002716009943663906
8 | 6137 | 30391 | 0.00016648675622455585 | 0.0028394072694065305

このcostの単位って何なの? 私は距離が知りたいだけなんだけど? と探し回ったら、なんのことはない、単に"length"→"length_m"にすればよかっただけでした。

utsu_db=# SELECT seq, node, edge, cost, agg_cost FROM pgr_dijkstra('SELECT gid as id, source, target, length_m as cost FROM ways',100, 600, false);
seq | node | edge | cost | agg_cost
-----+-------+-------+--------------------+--------------------
1 | 100 | 41 | 27.7006591508524 | 0
2 | 18996 | 21479 | 63.36986127215735 | 27.7006591508524
3 | 6119 | 24518 | 17.68514641657604 | 91.07052042300975
4 | 19331 | 6766 | 102.22241800670713 | 108.75566683958579
5 | 18976 | 21474 | 30.189796472672 | 210.97808484629292
6 | 6120 | 24519 | 14.342809731736027 | 241.16788131896493
7 | 2595 | 29737 | 13.438709335725413 | 255.51069105070096

ちなみに、agg_costは、距離の足し算の合計値を出してくれるので、便利です。

いちおう、GoogleマップとQGISつかって、大体の距離も合っていたので、大丈夫でしょう。

 

 

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

// go get github.com/lib/pq を忘れずに
// go run main6.go

/*
	前提は、https://ebata-books.booth.pm/items/3351408 の環境

	(1)スタート地点  139.91804656152837 36.57246810341353,
	(2)ゴール地点 139.93515104919825 36.55883778950532
	(3)とした時、この2点に最も近いノードを探し出して、
	(4)その2点をダイクストラ法で、最短距離探索をするプログラム

	分かったこと
	上記(3)のノードが、孤立ノードになっている場合があり、この場合(4)が実施できないので、
	ダイクストラに失敗する場合は、別のノードでトライアルする必要あり 
	(このコードでは展開しないけど)
*/

package main

import (
	"database/sql"
	"fmt"
	"log"

	_ "github.com/lib/pq"
)

var source int
var longitude float64
var latitude float64
var dist float64

func main() {
	db, err := sql.Open("postgres",
		"user=postgres password=password host=localhost port=15432 dbname=utsu_db sslmode=disable")
	if err != nil {
		log.Fatal("OpenError: ", err)
	}
	defer db.Close()

	// スタート地点  139.91804656152837 36.57246810341353
	rows, err := db.Query("SELECT source, x1 as longitude, y1 as latitude, ST_Distance('SRID=4326;POINT(139.91804656152837 36.57246810341353)'::GEOGRAPHY, the_geom) as dist FROM ways WHERE ST_DWithin(the_geom, ST_GeographyFromText('SRID=4326;POINT(139.91804656152837 36.57246810341353)'), 300.0) ORDER BY dist LIMIT 1")
	if err != nil {
		log.Fatal(err)
	}
	defer rows.Close()

	for rows.Next() {

		if err := rows.Scan(&source, &longitude, &latitude, &dist); err != nil {
			fmt.Println(err)
		}
		fmt.Println(source, longitude, latitude, dist)
	}

	o_source := source

	// ゴール地点 139.93515104919825 36.55883778950532
	rows, err = db.Query("SELECT source, x1 as longitude, y1 as latitude, ST_Distance('SRID=4326;POINT(139.93515104919825 36.55883778950532)'::GEOGRAPHY, the_geom) as dist FROM ways WHERE ST_DWithin(the_geom, ST_GeographyFromText('SRID=4326;POINT(139.93515104919825 36.55883778950532)'), 300.0) ORDER BY dist LIMIT 1")
	if err != nil {
		log.Fatal(err)
	}
	defer rows.Close()

	for rows.Next() {

		if err := rows.Scan(&source, &longitude, &latitude, &dist); err != nil {
			fmt.Println(err)
		}
		fmt.Println(source, longitude, latitude, dist)
	}

	d_source := source

	fmt.Println(o_source, d_source)

	// これが基本形
	// rows, err = db.Query("SELECT seq, node, edge, cost FROM pgr_dijkstra('SELECT gid as id, source, target,length as cost FROM ways',8889, 22848, false)")

	// この bigint なるものは、https://wp.kobore.net/%E6%B1%9F%E7%AB%AF%E3%81%95%E3%82%93%E3%81%AE%E6%8A%80%E8%A1%93%E3%83%A1%E3%83%A2/error-function-pgr_dijkstraunknown-start_vid-bigint-end_vid-bigint-directed-boolean-does-not-exist-line-7-pgr_dijkstra-hint-no-function-matches-the-given-name/ に記載がある
	rows, err = db.Query("SELECT seq, node, edge, cost FROM pgr_dijkstra('SELECT gid as id, source, target,length as cost FROM ways', $1::bigint , $2::bigint , false)", o_source, d_source)

	// こっちも稼動します
	// str := "SELECT seq, node, edge, cost FROM pgr_dijkstra('SELECT gid as id, source, target,length as cost FROM ways'," + strconv.Itoa(o_source) + "," + strconv.Itoa(d_source) + ", false)"
	// fmt.Println(str)
	// rows, err = db.Query(str)

	if err != nil {
		log.Fatal(err)
	}
	defer rows.Close()

	for rows.Next() {
		var seq int
		var node int
		var edge int
		var cost float64

		if err := rows.Scan(&seq, &node, &edge, &cost); err != nil {
			fmt.Println(err)
		}
		fmt.Println(seq, node, edge, cost)
	}

	if err := db.Ping(); err != nil {
		log.Fatal("PingError: ", err)
	}
}

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

// go get github.com/lib/pq を忘れずに
// go run main5.go
package main

import (
	"database/sql"
	"fmt"
	"log"

	_ "github.com/lib/pq"
)

func main() {
	db, err := sql.Open("postgres", "user=postgres password=password host=localhost port=15432 dbname=utsu_db sslmode=disable")
	if err != nil {
		log.Fatal("OpenError: ", err)
	}
	defer db.Close()

	rows, err := db.Query("SELECT gid,tag_id,x1 FROM ways")
	if err != nil {
		log.Fatal(err)
	}

	// 139.9182893339256, 36.573831584767085

	defer rows.Close()

	for rows.Next() {
		var gid int
		var tag_id int
		var x1 float64
		if err := rows.Scan(&gid, &tag_id, &x1); err != nil {
			fmt.Println(err)
		}
		fmt.Println(gid, tag_id, x1)
	}

	if err := db.Ping(); err != nil {
		log.Fatal("PingError: ", err)
	}
}

さて

http://www.kobore.net/diary_techno/?date=20181101

の中の、点(139.9182893339256 36.573831584767085)から半径300メートル以内の全部のノードを、近い順に出せ

を、psqlで出力させると、こんな感じになります。

Golangで実施するとなると、こんなコードになります(select文のコピペで足ります)。

// go get github.com/lib/pq を忘れずに
// go run main5.go
package main

import (
	"database/sql"
	"fmt"
	"log"

	_ "github.com/lib/pq"
)

func main() {
	db, err := sql.Open("postgres",
		"user=postgres password=password host=localhost port=15432 dbname=utsu_db sslmode=disable")
	if err != nil {
		log.Fatal("OpenError: ", err)
	}
	defer db.Close()

	rows, err := db.Query("SELECT source, x1 as longitude, y1 as latitude, ST_Distance('SRID=4326;POINT(139.9182893339256 36.573831584767085)'::GEOGRAPHY, the_geom) as dist FROM ways WHERE ST_DWithin(the_geom, ST_GeographyFromText('SRID=4326;POINT(139.9182893339256 36.573831584767085)'), 300.0) ORDER BY dist")
	if err != nil {
		log.Fatal(err)
	}
	defer rows.Close()

	for rows.Next() {
		var source int
		var longitude float64
		var latitude float64
		var dist float64

		if err := rows.Scan(&source, &longitude, &latitude, &dist); err != nil {
			fmt.Println(err)
		}
		fmt.Println(source, longitude, latitude, dist)
	}

	if err := db.Ping(); err != nil {
		log.Fatal("PingError: ", err)
	}
}

出力結果は同じものになります。

 

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

今となってなっては、当然のように存在している、OSS(オープンソースソフトウェア)ですが、その起源は、fetchmail、emacs、そして、Linuxに遡れると思います。

OSS (Open Source Software) is now a commonplace, but its origins can be traced back to fetchmail, emacs, and Linux.

OSSが、「単なる善意のソースコードの開示ではなく、優れたソフトウェア開発モデルである」ということを提示した、最初の論(というか、コラム)が、エリック・デイモンドさんが開示した、「伽藍とバザール」だったと思います。

I think the first argument (or rather, column) that presented OSS as "not just a bona fide source code disclosure, but a good software development model" was Eric Daymond's disclosure, "The Cathedral and the Bazaar".

今日、これを読み直してみたのですが、ここには、OSSのビジネスモデルに関する言及はなかったようです。

I re-read this today and did not find any reference to the OSS business model here.

が、今や、これらについては、すでに様々なビジネスモデルが実現されており、十分な実績があります。

However, various business models have now been realized and are already well established.

-----

まあ、OSSが、当初、どれだけ酷い取り扱いをされてきたかについては、こちらの記事の、

Well, to see how badly OSS was treated in the beginning, please refer to this article.

'今となっては、ITに詳しくない人ですら知っている用語、OSS(オープンソースソフトウェア) ―― この概念が世間に公表された時、世界中のITエンジニア(私も含めて)から「アホじゃないか」と、あきれたものです'

'Nowadays, even people who are not familiar with IT know the term, OSS (Open Source Software) -- when this concept was announced to the world, IT engineers around the world (myself included) gasped and said, "Isn't that stupid?'

'プログラムのソースコードは、ソフトウェア技術の集大成です。そのソースコードを誰でも見られるようにオープンにしたら、自分の仕事をわざわざ他人にくれてやっているようなものです'

'The source code of a program is the culmination of software technology. If you make that source code open for anyone to see, it is like giving your work all the way to someone else.

あるいは、

Others include,

'その当時、Linuxのカーネルコンパイルなんかやっていたら、「江端ぁ! オモチャのOSで、遊んでんじゃねーぞ!!」と叱られたものです(本当)'

At that time, when I was compiling the Linux kernel, my boss said to me, "Ebata! Don't play with a toy OS! I was scolded by him.

などを、読んで頂ければ、分かるかと思います。

-----

で、最近、私は思うのですが

And lately, I think...

―― ソースコードが開示されたところで、所詮、他人の書いたコードは、自分には読めない

"Even if the source code is disclosed, I can't read the code written by others after all"

という、『オープンソース ≒ クローズドソース論』を、主張したいと思います。

I would like to argue that a theory of "Open Source is nearly equal to Closed Source".

I know well, that,

―― オープンソースコードの理解にかかるコストは、オープンソースコードをスクラッチから作り直す程度のコストに匹敵する

"The cost of understanding open source code is comparable to the cost of rebuilding open source code from scratch"

のです。

今回、これを逆の方向から理解できたのが、今朝の深夜でした。

It was late this morning that I was able to understand this from the opposite direction this time, by the fact of

『他人の100行のコードは理解できないのに、5年前に書いた自分の1000行のコードを、一瞬で思い出すことができた』

'I couldn't understand a hundred lines of someone else's code, but I could instantly recall a thousand lines of my own code that I wrote five years ago.'

からです。

つまり、『オープンソースコードは、その開発者とセットになった時、その価値を最大限に発揮する』ということです。

In other words, 'open source code maximizes its value when it is paired with its developers.

実際のところ、他人のオープンソースを使っていてバグが生じていたとしても、それをデバックする気持ちなど全く発生しません。

As a matter of fact, if I am using someone else's open source and a bug arises, I have no desire to debug that code at all.

このような場合、私の対応は、(1)運用で対処する、(2)そのコードの利用を断念する、(3)そのバグが、学会のワークショップで出てこないことを祈る、の3つ程度です。

In such cases, my response is about three things: (1) deal with the problem in operation, (2) abandon the use of the code, or (3) hope the bug does not come up in a workshop at a conference.

-----

もちろん、この経験は、これまで検討されてきたOSSの開発モデルやビジネスモデルを、1mmも否定するものではありません。

Of course, this my experience does not negate a single millimeter of the OSS development and business models that have been discussed.

しかし、私にとって、私のOSSとは、

But for me, my OSS is about

『過去の私と現在の私の間で行われる、共同開発』

"Collaborative development between me in the past and me in the present"

という意義が、一番大きいです。

is the most significant.

------

シュタインズゲートゼロ第18話の、レスケネン教授の

Professor Leskenen's line from Steins;Gate Zero episode 18,

「これは、私と、私による合作なんだよ ―― 時を越えた」

"This is a timeless collaboration between me and me"

は、OSS開発の意義として、加えられるべきであると思います。

should be added to the significance of OSS development.

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

OpenStreetMapのデータからosmiumを使って鉄道だけを抽出しPostGISに入力する方法(宇都宮周辺の鉄道データを使った例)

を、参考にさせて頂いて、試しているのですが、うちのosmiumは、

root@c517fca5dec0:/usr/bin# osmium export -f pg -o utsunomiya-railway-latest.pg utsunomiya-railway-latest.osm.pbf
Set output format with --output-format or -f to 'geojson', 'geojsonseq', or 'text'.

といって、pgファイルを作ってくれません。色々調べたのですが、どうにも上手くいかずに、別の方法を探しています。

で、ちょっと興味本位で、

root@c517fca5dec0:/usr/bin# apt install osm2pgsql

をやってみたら、コンテナの中に、サクッとインストールされたので、これを使う方向で検討しています。

------

>docker container exec -it utsunomiya_db_1 bash

で入ったのですが、osm2pgsqlとかosmiumはインストールできなかったのですが、apt update, apt install, apt upgrade, などを叩き込んで、

>apt install osm2pgsql

>apt install osmium-tool  (×osmium)

>apt install postgresql

を強行しました。

こうしたら、上記のエラー(Set output format with --output-format or -f to 'geojson', 'geojsonseq', or 'text'.)が見えなくなりましたので、osm2pgsqlの方向は見合わせることにしました

よし、続行だ。

この後、アップデートすると動かなくなるので、アップデートを中途半端に行って(完璧にしない)で、pgファイルを作って、インストールに成功。

その後、上記参照ページのSさんから教えて頂いた

utsu_rail_db=# select geom, tags->>'railway' as railway, tags->>'name' as name from utunomiya where tags->>'name' like '%宇都宮ライトレール';

を実施しました。

| construction | (仮称)宇都宮ライトレール
0102000020E6100000070000000725CCB43D7D61408EA2186A5E474240E9CD4D40387D61406409C61C5F474240C6490625317D61407055230560474240197DBBDB2B7D6140A5AA645B61474240BB1171CE237D614050BA3EBD63474240970E8C721F7D6140A95B2CFB644742
4055FBCFF5187D6140B3171B0467474240

| construction | (仮称)宇都宮ライトレール
0102000020E610000008000000BE5B0F15197D61400686072868474240B3075A81217D6140BA50549165474240419B1C3E297D6140B53D30366347424063AD461B2C7D6140685E697462474240CC7C073F317D6140638DC4156147424009E29755337D6140ECB886BE604742
405A2A6F47387D6140E7CD3C146047424069520ABA3D7D6140B130444E5F474240

| construction | (仮称)宇都宮ライトレール
(74 rows)

と、出てきました。

ーーーようやく、宇都宮GISデータベース目処が付きました。

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

連休中ですが、普段より働いている気がします ―― 疲労を感じます。

I'm on holiday, but I feel like I'm working more than usual -- I feel tired.

「『手を抜くため』の努力は惜しまない」という方針で、以下のようなことで、ずっと悩んでいます。

Based on my policy of "making every effort to 'cut corners'" , I am struggling with following issues.

お願い:PostGISで、曲線のジオメトリをそのまま使って、始点と距離を与えて、終点の座標を得たいです

そういえば、今回、自分で作った本が、自分を助けてくれて、本当に助かっています。

Come to think of it, the book I made myself before really helped me out.

『ありがとう!過去の私!!』と、時空を越えて、自分に感謝しております。

'Thank you, past me!' And I thank myself for crossing time and space.

------

私、最近、teratail(https://teratail.com/)という技術系の質問掲示板を使わせて頂いておりまして ―― 質問ばかりしています。

I have recently been using a technical question board called teratail (https://teratail.com/) -- I ask a lot of questions.

あまりにも申し訳ないので、私でも、答えられることには回答したいと思っています。

I am too sorry to do this, but even I would like to answer what I can.

それが『トレードオフ』・・・ではなくて、えーっと、『共助共存』というやつですよね、うん、そう。

That's the 'trade-off'...No, I don't mean that. Let's see, it's called 'mutual aid coexistence', yes, yes.

しかし、私が答えられそうなことは、「回答済み」か「解決済み」になっており、私に口を出せる余地がありません。

However, anything I might be able to answer is either "answered" or "resolved", leaving no room for me to speak.

-----

『いつか、あなたを助けるから、今はちょっと勘弁ね』と呟きながら ――

With muttering, 'Someday, I'll help you, just not right now,'

今日も、パソコンの前で、宇都宮市のGISデータベース構築と利用方法に、頭を抱えています。

Today, I am sitting in front of my computer with giving my headache, and trying the construction and use of the GIS database for Utsunomiya City.

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

「OpenStreetMapのデータから鉄道だけを抽出してGeoJSONで出力する方法」を試してみた件

を前提として、osmから道路と鉄道路線のみを残して残りは消去する方法を探してみました。

どうやら、これでできるようです。

まず、宇都宮地区を抽出します。

osmium extract --bbox 139.76675736787732,36.47004171587971,140.1596765021647,36.659949299138 -o utunomiya.osm.pbf kanto-latest.osm.pbf

次に、以下を行います。

root@2e317961f1d0:/tmp# osmium tags-filter utunomiya.osm.pbf nw/railway nw/highway=motorway,service,primary,secondary,tertiary,unclassified,residential -o utunomiya-lrt-latest.osm.pbf

上記のコマンドのnw(r)は、以下のような意味になっています。

nwr は、OpenStreetMapの nodewayrelationsを指定しています。

nw/(キー)=(タグ),(タグ),(タグ),(タグ),(タグ).....

という記述をします。

(キー)は、https://taginfo.openstreetmap.org/keys を参照

(タグ)は、https://taginfo.openstreetmap.org/tags を参照するといいでしょう。

https://wiki.openstreetmap.org/wiki/JA:Tag:highway%3Dresidential の、

上記をクリックすると、motorway,service,primary,secondary,tertiary,unclassified,residential 

の意味が分かります(多分)。