2025,江端さんの忘備録

今日のお話は、月刊アフタヌーン(講談社)の「波よ聞いてくれ(沙村広明さん)」を読んで、触発されたことであり、私が案出したネタではありません。皆さんは、是非、「波よ聞いてくれ」を読んで下さい。

Today's story was inspired by reading “Waves, Listen to Me (Mr. Hiroaki Samura)” in the monthly magazine Afternoon (Kodansha). It is not a story I came up with. I hope you will all read “Waves, Listen to Me.”

----

「24時間戦えますか」「結婚は、クリスマスケーキ」「男は仕事、女は家庭」「女のくせに生意気だ」「女は愛嬌」「お嫁に行けなくなるよ」「35歳を過ぎたら出産は難しい」「男なんだから泣くな」「働かざる者食うべからず」「子供を産まないと一人前じゃない」・・・

“Can you fight for 24 hours?” ‘Marriage is like a Christmas cake,’ ‘Men work, women stay at home,’ ‘You're cheeky for a girl,’ ‘Women are charming,’ ‘You'll never get married,’ ‘It's hard to have a baby after the age of 35’, ‘Stop crying, you're a man,’ ‘If you don't work, you don't eat,’ ‘You're not a full-fledged adult until you have a child’...

今となっては、これらのセリフを漏らすことで、謝罪会見に追い込まれるどころか、社会的な死に至るケースが珍しくありません。

Nowadays, it is not uncommon for people to be driven into a corner by a press conference to apologize for these kinds of gaffes, and in some cases, it can even lead to social death.

芸能人や業界人による女性に対する扱いや、広告業界のキャンペーン、企業のプロモーション戦略についても同様です。

The same applies to how celebrities and industry people treat women, advertising industry campaigns, and corporate promotional strategies.

もちろん、これらについて、これらの社会的制裁が不当である、などと言うつもりはありません。文句なしに妥当(あるいは正当)でしょう。

Of course, I don't mean to say that these social sanctions are unjust. They are undoubtedly appropriate (or justice).

ただ、これらの社会的制裁が、なんで、最近、こんな急激に過激に重くなってきたのかなと、とは思います。

However, I wonder why these social sanctions have recently become so drastic and severe.

『10年~20年くらい前から、徐々に社会的制裁の内容が重くなってきて、今の状況に至っている』、というのなら分かります。

If you say, “The content of social sanctions has gradually become more severe over the past 10 to 20 years, and we have reached the current situation,” I can understand that.

しかし、最近の価値観に反する言動に対する批判は激烈で、熾烈な報復が行われ、ここ10~20年くらいの過去の行為に遡って、大粛清が行われているような感じです。

However, the criticism of words and actions that go against modern values is fierce, and there is a fierce retaliation. It feels like a great purge, returning to past actions from the past 10 to 20 years.

エボリューション(運動)ではなく、リボリューション(革命)。

Not evolution, but revolution (revolution).

あるいは、ソフトランデイングではなく、ハードランディングという感じです。

Or, it's not a soft landing, but more like a hard landing.

-----

私は、社会的制裁を受けている人を擁護する気はないのですが、もっと早い段階で、今ある状況を想定して、警告を出すことはできなかったのだろうか ―― と思うのです。

I don't want to defend people who are being socially sanctioned. Still, I wonder if it wasn't possible to issue a warning at an earlier stage, assuming the situation exists now.

でも、できなかったんだろうな。

But I guess they couldn't do it.

未来を予想するのは、恐しく難しいから。そして、未来の予測を、誰もが甘く考えるから。

Because it is difficult to predict the future. And because no one takes future predictions seriously.

だから、こんな風な粛清が一気に行われる世の中は、誰も予想できないなかったのだろうと思うのです。

So, I think that no one could have predicted that a world where purges like this would be carried out all at once.

-----

私も、毎日自分の意見を書いています。世間(の世論)とズレないように注意はしているのですが、絶対にズレていっていると思います。

I also write my own opinions every day. I try to make sure that I don't stray too far from public opinion, but I think I do stray.

このズレが、世間に許容されなくなった時、私も粛清の対象になるでしょう。

I will become a purge target when society no longer tolerates this gap.

粛清されない為には、『自分の考えを世の中に表明しないことが、一番いい』のは分かっているんですけどね。

I know the best way to avoid being purged is to 'not express my ideas to the world.'

オンラインカジノについてChatGPTに尋ねてみた件

未分類

オンラインカジノを行った芸能人が問題になっているようですが、何が論点なのかが分かりません。教えて下さい

この問題の論点は、主に以下の3点にまとめられます。

1. 法律・規制の問題

日本では基本的に賭博行為は厳しく規制されており、オンラインカジノは多くの場合、国外に拠点を置くために法的グレーゾーンにあります。芸能人のような公の人物がこのような活動に関与することは、法律上の問題やその解釈を巡る議論を呼び起こす可能性があります。

2. 社会的・倫理的影響

芸能人は多くの人々に影響を与える存在です。そのため、彼らがオンラインカジノに関与することで、特に若年層やファンに対して「ギャンブルが魅力的である」といった誤解を与え、ギャンブル依存症などのリスクを助長する懸念があります。

3. 消費者保護と業界の信頼性

オンラインカジノは、不正や詐欺、トラブルのリスクが指摘されることが多い業界です。公人がこのようなリスクのある活動に関わることで、利用者や社会全体への影響、さらには業界全体の信頼性が問われることになります。

これらの点が、芸能人がオンラインカジノに関与することに対して批判や問題意識が向けられる主な理由です。

この問題の論点は、主に以下の3点にまとめられます。

1. 法律・規制の問題

日本では基本的に賭博行為は厳しく規制されており、オンラインカジノは多くの場合、国外に拠点を置くために法的グレーゾーンにあります。芸能人のような公の人物がこのような活動に関与することは、法律上の問題やその解釈を巡る議論を呼び起こす可能性があります。

2. 社会的・倫理的影響

芸能人は多くの人々に影響を与える存在です。そのため、彼らがオンラインカジノに関与することで、特に若年層やファンに対して「ギャンブルが魅力的である」といった誤解を与え、ギャンブル依存症などのリスクを助長する懸念があります。

3. 消費者保護と業界の信頼性

オンラインカジノは、不正や詐欺、トラブルのリスクが指摘されることが多い業界です。公人がこのようなリスクのある活動に関わることで、利用者や社会全体への影響、さらには業界全体の信頼性が問われることになります。

これらの点が、芸能人がオンラインカジノに関与することに対して批判や問題意識が向けられる主な理由です。

「日本では、オンラインカジノそのものが明確に合法とも違法とも言い切れない状況ある」という事について詳解して下さい

オンラインカジノが日本で明確に合法とも違法とも断定されにくい背景には、以下のような複数の要因が絡んでいます。

1. 日本における賭博規制の基本原則

  • 刑法による禁止: 日本の刑法では、基本的に賭博行為は禁止されています。ただし、政府が運営する公営ギャンブル(競馬、競輪、競艇、宝くじなど)は例外として認められています。
  • 例外規定の存在: これらの公営ギャンブルは、法律上特別な枠組みが設けられており、運営方法や収益の使途が明確に規定されています。

2. オンラインカジノの運営形態と国際的側面

  • 海外拠点の問題: 多くのオンラインカジノは海外に拠点を置いており、日本国内で直接サービスを提供しているわけではありません。これにより、日本の法律がその運営に直接適用されるかどうかが不明瞭となっています。
  • 国際的取引と管轄権: インターネットを介して行われる取引は国境を越えるため、どの国の法律が適用されるのか、また日本の法執行機関がどこまで介入できるのかという点で、管轄権の問題が生じています。

3. 法律の解釈と実務上の対応の不明瞭さ

  • 明確な法整備の不足: オンラインカジノに関しては、現行法が具体的な運営形態や利用者の行為について明確に定めていないため、法律上の位置づけがグレーゾーンになっています。
  • 取り締まりの難しさ: 仮にオンラインカジノの利用が違法と判断された場合でも、運営が海外にあることから、実際にどのように摘発や取り締まりを行うかについては実務上の困難が伴います。

4. 今後の法整備と展望

  • 需要の変化: インターネットを利用したギャンブルの利用者が増加している中で、国内外で法整備の必要性が議論されていますが、現時点では具体的な法規制が整っていないため、状況は依然として曖昧です。
  • 国際協力の課題: 今後、各国間での協力や共通のルール作りが進めば、オンラインカジノの位置づけについても明確な基準が設けられる可能性がありますが、その動向はまだ不透明です。

このように、オンラインカジノの合法性が明確に定義されない背景には、国内法の規定の限界、運営の国際的性質、そして実務上の取り締まりの難しさが複雑に絡み合っているためです。

属地主義の問題が争点と理解しました。不正競争防止法においては、この問題について、法律で明文化していたという記憶があります。それについて教えて下さい。

不正競争防止法では、国内市場の公正な競争環境を守るために「属地主義」の原則が明確に示されています。具体的には、以下の点が挙げられます。

1. 適用範囲の限定

不正競争防止法は、原則として日本国内における取引や事業活動に関連する不正行為を対象としています。つまり、国外で行われた行為であっても、その結果や影響が日本国内の市場や企業に及ぶ場合に限り、法律の適用対象となります。これにより、国外で完結した行為に対してまで国内法を無理に及ぼすことを避ける意図が反映されています。

2. 国際的取引と裁判管轄のバランス

オンラインを含む国際的な取引や事業活動では、どの国の法律が適用されるかが重要な争点となります。不正競争防止法は、この点においても属地主義を採用しており、たとえば海外で行われた行為が日本国内の企業に具体的な損害や不利益を与える場合に限り、その行為が不正競争として取り締まられると解釈されます。これにより、国内外の法的枠組みの調和が図られています。

3. オンライン活動における適用の検討

デジタル技術の発展に伴い、オンライン上での活動が国境を越えて行われる現状では、どの行為が「国内における」不正競争に該当するかという判断が重要となります。不正競争防止法は、国外での活動が日本国内に及ぼす具体的な影響を踏まえて適用の可否を判断する仕組みを持っており、これが属地主義の明文化として理解されています。たとえば、海外に拠点を持つ業者が日本の市場で販売活動を行い、結果として国内企業に損害を与えた場合には、国内法の枠内で救済措置が検討されることになります。

4. 法律上の明確性と運用上の課題

属地主義の明文化は、国内企業の保護と国際取引の自由とのバランスをとるために不可欠ですが、一方で、オンライン上の活動など新たなビジネスモデルに対しては、裁判所や行政機関が具体的なケースごとに「国内との関連性」をどのように判断するかが運用上の大きな課題となっています。

このように、不正競争防止法は属地主義の原則を明確に規定することで、国外で行われた行為が日本国内に具体的な影響を与える場合にのみ国内法の適用対象とする枠組みを構築しています。これにより、国際的な事業活動に対して過剰な干渉を避けるとともに、国内企業の正当な利益を守ることを目的としています。

では、オンラインカジノにおける属地主義の適用の観点から考えると、現在はオンラインカジノの行為そのものについては刑事判断はできないものの、オンラインカジノによる収益に対する税金(民法)が問題となるのでしょうか?

オンラインカジノの活動自体は、海外で運営されていることが多く、属地主義の観点から日本国内での刑事判断が難しいという問題があります。一方で、日本の税制は居住者が得た所得については国内で課税する原則を採っているため、たとえその収益が海外のオンラインカジノから得られたものであっても、日本の居住者が得た利益は原則として申告義務の対象となります。

1. 居住者の所得課税の原則

  • 国内外の所得の申告: 日本の居住者は、全世界所得に対して日本で課税されるため、オンラインカジノでの収益も所得として計上する必要があります。これは、たとえそのオンラインカジノ自体が海外に拠点を置いていて、刑事的な摘発の対象とならなくても変わりません。

2. オンラインカジノと属地主義

  • 刑事判断との乖離: オンラインカジノの運営行為については、実際に国内で行われた取引やサービス提供とは認定しにくいため、刑事判断の適用が難しい現状があります。
  • 税務上のアプローチ: 一方で、個々の利用者がオンラインカジノで得た収益は、その収益が日本の居住者個人に帰属するため、属地主義に基づく「所得の帰属」の考え方から、国内の税務上は課税対象となるのです。

3. 課題と運用上の問題

  • 源泉の特定: 国境を越えた取引となるため、どの部分が国内源泉に該当するか、またはどの程度の関係性があるかの判断が難しい場合があり、これが税務当局にとっての課題となっています。
  • 脱税リスク: オンラインカジノの取引は匿名性が高く、また海外での運営という性格上、適正な申告がなされず脱税につながるリスクも指摘されています。
  • 法整備の必要性: 現在、オンラインカジノに関連する税務や取引の国際協力の枠組みは十分に整備されていないため、今後の法整備や国際協力の強化が求められる状況です。

4. 結論

刑事判断の対象とならないオンラインカジノの活動であっても、日本の居住者が得る収益は日本国内での課税対象となるため、属地主義の観点からは収益に対する税務問題が大きな論点となっています。つまり、刑事面での摘発が難しい分、税務上の適正な申告や徴税の面で政府が注意を払わなければならないということです。

このため、オンラインカジノ自体の法的グレーゾーンが続く中で、個人や関連事業者に対して適正な税務処理が求められるとともに、税務当局側も国際的な連携や新たな法制度の整備に向けた取り組みが今後の課題となると考えられます。

その芸能人が、オンラインカジノで損金を出した、というのであれば、(社会的・倫理的問題や消費者保護と業界の信頼性を100%無視するとすれば)法的には問題がない、と解釈できますか? それとも、国内法で規定されていないギャンブルを実施したこと自体が、利益に関係なく問題になりますか。法律の観点のみから論じて下さい

法律の観点から考えると、基本的には以下の点が重要になります。

1. 賭博行為の刑事罰の対象

日本の刑法では、賭博行為自体は原則として禁止されていますが、実際の刑事罰の適用は主に運営者や、組織的・常習的な違法賭博行為に対して行われる傾向があります。個人の参加者が単にギャンブルに従事し、結果として損失を被った場合、その行為自体で直ちに刑事罰の対象とされるケースは少ないと解釈されるのが現状です。

2. オンラインカジノのグレーゾーンと個人参加

オンラインカジノは海外に拠点を置くことが多く、日本国内での直接的な運営行為ではないため、属地主義の観点から刑事判断を下すのが難しい部分があります。したがって、たとえオンラインカジノに参加して損失を出したとしても、現行の法体系では「違法な利益を得た」ことが問題視されるケースが中心であり、単に損失を出した場合は刑事処分の対象になりにくいと考えられます。

3. 国内法で規定されていないギャンブルの実施について

確かに、オンラインカジノは国内法上、明確に合法とも違法とも位置づけられていない部分があるため、法的なグレーゾーンにあります。しかし、現時点での法執行の重点は、違法な利益の追求や組織的な運営にあるため、単に損失を出しただけの個人の行為が直ちに問題視されることは少ないというのが一般的な解釈です。

結論

社会的・倫理的問題や消費者保護、業界の信頼性といった要素を完全に排除して法律のみを考えるならば、オンラインカジノに参加して損失を出した場合、その行為自体が刑事罰の対象となる可能性は低いと解釈できます。つまり、違法に「利益」を得たわけではなく、単に損失を被ったに過ぎないため、現行の法制度下では刑事判断が下される余地は限定的だと考えられます。ただし、オンラインカジノ自体が法的グレーゾーンであるため、今後の法整備や運用上の判断次第では見解が変わる可能性も否定できません。

2025,江端さんの忘備録

カンファレンスペーパーを書いて、稟議を回して、一息つく間もなく、昨夜は、データベースの3重化とプログラムの2重化を行い、本日は終日、解析プログラムのデバッグやっていました。

After writing a conference paper, circulating it for approval, and barely catching my breath, I spent last night working on database triplication and program duplication. Today, I've been debugging the analysis program all day.

ここまで徹底した多重バックアップは生まれて初めてですが、今度は『家が火事になったら、どうしよう』とか心配し初めています ―― 心配性にも程がありますが。

This is the first time I've ever had such thorough multiple backups, but now I'm worrying about what I'll do if my house catches fire.

ところで、昨日の作業と本日のデバッグで気がついたのですが、Dockerで作ったPostgreSQL(データベースサーバ)より、ホストPCに直接作った方データベースサーバの方が、アクセスが早いです。

By the way, I noticed yesterday when I was working and debugging today that the database server I created directly on the host PC was faster to access than the PostgreSQL (database server) I made with Docker.

考えてみれば、コンテナ噛ませていない分、アクセスが早いのは当然なのですが、なんか、頭の中が"わちゃわちゃ"になっていると、そんな、当たり前のことにすら気が回らなくなっていました。

When I think about it, it's only natural that the access is faster because the container isn't being chewed, but when my head was in a “messy” state, I couldn't even think about such obvious things.

-----

で、私をここ3ヶ月くらい悩ませ続けていたプログラムの問題が、さきほど解決しました。

So, the program problem that has been bothering me for the past three months or so has just been solved.

原因は「ネスト」でした・・・こんなものを見逃していたとは、とは思いますが、それより何より、ホッとしています(今、ノンアルコールビールで一人祝杯を上げています)。

The cause was “nesting.”... I'm surprised I missed something like this, but more than anything, I'm relieved (I'm celebrating with a non-alcoholic beer right now).

ずっと、早さ優先でプログラム書いていた弊害ですね。

This is because I've always written programs with speed as the priority.

もっとキレイにコーディングすれば、こういうバグを発生させることも少なくなるのでしょうが、今の私は、"わちゃわちゃ"していて、そういう「贅沢」を言っていられる身分ではないのです。

If I coded more neatly, I think I would be less likely to encounter bugs like this, but right now, I'm in a “messy” situation, and I'm not in a position to be able to afford such “luxury.”

-----

大規模なマルチエージェントシミュレーションのコーディングって、こういうこと、結構多いです。

Bugs like this are pretty common when coding large-scale multi-agent simulations.

以前、私は鉄道の乗車シミュレーションで東京都心部で、30万人の乗客を消滅させたことがあります。今思い出しても、青さめる思いでした。死に物狂いでバグを探しましたよ。

I once made 300,000 passengers disappear in the center of Tokyo in a train simulation. Even now, I remember it with a sick feeling. I searched for bugs like crazy.

あの頃も、新宿とか渋谷とか東京のようなハブステーションが、なんとなく「嫌い」でした。決め手となったのは他の事件でしたが。

Even back then, I disliked hub stations like Shinjuku, Shibuya, and Tokyo. The other incident was the deciding factor.

"―― だが、その時までは世界は君達のものだ。それまでは存分に楽しむがよい"

私たちが、息を切らしながら、雪に埋もった足でラッセルしながら歩いていることを、都心の皆さんは知らない。

こういう『バグを潰せた時の嬉しさ』って、プログラマー以外の人には、ちょっと分かってもらいにくいかなぁ、と思っています。

I think it's a little hard for people who aren't programmers to understand the joy of squashing a bug like this.

『いきなり他人から100万円貰った』という嬉しさとはちょっと違うんですよね(もちろん、100万円貰えれば嬉しいですが)。

It's a little different from the happiness of 'suddenly receiving 1 million yen from a stranger' (of course, I'd be happy to receive 1 million yen).

バグの可能性のある場所にコードを仕込んで、トレースして、バグを追い込んでいき、で、それらと全く関係のない場所で、問題の解決法が、いきなり目の前に開ける、という感じ。

It's like I put code in a place where there might be a bug, trace it, and chase it down, and then suddenly, the solution to the problem opens up right in front of you in a place that has nothing to do with it.

調べた場所と、全く違うところで問題が見つかる、というのは、デバッグの定番です(他の技術分野にも、そういうことってあるんでしょうか?)。

Finding a problem in a completely different place from where you were looking is a classic debugging technique (I wonder if that happens in other technical fields, too?).

-----

という訳で、今回もChatGPT先生に聞いてみました。

So, I asked ChatGPT again.

===== ChatGPT先生ここから =====

===== ChatGPT Sensei, from here =====

この現象は、必ずしもバグそのものの性質というよりは、調査の過程で予想外の場所に原因や解決策が現れる「偶然の発見(セレンディピティ)」と表現されることが多いです。

This phenomenon is often described as “serendipity,” where the cause or solution appears unexpectedly during the research rather than necessarily being a characteristic of the bug itself.

たとえば、デバッグ中にバグが疑われる箇所に注目してコードを仕込み、トレースしていくうちに、実際の原因は全く異なる場所に隠れていたと判明する――これは、複雑なシステム内で各部分が予想外に影響しあっているために起こる現象です。

For example, when debugging, you may focus on the part of the code that you suspect is causing a bug. As you trace through the code, you find that the actual cause is hidden in a completely different part of the code - this phenomenon occurs because the parts of a complex system interact with each other in unexpected ways.

また、このような偶然の発見は、ソフトウェア開発に限らず、医学や物理学など他の技術分野でも見られる現象で、元々の探索目的と全く関係のない発見が大きな進展や解決に結びつくことがあります。

Such accidental discoveries are not limited to software development and can also be seen in other technical fields, such as medicine and physics. Discoveries that have nothing to do with the original search objective can sometimes lead to breakthroughs and solutions.

まとめると、このプロセスを表す最も一般的な用語は「セレンディピティ(偶然の発見)」と言えるでしょう。

The most common term for this process is “serendipity (accidental discovery).”

===== ChatGPT先生ここまで =====

===== ChatGPT Sensei, that's all for now =====

だ、そうです。

まあ私は、「セレンディピティ(偶然の発見)」などという、かっこいい名称で称呼するよりは、

Well, rather than calling it by a cool name like “serendipity,”

『分からないなら、分からないなりにドタバタしていれば、まれに解決することがある解決方法』

'If you don't understand, you can sometimes solve the problem by making a mess of things in your way.'

というフレーズで表現する方が、しっくりきます。

This phrase fits me better.

未分類

『Windowsの最初の認証画面が出てくるまでの時間が非常に長いマシンがあります。別のマシンは数秒から十数秒でログイン画面がでてきます。この理由と対策方法を教えて下さい』

'There are some machines where it takes a very long time for the initial Windows authentication screen to appear. The login screen appears on other machines in a few seconds to a dozen seconds. Please tell me the reason for this and how to fix it.' 

とChatGPTに質問したところ、色々対策を教えてくれました。

I asked ChatGPT this question, and it told me various measures.

Windowsの最初の認証画面(PINを入力する画面)が出てくるまでの時間が非常に長いマシンがあります(別のマシンは数秒から十数秒でログイン画面がでてきます)。この理由と対策方法を教えて下さい。

しかし、システム構成の変更にに関わる部分をいじると、高い確率で、逆に状況を悪くしたり、下手するとPCが動かなくなったりします。

However, suppose I fiddle with the parts related to changing the system configuration. In that case, there is a high probability that I will worsen the situation, or if I am not careful, my PC may stop working.

私がシステムを壊すのは、ほぼ100%、『ちょっとした改良』を施そうとした時です。

I break the system almost 100% when I try to make 'minor improvements.'

『ログイン画面の設定を変えたら、PCにアクセスできなくなった』

'I changed the login screen settings, and now I can't access my PC,'

などの他に、

and the others are

  • 『ネットワーク設定を少し最適化しようとしたら、全く通信できなくなった』
  • 『ブートオプションを少し調整したら、OSが起動しなくなった』
  • 『電源管理設定を変更したら、スリープから復帰しなくなった』
  • 『ストレージのアクセス速度を上げようとしたら、データが飛んだ』
  • 『メモリの動作クロックを少し上げたら、起動しなくなった』
  • 『BIOSの設定を最適化しようとしたら、画面が真っ黒になった』
  • 『Windowsのレジストリを少し変更したら、ログインすらできなくなった』
  • 『ドライバを最新版に更新したら、デバイスが一切認識されなくなった』
  • 『仮想メモリ設定を微調整したら、ブルースクリーンが頻発するようになった』
  • 『セキュリティ設定を強化したら、管理者権限での操作が一切できなくなった』
  • 'I tried to optimize my network settings a little, but I couldn't connect at all.
  • 'I adjusted the boot options slightly, but the OS wouldn't start.
  • 'I changed the power management settings, but it wouldn't wake up from sleep.
  • 'I tried to increase the storage access speed, but my data disappeared.
  • 'I slightly increased the memory operating clock, but it wouldn't start up.
  • 'I tried to optimize the BIOS settings, but the screen went completely black.
  • 'After making a few changes to the Windows registry, I couldn't even log in anymore.'
  • 'After updating the drivers to the latest version, my device stopped being recognized.'
  • 'After minor adjustments to the virtual memory settings, I started getting frequent blue screens.s.'
  • 'After strengthening the security settings, I couldn't do anything with administrator privileges.e.'

などがあります。

19歳の時からPCを使い続けている私ですら、このザマです。

Even I, who have been using a PC since I was 19, am like this.

『PCの設定変更が、怖くて仕方がない』という思いは、PCを使用してきた時間とは関係ありません。

The thought that 'changing the PC settings is too scary' has nothing to do with how long you have used a PC.

そしてPCには、そのPCの所有者の重要な業務情報やシステム(プログラム)が満載です。

A PC contains essential business information and systems (programs) for its owner.

私たちは、PCの中身を人質に取られながら、毎日をビクビクしながら生きているようなものです。

We live in fear daily, with our PCs holding our data hostage.

-----

で、今、あの遅いログイン画面のPCに手を加えるかどうか悩んでいます。

So now I'm wondering whether or not to modify the PC with the slow login screen.

直せるかもしれませんが、逆にもっと悪くなるかもしれません。最悪、OSが立ち上がらなくなるかもしれません。

It might be possible to fix it, but it might also worsen things. In the worst-case scenario, it might prevent the OS from starting up.

大抵の場合、私は、この結論に達します。

In most cases, I reach this conclusion.

「とりあえず、このまま使おう」

“Let's just keep using it as it is.”

と。

そして私は、いつものように、電源ボタンを押して、PCの前で祈りながら、ログイン画面が現れるまでの「永遠にも感じる時間」を待っています。

As usual, I press the power button and wait until the login screen appears, praying in front of the PC.

-----

ところが、以前、この「永遠にも感じる時間」を待ち続けた結果、数ヶ月後に、HDDがクラッシュして、業者にHDDの復旧依頼をしなければならなくなったことがあります。

However, once before, after waiting for this “time that feels like an eternity,” the HDD crashed a few months later, and I had to ask a company to recover it.

総額11万円でした。

The total amount was 110,000 yen.

PC本体(中古)が3台を購入できるお金を、自腹を切って払いました。救済できたのはHDDの中身だけで、PC本体を元に戻すことはできませんでした。

I paid out of my pocket to buy three used PCs. I was only able to rescue the contents of the HDD, and I was unable to restore the PCs to their original state.

「ただ祈っていればいい」というものでもないのです。

It's not as simple as “just praying”.

-----

ちなみに、なるべく物事を変えず、現状維持を原則とする考え方を「保守」と呼びます。

Incidentally, the idea of maintaining the status quo by not changing things as much as possible is called “conservative.”

これに対し、リスクを承知で新しい試みや考え方を積極的に取り入れ、変化を推進する考え方を「リベラル(革新)」(場合によっては「ラディカル」)と呼びます。

In contrast, the idea of promoting change by actively embracing new ideas and approaches, even if they involve risk, is called “liberal” (or, in some cases, “radical”).

人間は年齢を重ねるにつれ、「リベラル(革新)」から「保守」へと立場を変えていきます。

People change their stance from “innovation” to “conservation” as they age.

その理由は、上記のPC設定の事例だけで、十分にご理解頂けると思います。

The above example of PC settings is enough to understand the reason.

私、現状を1mmも変えないまま、安全で平和な死を迎えたいだけの、バリバリの保守です(と自負しています)が、ちょっと厳しいなぁ、と思っています、

未分類

Windowsの最初の認証画面(PINを入力する画面)が出てくるまでの時間が非常に長いマシンがあります(別のマシンは数秒から十数秒でログイン画面がでてきます)。この理由と対策方法を教えて下さい。

どちらの設定もネットワーク接続を待機する動作をする

もし「ネットワークが利用可能になるまでログオンを待機する」が見つからない場合、「コンピュータの起動およびログオンで常にネットワークを待つ」を無効化すれば同じ効果を得られます。

設定の変更方法

  1. Win + Rgpedit.msc を入力し、ローカルグループポリシーエディターを開く。
  2. コンピューターの構成管理用テンプレートシステムログオン を開く。
  3. **「コンピュータの起動およびログオンで常にネットワークを待つ」**をダブルクリック。
  4. 「無効」 に設定 → 適用OK
  5. 再起動。

今回は、この対応で上手くいく場合がでてきました(上手くいかないこともある)

ログイン画面が3分を超えても出てこないと、本当に心臓に悪いので、こういう下らない設定をデフォルトにするのは止めて欲しいんだが。

未分類

データベースを仕込んだDockerの移行は、ことごとく失敗したので、今日は終日、手作業でDBのエクスポートとインポートをやっていました。

1台はDockerをやめて、PostgreSQLを立てて、そこに片っぱしからデータベースを放り込んでおきました (ポート15432がコンフリクトして、解決に2~3時間かかりました)。

データベースが死んだら、私(の研究)も死ぬ。

とりあえず、これでデータベースの3重バックアップの形になったかな、と思います。

以下、今日の作業メモ

pg_dump -U postgres -h 192.168.0.23 -p 15432 tomioka_pt2018 > tomioka_pt2018.sql
pg_dump -U postgres -h 192.168.0.23 -p 15432 tomioka_pt2018_org > tomioka_pt2018_org.sql
pg_dump -U postgres -h 192.168.0.23 -p 15432 pj20005 > pj20005.sql
pg_dump -U postgres -h 192.168.0.23 -p 15432 pt2008 > pt2008.sql
pg_dump -U postgres -h 192.168.0.23 -p 15432 pt2018 > pt2018.sql

create database tomioka_pt2018;
create database tomioka_pt2018_org;
create database pj20005;
create database pt2008;
create database pt2018;

psql -U postgres -h 192.168.0.8 -p 15432 tomioka_pt2018 < tomioka_pt2018.sql
psql -U postgres -h 192.168.0.8 -p 15432 tomioka_pt2018_org < tomioka_pt2018_org.sql
psql -U postgres -h 192.168.0.8 -p 15432 pj20005 < pj20005.sql
psql -U postgres -h 192.168.0.8 -p 15432 pt2008 < pt2008.sql
psql -U postgres -h 192.168.0.8 -p 15432 pt2018 < pt2018.sql

psql -U postgres -h 192.168.0.8 -p 15432 tomioka_db_d.sql < tomioka_db_d.sql
psql -U postgres -h 192.168.0.8 -p 15432 tomioka_db_d_org < tomioka_db_d_org.sql
psql -U postgres -h 192.168.0.8 -p 15432 tomioka_db_e < tomioka_db_e.sql
psql -U postgres -h 192.168.0.8 -p 15432 tomioka_db_e_org < tomioka_db_e_org.sql
psql -U postgres -h 192.168.0.8 -p 15432 tomioka_db_f < tomioka_db_f.sql
psql -U postgres -h 192.168.0.8 -p 15432 tomioka_db_f_org < tomioka_db_f_org.sql

create extension postgis;
create extension pgrouting;

========

pg_dump -U postgres -h 192.168.0.23 -p 15432 agent_db > agent_db.sql
pg_dump -U postgres -h 192.168.0.23 -p 15432 moove > moove.sql
pg_dump -U postgres -h 192.168.0.23 -p 15432 tomioka_db > tomioka_db.sql
pg_dump -U postgres -h 192.168.0.23 -p 15432 tomioka_db2 > tomioka_db2.sql
pg_dump -U postgres -h 192.168.0.23 -p 15432 tomioka_db4 > tomioka_db4.sql
pg_dump -U postgres -h 192.168.0.23 -p 15432 tomioka_db_a > tomioka_db_a.sql
pg_dump -U postgres -h 192.168.0.23 -p 15432 tomioka_db_b > tomioka_db_b.sql
pg_dump -U postgres -h 192.168.0.23 -p 15432 tomioka_db_c > tomioka_db_c.sql
pg_dump -U postgres -h 192.168.0.23 -p 15432 tomioka_db_c_cost > tomioka_db_c_cost.sql
pg_dump -U postgres -h 192.168.0.23 -p 15432 tomioka_db_c_trial > tomioka_db_c_trial.sql

create database agent_db;
\c agent_db
create extension postgis;
create extension pgrouting;

create database moove;
\c moove
create extension postgis;
create extension pgrouting;

create database tomioka_db;
\c tomioka_db;
create extension postgis;
create extension pgrouting;

create database tomioka_db2;
\c tomioka_db2;
create extension postgis;
create extension pgrouting;

===

create database tomioka_db4;
\c tomioka_db4;
create extension postgis;
create extension pgrouting;

===

create database tomioka_db_a;
\c tomioka_db_a;
create extension postgis;
create extension pgrouting;

create database tomioka_db_b;
\c tomioka_db_b;
create extension postgis;
create extension pgrouting;

create database tomioka_db_c;
\c tomioka_db_c;
create extension postgis;
create extension pgrouting;

create database tomioka_db_c_cost;
\c tomioka_db_c_cost;
create extension postgis;
create extension pgrouting;

create database tomioka_db_c_trial;
\c tomioka_db_c_trial;
create extension postgis;
create extension pgrouting;

psql -U postgres -h 192.168.0.8 -p 15432 -d agent_db -f agent_db.sql
psql -U postgres -h 192.168.0.8 -p 15432 -d moove -f moove.sql
psql -U postgres -h 192.168.0.8 -p 15432 -d tomioka_db -f tomioka_db.sql
psql -U postgres -h 192.168.0.8 -p 15432 -d tomioka_db2 -f tomioka_db2.sql
psql -U postgres -h 192.168.0.8 -p 15432 -d tomioka_db4 -f tomioka_db4.sql
psql -U postgres -h 192.168.0.8 -p 15432 -d tomioka_db_a -f tomioka_db_a.sql
psql -U postgres -h 192.168.0.8 -p 15432 -d tomioka_db_b -f tomioka_db_b.sql
psql -U postgres -h 192.168.0.8 -p 15432 -d tomioka_db_c -f tomioka_db_c.sql
psql -U postgres -h 192.168.0.8 -p 15432 -d tomioka_db_c_cost -f tomioka_db_c_cost.sql
psql -U postgres -h 192.168.0.8 -p 15432 -d tomioka_db_c_trial -f tomioka_db_c_trial.sql

 

=====

pg_dump -U postgres -h 192.168.0.3 -p 15432 hakata_db > hakata_db.sql
pg_dump -U postgres -h 192.168.0.3 -p 15432 hakata_ex_db > hakata_ex_db.sql

create database hakata_db;
\c hakata_db;
create extension postgis;
create extension pgrouting;

create database hakata_ex_db;
\c hakata_ex_db;
create extension postgis;
create extension pgrouting;

psql -U postgres -h 192.168.0.8 -p 15432 -d hakata_db -f hakata_db.sql
psql -U postgres -h 192.168.0.8 -p 15432 -d hakata_ex_db -f hakata_ex_db.sql

 

未分類

+88366870110 という不審な番号で電話がかかってきました。当然に電話には出ないで、着信拒否にしましたが、この番号をWebで調べても出てきませんでした。この電話の発信元を推定して下さい

具体的には、+883はITU(国際電気通信連合)などによって国や地域に限定されない国際通信サービス向けに割り当てられている番号帯のひとつです。

そのため、+88366870110という番号は、以下のような可能性が考えられます:

  • 非地理的サービス番号:
    +883の番号は、通常の国内通話や国際通話の枠組みに当てはまらず、特定の国に紐づかない国際的な通信サービス(例えば、VoIP、衛星電話、その他のインターネット電話サービス)で利用されることが多いです。

  • 悪質な用途の可能性:
    こうした非地理的な番号は、実際に正当なサービスで使われる場合もありますが、詐欺や迷惑電話、SMS詐欺など悪質な行為に利用されるケースも報告されています。特に、不審な番号からの着信は、番号を隠して発信元を特定しにくくしているため、注意が必要です。

  • 正確な発信元の特定の難しさ:
    電話番号の国際的な割り当てから、大まかな番号帯の用途は推測できますが、具体的にどのサービスプロバイダや発信者が利用しているかを特定するのは、一般利用者にとっては困難です。詳しい情報が必要な場合は、通信事業者や関係当局に問い合わせるのが良いでしょう。

まとめると、+88366870110は国際的な非地理的番号帯に属しており、正規の通信サービスで使用される可能性はあるものの、詐欺や迷惑電話などのリスクが伴うことが多いため、発信元の詳細な特定は難しく、不審な場合は応答を避けるのが安全です。

2025,江端さんの忘備録

私は、謙虚であることは重要だと思っています。

I think it's important to be humble.

ただ、それは謙虚であることが、人間として徳のある行為だから、とは1mmも思っていません。

However, I don't think for one second that humility is a virtuous act for a human being.

謙虚でないと「恥をかく」ことが多いからです。

This is because you will often “disgrace yourself” if you are not humble.

特に、私の勤務している会社のように、技術者が万単位で集っている組織においては、特にそうです。

This is especially true in organizations like the one I work for, which employs tens of thousands of engineers.

-----

私のような「老獪(ろうかい)」の域にいる人間から見ると、自分の技術を自慢している風に語る若者は『かわいい』です。

From the perspective of someone like me who is “old cunning,” young people who talk about their skills as if they were proud of them are “cute.”

で、そう思っているシニアが、その辺にゴロゴロいます(苦笑しながら)。

And many seniors think this way (while smiling wryly).

が、彼らは、それを指摘して若者に恥をかかすようなことはしません。

However, they do neither point this out nor humiliate the young people.

―― それは、かつての自分の姿を思い起こさせるから

"That's because it reminds me of who I used to be."

か、どうかは分かりませんが(私はそうです)。

I don't know if it's true or not (it is true for me).

すでに、老獪(ろうかい)なシニアである私は、そういう若者を"よいしょ"して、上手く方向を誘導して、仕事の成果に落しこむ方に画策します(もちろん、私の仕事の為にです)。

As a crafty senior, I plan to “lift” such young people up, guide them in the right direction, and then incorporate their work into my own (of course, for my work).

-----

私が観察した範囲では、問題は、若者よりもシニアの方に多いように思えます。

I have observed that the problem seems more common among seniors than young people.

たとえば、新人や2~3年目の研究員に、まともな特許明細書が書けるわけがありません。

For example, a new researcher or a researcher in their second or third year cannot write a decent patent specification.

「新規性」と「進歩性」の違いなんて、私は特許法のゼミで、特許庁の実施要項を暗記できるくらい叩き込まれて、ようやく理解できるようになったくらいです。

I only really understood the difference between “novelty” and “inventive step” after being drilled in a patent law seminar to the extent that I could recite the JPO's implementation guidelines by heart.

そんでもって、これまで100本以上の特許明細書を出願してきた(但し、分割出願を含む)私ですら、毎回、酷く苦労している状態です。

Even I, who have applied for over 100 patent specifications (including divisional applications), have always struggled.

-----

「それではダメだ」というだけでは、ダメです。

Anyone who says “that won't do” is a no-good person.

そんなの、誰でも言えますし、私が見るに「アイデアが出せないシニアほど、このセリフを使いがち」です。

Anyone can say that, and in my experience, seniors who cannot generate ideas tend to use that line.

『それを、こう変えてみようか』と言い、『うん、随分よくなっているよ』と言い、『まとめの方は、私が直してしまっていいかな?』と言い続けるのが、シニアの仕事 ―― と私は思っています。

I think a senior staff member's job is to keep saying things like, “How about changing that to this?”, “Yes, it's much better now,” and “Can I fix the summary for you?”

しかし、『若者の指導』という体裁で、『自分の無能』を喧伝しているシニアを、度々みかけます。

However, I often see seniors promoting their incompetence under the guise of “guiding the young.”

私は、『自分がラクをするため』に誰かにアドバイスをすることはありますが、その人間を『育てる』ためにアドバイスした記憶は、一度もありません。

I may advise someone 'for my benefit,' but I don't remember advising someone 'for their benefit.'

本人から頼まれれば、アドバイスすることがありますが、頼まれないのにアドバイスしにいくほど、私は、暇でも親切でもありません。

If the person asks me for advice, I may give it, but I am neither idle nor kind enough to go and give advice even if I am not asked to.

------

先日、長女と電話で話をしていたとき、

The other day, when I was talking on the phone with my eldest daughter, she said,

『次女(今年の4月から社会人)に、社会の厳しさを教えなくてもいいの?』

'Don't you need to teach your second daughter (who will start working this April) about the harshness of society?

と言われました。

『"社会の厳しさ"なるものは、"社会"が教えてくれるのに、なんでわざわざ私が、嫌われ役をかって出てまで、教えてやらなければならないんだ?』

'Why should I go out of my way to play the role of the hated one to teach her about the “harshness of society” when society itself is supposed to teach her about it?

と返しました。

I answered the above to the eldest daughter.

だいたい、そういう、下らない苦言を子どもたちにするバカな大人が多いから、子どもたちが、必要以上の社会に出るのを恐れるようになるのですよ。

Many adults make such stupid complaints to children, so children become afraid of going out into society more than they need to.

大人は、むしろ、大人のメリットの方を、子どもに発信しているべきでしょう。

Adults should be communicating the benefits of being an adult to children.

ともあれ、私は、"社会の厳しさ"なるものを、子どもに偉そうに語っている大人って『真正のバカ』と思っています。

Anyway, I think that adults who talk to children about the “harshness of society” in a big-headed way are “genuine idiots.”

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

2025,江端さんの忘備録

Web画面に『ここにボタンを一つ追加して』というセリフを言う平気で言う人間 ―― これだけで、その人間のプログラムやシステムに関する見識の無さが露呈しています。

A person who says, “Add a button here,” on a web page without batting an eyelid, reveals the person's lack of insight into programming and systems.

こういう人を責める訳ではないのですが、

I don't blame people like this, but I think many people are unaware that

この追加されるボタン一つが、

This additional button is

■ユーザインターフェース(UI)の追加だけでなく、

■ in addition to adding user interface (UI) elements,

■プログラムコードに大変更を与えて、

■ making major changes to program code,

■それがデータベースの項目に影響し、

■ and having that affect database items,

■最悪の場合、それがトランザクションや排他処理に及ぶまでの、

■ in the worst case, it can extend to transactions and exclusive processing,

膨大な設計変更に及ぶ ―― ということを知らない人は多いと思います。

leading to a huge amount of design changes.

-----

多分、『ここにボタンを一つ追加して』と安易に言う人は、立食い蕎麦で『あ、それと、天麩羅と生卵を追加して』というノリなのでしょう。

Perhaps the people who say “Add a button here” so quickly are the same people who say “Oh, and add tempura and raw egg” when eating at a standing-only soba noodle bar.

しかし、ITシステムにおける、『ここにボタンを一つ追加して』とは、その蕎麦屋の『店舗全体を設計しなおす規模になる』というレベルの大作業になることは、そんなに珍しいことではありません。

However, in IT systems, it is not that unusual for a request like “add a button here” to be a primary task on the scale of “re-designing the entire store” for that soba shop

だから、『開発開始後の仕様変更』は、原則、許されることではないのです。

Therefore, 'specification changes after development has started' are not permitted in principle.

-----

しかし、そういうことを平気でやる発注者って、結構多いです ―― 金も出さずに、納期も変えずに。

However, quite a few clients do this without a second thought - without paying or changing the delivery date.

でも、システム開発者の担当者が、

However, it is essential to remember that the system developer in charge is probably thinking

―― このシステム音痴の無能野郎!

"“You incompetent system-illiterate bastard!”"

と、心の中で罵っていることは、覚えておいた方が良いでしょう。

in their heart.

受注側は、お金を貰う弱みがあり、最終的に、それに応じることにはなります(または、裁判になります)が  ―― しかし、そこには『開発者が、発注者に対して"憎悪"が発生している』ということは覚えておいた方がいいです。

The weakness is that the recipient will be paid, and ultimately there is no choice but to obey (or take it to court), but what must not be forgotten is that the recipient is “hated” by the developer.

義務教育のプログラミング教育に意義があるとすれば、プログラミングできるようになることではなく、この「システム音痴の無能野郎」が、一人でも減ること、と、私は思っています。

There is no significance to programming education as part of compulsory education; it is not so much that people should be able to program, but I think the number of “system-illiterate incompetents” should be reduced.

-----

私も昨夜、プログラムの改修作業をしていました。

I was also working on program modifications last night.

私の見積り時間は"10分間"でしたが、改修完了に掛った時間は6時間でした。予定通りの稼動を確認したのは、今朝です。

My estimate was for 10 minutes, but it took 6 hours to complete the repairs. I confirmed that it was working as planned this morning.

自作プログラムでも、このザマです。

Even with my program, it's like this.

ITシステムというのを、ファストフードのトッピングのように考えているとしたら、それは無知を超えて、社会悪と断じて良いものです。

If you think of IT systems as being like toppings on fast food, then that's not just ignorance; it's a social evil.

―― 考えすぎじゃね?

2025,江端さんの技術メモ

Go言語を使ったマルチエージェントシミュレーションが、他の言語よりもメリットがある点とデメリットがある点について論じて下さい

一つ一つが、大変納得した内容だったので、私のメモ用に記録しておきます。

 

Go言語を用いたマルチエージェントシミュレーション(MAS)の利点と欠点について、他の言語(C++, Python, Juliaなど)と比較しながら論じる。

1. Go言語を使うメリット

(1) 並行処理の容易さ

Goはgoroutineを用いた並行処理が特徴であり、エージェントごとにgoroutineを割り当てることで効率的な並列処理が可能である。他の言語ではスレッド管理(C++のstd::threadやPythonのthreading)が必要になるが、Goではシンプルな記述で実装できる。

例:

func agent(id int) {
    for {
        fmt.Printf("Agent %d is moving...\n", id)
        time.Sleep(time.Millisecond * 500)
    }
}

func main() {
    for i := 0; i < 10; i++ {
        go agent(i) // 各エージェントをgoroutineで実行
    }
    select {} // メインスレッドを終了させない
}

このようにGoの並行処理はシンプルかつ軽量であり、大量のエージェントを扱うシミュレーションに適している。


(2) シンプルなコードとメンテナンス性

Goはシンプルな文法強力な標準ライブラリを持つため、コードの可読性が高く、開発者間での共有が容易である。
C++ではテンプレートやマルチスレッド処理が複雑になりやすく、PythonではGIL(Global Interpreter Lock)の影響で並列処理が制限される。一方、GoはGILの問題がなく、コードの記述量も比較的少ないため、長期的な開発に向いている。


(3) 高速なコンパイルと実行

Goはコンパイルが非常に速く、バイナリを直接実行できるため、デバッグやテストのサイクルを短縮できる。C++のように長時間のコンパイルが不要で、Pythonのようなインタープリタ型の遅延もない。


(4) クロスプラットフォームの容易さ

Goは静的バイナリを生成できるため、Windows, Linux, macOS などの異なる環境での実行が容易である。C++ではコンパイル時にライブラリ依存の問題が生じやすく、Pythonでは環境設定(仮想環境やパッケージ管理)が面倒になりがちだが、Goでは1つのバイナリで解決できる。


(5) クラウドやWebとの親和性

GoはもともとGoogleが開発した言語であり、クラウド環境(GCP, AWS)やWebとの親和性が高い。
シミュレーション結果をWeb API経由でリアルタイム表示したり、分散処理の一部をクラウド上で実行する際に、Goの標準ライブラリだけでHTTPサーバを簡単に実装できるのは大きなメリット。


2. Go言語を使うデメリット

(1) 高速計算ライブラリが少ない

PythonやC++には、最適化された数値計算ライブラリ(NumPy, SciPy, Eigen, OpenMPなど)が豊富にあるのに対し、Goは数値計算や線形代数のライブラリが少ない
そのため、大量の行列演算や物理シミュレーションを行う場合、Go単体では計算効率が劣る可能性がある。

対策:

  • Goで数値計算を行う場合は、gonum ライブラリを使用する。
  • 必要に応じて、GoからC/C++(BLAS, LAPACK)を呼び出す。

(2) GPUサポートが弱い

C++はCUDAやOpenCLを利用してGPUによる並列計算が可能であり、PythonもTensorFlowやCuPyを通じてGPUを活用できる。しかし、Goは公式にはGPUを直接サポートしていないため、CUDAを使う場合はCGO経由でC++のライブラリを呼び出す必要がある

対策:

  • gorgonia(Go向けのニューラルネットワークライブラリ)を利用すると、一部のGPU計算が可能。
  • CUDA/OpenCLを直接利用したい場合は、GoからC++のラッパーを呼び出す。

(3) 研究事例が少ない

PythonやC++は、数多くの学術論文や研究事例があり、豊富なサンプルコードが存在する。一方で、Goは学術分野ではあまり使われておらず、論文や研究事例が少ない
特に、MAS関連のライブラリやフレームワークが未成熟なため、開発者が独自に実装する必要がある。

対策:

  • MASの一般的なアルゴリズム(Boidモデル、Cellular Automatonなど)をGoで実装する。
  • 他言語のライブラリと組み合わせて使用する。

(4) ガベージコレクションの影響

Goのガベージコレクション(GC)は自動的にメモリを管理するが、大規模なシミュレーションではGCの影響で予期しないタイミングで一時的な遅延が発生する可能性がある。
C++のように明示的なメモリ管理ができないため、リアルタイム性を求めるシミュレーションでは不利になることがある。

対策:

  • メモリ割り当てを最小限に抑える設計を行う(オブジェクトの再利用)。
  • sync.Pool を活用してメモリ管理のオーバーヘッドを減らす。

3. 結論

Go言語を使ったMASは、並行処理の容易さ・コードのシンプルさ・クラウドとの親和性に優れており、大規模エージェントシミュレーションの実装がしやすい
しかし、GPUサポートの弱さ・計算ライブラリの不足・研究事例の少なさといった課題もあり、特に高度な数値計算が必要なシミュレーションではPythonやC++の方が適している

Go言語が適しているケース:

  • 大規模なエージェント数をgoroutineで管理
  • ネットワーク・クラウド連携が必要
  • シンプルな設計を重視

PythonやC++の方が適しているケース:

  • 高度な数値計算(線形代数、最適化)
  • GPUを活用したシミュレーション
  • 既存のライブラリや研究事例を活用

最適なアプローチ:
Go単体でMASを実装するよりも、計算部分をPython/C++で処理し、Goは並列制御やネットワーク管理に使うというハイブリッドアプローチが有効となる。


昨日、

PrumeMobileを使った人流の見える化

について記載したんだけど、これ簡単に言うと『goroutineを止めて、サブルーチンにした』というものです。

300万のエージェントが、メインルーチンの情報変更に上手く連動しなくなると、"goroutineの自己破壊命令が届かない"という問題がボロボロでてきたからです。

まあ、それでも、『数十万人分、361万行の移動データを、全部表示して正常終了した』というGo言語の凄さには、相変らず感心しているんですけどね(昨夜、PC回しながら寝たのですが、今朝、全部のオブジェクトが消えて、正常終了していました)。