2024,江端さんの技術メモ

背景

現在、tomioka_db_cを中心にコーディングを展開していますが、とみおかーとのルートの入っていない(バスのルートだけが入っている)地図が必要となりました。

課題

JSONからとみおかーとのルートを取り除いて地図を作り直すこともできますが、ノード番号ずれが発生するという問題が生じます

課題を解決する手段

つまるところ、とみおかーとのルート情報だけを、tomioka_db_cから取り除ければいいのです。

実施例

まず、

ebata@DESKTOP-P6KREM0 MINGW64 ~
$ createdb -U postgres -h 192.168.0.23 -p 15432 tomioka_db_c_trial
Password:
ebata@DESKTOP-P6KREM0 MINGW64 ~
$ pg_dump -U postgres -h 192.168.0.23 -p 15432 -Ft tomioka_db_c | pg_restore -U postgres -h 192.168.0.23 -p 15432 -d tomioka_db_c_trial
Password:
Password:
で、実験用のtomioka_db_c_trialを作成しました。
QGISで除去手術の状況を把握する為に、tomioka_db_c_trialを見える状態にしました。

現時点で分かっていること

(1)とみおかーとルート用のnode番号は、1~181の連番である。

(2)とみおかーとルート用のwayには、"TomioCart"の属性情報が入っている

(3)これを、単に、

public | ways | table | postgres
public | ways_vertices_pgr | table | postgres
からDeleteすれば良いのかどうかは不明
ですが、やってみるしかない。

nodeの削除(最初のトライアル) →失敗

DELETE FROM ways_vertices_pgr WHERE id >= 1 AND id <= 181;

すると、こんなメッセージを受けて、失敗します。
tomioka_db_c_trial=# DELETE FROM ways_vertices_pgr WHERE id >= 1 AND id <= 181;
ERROR: update or delete on table "ways_vertices_pgr" violates foreign key constraint "ways_source_fkey" on table "ways"
DETAIL: Key (id)=(1) is still referenced from table "ways".
"エラーメッセージによると、"ways_vertices_pgr" テーブルの "id" 列が "ways" テーブルの "ways_source_fkey" 外部キー制約によって参照されていることが原因のようです。
削除操作を行う前に、この外部キー制約を解除する必要があります。"
とのことのようなので、最初はwaysの削除に変更をします。

wayの削除(最初のトライアル)

DELETE FROM ways WHERE name = 'TomioCart';
"DELETE 184"
とこちらはサクっと消えました。

あれ? TomioCartが消えていない?

QGISからエントリーを削除して、再度読み込みをしたら

ちゃんとwayが消えていました。

nodeの削除(2回目のトライアル) →やはり失敗

chatGPTに相談したら、以下のような指示を受けました。

ALTER TABLE ways DROP CONSTRAINT ways_source_fkey;

しかし、
tomioka_db_c_trial-# ALTER TABLE ways DROP CONSTRAINT ways_source_fkey; ERROR: syntax error at or near "ALTER" LINE 2: ALTER TABLE ways DROP CONSTRAINT ways_source_fkey; と言われました

SELECT constraint_name, table_name, column_name, referenced_table_name, referenced_column_name
FROM information_schema.key_column_usage
WHERE table_name = 'ways_vertices_pgr';

ここから手をやきました。
多分、まだ1~181のノードを参照しているwaysのエントリーが残っているので、消せないのだろうと推測しました。

で、まずは、sourceに21番を持っているwayのエントリーを探してみました。

tomioka_db_c_trial=# select * from ways where source = 21;
gid | osm_id | tag_id | length | length_m | name | source | target | source_osm | target_osm | cost | reverse_cost | cost_s | reverse_cost_s | rule | one_way | oneway | x1 | y1 | x2 | y2 | maxspeed_forward | maxspeed_backward | priority | the_geom
------+--------+--------+------------------------+-------------------+------+--------+--------+------------+------------+------------------------+------------------------+--------------------+--------------------+------+---------+---------+-----------------+----------------+-------------+------------+------------------+-------------------+----------+--------------------------------------------------------------------------------------------
1258 | 104020 | 112 | 3.9727662820583996e-05 | 3.612272689729353 | | 21 | 899 | 102079 | 2958989369 | 3.9727662820583996e-05 | 3.9727662820583996e-05 | 0.2600836336605134 | 0.2600836336605134 | | 0 | UNKNOWN | 139.62560711503 | 35.36760885871 | 139.6256468 | 35.3676107 | 50 | 50 | 2.5 | 0102000020E6100000020000005C6636F9047461408EF09CCE0DAF41401B1B704C0574614070140FDE0DAF4140
(1 row)

で、このエントリーを消去しました。

tomioka_db_c_trial=# DELETE FROM ways WHERE source = 21;
DELETE 1
tomioka_db_c_trial=# select * from ways where osm_id = 102058;
gid | osm_id | tag_id | length | length_m | name | source | target | source_osm | target_osm | cost | reverse_cost | cost_s | reverse_cost_s | rule | one_way | oneway | x1 | y1 | x2 | y2 | maxspeed_forward | maxspeed_backward | priority | the_geom
-----+--------+--------+--------+----------+------+--------+--------+------------+------------+------+--------------+--------+----------------+------+---------+--------+----+----+----+----+------------------+-------------------+----------+----------
(0 rows)

たしかに消えています。

で、今度は、ways_vertices_pgr の方を消してみました

tomioka_db_c_trial=# DELETE FROM ways_vertices_pgr WHERE id = 21;
DELETE 1
tomioka_db_c_trial=# SELECT * FROM ways_vertices_pgr;
id | osm_id | eout | lon | lat | cnt | chk | ein | the_geom
------+------------+------+--------------+-------------+-----+-----+-----+----------------------------------------------------
(前略)
20 | 102078 | | 139.62563228 | 35.36755641 | | | | 0101000020E6100000C1D1FD2D05746140C4EAA8160CAF4140
22 | 102080 | | 139.62561830 | 35.36767727 | | | | 0101000020E61000000979AB1005746140ABEC760C10AF4140
(後略)

あっさり消えていました。

 

ということは、source またはtargetが 1~181に関するwayを全部消せば、ways_vertices_pgr の方も消せるはず

ちょっと怖かったけどやってみることにしました。

tomioka_db_c_trial=# DELETE FROM ways WHERE source >= 1 and source <=181;
DELETE 96

tomioka_db_c_trial=# DELETE FROM ways WHERE target >= 1 and target <=181;
DELETE 81

おお! 完全にwayが消えました。

 

では、ふたたび
DELETE FROM ways_vertices_pgr WHERE id >= 1 AND id <= 181;
を実施します

tomioka_db_c_trial=# DELETE FROM ways_vertices_pgr WHERE id >= 1 AND id <= 181;
DELETE 180

やっと消えました

tomioka_db_c_trial=# SELECT * FROM ways_vertices_pgr;
id | osm_id | eout | lon | lat | cnt | chk | ein | the_geom
------+------------+------+--------------+-------------+-----+-----+-----+----------------------------------------------------
182 | 102254 | | 139.62956343 | 35.36605302 | | | | 0101000020E61000007690336225746140082C51D3DAAE4140
183 | 102255 | | 139.62952386 | 35.36602637 | | | | 0101000020E6100000F1EB3A0F257461401A07C7F3D9AE4140
184 | 102256 | | 139.62949515 | 35.36599335 | | | | 0101000020E6100000F65C05D3247461403A74BFDED8AE4140

総括

postgresqlのpostGISのDBから新規に作成したnodeとwayを削除するには、以下の手順を踏むこと
(Step.1) waysから、新規node,wayに関する全部エントリーを削除すること。今回の場合は、以下の3つ

DELETE FROM ways WHERE name = 'TomioCart';
DELETE FROM ways WHERE source >= 1 and source <=181;
DELETE FROM ways WHERE target >= 1 and target <=181;

(Step.2)
ways_vertices_pgrからターゲットのNode情報を削除すること。今回の場合は以下の1つ。

DELETE FROM ways_vertices_pgr WHERE id >= 1 AND id <= 181;

(Step.3)
最後に、tomioka_db_c_trial を、tomioka_db_d に変更する(コピーしてから、tomioka_db_c_trialを消すこと)

ebata@DESKTOP-P6KREM0 MINGW64 ~
$ createdb -U postgres -h 192.168.0.23 -p 15432 tomioka_db_d
Password:
ebata@DESKTOP-P6KREM0 MINGW64 ~
$ pg_dump -U postgres -h 192.168.0.23 -p 15432 -Ft tomioka_db_trial | pg_restore -U postgres -h 192.168.0.23 -p 15432 -d tomioka_db_d
Password:
Password:
drop database tomioka_db_c_trial;

2024,江端さんの忘備録

私は、娘たちに、『(スマホなどの)ゲームをしろ』とも『ゲームをするな』とも言いませんでした。

I did not tell my daughters to 'play games (such as on their phones)' or 'don't play games.

しかし、世間の多くの保護者が頭を抱えている『子どもがゲームから離れない』という現象に出会ったことがありません。

However, I have never encountered the phenomenon many parents are annoyed with: 'My child won't leave the game.

私は、娘たちに『本を読め』とも『本を読むな』とも言いませんでした。

I did not tell my daughters to 'read books' or 'don't read books.

でも、彼女らは、普通に本を読んでいるみたいです。

But they seem to be reading books just fine.

私は、娘たちに『勉強しろ』とも言いませんでした。

I didn't even tell my daughters to 'study.

優秀な成績だったのかどうかは知りませんが、卒業しているようなので、それなりにやっていたのだと思います。

I don't know if they excelled, but they seem to have graduated, so I think they did reasonably well.

私は、娘たちに、『英語はやっておいた方がいいよ』とは言っていました。

I had told my daughters, 'You might do English.

しかし、二人の娘たちから「少なくとも『就活』に英語は全く必要なかった」と総括されています。

However, my two daughters have summed it up by saying, "At least we didn't need English at all for 'job hunting.

-----

実際に、私が「命懸け」で英語の勉強始めたのは、30歳を超えてからです。文字通り、命がかかっていたので。

It wasn't until I was over 30 that I started studying English "with my life on the line." My life was on the line.

海外での仕事は何とかなりました。今も、何とかしています。

I managed to work abroad. I am still managing to do so.

「英語に愛されないエンジニア」のための新行動論

ちなみに、『幼少のころから始めないと、英語が使えない』というのは、私が知る限り、根拠となるデータがありません(根拠なしで、そう主張しているのは、幼児向け英語教材の会社だけです)。

Incidentally, as far as I know, there is no data to support the claim that 'if you don't start at an early age, you can't use English' (the only company that claims so, without evidence, is the company that produces English materials for young children).

根拠となるデータや論文があれば、私に教えて下さい。私がエンジアリングアプローチで、きちんと検証します。

Please let me know if you have any data or papers to back this up. I will use an engineering approach to validate it properly.

-----

ともあれ、私には語るべき「教育論」がありません。

Anyway, I have no "educational theory" to speak of.

例外があるとすれば、これをやった記憶くらいです。

The only exception is my memory of doing this.

未分類

カート、バスのコストを減らすテスト用に、tomioka_db_c_cost を作成

ebata@DESKTOP-P6KREM0 MINGW64 ~(こっちのシェルを使うこと。パイプを使うため)>createdb -U postgres -h 192.168.0.23 -p 15432 tomioka_db_c_cost
Password:

ebata@DESKTOP-P6KREM0 MINGW64 ~(こっちのシェルを使うこと。パイプを使うため)
$ pg_dump -U postgres -h 192.168.0.23 -p 15432 -Ft tomioka_db_c | pg_restore -U postgres -h 192.168.0.23 -p 15432 -d tomioka_db_c_cost

富岡地区のバス等の平均速度の算出

歩行に対するバスの歩行比 = 0.18

歩行に対するカートの歩行比 = 0.45

は、まだ未設定

 

未分類

バスは、平均速度17.9km/hくらい

カートは、平均速度7.2km/hくらい

高低差が富岡地区と程度の1.3kmをテスト歩行 / 24分
歩行は3.25km/hくらい

歩行に対するバスの歩行比 = 0.18

歩行に対するカートの歩行比 = 0.45

-----

歩行速度: 1.0 m/s (約3.6 km/h)  → 3 km/h
自転車速度: 4.0 m/s (約14.4 km/h) → 14 km/h
原付(バイク)速度: 6.0 m/s (約21.6 km/h) 信号待ちを考慮すると、実際の平均速度はやや低くなる場合があります。 → 20 km/h
バス速度: 5.5 m/s (約19.8 km/h) 信号待ちを考慮すると、実際の平均速度はやや低くなる場合があります。 → 実測では17.9km/hとなっている → 18 km/h
自動車速度: 8.0 m/s (約28.8 km/h) 信号待ちや交通量によって速度が変動しますが、一般的な推定値です。 → 30 km/h
京急線の平均速度: 約40 km/hから50 km/h → 40 km/h
カートの平均速度 7.2km/h(実測) → 7 km/h
Unknownは、上記の単純平均としておく(やりようがないので) → 18km/h としておく

 

 

2024,江端さんの忘備録

日本国外の特許については、各国の特許庁が各国の言語で応答してきます。

For patents outside Japan, each country's patent office will respond in that country's language.

当然です。

Naturally.

その国において、特許権の取得を要求する以上、その国の行政府の言語で記載されるのは当然です。

As long as the patent is requested in that country, it is only natural that it should be written in the language of that country's executive branch.

第三外国語は、ない

ですが、最近は、欧州への特許などは、英語で返事をしてくれます。凄く助かっています。

But recently, they replied to me in English for European patents, etc. They are accommodating.

私、英語嫌いですが、それでも、その行政府の言語ではなく、英語にしてくれているというだけで、御礼を申し上げたい気持ちになります。

I don't like English, but I still feel like thanking them just because they are using English instead of the language of that government agency.

-----

先日、中国語の拒絶理由通知書が、私に届きました。

The other day, the Chinese Patent Office notified me of the reasons for the refusal.

中国語というだけで、拒服(拒絶理由に服従すること)しようかとも思いましたが、それはそれで、誠意のない対応だとも思います。

I thought about accepting the reason for rejection because it is in Chinese, but I also believe that is not a sincere response.

十数年前と違って、今は、優れた翻訳エンジンもあることなので、ここは中国特許庁と闘ってみようかと思います。

Unlike more than a decade ago, we now have excellent translation engines, so I think I will try to fight the Chinese patent office this time.

第一ラウンドくらいファイティングポーズを見せないと ―― 『王禅寺の特許明細書製造装置』の名にかけて。

You must at least show a fighting pose in the first round -- in the name of "Ozenji's Patent Specification Manufacturing Device."

ちなみに、上記を称呼しているのは、私だけです(つまり自称)。

By the way, I am the only one calling the above (i.e., self-proclaimed).

つまり「基礎的な知識の習得をサボり、敬語も使えんような奴は、『AI以下』」ということです。

 

未分類

-o_lon 139.6295688 -o_lat 35.3660511 -d_lon 139.6270944 -d_lat 35.3636816

IN → IN

-o_lon 35.37104902612216 -o_lat 139.62783634404897 -d_lon 35.36679082984578 -d_lat 139.61990743230746

-o_lon 35.36370323013283 -o_lat 139.62581182970706 -d_lon 35.367220880193656 -d_lat 39.61545727502963

IN → GW → OUT(杉田駅)

-o_lon 35.370129658663075 -o_lat 139.61807940648757 -d_lon 35.38234353115761 -d_lat 139.6169048139053

OUT(金沢文庫) →  GW → IN

-o_lon 35.34242787509463 -o_lat 139.62188682227753 -d_lon 35.36560662891383 -d_lat 139.6284518375501

GWを解さないケースは考えなくてもいいか?

参考用IN座標
35.36806794078537 139.62553044883524
35.368460473893506 139.61904786225577
35.37428653450456 139.62427422430005
35.36540598985192 139.62776680008463
35.369043463845195 139.61565072257753
35.36750734475584 139.62092894663886
35.37074115832766 139.6246677711019
35.36402430298291 139.6278705652247
35.364924425352065 139.61977652223922
35.36501131116549 139.62219084352495
35.36948676753484 139.62847423044224
35.36389080286156 139.62455038923105
35.37062388152758 139.62152611976026
35.369585262158225 139.6169533355986
35.36355717334552 139.62111006291772
35.36659904745299 139.62566195874086
35.37257710543914 139.62647362169034
35.3680835911364 139.6229746670008
35.36975330554079 139.6237745742663
35.361949806922695 139.6228796060347
35.369835300106416 139.61538425327674
35.375224252194165 139.62127037638513
35.3682225046029 139.6248646383888
35.36790771075679 139.61695177096536
35.372372595731235 139.6240863659352

 

2024,江端さんの忘備録

最近、世間では「ギャンブル依存症」についての話題が多いようです。

There seems to be a lot of talk about "gambling addiction" in the world these days.

私は「ギャンブル依存症」について、深く語れるほどの知見はありませんが、「ギャンブル」には、行動経済学の心理が強く働いているんじゃないかな、と思うことがあります。

I don't know enough about "gambling addiction" to talk about it in depth, but I sometimes wonder if there is a strong psychology of behavioral economics at work in "gambling."

その心理とは、こちらのページにも記載していますが、「メンタルアカウンティング」です。

The psychology is "mental accounting," as described on this page.

私は『その日に取り組んだことを、その日の内にメドをつけないと、安心できない』という、チキンな性格です。

I am a chicken-hearted person who says, 'If I don't finish what I worked on that day, I don't feel comfortable.

ですので、「深夜に至っても、なかなか仕事(主にコーディング)を止められない」 → 「脳が休まらない」 → 「眠れない」 → 「不眠に陥る」のケースが多いです。

Therefore, in many cases, "I can't stop working (mainly coding) even after midnight" → "My brain can't rest" → "I can't sleep" → "I fall into insomnia.

ギャンブルにおける『ギャンブルで損失を取り戻したい』という心理は、上記の私の行動に似ているような気がします。

I feel that the psychology of 'wanting to recoup gambling losses' in gambling is similar to my behavior above.

今回騒がれている事件は、個人としては巨額(6億円超え)ですが、組織になるとケタが違います。

The case under discussion is a considerable sum (over 600 million yen) for an individual, but it is a different story for organizations.

私が覚えている事例では、こちらの論文に記載のある、東京証券取引所第 1部上場の銀行または商社による、11億ドル(当時の換算で960億円)と、約682億円の事件があります。

One example I remember is the case described in the paper here: a bank or trading company listed on the First Section of the Tokyo Stock Exchange committed fraud totaling $1.1 billion (96 billion yen at the time), or approximately 68.2 billion yen.

もちろん、『ギャンブルで損失を取り戻したい』という心理は、「ギャンブル依存症」の一つの側面であり、他にも各種の要因がある(そもそもギャンブルができる環境が必要)とは思います。

Of course, I think the psychology of 'wanting to recoup losses from gambling' is one aspect of 'gambling addiction,' and there are various other factors (and the environment in which gambling is possible in the first place).

しかし、そのような損失を隠しながら生きていくことは、とても辛いことだろうな、ということくらいは理解できます。

However, I can at least understand that it must be tough to live with such losses hidden.

-----

私は、お金に愛されないエンジニアで、お金に不安のある日々を過してはいますが、それでも、ギャンブル依存症(+隠している負債)の人の不安に比べれば、かなりラクだろうなぁ、と思います。

I am an engineer unloved by money, and I spend my days anxious about money, but I still think it must be a lot easier than the anxiety of a gambler (+ hidden debt).

「お金に愛されないエンジニア」であることに、ちょっとだけ「運の良さ」を感じたりしています ―― ほんとうに、ちょっとだけ、ですけどね。

I feel a little "lucky" to be an "engineer not loved by money" -- really, just a little bit.

―― パチンコや麻雀というのは、そんなにも楽しいものなんだ

 

2024,江端さんの忘備録

NHKの「四大化計画 世界は3つで語れない」という番組が、(多分番組編成の影響?で)、我が家のHDDレコーダに録画されていました。

NHK's program, "The Four Great Plans: We cannot The World in Three Parts," was recorded on our HDD recorder (probably due to a missed program operation). The program is left on our HDD recorder.

今回が初見でしたが、『超ド級の衝撃映像ぞくぞく!世界のハードワーク特集』は、凄く面白かったです。

It was my first time seeing the program, but "Super Duper Shocking Footage! The World's Hardest Work" was very interesting.

もう定番化決定です。

I have already decided to make it a regular program.

私たちの社会インフラが、どれだけの人の努力によって支えられているかを、再度思い知らされる内容でした。

It was a reminder once again of how much of our social infrastructure is supported by the efforts of so many people.

-----

私、阪神・淡路大震災(1995年1月17日)、3日間だけボランティアに参加してきて、その時のことをコラムとして纏めました。

I participated in the Hanshin-Awaji Earthquake (January 17, 1995) as a volunteer for only three days, and I have summarized my experiences in this column.

その後、ガス会社に努めていた大学の後輩から、『40日間、現場のプレハブで雑魚寝して、それ以外の時間以外は、泥まみれになりながら、ずっと土を掘って、配管工事をしていた』という、リアルな災害現場の活動を聞かされました。

Later, a junior college student who worked for a gas company told me about real disaster site activities: 'For 40 days, we slept in prefabs on site, and the rest of the time, we were covered in mud, digging in the dirt all the time and working on piping.

それを聞いて、私は、

When I heard the above, and I remembered,

―― 偉そうにコラムなんか書いていた自分が、とてつもなく恥かしくなってきた

"I was incredibly ashamed of myself for writing such a pompous column."

ことを覚えています。

-----

もちろん、このような羞恥心は大切だと思いますが、それでも、自分の無力さに萎縮してボランティアを取り止めるよりは、ずっと良いのです。

Of course, this sense of shame is essential, but it is still much better than withdrawing from volunteering because your helplessness so deflates you.

小さい貢献でもゼロよりは圧倒的にいい。「偽善の善」でも善は善です。

Even a tiny contribution is far better than zero. "Good" is "good," even if it is "hypocritical good."

偽善者

-----

で、今になって、開き直って考えているんですが、

And now, I'm thinking about reopening it, and I have a feeling that this is the case,

―― みんな、もっともっと語って、記録を残そうよ

"Let's all talk more and more and keep track!"

という気持ちになっています。

私のような、ちょっとしたボランティアの活動の報告だけでも、役に立つことがある(かもしれない)のです。

Even a small report of a volunteer's activities, such as mine, may (or may not) be helpful.

「その時の状況、その時の気持ちを、その時できる力だけでいいから、できるだけ残そうよ」と思うのです。

I think, "Let's preserve as much as we can of the situation and the feelings we had at the time."

人の記憶は当てになりません。

People's memories are unreliable.

写真や映像は状況を伝えますが、"心"を伝えることは難しいです。

Photographs and videos can convey the situation, but it is difficult to describe the "heart."

-----

「自分のことを語るのは、恥しい」というのは、当然だと思います。

I think it's fair to say that "it's embarrassing to talk about yourself."

しかし、それでも語り続けることが、誰かの役に立っているかもしれません。

But still, continuing to tell the story may be helpful to someone.

また、「自分の気持ちが上手く表現できない」というのも、分かります。

I also understand that "you cannot express your feelings well.

言語化という作業は、誰にとっても、本当に難しいのです(面倒くさいし、誤解されることもありますし)。

The verbalization task is challenging for everyone (it is annoying and misunderstood).

それでも、『40日間、現場のプレハブで雑魚寝して、それ以外の時間以外は、ずっと土を掘って、配管工事をしていた』が、たとえ個人のメモであったとしても ――

Even if  'For 40 days, we slept in prefabs on site, and the rest of the time, we were covered in mud, digging in the dirt all the time and working on piping' was just private notes,

その40日分の記録とその公開は、何かの役に立ち、誰かの心を揺さぶるかもしれません。

The record of those 40 days and its publication may be helpful and even touch someone's heart.

-----

あらためて、『国語の勉強は大切で、そして、特に作文は大切だ』と、今、実感しております。

Once again, I realize now that 'studying Japanese is essential, and writing essays is especially important.

加えて、自分の日記を世間に公開する「ふてぶてしさ」...もとい「度胸」の育成ですね。

In addition, we also need to cultivate the "frumpiness" of publishing my diary to the world.

大丈夫です。

Don't worry.

あなたの(そして私の)メモなんぞ、あなたや私が死んだ後、1年以内に、プロバイダへの料金不払いで、全部削除されますから。

Someone will delete your (and my) notes within a year after you or I die for non-payment of fees to the provider.

2024,江端さんの忘備録

社内であれ、ネットであれ、自分の作ったプログラムが、他の人の役にたっている(飯のタネ)になっていることは、嬉しいものです。

It is nice to know that the programs I have created, whether in my company or on the Internet, are being used to help other people (to make a living).

しかし『これは私(江端)が作ったものだ』などと、自慢したりはしません。

But I don't boast, saying, 'This is something I (Ebata) made.

そんな、ダサいことは、この技術分野ではできません。

I cannot do such a dumb thing in this technical field.

他の世界のことは知りませんが、ソフトウェアの世界においては、私は常にOSS(Open Source Softwre)に助けてもらい続けています。

I don't know about the rest of the world, but the OSS (Open Source Software) has helped me in the software world.

一つのOSSの開発は、最小人数1人というものもあれば、20人以上というものもあります。

Some OSS development requires at least one person, while others need 20 or more.

OSSの開発者の皆さんは、『これは私が作ったものだ』などとは言いません。少なくとも、私は聞いたことはありません。

OSS developers do not say, 'This is what I made. At least, I have never heard that.

OSSの開発者の皆さん全員に御礼をすることもできませんので、私は、心の中で感謝しながら、使わせて頂いております。

I cannot thank all the developers of the OSS, so I am using it with gratitude in my heart.

-----

思うに、モノ作りを行う者の最大のご褒美は、『そのモノが動く』ことのように思います。

The greatest reward for those who make things is that "the thing works.

これは、ゲームにおける『ラスボスを倒す』の考え方と似ているのではないかと思います(私はゲームをやらないので、よく分かりませんが)。

The above may be similar to "defeating the last boss" in games (I don't play games, so I'm not sure).

『そのモノが動く』や『ラスボスを倒す』ことは、究極の主観です。

Both 'working things' and 'defeats the raspberry' are ultimate subjectivity.

そこに、第三者の視点はありません。

There is no third-party perspective there.

誰かから得られる評価は、客観ですが、(他の人は知りませんが、私は)客観なんぞは、かなりどーでもいいのです。

The evaluation I get from someone else is objective, but (I don't know about anyone else, but I) don't care about objectivity.

『そのモノが動く』や『ラスボスを倒す』ことは、『自分を楽しませる手段』の一言に集約されます。

The "working things" and "defeating the raspberry" can be summed up in one word: "a means of amusing oneself.

-----

私、一度、嫁さんに、『キャバクラ通いをする夫』と、『金になるかどうか分からんプログラミングに時間を突っ込む夫』との差いは何か、と尋ねたことがあります。

I once asked my wife the difference between a "cabaret-going husband" and a "husband who puts his time into programming that may or may not make money."

なにしろ、私、大学に在籍してから、ここ1年半の間、週末、連休、を含めて、全日業務と研究(プログラミングを含む)に、自分の時間を突っ込んでいます。外出した記憶がありません。基本的には、飲み会なども、全てキャンセルです。

I have devoted myself to work and research (including programming) on all days, including weekends and holidays, for the past year and a half since I have been at the university. I don't remember going out. I have canceled all drinking parties.

江端:「動機の違いこそあれ、結果として、『自分の世界に没入して、自分を楽しませている』という点において差はないと思うのだが」

Ebata: "Despite the differences in motivation, I don't think there is any difference in terms of 'immersing oneself in one's world and entertaining oneself' as a result."

嫁さん:「よく分からないけど、『私が腹が立つか否か』ということかと思う。私は、仕事と学業を両立させるべく、毎日疲れ張てている夫には、腹は立たないだけだよ」

Wife: "I'm not sure, but I think it's a question of 'am I angry or not? I don't get mad at my husband, who works tirelessly daily to juggle work and school."

江端:「"怒れる妻 "はあり得るということ?」

Ebata: "Does that mean there can be 'an angry wife'?"

嫁さん:「そう思う。だけど『キャバクラ』と『業務と学業』では、同じレベルで論じるのは難しいんじゃないかなぁ。比較する例題が悪すぎる」

Wife: "I think so. But it's hard to discuss 'cabaret' and 'business and academics' on the same level. It's just too bad an example to compare them."

-----

嫁さんと、このような会話をしながら、

With my wife having this conversation,

―― 『女に学問は不要』という古いパラダイムの時代、学問を志す女性は、さぞかし生き難い時代だったんだろうなぁ

"I guess it must have been difficult for women who wanted to study in the old paradigm of "women don't need to study."

と、妙なところで、腹落ちしてしまいました。

strangely, however, I was convinced.

指名制に関する考察

2024,江端さんの忘備録

先日、落雷か何だか分かりませんが、1分間程の停電がありました。

The other day, I don't know if it was a lightning strike or what, but I had a power outage for about a minute.

もちろん、我が家のPC群も一瞬にしてブラックアウトしました。

Of course, my PCs were also instantly blacked out.

当然、作成途中のファイル等は全滅でしたが、それでも全システムの再起動を確認できた時は ――

Of course, all the files being created, etc., were wiped out, but still, when I could confirm that the entire system had rebooted.

手を組んで、空に向って『神様ありがとう』と呟きました。

I folded my hands and muttered 'Thank you, God' to the sky.

-----

サーバやDBを運用している訳ではないので、UPS(無停電電源装置)を購入するのは、ちょっとやりすぎのような気がします。

I am not running a server or DB, so purchasing a UPS (uninterruptible power supply) seems like a bit much.

いや、1台だけですが、ここ10年くらい連続で働いていてくれるサーバがありました。

Well, one server has been working continuously for the last ten years.

『江端家見守りシステム』も、被害に遭ってていたはずでした。

The "Ebata Family Monitoring System" was also supposed to have been damaged.

今、正常にシャットダウンしたら、再起動しませんでしたので、手動で色々修理しました。

When I shut it down, it would not usually restart, so I repaired things manually.

Welcome to emergency mode!

この見守りサーバ、Wifiポートが一つ空いていたので、実験用のアクセスポイントも作りました。

This monitoring server had one Wifi port available, so we also created an access point for experimental use.

Ubuntu16.04 でのアクセスポイント化

-----

1990年頃、「プログラマー30歳定年説」というのがありました(本当)。

Around 1990, a theory was that programmers retire at age 30 (true).

これは、プログラマーという仕事が過酷で ―― 残業、徹夜、荷重労働、薄給、過労死 ―― という感じの世界観で、そして、実際そんな感じでした。

This theory was a worldview in which a programmer's job was grueling -- overtime, all-nighters, load work, thin pay, and overwork -- and, indeed, it was like that.

今は状況が変わったかと問われれば、案外そうでもありません。

If you ask whether the situation has changed now, it has not.

プログラムというのは、プログラマの能力と関係なく、開発環境やマシンスペック、その他のパッケージソフトの影響などを受け、『動かない時には、何をしても動かない』という、実に嫌なやつなのです ―― 土下座でなんとかなる人間関係や、お金や人材の投入で解決できるモノの方がマシと思えるくらいです。

A program is a real pain in the ass because it is affected by the development environment, machine specs, and other software packages, regardless of the programmer's ability, and "when it doesn't work, it doesn't work no matter what you do. It is better to solve the problem by getting down on our knees and investing money and human resources.

それでも、以前に比べれば、OSSを使うことができ、開発環境も良くなり、ずいぶん楽になってきています。

Nevertheless, using OSS and better development environments has become much more manageable compared to the past.

そして、生成AIをパートナーとすることで、『事実上、プログラマーの定年は消滅した』という気がしています。

And with generative AI as a partner, I feel that 'the retirement age for programmers has virtually disappeared.

生成AIに日本語で頼めば、最初のコードは作ってくれますから ――  あとは、生成AIが作ってくれたコードを、私が理解すれば、その後の改造は自由自在です。

If I ask the AI to create the first code in Japanese, it will generate the code for me. Once I understand the code created by the AI, I can modify it as I wish.

-----

最近、ちょっと変った使い方をしているので、ご紹介したいと思います。

Recently, I have been using it in a rather odd way.

例えば、「多項ロジットモデルとは何ですか」とChatGPTに尋ねますと、

For example, when I ask ChatGPT, "What is a multinomial logit model?

『統計学や機械学習の分野で使用される.... ロジスティック回帰の拡張..... ロジスティック回帰の拡張....』

"Used in statistics and machine learning," "Extensions to logistic regression," "Extensions of logistic regression..."

と言われますが、これでは私には分からないんですよ。

However, this message doesn't make sense to me.

でも、「多項ロジットモデルの簡単なプログラムをGo言語で作ってみてください」とChatGPTにお願いすると、

But when I ask ChatGPT to "try to make a simple program in the Go language for the multinomial logit model,

package main

import (
	"fmt"
	"math"
)

// softmax関数
func softmax(logits []float64) []float64 {
	var sum float64
	probabilities := make([]float64, len(logits))

	// ソフトマックス関数の計算
	for _, logit := range logits {
		sum += math.Exp(logit)
	}
	for i, logit := range logits {
		probabilities[i] = math.Exp(logit) / sum
	}

	return probabilities
}

func main() {
	// クラスごとのロジット(入力値)
	logits := []float64{1.2, 0.8, 1.5}

	// ソフトマックス関数を使用してクラスごとの確率を計算
	probabilities := softmax(logits)

	// 結果の出力
	fmt.Println("Logits:", logits)
	fmt.Println("Probabilities:", probabilities)
}

てな感じで作ってくれます。

It can make the codes like that.

私は、このプログラムを読むことで、「多項ロジットモデル」の概要をざっくり把握することができるんですよ(プログラムを実行する必要なし)。

I can get a quick overview of the "multinomial logit model" by reading this program (no need to run the program).

数理モデルの理解の時間が、10倍くらい加速される、という感じです。

It is as if the time required to understand the mathematical model is accelerated by about 10.

ぶっちゃけ、専門書なんて、かったるくて読んでいられません。

Technical books are too dull to read.

-----

まあ、このような使い方をする人間は少ないとは思いますが、私の場合、「生成AI + プログラム言語」の助けを得て、リタイア後も当面はなんとかなるんじゃないかな、と、期待しています。

Well, I know that not many people use it this way. Still, in my case, with the help of "Generative AI + Programming Language," I hope to manage for the foreseeable future, even after I retire.

プログラムスキルを有する若い人が少ないのか、今なお、私は、プログラミングの仕事で、前線に借り出されていますし。

Though I still work in programming, I'm unsure if enough young people have programming skills.

まあ、認知症になるまでの期限付きかとは思いますが、それでも"希望"は"希望"です。

There is a time limit until dementia sets in, but "hope" is "hope.