未分類

Amazonのアカウントを持っている人は、Amazon Primeでいまリリースされている「ロスト・キング 500年越しの運命」は、見た方がいいと思います。

これが、実話に基づく映画であると知って、本当にびっくりしています。

私、今、研究のやり直しの最中で、とても辛い毎日なのですが、「何のために、自分がこの研究を始めたのか」を思い出させてくれる映画でした。

-----

私、シェイクスピアの作品があまり好きではありません ―― というか、シェイクスピアって、そんなにいいかな?

シェイクスピア戯曲の解釈(リチャード三世 = 王位簒奪者)を『一人の主婦の、徹底したエビデンスに基づいた行動が"粉砕した"』という事実が、もう、たまらなく痛快です。

2024,江端さんの忘備録

先日、長女の結婚式で、簡単なスピーチをしてきたというお話をしました。

The other day, I told you about how I gave a short speech at my eldest daughter's wedding.

『もちろん、私は、そつなくスピーチを纒めました ―― そういうのは、私の十八番ですから。』

'I put together a polished speech - that's my specialty.

先週の週末に「バージンロード」を娘(長女)と歩いてきた江端です。

で、何をしゃべってきたかというと、

So, what did I say?

―― 結婚の意義は「不幸」になること

The significance of marriage is to become “unhappy.”

です。

===== スピーチここから =====

振り返れば、私の人生にもたくさんの「幸せ」と感じられる瞬間がありました。

Looking back, there have been many moments in my life that I can feel were “happy.”

好きな人と結婚できたこと、会社で表彰を受けたこと、論文で賞をいただいたこと ―― どれも幸せと思えるものでした。

Being able to marry the person I love, receiving an award at work, and winning an award for my thesis made me happy.

しかし、私が今も鮮明に覚えている「幸せ」のは、このどれでもありません。

However, none of these things are the “happiness” I still remember.

-----

娘が幼かった頃、彼女は小児喘息の発作と自家中毒に悩まされていました。

When my daughter was young, she suffered from asthma attacks and food poisoning.

深夜、車の中で嘔吐を繰り返す娘を抱きしめながら、私は幾度も緊急病院に駆け込んだものです。

I was rushed to the emergency hospital many times in the middle of the night, holding my daughter as she repeatedly vomited in the car.

彼女の苦しげな声が響く中、ハンドルを握る手が震え、夜道が永遠に続くように感じました。

As her distressed voice echoed, the hand on the steering wheel trembled, and it felt like the night road would go on forever.

苦しそうな声を挙げる娘の声を聞きながらの、深夜の自動車の運転は、「考えうる人生で最悪の地獄」でした。

Driving a car late at night while listening to my daughter's distressed voice was “the worst hell imaginable.”

しかし、病院で診察を受け、点滴が始まると、娘の顔には次第に穏やかな安らぎが戻ってきました。

However, when she was examined at the hospital, and the intravenous drip started, a sense of calm gradually returned to her daughter's face.

苦しみから解放された彼女の安らかな寝顔を見ながら、私は「床の上で(本当に床の上)で横になって、体を休ませて」いました。

Watching her peaceful sleeping face, free from suffering, I “lay down on the floor (truly on the floor) and rested my body.”

今でも、あの夜を越える「幸せ」を、私は思い出すことができません。

I cannot recall when I was happier than that night.

そこには、「自分の人生と交換しても構わない」と思えるほどの幸せが、本当にあったんです。

There was a happiness there that I would have been willing to trade my life for.

-----

でも、考えてみれば、これって、『変』ですよね。

But when you think about it, this is strange, isn't it?

『もの凄く不幸な状態が、何もない普通の状態』に戻っただけのことです。

It's just that the “miserable situation” has returned to the “normal situation with nothing.”

結婚をしていなければ、そして、娘を授かっていなければ、そんな不幸な夜は初めから存在しなかったでしょう。

If I hadn't gotten married and had a daughter, that unfortunate night would never have existed in the first place.

で、私、思ったんですよ。

So I thought to myself.

結婚の意義は、「今よりも幸せになること」ではない、と。

The significance of marriage is not “to become happier than I am now.”

結婚によって招いてしまう「不幸」を、そこから元に戻すというプロセスにある、と。

The significance of marriage is in the process of undoing the “unhappiness” that comes with marriage,

そして、その「不幸」から元に戻ったところにある「普通の人生」が、どれほど光輝いた、幸せに満ちたものであるかを知ること、と。

And finding how much the “normal life” comes after undoing that “unhappy” is a life that shines with happiness.

結婚の意義は「不幸」になること ―― 私は、そのように看破しました。

The significance of marriage is to become “unhappy” - that is how I see it.

-----

結婚に幸せを求めなくてもいいです。

You don't have to seek happiness in marriage.

「結婚とは不幸になること」でいいんです。

It is O.K. that Marriage is all about being Unhappy.

そして、「床の上で(本当に床の上)で横になって、体を休ませていた」あの時の私の、目も眩むような幸せを、この若い二人がともに作り上げていく日々を期待しています。

And I look forward to the days when these two young people will create together the dazzling happiness I felt when I was “lying down on the floor (truly on the floor) and resting.”

簡単ではありますが、以上をもって、このカップルへの祝辞とさせていただきます。

This is a simple message, but it is all I have to offer to this couple.

===== スピーチここまで =====

2024,江端さんの忘備録

今回の衆議院選挙で、私は大きな失敗をしました。

I made a big mistake in the recent House of Representatives election.

最高裁判所裁判官の国民審査の為の前調査です。

It is a preliminary investigation for the national review of Supreme Court judges.

最近は、判決の内容を調べて、その上で"×"を打つようにしています。

Recently, I've been checking the content of the judgment and then putting an “X” on it.

こちらでも書いていますが、「何も記載しなかったら信任」というのは、やはり審査制度として変だと思うのです。

As I've written here, I think the idea of “trust if nothing is stated” is still strange for a screening system.

―― 全員"×"をつける

最高裁判所の裁判官は、内閣が任命します。

The Cabinet appoints the judges of the Supreme Court.

最も悪意のある言い方をすれば、『最高裁判所の裁判官は、政府の犬』です。

To put it most maliciously, 'the judges of the Supreme Court are the government's dogs.'

ただ、最高裁判所の裁判官が「政府の犬」という性質が必要であることも、私は理解しています。

However, I also understand that the Supreme Court judges need to be “dogs of the government.”

最高裁判所が、政府の政策を片っ端から潰していっては、国家運営が成り立ちません。

If the Supreme Court were to strike down every government policy, it would be impossible to run the country.

また、政府が最高裁判所の判断を無視し続けたら、司法の存在意義も失われます(簡単に、独裁国家に成り下がる)。

Also, if the government continues to ignore the Supreme Court's decision, the significance of the judiciary will be lost (it will simply become a dictatorship).

-----

一応、この"×"については、「最高裁判所裁判官国民審査法」も調べてみましたが、ちゃんと明文化されています。

I looked up the “Supreme Court Judges National Review Law” to find out about this “x,” which is clearly stated there.

=====
第十四条(投票用紙等の調製)投票用紙には、審査に付される裁判官の氏名として通知裁判官の氏名を第四条の二第一項の規定による通知の順序により印刷するとともに、審査に付される裁判官としてその氏名を印刷する者のそれぞれに対する×の記号を記載する欄を設けなければならないものとし、都道府県の選挙管理委員会は、総務省令で定める様式に準じて投票用紙を調製しなければならない。

Article 14 (Preparation of Ballot Paper, etc.) The name of the judge who is to be notified shall be printed on the ballot paper in the order of notification under the provisions of Article 4-2, paragraph (1), and a column shall be provided for each judge who is to be examined and for each person whose name is printed. The prefectural election administration committee shall prepare the ballot paper in the form prescribed by the Ministry of Internal Affairs and Communications Ordinance.
=====

私、条文に"×"と記載されているのを、初めて見ました。

I've never seen an “X” written in the text before.

この条文に因れば、"×"以外の、どの記号も許されていないようです(第22条(投票の効力))。

According to this article, no symbols other than “×” are allowed (Article 22 (Validity of Votes)).

"?"とか"!"と記載した場合は、無効票となる可能性が高いようですが、明文化はされていませんでした。

If you write “?” or “!”, it seems likely to be a null vote, but it was not clearly stated.

------

"×"を打つ人間なんて、私くらいだろう ―― と思っていたので、この結果に驚いています。

I thought I was the only person who would type an “x,” so I was surprised by the result.

今回、投票した人の10人に1人は、私と同じような行動をしていた、ということに正直驚いています。

I was honestly surprised to find that one in ten people who voted had behaved the same way as I had.

ちょっと調べてみたのですが、

I did a little research.

ー 夫婦別姓、LGBTQ(性的少数者)、原発避難者に関わる過去の訴訟の判断について、裁判官を名指しにしたSNSグループによる情宣

- A social networking group that named judges about past court decisions regarding married couples keeping separate surnames, LGBTQ (sexual minorities), and nuclear power plant evacuees

- 日本初の女性弁護士・裁判官が主人公のNHK連続テレビ小説「虎に翼」のヒット

- The hit NHK serial drama “Tora ni Tsubasa” (Tiger with Wings) features Japan's first female lawyer and judge as the main character.

などが、理由として挙げられていました。

The above were given as reasons.

-----

私は、司法の動きが「遅い」と思うことは多いのですが、それでも、司法が前衛的になりすぎたり、政府や国民と敵対することを望んではいません。

I often think that the judicial system is “slow.” However, even so, I do not want the judicial system to become too avant-garde or antagonistic towards the government or the people.

とは言え、最高裁判所裁判官の国民審査で、全員が無条件に信任される今のあり方は、健全ではないと思います。

However, I think the current situation, where all Supreme Court judges are unconditionally re-elected in the national review, is unhealthy.

そこで提案です。

So here's a suggestion.

―― まずは1人、最高裁判所の裁判官を罷免してみませんか?

Why don't we start by removing one of the Supreme Court judges?

国民が、最高裁判所の裁判官を罷免できる、という事実を実感することは、我が国の司法にとっても意義があることだと思うんですよね。

I think it is significant for the judiciary in our country that the people can realize that they can dismiss the judges of the Supreme Court.

今回の選挙で10%までいきました。

In this election, we reached 10%.

あと40%です。

There is only 40% left.

ちなみに、第32条(罷免するには、通常選挙の1/100以上の票がないとダメ)とか、第36条(最高裁判所の裁判官が審査無効の申立ができる)とか、44条(組織票をしてはダメ)とか ――

Incidentally, Article 32 (you need more than 1/100 of the votes cast in a regular election to be removed), Article 36 (Supreme Court judges can file a petition for invalidation of an election), Article 44 (you can't vote as a block) -

結構"笑え"ます ―― これで小説1本書けるんじゃないか、と思えるほどです。

This law is quite funny—it's so amusing that I could write a whole novel about it.

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

If you are interested, please read it.

2024,江端さんの忘備録

以前、私はNHKの「(新)プロジェクトX」についてネガティブなコメントをしました。

I have made negative comments about NHK's “New Project X” in the past.

(7)総じて「プロジェクトX」は、「エンジニアの夢や希望を搾取」して「プロジェクトを完成させた」というストーリで構成されており、現在の若者への「やりがい搾取」と1mmも変わっていないように見える

久々に、「新プロジェクトX オウムVS.科捜研 地下鉄サリン事件 世紀の逮捕劇」を見始めたのですが、文字通り「食い入る様」に見てしまいました。

After a long time, I started watching “New Project X: Aum vs. the Crime Scene Investigation Team: The Subway Sarin Incident - The Arrest of the Century,” I devoured it.

オウム真理教のサリン製造工場を初めて全体的かつ体系的に目の当たりにし、その規模と徹底された計画性に驚きを禁じ得ませんでした。

It was the first time I had seen Aum Shinrikyo's sarin production factory, and I was amazed at the planning's scale and thoroughness.

何百本もの配管が複雑に張り巡らされ、反応槽や精製槽といった巨大な設備が機密な配置されている光景は、まさに『巨大化学プラント』そのものでした。

The sight of hundreds of pipes crisscrossing in a complex pattern and huge facilities such as reaction tanks and refining tanks arranged secretively was indeed that of a 'giant chemical plant.'

これだけの施設が、国家権力から隠蔽されつつ、秘密裏に計画的に設けられ、サリンの大量生産を可能にしていたという現実に、ただただ圧倒されました。

The fact that such a facility was established in secret, hidden from the national authorities, and was able to mass-produce Sarin was simply overwhelming.

私は、ChatGPTと、このサリン計画に投入された金額について議論をしたのですが、ChatGPTはフェルミ推定で「3億円弱」と算出しました。

I discussed the amount of money invested in the Sarin gas project with ChatGPT. ChatGPT calculated it to be “just under 300 million yen” using the Fermi estimate.

しかし、私は、その1ケタ上ではないか、と考えています。

However, I think it is one digit higher.

なるほど、オウム真理教が、『本気で国家転覆を計画していた』ことは、この工場プラントの写真だけでも確信できました ―― 100万人から1000万人オーダの人間を殺害するためであれば、当然に、この規模のプラントが必要になるはずです。

I see; the fact that Aum Shinrikyo was 'seriously planning to overthrow the state' can be confirmed just from these photos of the factory plant alone - if they were planning to kill 1 to 10 million people, then, of course, they would need a plant of this scale.

ただ、私には『一般市民の大量殺害で権力を奪取する』というロジックが理解できません。

However, I don't understand the logic of 'seizing power through the mass murder of ordinary citizens.'

宗教カルトや極左や極右の首領や幹部になれば、理解できるようになるのかもしれませんが、今の私には無理そうです。

Maybe if I became the leader or a member of a religious cult or a member of the far left or far right, I would be able to understand, but it seems impossible for me now.

-----

今回の「新プロジェクトX オウムVS.科捜研 地下鉄サリン事件 世紀の逮捕劇」で、私が息をこらして見入ったシーンは、警視庁科学捜査研究所(科捜研)の研究員が、オウム真理教の元幹部で化学者だった土屋公献(つちや ひろのり)死刑囚(執行済)の自白に至らしめるまでのシーンです。

The scene in the recent TV program “Shin Project X: Aum VS. Forensics: The Subway Sarin Gas Attack - The Arrest of the Century” had me holding my breath as I watched. It was the scene where the researchers at the Tokyo Metropolitan Police Department's Forensic Science Laboratory (Kakoken) managed to get a confession out of Tsuchiya Hironori, a former Aum Shinrikyo executive and chemist who was later executed.

取り調べ室での会話なし。

There was no conversation in the interrogation room.

プラントの図面と化学式だけを黙々と何枚もの紙に書き続けて、土屋に見せ続ける科捜研の研究員。

A researcher at the Tokyo Metropolitan Police Department's Forensic Science Laboratory quietly continues to write plant diagrams and chemical formulas on numerous sheets of paper and shows them to Tsuchiya.

そして、世界に前例のないサリン生成式を見せられた時の、土屋の動揺。

And Tsuchiya's reaction when he is shown a formula for producing Sarin that has no precedent in the world.

これは、もうドラマですよ。

It's a drama already!

映画化して欲しいくらいです(もしかしたら、もうしてる?)。

I'd love to see it made into a movie (or maybe it already has been?).

-----

オウム真理教の元幹部で化学者だった土屋のすごいところは、一般に入手可能な化学薬品をつかって、猛毒のサリンを合成する技術に成功した、ということです。

The fantastic thing about Tsuchiya, a former Aum Shinrikyo executive, and chemist, is that he succeeded in synthesizing the deadly nerve agent Sarin using chemicals that are generally available.

例えるなら、量販店で買ってきた農薬や洗剤で、サリンを作ったということです。

Simply put, he made sarin using pesticides and detergents bought from a mass retailer.

当然、世界初です。

Naturally, it's a world first.

通常、サリンの合成には専門的な化学知識と特定の危険な化学物質が必要であるため、一般の人が作成することはできません。

Usually, the synthesis of Sarin requires specialized chemical knowledge and specific dangerous chemicals, so ordinary people can't make it.

しかし、土屋は化学的な知識を駆使し、オウム真理教が入手できる範囲の薬品と装置を用いてサリンを製造する方法を着想し、生成に成功したのです。

However, Tsuchiya used his chemical knowledge to develop a method for producing Sarin using the chemicals and equipment available to Aum Shinrikyo, and he succeeded in producing it.

-----

土屋は、筑波大学大学院を卒業するほどの秀才であったにも関わらず、世間はその能力を見い出すことができませんでした ―― しかし、オウム真理教教団だけが、それを見い出し、莫大な予算を投入して、サリン製造を成し遂げたのです。

Even though Tsuchiya was a genius who graduated from Tsukuba University's graduate school, the world failed to recognize his abilities—only the Aum Shinrikyo cult recognized them. They invested a huge budget to produce sarin.

オウム真理教は、単なる狂ったカルトではなかったのです。

Aum Shinrikyo was not just a crazy cult.

人材を見い出し、膨大な資金を投入し、ほとんど不可能と思えるアプローチで、猛毒サリンの大量生産システム技術を確立した、精緻な計算に基づく意思決定のできるテロリスト集団だったのです。

They were a terrorist group that could make decisions based on precise calculations, discovered the right people, invested a tremendous amount of money, and established a mass production system technology for the highly toxic Sarin gas using an approach that seemed almost impossible.

私は、この番組を見て、初めて「カルトを心底から怖い」と思うことができました。

Watching this program made me realize for the first time that I am terrified of cults.

-----

世の中には、高い知性を持ちつつ、その能力を発揮させるチャンスを得られない人間が、ゴロゴロしています。

Many people have high intelligence but don't get the chance to use it.

私は、これまでの人生で、そんな人間を何人も見てきました。

I have seen many people like that in my life.

私だって『江端さんの◯◯技術が、今の私たち(の国)にはどうしても必要なのだ』と言われれば、<大陸>だって、<北>だって行くかもしれません。

If someone told me, “Mr. Ebata's technology is necessary for our country right now,” I might even go to the <continent> or the <north>.

銭金は問題ではないですよ。そもそも、技術者(エンジニア)は、『贅沢』や『遊興』の金には興味がないんです。そんな端金(はしたかね)はスコープ外です。

Money is not an issue. To begin with, engineers are not interested in money for 'luxury' or 'amusement.' Such petty cash is outside the scope of our interests.

私たちエンジニアが欲しいのは「研究開発費」で、それは『遊興費』の2~3ケタ上のカネです。

Engineers want “research and development expenses,” two to three digits higher than “entertainment expenses.”

ちゃんと、自分の能力を認めてくれて、自分の才能を発揮させてくれるのであれば、私たちは、どんなチャンスにでも飛び付きます。

We will jump at any opportunity if you recognize our abilities and allow us to demonstrate our talents.

カルトの怖いところは、自分の能力が『大量殺戮』に向いたとしても、それを『正義』であると信じさせる教義があることです。

The scary thing about cults is that even if my abilities are suited to 'mass murder,' there are doctrines that make me believe that it is 'justice.'

『正義の技術開発』と信じたエンジニアを止める術はありません(本当)。

There is no way to stop engineers who believe in “developing technology for justice” (it's true).

-----

我が国(日本)は、私たちエンジニアを、あまり冷遇するものではありません(私は、日本のエンジニアは冷遇されていると思っています)。

Our country (Japan) should stop treating us engineers so coldly (I think Japanese engineers are treated coldly).

私たちエンジニアは、いつだって、『国家の脅威』になり得ることを、覚えておいて下さい。

Please remember that we engineers can always be a 'national threat.'

2024,江端さんの忘備録

以前、「なんだ、私も大臣になれるんだ」と思っていたことを思い出しました。

I remembered thinking, “So I can become a minister, too.”

今回の選挙で、現職の大臣が落選するという事態が発生しておりますが、実は、議員資格を失っても、大臣の資格は失われないはずです。

In this election, there was a situation where an incumbent minister was not re-elected. Still, even if a member of parliament loses their seat, they do not lose their ministerial position.

大臣任命は、総理大臣の専権事項だからです。

Because ministerial appointments are the sole prerogative of the Prime Minister.

つまり、総理大臣と"仲良し"になっていれば、大臣への道は0%ではないのです。

In other words, if you are on good terms with the Prime Minister, the path to becoming a minister is not 0%.

-----

で、ちょっと調べてみたのですが、憲法第68条第2項に、

So I did a little research, and in Article 68, Paragraph 2 of the Constitution, it says,

『内閣総理大臣その他の国務大臣は、文民でなければならない。内閣総理大臣その他の国務大臣の過半数は、国会議員の中から選ばれなければならない』

'The Prime Minister and other Ministers of State must be civilians. Most prime ministers and other ministers of state must be chosen from among the Diet members.

と記載があります。

私は、現職または退役した自衛隊員ではないので、文民の条件はクリアしています。

I am not a current or former member of the Self-Defense Forces, so I meet the requirements for a civilian.

今のところ、私の公民権は失効してはいません。

So far, my civil rights have not been revoked.

つまり、私(江端)一人、入閣させることくらい、できるはずなんです。

In other words, the Prime Minister should be able to get me (Ebata) into the Cabinet.

首相が閣内政治や党内勢力を無視して、私の入閣を切望すれば、ですが。

That is if the Prime Minister ignores the politics within the Cabinet and the power within the party and is eager for me to join the Cabinet.

-----

過去の例を調べたら、竹中平蔵(たけなか へいぞう)さんは、まあ、覚えている人も多いと思います。

If I look up past examples, I think many people will remember Heizo Takenaka.

しかし、中曽根康弘(なかそね やすひろ)さん、後藤田正晴(ごとうだ まさはる)さん、浜口雄幸(はまぐち おさち)さん、などが出てきて、ビックリしました。

However, I was surprised when people like Yasuhiro Nakasone, Masaharu Gotoda, and Osachi Hamaguchi came out.

彼らは、大臣就任後に、国会議員になったようです。

They became members of the Diet after becoming ministers.

-----

他の大臣職は別としても、デジタル庁の大臣など、民間から登用しても良さそうにも思えました。

Apart from other ministerial positions, it also seemed appropriate to appoint someone from the private sector, such as the Minister of the Digital Agency.

ただ、大臣には、「腹芸」とか「恫喝」とかの政治力も問われると思えますし、民間人では、違法ギリギリの施策などのカンどころは難しいように思えます。

However, I think that the minister is also required to have political skills such as “belly art” and “intimidation,” it seems complicated for a civilian to have a good grasp of policies that are just on the edge of legality.

そもそも、民間の大臣に、癖のあるキャリア官僚たちを押さえられるか、というのも難しそうです。

To begin with, it seems complicated to imagine a private-sector minister being able to rein in the quirky career bureaucrats.

あ、それと、利益相反ですね。

Oh, and there's also the issue of conflict of interest.

ウチの会社から大臣がでてきて、国プロの予算をバシバシもってきてくれると嬉しいですが、完全にアウトでしょう。

It would be great if a minister from our company came out and brought in a lot of national project funding. However, that's completely out of the question.

-----

とは言え、過去には、驚くべきことが沢山ありましたからね。

That said, there have been many surprising things in the past.

・・・ おい政治家ども、お前ら、国民舐めとんのか?

「パソコンを打ったことがない人」が、我が国のサイバーセキュリティを担当する大臣である、ということに、最大級の不安を覚えます。

『パソコン程度の機械を扱えない大臣に、"有能"とか"努力家"という言葉は似合わない』

-----

ちなみに、私は「猟官活動」の意図はありません。

By the way, I have no intention of engaging in “job-hunting activities.”

ゼロです。いや、マイナスといってもいいです。

It's zero. Instead, I could say it's negative.

2024,江端さんの忘備録

『小中高生の自殺者数500人超と高止まり 厚生労働省「危機的な状況」として対策を強化』というニュースが出ていました。

There was a news article titled “The number of suicides among elementary, junior high and high school students remains high at over 500, and the Ministry of Health, Labor and Welfare is strengthening measures as a ‘critical situation’”.

ChatGPTに頼んで、過去20年間の自殺者数の推移のグラフを作ってもらいました。

I asked ChatGPT to make a graph showing the change in the number of suicides over the past 20 years.

―― たしかに、これはヤバい

That's right, this is bad.

最近の、日本の自殺者数は、ざっくり2万人強で、ティーンエージャの自殺者数は、その1/40なのですが、比率は問題ではないのです。

The number of suicides in Japan these days is roughly over 20,000. On the other hand, the number of suicides among teenagers is 1/40 of that, but the ratio is not the issue.

そもそも、社会から保護される対象であるティーンエージャの自殺者は、"ゼロ"であることが求められます。

To begin with, the number of suicides among teenagers, who are a group that society is supposed to protect, should be zero.

しかし、ここで理想論語っても仕方ありません。

But there's no point in talking about ideals here.

-----

私が、本気で「ヤバい」と思っているのは、この「線形的な増加」です。

What I think is “dangerous” is this “linear increase”.

過去50年に遡って、ChatGPTにグラフの作図を依頼したのですが、変なグラフを提出してくるので、「でたらめでもいいから、分かっている情報だけを使って、グラフを作って」と依頼したところ、以下の図を作ってくれました。

I asked ChatGPT to draw a graph for me, going back over the past 50 years, but it kept submitting strange graphs, so I asked it to “just make a graph using the information you know, even if it's random,” and it made the following diagram.

2000年より前も、小中学生の自殺者数は、それなりにありましたが、その変化は「線形ではなかった」。ガタガタしていたのですよ。

Even before 2000, there were a certain number of suicides among elementary and junior high school students, but the change was “not linear.” It was bumpy.

今から見れば、この「ガタガタ」には、色々な理由を付けられる余地があったのです。ぶちゃけ、『何が悪いのかが良く分からない』ということです。

Looking back, there was room to attach various reasons to this “bumpy.” Frankly, “I don't understand what's wrong”.

しかし、2004年以降のこの「美しい線形増加」が示す事実は、

However, the fact that this “beautiful linear increase” has continued since 2004 shows that

(1)ティーンたちを死に追いやる状況が拡大し続けていて、

(1) the circumstances that are driving teens to their deaths continue to expand, and

(2)現時点において、有効な手段が全くない、

(2) at present, there are no effective measures at all,

ということです。

----

家庭問題、学校問題、メンタルヘルス、見えない進路や将来、そして、社会的孤立やSNSの影響 などが原因として上がっています。

The causes include family problems, school problems, mental health, invisible career paths and futures, social isolation, and the influence of social networking services.

私は、2004年あたりからの線形増加から「SNSの影響」が大きいような気がしますが、これも「自分の思い込みの域」を出ていません。

I think the “influence of SNS” has been significant since the linear increase around 2004, but this is just my assumption.

現在の私には、(1)厚生労働省の「危機的な状況」という認識を共有すること、と、(2)将来への希望(子ども地獄/大人パラダイス論)を定着させる、という提案しかできません。

At the moment, the only two things I can do are (1) share the “critical situation” that the Ministry of Health, Labor and Welfare is aware of, and (2) give children hope for the future (the “Children's Hell, Adults' Paradise” theory).

―― 大人は自由だ。大人は楽しい。大人はパラダイスだ

『大人になれば、悩みは全て解決するんだ』と、嘘でもいいから(実際、嘘ですが)、ティーンエージャたちを洗脳することが必要なのではないか、と思うのです。

I think it is necessary to brainwash teenagers with the lie that “all their problems will be solved when they grow up” (actually, it is a lie).

『子どもの時代なんぞに、絶対戻りたくない』という大人が、最低、ここに二人います(嫁さんと私)。

At least two adults (my wife and I) would never want to return to their childhood.

 

2024,江端さんの忘備録

先週の週末に、「バージンロード」を娘(長女)と歩いてきた江端です。

I walked down the “aisle” with her daughter (eldest daughter) last weekend.

私は元演劇サークルのメンバーですから、「普通の父親」を演じるのは簡単なことです。

あれ、結構面倒くさい手続き(プロトコル)があるんですよ。

There are quite a few complicated procedures (protocols).

事前に『バージンロード・プロトコル仕様書』を渡して貰えれば、私は、その仕様書を何十回も読み込んで、完全に暗記して、プロトコル通りにちゃんと実施する自信がありました。

If given the “Aisle Protocol Specifications” in advance, I would have read them dozens of times, memorized them completely, and had the confidence to carry them out properly according to the protocol.

なんで、当日に、その仕様を、担当者から「口伝」で伝えられなければならないのか ―― と尋ねたところ、「場(結婚式会場)に、緊張感を発生させるため」だそうです。

When I asked why the specifications had to be conveyed by word of mouth by the person in charge on the day, I was told it was “to create a sense of tension at the venue (wedding hall).”

実際に、私、

In fact, I

・新婦(長女)のドレスの裾、ずっと踏み続けていましたし(あれ、踏まずに歩くの無理です)、

kept stepping on the hem of the bride's (eldest daughter's) dress (it's impossible to walk without stepping on it),

・新郎と一礼することなく、とっとと娘を手渡してしまいましたし(ほどんど『出荷する荷物』)

and I handed my daughter over to the groom without bowing to him (she was almost like a 'package to be shipped').

という、プロトコルブレーク(規約破り)をしてしまいました。

I broke the protocol (broke the rules) like the above.

緊張感はともかく、『予定調和通りに"させない"運用』は十分に果したと思います。

Aside from the tension, I fulfilled our goal of “not letting things go according to plan.”

-----

私、若い頃は、結婚式の司会をよく頼まれました。

When I was younger, I was often asked to officiate at weddings.

私は、結婚式の司会のシナリオを作成し、新郎と新婦の承認を得て、そこから一言一句違わぬセリフしゃべりつつ(アドリブなし)、堅苦しくない雰囲気で、場の笑いを取りながら、進行を進めることのできる『司会者』でした。

I was a wedding MC who could create a scenario, get the bride and groom's approval, and then proceed with the proceedings in a relaxed atmosphere, getting laughs from the crowd while speaking every word exactly as written (no ad-libbing).

ですから、今回も『バージンロード・プロトコル仕様書』を事前に手渡してもらったとしても、私なら、当日に上手く『しろうと』風に振舞えた、と思うのです。

So even if I had been given the “A Guide to the Protocol for the Aisle of the Virgin” in advance, I think I would have been able to operate it successfully on the day, in an amateur-like way.

-----

その後、披露宴会場で、予告なしに新婦の母(嫁さん)にスピーチがリクエストされましたが、嫁さんは当然に私にこのスピーチをぶん投げました。

After that, at the wedding reception, the groom asked the bride's mother(my wife) to give a speech without warning, but of course, my wife threw me this order.

もちろん、私は、そつなくスピーチを纒めました ―― そういうのは、私の十八番ですから。

Of course, I put together a polished speech - that's my specialty.

-----

結婚披露宴の後、長女からLINEでメッセージが届いていました。

After the wedding reception, I received a message from my eldest daughter via LINE.

『パパもめんどくさいという体は露骨に出ていながらも、さすがと言うべきシーンが何箇所もあって、もう頭が上がりません』

'Even though you were annoyed, there were many awe-inspiring scenes, and I can't help but admire you.

だ、そうです。

That's what she said.

なかなか、核心を突いた、良い謝意だと思いました。

I thought it was a good and to-the-point expression of gratitude.

2024,江端さんの技術メモ

//  G:\home\ebata\hakata\src\others\main26\main.c

/*
このプログラムは、PostGISを使用したPostgreSQLデータベースに対して、ランダムウォークを実行し、その経路をCSVファイルに記録するものです。プログラムの概要を以下に説明します。

■プログラムの目的
出発ノードと目的ノード(天神駅に近いノード)を設定し、データベース上のノード間をランダムに移動しながら、最終的に目的ノードに到達する経路を記録します。
経路をCSVファイルに保存し、各ノードの緯度、経度情報を含めます。

■主な機能と処理の流れ
1.データベースへの接続
sql.Openを使って、PostgreSQLデータベースに接続します。接続情報はconnStr変数で定義されます。
2。出発ノードと目的ノードの設定
startNodeとして、仮に32758を設定し、goalNodeとして天神駅のノードIDである40922を設定しています。

3.CSVファイルの作成
os.Createでファイルを作成し、CSV形式で書き込むための準備をします。

4.ランダムウォークの実行
performRandomWalk関数内で、出発ノードから目的ノードへと移動を行います。
各ノードの緯度と経度を取得し、CSVファイルに記録します。

5.ノード間の移動の処理
getClosestConnectedNode関数を使って、現在のノードから接続されているノードを取得し、目的地に最も近いノードを選択します。
選択の基準として、訪問回数が少ないノードを優先し、ランダム要素を加えます(袋小路の回避)。

6.経路の記録
移動したノードの情報を、performRandomWalk関数内でCSVファイルに記録します。ノードID、緯度、経度が書き込まれます。

7.座標の取得
getNodeCoordinates関数で、ノードIDに対応する緯度と経度をPostGISの関数ST_YとST_Xを使用して取得します。

8.2点間の距離の計算
calculateDistance関数で、2つの座標間の距離を計算します。地球の半径を用いて、Haversineの公式で計算しています。

■プログラムの特徴

1. 訪問回数の管理: 同じノードを何度も訪問しないように、各ノードの訪問回数を管理しています(訪問回数が多いノードは回避します)。
2. ランダム要素の導入: 最短経路だけではなく、一定の確率で他の接続ノードを選択し、袋小路を避けるように工夫しています。
3. バックトラッキング: 袋小路に入った場合に、直前のノードに戻るバックトラッキングの処理を行っています。

■プログラムの全体の流れ
1.データベース接続を確立。
2.出発ノードと目的ノードを設定。
3.CSVファイルを作成し、ヘッダーを記述。
4.ランダムウォークを実行し、ノード間を移動。
5.各ノードで緯度・経度を取得し、CSVファイルに書き込む。
6.目的ノードに到達するまで、最も適切な接続ノードを選択し続ける。

このプログラムは、ランダムウォークアルゴリズムをPostGISとPostgreSQLの地理情報を活用して実現しており、目的地に到達するまでの経路を記録する機能を持っています。

*/

package main

import (
	"database/sql"
	"encoding/csv"
	"fmt"
	"log"
	"math"
	"math/rand"
	"os"

	_ "github.com/lib/pq"
)

const (
	connStr = "user=postgres password=password host=127.0.0.1 port=15432 dbname=hakata_db sslmode=disable"
)

func main() {
	// PostgreSQLデータベースへの接続
	db, err := sql.Open("postgres", connStr)
	if err != nil {
		log.Fatal(err)
	}
	defer db.Close()

	// 出発ノードを設定(天神駅の最も近いノードを選択するなど)

	startNode := 32758 // 例として、初期ノードIDを設定
	goalNode := 40922  // 目的ノードIDを天神駅に設定

	// CSVファイルを作成
	csvFile, err := os.Create("random_walk_result.csv")
	if err != nil {
		log.Fatal(err)
	}
	defer csvFile.Close()

	writer := csv.NewWriter(csvFile)
	defer writer.Flush()

	// CSVのヘッダーを作成
	err = writer.Write([]string{"Node", "Latitude", "Longitude"})
	if err != nil {
		log.Fatal(err)
	}

	// ランダムウォークの実行
	err = performRandomWalk(db, startNode, goalNode, writer)
	if err != nil {
		log.Fatal(err)
	}

	fmt.Println("Random walk completed and saved to CSV.")
}

// performRandomWalk ランダムウォークを実行し、結果をCSVに保存
func performRandomWalk(db *sql.DB, startNode, goalNode int, writer *csv.Writer) error {
	currentNode := startNode
	visited := make(map[int]int) // ノードの訪問回数を追跡
	pathStack := []int{}         // バックトラッキング用のスタック

	for currentNode != goalNode {
		// 現在のノードの緯度と経度を取得し、CSVに書き込み
		lat, lon, err := getNodeCoordinates(db, currentNode)
		if err != nil {
			return err
		}
		fmt.Printf("Node %d: Latitude: %f, Longitude: %f\n", currentNode, lat, lon)
		err = writer.Write([]string{
			fmt.Sprintf("%d", currentNode),
			fmt.Sprintf("%f", lat),
			fmt.Sprintf("%f", lon),
		})
		if err != nil {
			return err
		}
		writer.Flush()

		// 現在のノードを訪問済みとして記録
		visited[currentNode]++

		// 次のノードを取得(目的地に近づくノードを優先)
		nextNode, err := getClosestConnectedNode(db, currentNode, goalNode, visited)
		if err != nil || visited[nextNode] > 2 { // 訪問回数が多い場合バックトラック
			if len(pathStack) > 0 {
				// スタックから一つ戻る
				fmt.Printf("Backtracking from Node %d\n", currentNode)
				currentNode = pathStack[len(pathStack)-1]
				pathStack = pathStack[:len(pathStack)-1]
				continue
			}
			return fmt.Errorf("no viable path found")
		}

		// 次のノードをスタックに追加
		pathStack = append(pathStack, currentNode)
		currentNode = nextNode
	}

	// ゴールノードの座標をCSVに保存
	lat, lon, err := getNodeCoordinates(db, goalNode)
	if err != nil {
		return err
	}
	fmt.Printf("Arrived at Goal Node %d: Latitude: %f, Longitude: %f\n", goalNode, lat, lon)
	err = writer.Write([]string{
		fmt.Sprintf("%d", goalNode),
		fmt.Sprintf("%f", lat),
		fmt.Sprintf("%f", lon),
	})
	if err != nil {
		return err
	}
	writer.Flush()

	return nil
}

// getClosestConnectedNode 現在のノードから接続されているノードのうち、目的地に最も近いノードを取得
func getClosestConnectedNode(db *sql.DB, currentNode, goalNode int, visited map[int]int) (int, error) {
	// 現在のノードから接続されているノードを取得
	query := `
		SELECT target 
		FROM ways 
		WHERE source = $1
		UNION 
		SELECT source 
		FROM ways 
		WHERE target = $1;
	`
	rows, err := db.Query(query, currentNode)
	if err != nil {
		return 0, err
	}
	defer rows.Close()

	// 接続ノードのリストを作成
	type NodeDistance struct {
		ID       int
		Distance float64
	}
	var connectedNodes []NodeDistance
	for rows.Next() {
		var node int
		if err := rows.Scan(&node); err != nil {
			return 0, err
		}

		// ノードの座標を取得
		lat, lon, err := getNodeCoordinates(db, node)
		if err != nil {
			return 0, err
		}
		// 目的地との距離を計算
		goalLat, goalLon, err := getNodeCoordinates(db, goalNode)
		if err != nil {
			return 0, err
		}
		distance := calculateDistance(lat, lon, goalLat, goalLon)

		// 訪問回数が少ないノードを優先
		if visited[node] < 3 {
			connectedNodes = append(connectedNodes, NodeDistance{
				ID:       node,
				Distance: distance,
			})
		}
	}

	if len(connectedNodes) == 0 {
		return 0, fmt.Errorf("no connected nodes found")
	}

	// 目的地に最も近いノードを優先して選択
	var closestNode NodeDistance
	minDistance := math.MaxFloat64
	for _, node := range connectedNodes {
		// 最も目的地に近いノードを選択
		if node.Distance < minDistance {
			closestNode = node
			minDistance = node.Distance
		}
	}

	// ランダム選択の要素を追加(袋小路を避けるため)
	if len(connectedNodes) > 1 && rand.Float64() < 0.2 {
		return connectedNodes[rand.Intn(len(connectedNodes))].ID, nil
	}

	return closestNode.ID, nil
}

// getNodeCoordinates ノードIDに対応する緯度と経度を取得
func getNodeCoordinates(db *sql.DB, nodeID int) (float64, float64, error) {
	var lat, lon float64
	query := `
		SELECT ST_Y(the_geom) AS lat, ST_X(the_geom) AS lon
		FROM ways_vertices_pgr
		WHERE id = $1;
	`
	err := db.QueryRow(query, nodeID).Scan(&lat, &lon)
	if err != nil {
		return 0, 0, err
	}
	return lat, lon, nil
}

// calculateDistance 2つの座標間の距離を計算
func calculateDistance(lat1, lon1, lat2, lon2 float64) float64 {
	rad := func(deg float64) float64 {
		return deg * math.Pi / 180
	}
	lat1Rad, lon1Rad := rad(lat1), rad(lon1)
	lat2Rad, lon2Rad := rad(lat2), rad(lon2)
	dlat := lat2Rad - lat1Rad
	dlon := lon2Rad - lon1Rad
	a := math.Sin(dlat/2)*math.Sin(dlat/2) + math.Cos(lat1Rad)*math.Cos(lat2Rad)*math.Sin(dlon/2)*math.Sin(dlon/2)
	c := 2 * math.Atan2(math.Sqrt(a), math.Sqrt(1-a))
	const EarthRadius = 6371e3 // 地球の半径(メートル)
	return EarthRadius * c
}

2024,江端さんの技術メモ

上記のDBはpostGISで構成されており、ways, ways_vertices_pgr があり、SQLでダイクストラ計算が行えます。

ここで以下のようなステップを行うランダムウォークをpostGISを使ったpostgreSQLを使ってGo言語で作成してみました。

(Step.1) ランダムォークの終了地点は、天神駅とする

(Step.2) 出発地点を乱数デ適当に選んで下さい。出発地点は、天神駅から1km程度の地点を適当に抽出する

(Step.3)天神駅の座標から最も近いNode(以下、これを天神ノードといいます)と、出発地点から最も近いNode(以下、これを出発ノードと言います)を抽出する

(Step.4) 出発ノードと天神ノードを直線で繋いで、出発ノードから-90度から+90度の範囲のノードを一つ選ぶ

(Step.5)上記で見つかったノードを次の出発ノードとする。正し、すでに出発ノードとしたノードを、新しい出発ノードにはできないようにする

(Step.6)上記(Step.4)に戻って、天神ノードに到着するまで、出発ノードを更新し続ける。なお更新される出発ノードは全てノド番号と緯度と座標を表示させる

というようなアルゴリズムで、ランダムウォークを作ろうとしたのですが、ダメでした。

一言でいうと「どんつき」の路地に入る→袋小路に入ってしまって、そこで動けなくなるからです。

これを回避するアルゴリズムを考えるの面倒になって、pgr_ksp()を使うことにしました。

pgr_ksp()は、最短経路問題の1、2、3、4番目を出してくれるので、これで1000番目とかを仕えば、そこそこランダムウォークになるかな、と思いまして。

// G:\home\ebata\hakata\src\others\main25\main.go

package main

import (
	"database/sql"
	"encoding/csv"
	"fmt"
	"log"
	"os"

	_ "github.com/lib/pq"
)

const (
	connStr = "user=postgres password=password host=127.0.0.1 port=15432 dbname=hakata_db sslmode=disable"
)

type PathResult struct {
	PathID int
	Node   int
	Lat    float64
	Lon    float64
}

func main() {
	// PostgreSQLデータベースへの接続
	db, err := sql.Open("postgres", connStr)
	if err != nil {
		log.Fatal(err)
	}
	defer db.Close()

	// すべてのパス結果を一度に取得
	results, err := getPathResults(db)
	if err != nil {
		log.Fatal(err)
	}

	// 各パスIDの結果をCSVに保存
	pathIDs := []int{1, 5, 10, 100, 1000, 10000}
	for _, pathID := range pathIDs {
		filename := fmt.Sprintf("path_id_%d.csv", pathID)
		err := saveResultsToCSV(results, pathID, filename)
		if err != nil {
			log.Fatal(err)
		}
	}

	fmt.Println("CSV files created successfully.")
}

// getPathResults すべてのパス結果を取得
func getPathResults(db *sql.DB) ([]PathResult, error) {
	// クエリで指定のpath_idの結果をすべて取得
	query := `
		WITH ksp_result AS (
			SELECT * FROM pgr_ksp(
				'SELECT gid AS id, source, target, cost FROM ways',
				35382,  -- 出発ノードID
				40922,  -- 目的ノードID
				10000,   -- 上位10000本の経路を取得
				false   -- エッジの向きを考慮しない
			)
		)
		SELECT ksp.path_id, ksp.node, ST_Y(wv.the_geom) AS lat, ST_X(wv.the_geom) AS lon
		FROM ksp_result AS ksp
		JOIN ways_vertices_pgr AS wv ON ksp.node = wv.id
		WHERE ksp.path_seq > 0
		ORDER BY ksp.path_id, ksp.path_seq;
	`

	// クエリの実行
	rows, err := db.Query(query)
	if err != nil {
		return nil, err
	}
	defer rows.Close()

	// 結果をメモリに保存
	var results []PathResult
	for rows.Next() {
		var result PathResult
		err := rows.Scan(&result.PathID, &result.Node, &result.Lat, &result.Lon)
		if err != nil {
			return nil, err
		}
		results = append(results, result)
	}

	return results, nil
}

// saveResultsToCSV 指定されたpath_idの結果をCSVに保存
func saveResultsToCSV(results []PathResult, pathID int, filename string) error {
	// CSVファイルの作成
	file, err := os.Create(filename)
	if err != nil {
		return err
	}
	defer file.Close()

	writer := csv.NewWriter(file)
	defer writer.Flush()

	// CSVのヘッダーを作成
	err = writer.Write([]string{"Node", "Latitude", "Longitude"})
	if err != nil {
		return err
	}

	// 結果をCSVに書き込む
	for _, result := range results {
		if result.PathID == pathID {
			err := writer.Write([]string{
				fmt.Sprintf("%d", result.Node),
				fmt.Sprintf("%f", result.Lat),
				fmt.Sprintf("%f", result.Lon),
			})
			if err != nil {
				return err
			}
		}
	}

	return nil
}

 

1番目、10番目、1000番目を表示してみました。
まあ、ランダムウォークという感じではないですが、私たちが移動するときも、まあ、こんな感じだと思うので、とりあえずこれで進めようかなと思います。

2024,江端さんの忘備録

本日、長女の結婚式と披露宴に出席してきました。

Today, I attended my eldest daughter's wedding and reception.

私はもともと「本当に結婚式なんてやるの?」と否定的でしたが、終わった今でもその気持ちは変わりません。

I was initially pessimistic about the whole thing, thinking, “Do they have to have a wedding?” that feeling has not changed.

ただ、娘の希望には応えるのが親というものですから、準備を進めてきました。

However, as parents, we must respond to our daughter's wishes, so we have been preparing.

- 髪を伸ばしたり(基本的に私はほぼ丸刈りに近いスポーツ刈り)
- 髪を染めたり(人生初の経験)
- オールバックにするためにジェルで髪を固めたり
- ダイエットしたり(これは人間ドック対策も兼ねていますが)

- Growing my hair out (basically, I have a close-cropped sports cut)
- Dyeing my hair (a first for me)
- Using gel to make my hair stand up in an 'all-back' style
- Dieting (this is also partly to prepare for a full medical check-up)

こうして、娘の希望に合わせて自分の見た目を変えてきましたが ―― まあ、それはいいんです。

This way, I have changed my appearance to suit my daughter's wishes, but that's okay.

---

一番気が重かったのは「バージンロード」のイベントでした。

The event that made me feel the most nervous was the “Aisle of Roses” event.

このイベントは「新婦のエスコート」や「新婦の引き渡し」と呼ばれるものだそうです。

This event is called “escorting the bride” or “handing over the bride.”

しかし、「これって、現代の価値観に合っているの?」と感じずにはいられません。

However, I can't help but wonder, “Does this fit with modern values?”

少し調べてみたところ、「父親が新婦をエスコートしてバージンロードを歩くのは、新婦のこれまでの人生を守り育ててきた象徴」とされていますが、私はそんなに娘の人生を守り育てた覚えはありません。

After researching, I found that “the father escorting the bride down the aisle is a symbol of the father protecting and raising his daughter's life until now,” but I don't remember protecting and raising my daughter's life so much.

娘は自分の力で、自分の人生を生きてきたと信じています。

I believe that my daughter has lived her own life by her strength.

私が提供したのは、資金とちょっとしたアドバイスくらいです。

All I provided was a little bit of advice and some funding.

また、「新婦を家族間で承認し、祝福する」という意味が含まれるそうですが、結婚は当事者の意思で行われるべきもので、他人の承認は必要ないと思います。

It is also said to include the meaning of “approving and blessing the bride by the family,” but I think that the will of the people involved should do marriage and that the approval of others is not necessary.

「バージンロードでの新婦の受け渡し」という表現にも違和感を覚えます。

I also feel uncomfortable with the expression “handing over the bride on the aisle.”

私の娘を「荷物扱い」するのか、と。

I thought they were treating my daughter like luggage.

こう思う父親は、私だけではないと思うのですが。

I don't think I'm the only father who thinks this.

---

とはいえ、娘の希望ですから、否応なく任務を果たしました。

However, since it was my daughter's wish, I fulfilled my duty whether I liked it or not.

何十年ぶりかの「演技」を披露した感じです。

It was like performing an “act” for the first time in decades.

私は元演劇サークルのメンバーですから、「普通の父親」を演じるのは簡単なことです。

I used to be a member of a theater club, so it's easy for me to play the role of a “normal father.”

エルカン文章第3弾 - 祝・江端智一君御成婚記念メール

---

長女のイベントが無事終わりましたが、次女は「今日以上の盛大な結婚式」を希望しているようです。

The eldest daughter's event went smoothly, but the second daughter seems to be hoping for a “more grand wedding than today's.”

私の娘たちの保守的なイベントへの情熱には驚かされます。

I'm amazed at the passion my daughters have for conservative events.

どうやら私は、もう一度「髪を伸ばし、染め、ジェルで固め、娘のエスコートをする」ことになりそうです。

I'll have to do it all again: grow my hair, dye it, gel it, and escort my daughter.

---

結婚自体が難しいこの時代に、こんな些細なことで文句を言える自分は、随分と贅沢なことを言っているんだ、と自覚してはいるんですけどね。

Nowadays, when getting married is difficult, I'm aware that I'm being selfish by complaining about such a trivial matter.