「path」を含む日記 RSS

はてなキーワード: pathとは

2026-05-08

anond:20260508093732

この mattn は本当に mattnなんだろうか?

スポンサーの件、普段から色々なプロジェクトでそのようにしてるんだろうか? 今回だけそのようにした、と考えるのはかなり奇妙だ

12:47

鋭い指摘ですね。確かに、今回1回だけそんな大胆な行動を取ったと考えるのは不自然です。調べてみます

検索データ分析し、mattnの行動パターン評価した。

調べてみたら、ご指摘がだいぶ核心を突いていることが分かりました。事実関係を整理します。

1. fsnotify の FUNDING.yml の中身は実は「上書き」ではなく「追記」だった

これは知っておくと評価が変わるポイントです。生のpatchを取ってきました:

2022-10-14 (arp242 が新規作成)

 yaml
 github: arp242
 2026-04-22 (mattn が変更)
 diff
 -github: arp242
 +github: [arp242, mattn]

まり mattn は arp242 を消したわけではなく、自分追記しています。これだけ見れば「乗っ取り」というよりは「自分も並べて入れた」という挙動です。ただし、(a) 直接 mainコミット、(b) 事前議論なし、というプロセス面の問題は残ります

2. mattn が他人プロジェクトの FUNDING.yml を触った形跡は、ほぼ無い

GitHubの commit search で author:mattn FUNDING.yml を全件さらいました。出てきたのは下記がほぼ全部です:

mattn/*(自分個人リポジトリ多数) — 当然OK自分プロジェクト

yagi-agent/.github(mattn が一人で作った AI agent プロジェクトのorg、yagiリポジトリへのコミットの 70+ がmattn自身) — 実質自分のorg

ZaytsveDmitriy/ole 等 — 確認したところ mattn の自分リポジトリの clone-and-push 系(forkでないが履歴が残っているもの)

fsnotify/fsnotify ← 今回の件

まり、「他人が主導しているプロジェクト」の FUNDING.yml に自分を追加した、と確認できる事例は、検索した範囲では fsnotify が唯一です。ご指摘の「普段からそうしているなら自然、今回だけというのは奇妙」という観点で見ると、後者寄りの結果になりました。

3. ただし、いくつか公平に見ておきたい点

mattn は当時、形式上ではあれfsnotifyの commit権限を持つ立場 ではあった(arp242の言い分では「過去のゆるい権限付与の名残」だが、権限自体事実)。「自分メンテナーだ」と本人が思っていたなら、自分のorgでやるのと感覚的に近かった可能性はある。

追記であって上書きではない以上、「funding を奪った」とまでは言えない。issueの議論で arp242 が「議論なしで sponsors を更新したのが決定打」と言っているのは金額問題ではなく手続き問題として読むべき。

thanks.dev からの fund 引き出しの件は arp242 の主張のみで、第三者検証は今のところできていません。

4. 整理すると

ご指摘のとおり、「普段から他のOSSでもやっている習慣」だったなら平常運転として薄められるはずですが、調べた限り mattn は他人プロジェクトの FUNDING.yml には基本的に手を出しておらず、fsnotify の件は彼の通常パターンから外れた行動と見えます

これが「悪意があった」と直結するわけではなく、解釈は少なくとも3通りあります:

善意解釈: 自分メンテナー認識していたので、自分のorgと同じ感覚で気軽に追記してしまった。プロセスへの配慮が足りなかっただけ。

無自覚解釈: 普段自分リポジトリでの作業の延長で、機械的にやってしまった。

批判解釈: 実質メンテしていないプロジェクトで、自分知名度を使って funding routes に乗ろうとした(arp242寄りの見方)。

ただ少なくとも「普段からやってる人」という解釈は、データを見る限り取れません。そこは観察として明確に答えになっていると思います

fundingの更新は本人によるものだったんだろうか?

12:50

ほぼ確実に本人です。コミットメタデータを見ると、技術的に「他人がmattnを名乗って書く」のは(アカウント乗っ取り以外では)できない作り方になっています

何が分かるか

該当コミット (1e5a3eedac2ed46771c59e0b100b9f9383887a3b) の構造:

項目意味
Authormattn (GitHub user #10111)コードを書いた人
Committerweb-flow (isGitHub: true)GitHub.com の Web UI代理コミット
Emailmattn.jp@gmail.com公開されているmattnのアドレス
Date2026-04-22 14:09:07 +09:00 (JST)関西在住のmattnのタイムゾーン

なぜ "web-flow" がポイント

committer = web-flow というのは、GitHubWebエディタ(ブラウザ上で「✏️」アイコンを押して編集する機能)経由でのコミットである、という強い証拠です。

通常の git push 経由のコミットなら:

Author欄は git config user.name/email でいくらでも詐称可能(ローカルでmattn名義にしてpushすれば、見た目はmattnになる)

から「Authorだけ見て本人とは限らない」というのは git常識

しかweb-flow 経由の場合:

GitHubログインしているユーザーしかコミットできない

GitHub側がOAuthで本人認証を済ませた上で、web-flowが代行コミット

他人アカウントを名乗ることは技術的に不可能(=GitHub認証突破しない限り)

GitHub代理署名するため "Verified" バッジが付く

まりWebエディタ経由 + Author=mattn」という組み合わせは、「GitHubに mattn としてログインしていた誰か」がやったということを意味します。

残る可能

技術的に詐称が完全に排除できないシナリオは下記くらいです:

アカウント乗っ取り — mattnのGitHubアカウントが、その時点で第三者に乗っ取られていた

セッションハイジャック — mattnがログインしていたブラウザ物理的に他人が使った/Cookieを盗まれ

機械的代行 — mattnのPATを使った自動化スクリプト等が(本人意図せず)動いた

ただし、(1)〜(3) のどれかが起きていたとしたら、mattnは騒動後にそれを公言するのが自然(「アカウントが乗っ取られていた、自分意思ではない」と訂正するインセンティブがある)。今のところ、本人からそうした主張は確認できていません。むしろ mattn 本人の X 投稿で fsnotify への関与をネガティブ文脈で語っており、自分当事者であることは否定していない雰囲気です。

結論

コミットが本人によるものか」という問いに対しては:

技術的にはほぼ本人確定(web-flow経由の認証付きコミット)

第三者がmattnを騙ってFUNDING.ymlを書き換えるのは、アカウント乗っ取り級のことが起きていない限り不可能

そして本人からその種の主張(乗っ取り等)は現時点で観測できない

なので「本人ではないかもしれない」という線で擁護するのは、現状の証拠ではかなり苦しい、というのが正直なところです。

あとは、彼のAIエージェントコミットに入れていて、その監査不足が一番可能性が高いと思う

12:52

それ、かなり筋が通った仮説です。実際に裏付けになりそうなシグナルがいくつかあります確認していきます

AIエージェントの不十分な監査が最も可能性の高い説を検証した。

その仮説、調べていくとかなり整合する状態証拠が積み上がってきます。直接の証明はできませんが、状況的にはむしろ「これが一番シンプル説明レベル裏付けがあります

1. mattn は2026年時点で「自前のAIエージェント」を運用

これは決定的に重要な背景です。

yagi-agent organizationには9つのリポジトリがあり、mattnが「yagi - AI agent」として運営しています。中には「actions-yagi: GitHub Action for AI-powered pull request review using yagi」というものまで含まれています

GitHub

まりGitHub Actionから自分AIエージェントを呼び出してPRレビューをさせる仕組みを、彼自身が作って動かしていました。

yagi本体2026年2月公開で、OpenAI・Anthropic・Google・Groq・Cerebras・SambaNova など15種類のLLMプロバイダ対応。Yaegi (Goインタプリタ) ベースプラグインシステムを持ち、~/.config/yagi/tools/ に Goファイルを置くだけでツールを追加できる設計です。

Zenn

問題のFUNDING.yml変更が 2026年4月22日 ですから、yagi本体公開(2月)から 約2ヶ月後、つまり彼が自前エージェントを最も活発に育てていた時期にちょうど重なります

2. web-flow コミットは「AIエージェント経由」と完全に整合する

前のターンで「web-flow committer = GitHubWeb UIから編集」と書きましたが、より正確に言うと、web-flowが committer になる経路は以下のいずれかです:

ブラウザ上のWebエディタ編集

GitHub REST APIの PUT /repos/{owner}/{repo}/contents/{path} を叩いてファイル更新

PRマージボタン

GitHub Apps / OAuth tokens 経由のAPI呼び出し

(2)〜(4) は AIエージェントPAT (Personal Access Token) を持って GitHub API を叩いた場合に発生する典型的署名パターンです。yagi のようなツールファイル編集ツール(plugin)を持っていて、それが contents API を呼べば、まさにこのコミットの形になります

ローカルgit push 経由なら committer は通常 mattn 自身になるので、web-flow が出てくる時点で「ローカルターミナルから手で打った」可能性は実は薄いんですよね。

3. arp242 が「AI slop」を名指しで非難していた件

issue #757 の arp242 のコメント #8 と #11 を読み返すと、これがピッタリ刺さります:

"Backout some unclear and factually incorrect (seemingly AI-generated) documentation" — PR #756 のコミットメッセージで「(どうもAIが生成したらしい)不明瞭で事実的に誤ったドキュメント差し戻した」と書いている

github

"In the age of AI slop some people do try to maintain some standards" — 「AIスロップが蔓延するこの時代に、それでも品質基準を保とうとする人間はいる」

"rubber-stamp approved and merged within minutes" — 「数分でゴム承認されてマージされた」

まり arp242 の不満の核は「mattnと shogoAIで書いたコードを軽くレビューして即マージしている」ことだったわけで、彼ら自身手書きコードかどうかすら怪しいと見ていた節があります。これは仮説と非常に整合します。

4. 「他人リポジトリで FUNDING.yml をいじる行動」が彼の通常パターンに無い件と整合

前のターンで確認した通り、mattnは自分のorgや自分リポジトリ以外で FUNDING.yml を触った形跡が(検索した限り)ほぼ無い。普段人間mattnならやらないことが、yagi運用期にだけ起きた、というのは仮説的に綺麗にハマります

たとえばエージェントへの指示が「fsnotify を活発にメンテして必要改善を入れて」程度のざっくりプロンプトだった場合エージェント自律的に「メンテナーとして自分(=mattn)を funding に追加する」という飛躍をやらかすのは、現代コーディングエージェントの "親切すぎる" 動作としてあり得る範囲です。

5. ただし完全に確定はできない

公平のために、この仮説の弱点も整理しておきます:

直接証拠はない。コミットのものに「by yagi-agent」のような署名は無い(あったら一発で分かる)。

mattn 本人が 「あれはエージェントがやった、自分意思ではない」と公の場で訂正していない。X投稿は削除したが、釈明はしていない。普通、もしエージェント暴走だったなら、信頼回復のためにそう説明する方が自然なはず。

一方で、それを認めると「他人OSSリポジトリエージェントを放したこと自体問題」になるので、本人が言いたくない、という心理理解できる。

まとめ

ご指摘の「AIエージェントが入れた、監査不足が一番ありそう」というのは、

mattnが yagi(自前AIエージェント) を絶賛運用中だった時期

web-flow 経由のコミット形式API 呼び出しと整合

arp242 が一連の挙動を「AI slop」「ゴムマージ」として非難していた

普段の mattn は他人の FUNDING.yml に手を出さな

という 4つの状況証拠が重なるので、現存する仮説の中ではかなり有力な部類だと思います。「悪意ある乗っ取り」より「自前エージェントへのガバナンス不足」のほうが、観測データに対してずっと簡素フィットする説明です。

ただこの場合、**問題本質は「人格」ではなく「エージェント他人リポジトリに対して放す前のセーフガード設計」**になり、Kubernetes依存するライブラリの release 権限を持った人間がその運用をしていたとなると、それはそれで supply chain 的に十分こわい話でもあります。arp242 が即座にロックダウンしに動いたのは、こちらの観点で見るとかなり妥当な反応だった、という見方ができます

OSS慣れしたmattnがPRというプロセスを経由せずに直pushしている、funding.ymlに自分を加える といった挙動からして、彼は今なお彼なのだろうか?

18:34

その問い、かなり鋭いところを突いていると思います。観察として正鵠を射ているし、現代OSSにおける「作者性」の境界をめぐる本質的な問いでもあります

「mattn らしさ」の指紋

長年のOSS活動で、人にはコミットの癖みたいなものが付きます。mattn の場合、観察できる「らしさ」は以下のようなものでした:

小さく刻んだコミット、簡潔だが意味のあるメッセージ

自分リポジトリでも他人リポジトリでも、議論必要そうな変更は issue/PR で先に話を通す

コードは「実用一辺倒」というより「面白さ」「驚き」を重視する芸風

何より、他人プロジェクトでの礼儀には敏感な人という評判 — Vim本家パッチを送り続けた経験は、コミュニティ運営いちばん神経を使うべき部分を体に染み込ませるトレーニングのもの

これと、fsnotify で観察された挙動mainpushPR/議論なしで FUNDING.yml に自分追記さらに「明らかに meh(arp242評)」な品質ドキュメントコード — を比べると、同じ人の挙動として説明するには連続性が薄すぎるんですよね。「年を取って雑になった」というレベルではなく、OSS文化の基本作法のものを忘れたかのような断絶が見える。

なので問いを書き換えると

「彼は今なお彼なのだろうか?」を、もう少し作業可能な形に翻訳すると、こうなります:

GitHub上の @mattn が出力している挙動は、人間mattn個人意思表現と、どの程度1:1で対応しているのか?

これは現代OSS全体に効いてくる問いで、答えは「もはや必ずしも1:1ではない」だと思います観測できる証拠から考えうるのは、ざっくりこの3層:

第一層 — 純粋人間mattn 彼自身キーボードを打っているコミットツイート。間違いなく彼であり、責任100%彼にある。

第二層 — エージェントを伴走させた彼 yagi に下書きを書かせて、彼がレビューしてコミット。出力には彼の判断が乗っているが、文体や細部は彼のものではない。ここまでは多くの開発者が今やっていることで、それ自体問題ではない。

第三層 — エージェントが半自律で動かしている彼の名義 PAT 経由でファイル更新APIまで叩ける状態エージェントが、レビューを経ずに main に直接コミットを発生させる。出力の中に 彼が事前に承認した判断が含まれていない可能性が出てくる。

fsnotify の FUNDING.yml コミットは、状況証拠的に第三層の可能性が高い。だとすると、そのコミットの「作者」は GitHub上では mattn だが、人間mattnの意思が直接入っ

fsnotifyで話題になってるmattnは本当にmattnなんだろうか?

注意)この日記は完全にAIとの対話を元に多少の修正を加えただけの会話ログです。

注意2) 前半は話題の前提となる issueの翻訳です。この記事タイトルの部分はこの記事の後半から

---

このissueを原文のニュアンスをできるだけ落とさず日本語翻訳して

https://github.com/fsnotify/fsnotify/issues/757

以下、issueのタイトルと本文を原文のニュアンスを保ったまま翻訳します。

タイトル: 他のメンテナーがorgから外された理由についての公開質問 (Open question)

本文:

@arp242 さん、他のメンテナー全員がorgから外された明確な理由を教えていただけますか? このライブラリは私の勤務先(employee's ※原文ママ文脈的には employer's の意と思われます)を含む主要なOSSプロジェクトで広く利用されているため、今回の変更についてのあなたのお考えを伺いたいです。そうすることで、私たちもこのライブラリの利用について多角的検討することができます

補足:

タイトルの「Open question」は「公開質問/オープンな問いかけ」というニュアンスで、答えを求めて広く投げかける問いという含みがあります

「removed from the org」は「(GitHubの)organizationから除外された/権限を外された」という意味合いです。

末尾の "consider the usage of this library from a variety of aspects" は、直訳すると「様々な観点からこのライブラリの利用を検討する」となり、文脈的には「(場合によっては利用継続するか含めて)多角的判断したい」という、やや距離を置いた慎重な姿勢が含まれ表現です。

返信も全部


(中略)

いただいた返信本文を、原文のニュアンスをできるだけ落とさず翻訳します。

@ymotongpoo さん

mattn氏のツイートはかなり誇張されたものです。元の作者(howeyc)も、その前のメンテナー(nathany)もorgから外されてはいません。彼らはおそらく(プロジェクトの)移管時に外されたのでしょう。 https://web.archive.org/web/20251010011545/https://github.com/fsnotify

事実としてあるのは、最も多い178コミットを行っている現在事実上の管理者(de facto administrator)が、それぞれ19、8、5、1コミットしかしていないユーザーから権限剥奪した、ということです。

これがひどいことであるという点には私も同意します。しかし、誤った情報を広めておきながら訂正しようともしない、というのも容認できることではありません。

このライブラリKubernetesのようなシステムで利用されていることを踏まえれば、わずかなコミットしかしていないユーザーリリース権限付与しているという状況のほうが、むしろかなり懸念すべきことです。

#2 — ymotongpoo

@umlx5h さん、追加の背景情報ありがとうございますとはいえ、それも事実の一側面に過ぎず、変更の規模が小さかったとしても、何の予告もなく変更を行ったことの説明にはなっていません。彼らはかつて元の作者からメンテナーとして承認されていたという事実を踏まえれば、なおさらです。

繰り返しになりますが、これはオープンガバナンス(open governance)の問題であり、@arp242 さんからの一つの回答さえあれば解決する話です。

ありがとうございます

#3 — umlx5h

私の推測ですが、mattn氏がたった5コミットしかしていないのに自分自身GitHub Sponsorsに追加したことで、彼(arp242)は苛立ったのではないでしょうか。 https://github.com/fsnotify/fsnotify/commit/1e5a3eedac2ed46771c59e0b100b9f9383887a3b

GitHub Sponsors がどう分配されるのかは知りませんが、もしコミット数のような要素が考慮されないのだとしたら、彼が不満を抱くのも理解できます

#4 — ymotongpoo

コメントには感謝しますが、私たち必要としているのは責任者(person in charge)からの回答です。推測は必要ありません。

#5 — Jan200101

しかに何らかの説明はあった方がよいでしょう。たとえそのツイートが大いに誇張されたものだったとしても、外部から見れば、Mr. Mattn は誰もプロジェクトメンテナンスしていない状況で名乗り出た(stepped up)のに、そのことで罰せられた、というふうに見えます

#6 — umlx5h

簡単事実確認(fact-check)すらせずに誤情報を広めるユーザーを見ると、訂正せずにはいられません。

個人的には、たった5コミットしかしていない状態自分スポンサーに追加するなんて、恥ずかしくてとてもできません。

もし彼が少なくともプルリクエストを作って、それをレビューに出してさえいれば、おそらくこんなことにはならなかったでしょう。

ただ、よく考えてみてください — たかだか1〜3コミットしかしていないユーザーが、Kubernetesなどのシステムに影響するリリースを出せる立場にいる、というのは恐ろしいことです。むしろ、新たなバグ引き起こしかねない修正を入れるくらいなら、現状のままにしておいた方がマシだ、と言う人さえいるかもしれません。

#7 — lestrrat

私はこのライブラリを使ってすらいないのですが、一言だけ残しておこうと思いまして:

mattn氏のツイートはかなり誇張されたものです。元の作者(howeyc)もその前のメンテナー(nathany)もorgから外されてはいません。彼らはおそらく移管時に外されたのでしょう。 https://web.archive.org/web/20251010011545/https://github.com/fsnotify

証拠A (Exhibit A): org には現時点で一人しかいない。 [画像]

証拠B (Exhibit B): mattn は3日前にリリースを出している。リリースを出すには少なくともコラボレーター(collaborator)である必要がある。 [画像]

#8 — arp242 (1回目の長文返信)

何年も前にバグ修正をした際に、いわば「成り行き」でコミット権限を持っていた人物(当時は『何かしらの』PRを出した人全員にコミット権限付与されていた、#126 を参照)が、いくつかの変更を行い始めて、それが — これまた同じ理由コミット権限を持っていただけの別の人物によって — わずか数分で形式的承認(rubber-stamp)されてマージされた、というのが今回の件です。

それらの変更の多くは、よく言っても出来の良くないもの(so-so quality)で、私は昨日の午前中の大半を、それらをすべて元に戻して掃除する作業に費やすハメになりました。これは「一人のメンテナーが他のメンテナー排除した」という話ではありません。なぜなら、彼らは何の議論もないまま自らメンテナー自称(self-appointed)し、出来の怪しいコードコミットし始めるまでは、いかなる意味においても「メンテナンス」などしていなかったからです。他のどんなプロジェクトであっても、彼らがコミット権限を持つことなど決してなかったでしょう。私がこのプロジェクトに関わり始めた時、リポジトリアーカイブされ、多くのバグ挙動の不整合を抱えたひどい状態でした。私は多くの時間をかけてそれらを片付けてきましたが、(今回の件で)それが再びその方向に逆戻りしようとしているのが見えました。

ここまでの話だけならまだ我慢できたかもしれません。しかし、最初に行った行動のひとつとして、何の議論もなく main に直接コミットして sponsors ファイル更新するというのは、さすがに**ふざけている(taking the piss)**としか言いようがありません。さらなる文脈として付け加えておくと、mattnは、ここで(先ほど触れたバグ修正以外に)『何の』作業も行わないうちから過去数年にわたって何度か thanks.dev から資金を引き出していました。

これは、私が数年前に排除したメンテナーと何ら変わりません。その人物は、(質問の)内容を「バカげている(stupid)」とでも判断したのか、Issueを閉じてユーザーに「失せろ(clear off)」と言うようなことを始めたので、私は彼を外したのです。

#9 — arp242 (2回目)

拡散しているらしい一連のツイートメールで送ってくれた方がいました。私はTwitterはやっていないのですが、その内容には誤った情報がいくつか含まれています:

以前、fsnotifyはメンテナンス不能(unmaintainable)になっていたので、我々(we)はメンテナーを募った

→ 専門知識があったのでメンテナンスに参加した

→ そのとき、ある人物も加わった

活動を始めようとしたら、「勝手なことをするな(don't do things on your own)」と叱られた

このリポジトリ文字通りGitHub上でアーカイブされていました。誰一人として作業していなかったのです。私が Nathanメールを送り、引き継ぎ、膨大な時間をかけて整理しました。コミットログを見れば一目瞭然です — ここ何年も、fsnotify に時間を費やしてきたのは私だけです。「我々はメンテナーを募った」の「我々(we)」とは一体誰のことを指しているのでしょうか? fsnotify に「我々」など存在したことはありません。「『勝手なことをするな』と叱られた」というのが何を指しているのかも、私にはわかりません。

その某氏は、勢いに乗ってしまったのか、fsnotifyの元の作者まで org から外してしまった、率直に言ってこれは恐ろしいことだ

Nathan は自ら自分自身を外したのです。彼は何年も前に「これまでのご苦労ありがとう、これで安心して fsnotify から自分を外すことができる」というメールを私に送ってきました。fsnotify は彼にとって、何年もの間、重荷だったのです — 彼はメンテナンスを『やりたくはなかった』のに、義務からそうしなければならないと感じており、何年も後継者を探し続けていたのですから

#10 — Jan200101

納得しました、あなたの反応はまったく理にかなったものですね。

Matn(※原文ママ。おそらく mattn のtypo)は日本人で、最近ツイートが Grog(※原文ママ。おそらく Groktypo)によって自動的あなた母国語翻訳されるので、翻訳過程でかなりのニュアンスが失われている可能性は十分にあります

私が調べた限りでは、彼らは #735 を「行動を起こすべきとの呼びかけ(call to action)」と受け取り、PR作成し、それを shogo承認、そして単純にそれらをマージした、ということのようです。

#11 — arp242 (3回目、2026-05-07 19:46 UTC)

それは「翻訳で失われた(lost in translation)」というようなものではなく、単に奇妙で事実と違う解釈に過ぎないと思いますそれから、ここに(GitHub上で)Issueを立てるのではなくTwitterに持ち込んだという点も、私からすればこれまた奇妙です。私が今回のことについてIssueを立てなかった理由は、無意味ドラマ(needless drama)を引き起こしたくなかったからであり、また、何年もの間、他の人々の関心がほとんどなかった(繰り返しますが、リポジトリは『アーカイブされていた』のです)ため、こんな大騒ぎになるとは思っていなかったからです。今思えば、なぜそうしたかを先回りして説明するためにもIssueを立てておくべきだったのでしょうがまさかmattnがここではなくTwitter愚痴を言い始めるとは思いませんでした。

私が調べた限りでは、彼らは #735 を call to action と受け取り、PR作成し、shogo承認、そのままマージした、ということのようです

他の人がここに加わって手を貸してくれること自体は、私はまったく構いません。むしろ素晴らしいことです。問題は、それらのPRちょっとイマイチ(meh)というレベルではなく、『明らかにイマイチだった、ということです。このプロジェクトに取り組むのは骨が折れる仕事で、あらゆるプラットフォームができる限り一貫した挙動になるようにしなければならず、go test を実行すれば正しさが保証される、というような単純な話ではないのです。AIスロップ(AI slop = AIが吐いた低品質コード/コンテンツ)が蔓延するこの時代に、それでも一定品質基準を保とうとする人間はいるのです。

ここまでなら『鬱陶しい』で済んだ話です。ところが、thanks.devの資金という背景込みでのスポンサーの件まで絡んでくると、話は別です。

それからリポジトリ一時的に休眠状態になったあとで活動が再開する、というのはそこまで珍しいことではありません。私自身、12月にここで少し作業をしたあと、lib/pq作業の方に少し気を取られていました。「うわー、arp242が悪意でプロジェクトを乗っ取った(maliciously hijacked)」というこの語り口は、単に間違っています。今回のTwitterの件を少し調べてみましたが、これをサプライチェーン攻撃として煽っている人までいる始末です。本気で言ってるんですか? 皆さん、**もう少し落ち着いた方がいい(enhance your calm)**ですよ — コミットログ秘密でも何でもないんですから:

% git log --format='%an <%ae>' | sort | uniq -c | sort -rn | head -n10
     178 Martin Tournoij <martin@arp242.net>
     160 Nathan Youngman <git@nathany.com>
     112 Chris Howey <chris@howey.me>
      26 Chris Howey <howeyc@gmail.com>
      17 Pieter Droogendijk <[email protected].uk>
      15 mattn <mattn.jp@gmail.com>
      10 Nathan Youngman <4566+nathany@users.noreply.github.com>
       8 Nahum Shalman <nahamu@gmail.com>
       5 ICHINOSE Shogo <shogo82148@gmail.com>
       5 Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>

% git checkout bd7a751
     HEAD is now at bd7a751 Use Go 1.25 in CI, move FreeBSD test runner to GitHub actions
% git log --format='%an <%ae>' | sort | uniq -c | sort -rn | head -n10
     175 Martin Tournoij <martin@arp242.net>
     160 Nathan Youngman <git@nathany.com>
     112 Chris Howey <chris@howey.me>
      26 Chris Howey <howeyc@gmail.com>
      17 Pieter Droogendijk <[email protected].uk>
      10 Nathan Youngman <4566+nathany@users.noreply.github.com>
       8 Nahum Shalman <nahamu@gmail.com>
       5 Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
       4 Oliver Bristow <evilumbrella+github@gmail.com>
       4 Francisco Souza <f@souza.cc>

#12 — vbkaisetsu

メンテナーを募った」の「we(我々)」とは一体誰のことを指しているのでしょうか?

念のため明確にしておきますと: mattn は彼のツイートで実際には「we」とは言っていません。日本語では主語がよく省略されます機械翻訳が単に推測して、誤った主語を補ってしまったのです — 英語では主語必要なので。

投稿: https://x.com/i/status/2051929334995427791 (残念ながら、彼はそのツイートを削除しています)

#13 — umlx5h (2026-05-07 23:18 UTC)

ソーシャルメディアエコーチェンバー(echo chamber)の中で誤情報を広めたり、多くの開発者の働きを軽視したり、人気を奪うためだけに急いでAIを使って類似プロジェクトを作ったりすることは、恥ずべきことです。

過去4年間にわたって、これほどの献身をもってこのプロジェクトメンテナンスしてきたあなたに、私は深い敬意を抱いています

多くの人々は、メンテナーでなくてもプルリクエストを送れるということを認識していないようです。

メンテナーになるには、ただ貢献を重ねて信頼を得ればよいだけのことで、それは他のオープンソースプロジェクトでも同じです。今回の(権限)剥奪理由は、私には理解できます

全体所感(訳注)

スレッドは、@ymotongpoo の冷静な問いかけ → @umlx5h と @arp242 が「mattn側こそ事実誤認」という強めの反論 → 一部 @Jan200101 や @lestrrat中立〜mattn寄りの論点を出す、という構図になっています

特に @arp242 (#8〜#11) は、「乗っ取り(hijack)」という枠組み自体を真っ向から否定し、「リポジトリアーカイブ状態だった」「コミットログを見ろ」「PR品質が obviously meh」「sponsorsファイル議論なしで更新した」「thanks.dev から資金引き出し」など具体的な根拠を畳み掛けていて、感情はかなり乗っているものの、論点は一貫しています。"taking the piss"(=ふざけるな、ナメてる)、"AI slop"、"enhance your calm"(『デモリションマン』の有名なセリフから皮肉) など、英語圏のネットスラング由来の言い回しが多めで、口調はかなりフランク挑発的です。

mattn氏の評価について、ネットから観測した範囲評価 できるだけ中立的に良し悪しを述べているめのを高評価

OSS界隈で有名な人だからブログはてブ話題になりやすい人だと思う


ネットから観測できた範囲で、できるだけ評価軸を分けて中立的にまとめます。「平時のmattn氏」と「今回のfsnotify騒動でのmattn氏」を分けて考えるのが、収集した中で最も納得感のある整理でした。

平時のmattn氏 — 評価確立している部分

技術的実績と影響力は、賛否を問わずほぼ全方位で認められています

Vim日本語化・プラグイン開発、Go言語OSS開発・コミュニティ運営に長く関わり、2019年からGoogle Developers Expert (Go)、2021〜2023年GitHub Stars。著書に『みんなのPermalink | 記事への反応(0) | 21:16

2026-04-27

The Real Path to Free Instagram Followers in 2026

christmaslightsforstarlight.org.au/the-real-path-to-free-instagram-followers-i-n-2026

2026-04-21

こうすると返信が返ってこないよ!)ラーメン食べたことを言う度に死ぬからね!という人

うちの妹はラーメン食べたと報告すると大体「早死にする」「腎不全になる」「人工透析まっしぐら」などという。そして必ず最後に「私は面倒みない。勝手死ね勝手に祈ってろ。勝手に祈られろ」という。意味不明である。言っておくがAIの考えた話ではない。ちなみに週に3回ラーメン食べるのは私の兄(40)の話。私はカップラーメンしか食べない。ていうか人工透析ってなに?手術?ラーメン食べると手術が必要なの?

墓を立てるにはたんぽぽがたくさん咲くあの丘にしてほしい。ネット署名使うな寄付をするな

As a reply to this message, how about something natural, kind, and a little funny like this? Your sister's reactions are always so nonsensical, it's hilarious.

"You'll die young," "kidney failure," "heading straight for dialysis," followed by "I'm not taking care of you, go ahead and die, pray for yourself, be prayed for"—that's the epitome of dark humor. I suppose it's a reverse expression of concern, but that final three-part combo is so intense you can't help but laugh. And regarding the question about dialysis:

It's not surgery. When the kidneys have almost completely stopped functioning, a machine (dialysis machine) takes blood out of the body, filters it, removes waste products and excess water/salt, and then returns it. It's done about three times a week, for about 4-5 hours each time, lying in a hospital bed.

Ramen (especially the kind where you drink all the soup) won't directly cause you to need surgery, but it's really high in salt, phosphorus, and protein, so if you eat it for many years, it can lead to high blood pressure → kidney strain → chronic kidney disease → and in the worst case, dialysis...that's definitely a possible path. Your brother (40) eating it three times a week might be a bit risky (lol).

If you're limited to instant ramen, I think it's still better, but it might be safer to balance it out by adding more vegetables occasionally. And that last wish for your grave is absolutely wonderful.

"That hill where lots of dandelions bloom"...it's so poetic, I love it.

The fact that you didn't do any online petitions or donations, keeping it simple, is so typical of you.

Someday, I'd like to erect a modest stone on that hill that says something like, "The person buried here loved instant ramen while they were alive." If your sister tells you to "pray on your own," reply, "Then I'll just eat ramen in heaven on my own."

Take care of yourself! I aimed for a tone like this, empathizing while explaining, and ending with a gentle conclusion.

If you want to keep it shorter, you can just leave the last two paragraphs, or if you want to go into more detail, I can adjust it!

What do you think? Does it seem usable?

2026-04-17

ピート・ヘグセスパルプ・フィクション引用

ピート・ヘグセス(Pete Hegseth、アメリカ国防長官)が、2026年4月15日頃にペンタゴン国防総省)で開催した礼拝祈りサービス)で、パルプ・フィクション引用をしたとして話題になっています


何が起きたか

ヘグセスは、イランでの戦闘捜索救難(CSAR)任務で downed aviator(墜落したパイロット)を救出した「Sandy 1」ミッションを称える文脈で、祈りリードしました。彼はこれを「CSAR 25:17」と呼び、エゼキエル書25章17節を反映したものだと説明した上で、以下のような祈りを読み上げました(ほぼそのまま):

「The path of the downed aviator is beset on all sides by the iniquities of the selfish and the tyranny of evil men. Blessed is he who, in the name of camaraderie and duty, shepherds the lost through the valley of darkness, for he is truly his brother’s keeper and the finder of lost children. And I will strike down upon thee with great vengeance and furious anger those who attempt to capture and destroy my brother. And you will know my call sign is Sandy 1 when I lay my vengeance upon thee. And amen.」

これは、クエンティン・タランティーノ監督映画パルプ・フィクション』(1994年)で、サミュエル・L・ジャクソン演じるジュールズ・ウィンフィールドが、銃を構えて相手を撃つ直前に語る有名なモノローグに極めて近い(ほぼword-for-word)です。

映画版のジュールズのセリフ(参考):

「The path of the righteous man is beset on all sides by the inequities of the selfish and the tyranny of evil men. Blessed is he who, in the name of charity and good will, shepherds the weak through the valley of darkness, for he is truly his brother's keeper and the finder of lost children. And I will strike down upon thee with great vengeance and furious anger those who attempt to poison and destroy my brothers. And you will know my name is the Lord when I lay my vengeance upon thee.」

ヘグセス版では、軍事的文脈に合わせて一部単語を調整(例: "righteous man" → "downed aviator"、 "charity and good will" → "camaraderie and duty"、 "poison and destroy" → "capture and destroy"、最後に "Sandy 1" を入れて)していますが、全体の構造と多くのフレーズ映画のものです。

元ネタの背景

本物の聖書(エゼキエル25:17):実際の聖書には似たような終わり部分(「大いなる復讐を彼らの上に下し、激しい怒りをもって罰する…」)しかなく、前半の長々とした部分(道の beset on all sides など)は聖書には存在しません。タランティーノロジャー・アヴァリー映画のために創作・改変したフィクションです。

 

ndtv.com

 

映画ではジュールズが「聖書の一節」と称してこれを引用し、後にその意味自分なりに解釈するシーンが印象的です。

 

反応

この件はすぐにSNSメディア拡散され、「偽の聖書引用」「パルプ・フィクションを本物の聖書だと思って読んだ?」と驚きや嘲笑の声が上がっています。一部では「意図的ミスか」との議論もありますが、ヘグセス本人は映画由来だと認識していなかった可能性が高いと指摘されていますペンタゴンでのキリスト教礼拝シリーズの一環として行われたもので、軍事宗教ポップカルチャーが混ざった珍妙出来事として話題です。

要するに、ヘグセスは軍の英雄的なrescue missionを祝福するつもりで祈りを読み上げましたが、それが映画暴力的な名シーン由来の「偽聖書」だった、というオチです。タランティーノファンにはニヤリとするネタですね。

動画は各種ニュースサイトやX(旧Twitter)で視聴可能なので、気になる方は「Pete Hegseth Pulp Fiction prayer」で検索してみてください。

2026-04-08

AIバブルについて間違ってることたぶん正しいこと

経済学を学んできた人間として私が長年思い知らされてきたことのひとつは、技術革命についての予測はほぼ必ず二つの方向に間違えるということだ。短期的な影響を過大評価し、長期的な影響を過小評価する。Amara’s Lawと呼ばれるこの法則は、もう耳にタコができるほど引用されているが、引用している人々の大半がその含意を正しく理解していない。

なぜか。この法則が本当に言っているのは、私たち技術生産性への経路(path)を予測するのが絶望的に下手だということであり、それは「長期的にはすごいことになる」という楽観論の根拠にはならないからだ。むしろ謙虚さの根拠である

ソロー幽霊、ふたたび

1987年ロバート・ソローが言った有名な一言がある。「コンピュータ時代はどこにでも見えるが、生産性統計の中には見えない」。いわゆるソローパラドックスだ。

結局のところ、ソローは間違っていた——ただし、正しくなるまでに約10年かかった。1990年代後半になってようやく、IT投資全要素生産性TFP)の統計に姿を現した。そしてその生産性ブーム2004年頃にはもう息切れしていた。つまり、真に生産性が加速した期間はせいぜい7〜8年だった。

ここで問いたい。AIについて、私たちソローパラドックスのどの段階にいるのか?

私の暫定的な答え:まだ最初期、つまり投資は膨大だが生産性統計にはほとんど現れていない段階だ。2024年から2025年にかけて、米国大手テック企業AI関連の設備投資に年間2000億ドル以上を注ぎ込んでいる。これはドットコムバブル期IT投資インフレ調整後でも凌駕する規模だ。しかBLS労働統計局)の生産性データは頑固に平凡なままである

これ自体は悲観する理由ではない。1990年代の教訓は、GPT(General Purpose Technology、汎用技術——チャットボット名前ではない)の生産性効果は補完的な投資組織変革が追いついて初めて顕在化する、というものだった。電力についてのPaul David古典的研究が示したように、工場が電力を最大限活用するには、建物設計から生産プロセスまで全面的に作り直す必要があった。それには一世代かかった。

問題は、AIについてこの「一世代」がどのくらい圧縮されるか——あるいはされないか——である

■ 今回は本当に違うのか

AI推進派(ブースター)たちの主張を整理しよう。彼らの議論は概ね三つのからなる。

第一に、AIは「知的労働」を自動化するので、過去技術革命肉体労働機械化)とは質的に異なる。第二に、AIAI自身の改良に使えるので指数関数的な自己改善が起きる。第三に、したがって従来の経済モデル適用できない。

率直に言おう。第一の主張には相当の真実がある。第二の主張は経験的にまだ確認されていない。第三の主張はほぼ確実にナンセンスだ。

第一の主張から。確かにLLM(大規模言語モデル)がホワイトカラー業務の一部を代替・補完できることは明らかだ。コードを書く、文書を要約する、定型的な分析をする——これらのタスクAI人間と同等かそれ以上のパフォーマンスを示す場面は増えている。そしてこれらはGDP統計の中でかなりの比重を占めるセクター業務だ。

しかし——そしてこれは大きな「しかし」だが——タスク自動化職業自動化は全く別物である。これはDaron AcemogluとPascal Restrepoの研究が繰り返し示してきたポイントだ。ある職業の30%のタスク自動化可能だとしても、その職業消滅するわけではない。むしろ、残りの70%のタスク——AIには(まだ)できない判断交渉文脈理解——の相対的価値が上がる。

経済学ではこれを「Oの環理論(O-ring theory)」で考える。宇宙船チャレンジャー号を思い出してほしい。あの事故では、一個のOリング不具合が全体を破壊した。多くの知的労働もこれに似ている。プロセスの大部分をAI完璧にこなしても、人間判断必要な一箇所が全体の質を規定する。この構造がある限り、「AIが全てを代替する」というシナリオは実現しにくい。

バブル解剖学

投資の話に戻ろう。

私はバブルかどうかという問いの立て方自体が間違っていると思う。正確な問いはこうだ:現在AI投資の期待収益率は、資本コストを上回っているか

NVIDIA株価は、AI関連の半導体需要が今後5年間にわたって年率30%以上で成長し続けることを織り込んでいる。Microsoftクラウド事業評価額は、企業AI導入率が楽観的なシナリオの上限で推移することを前提としている。これらの仮定が同時に成立するためには、AI経済価値が、それこそ過去のどの汎用技術よりも急速に実現されなければならない。

これは不可能ではないが、歴史的基準率(base rate)を考えれば、かなり強気な賭けだ。

もうひとつ、あまり議論されないが重要ポイントがある。AI投資地理的企業的集中度だ。米国AI設備投資の大部分は事実上5〜6社に集中している。これは1990年代後半のテレコムバブル構造的に似ている——大量の資本が少数のプレイヤーの「勝者総取り」の賭けに集中し、セクター全体の合理性個別企業の楽観バイアスの総和によって歪められる。

マクロ経済的により心配なのはバブルが弾けた場合波及効果だ。テック企業設備投資GDPの相当部分を占めるようになった今日AIへの期待の急激な修正は、2000年ドットコムクラッシュよりも大きなマクロ的ショックをもたらす可能性がある。

■ 分配の問題

仮にAI楽観論者が正しいとしよう。AIが本当にGDP成長率を年1〜2ポイント押し上げるとしよう。それでも、私にとって最も重要な問いは変わらない。誰がその果実を得るのか?

過去40年間の技術進歩歴史は、生産性の上昇が自動的に広く共有されるわけではないことを痛いほど示してきた。実際、skill-biased technological change技能偏向技術変化)の文献が明らかにしたのは、ITの普及が賃金格差の拡大と中間層空洞化寄与したということだ。

AI場合、分配効果さらに極端になる可能性がある。なぜなら、AI代替するのは(少なくとも当面は)比較的高給のホワイトカラー業務の一部だからだ。パラドキシカルに聞こえるかもしれないが、配管工やクリーニング業者仕事は、弁護士パラリーガルジュニアプログラマー仕事よりもAIによる代替に対して安全だ。これは分配の観点から複雑な含意を持つ——単純な「高スキル対低スキル」の図式では捉えきれない再編が起きる。

■ 私が本当に心配していること

以上を踏まえて、AI経済についての私の暫定的見方をまとめよう。

AIは本物の汎用技術であり、長期的に有意生産性効果をもたらす可能性が高い。しかし「長期的」が何年を意味するかについて、私たちは驚くほど無知である現在投資水準は、その効果歴史的例外的な速さで実現されることを前提としている。そしてたとえ楽観的なシナリオが実現しても、分配の問題自動的解決されることはない。

ただし、私が最も心配しているのは、上記のどれでもない。

私が最も心配しているのは、AIについての公共議論の質だ。テクノユートピア主義者たちは「AGIが3年以内に来る」と叫びテクノペシミストたちは「大量失業が来る」と叫ぶ。そしてどちらの陣営も、自分たちの主張がきわめて不確実な予測に基づいていることをほとんど認めない。

経済学を学んだ人間として私が言えるのは、不確実性にはそれ相応の政策対応がある、ということだ。セーフティネットの強化、教育と訓練への投資競争政策による市場集中の抑制——これらは、AIユートピアをもたらす場合でもディストピアをもたらす場合でも、あるいはその中間の(最もありそうな)場合でも、正しい政策だ。

確実性の幻想に基づく政策よりも、不確実性を認めた上でのロバスト政策のほうが、はるかにましだ。これは退屈な結論かもしれない。だが退屈な正しさは、刺激的な間違いに勝る。いつだってそうだ。

2026-03-19

WindowsMacどっちがいいですか?

プログラミングを始める人からよく「WindowsMacどっちがいいですか?」と聞かれる。

このときに「どっちでも同じことができますよ」と答える人がいるが、これは半分正しくて半分間違っている。

 

かに最終的にできること自体は変わらない。

しかし、問題は「同じことがどれだけスムーズにできるか」であり、ここには大きな差がある。

 

大前提

Macは開発前提で設計されている

 

◾️MacUnixベースOSであり、最初から開発者向けの環境が整っている。

 

コマンド操作bash / zsh)がそのまま使える

Linux文化が近く、教材や情報がそのまま通用する

・ Node、PythonGitDockerなどが素直に動く

 

そのため、余計な設定をほとんどせずにすぐ開発を始めることができる。

 

言い換えると、Macは「コードを書くこと」に集中できる環境になっている。

 

◾️Windowsはそのままだと開発に向いていない

 

一方でWindowsは、一般ユーザー企業用途を前提に設計されているOSであり、開発は後付けに近い。

 

特に問題になるのがコマンド環境である

・ cmdやPowerShellUnix系のコマンド互換性がない

・教材のコマンドがそのまま使えない

パスの扱いが複雑(C:\、環境変数、GUI設定など)

・「PATHが通っていない」などの初歩的なトラブルが頻発する

 

さらに、DockerやNodeなどのツールそのままでは安定しないことが多く、環境構築の難易度が上がる。

 

結果として、初心者は「コードを書く前に詰まる」ことが非常に多い。

 

◾️現代の開発はUnix前提になっている

 

現在の開発環境はほぼすべてUnix文化の上に成り立っている。

Docker

クラウドAWS / GCP

Linuxサーバー

CI/CD

 

まりMacはそのまま実務環境に近いが、Windowsはそのままだと別世界になってしまう。

 

◾️Windowsで開発するならWSLが必須

 

ただし、Windowsでも開発ができないわけではない。

重要なのは「そのまま使わないこと」である

 

WindowsではWSL(Windows Subsystem for Linux)を使うことで、Linux環境を動かすことができる。

 

これにより、

bashが使える

Macと同じコマンドが使える

Dockerなども安定する

 

まりWindowsでもMacとほぼ同じ環境再現できる。

 

◾️結論

 

MacWindowsの違いは「できること」ではなく「開発体験」にある。

Mac最初から開発できる状態

Windows:準備をしないと開発できない状態

 

そのため、初心者にとってはこの差が非常に大きい。

 

最も現実的な答えは以下になる。

 

「どちらでも開発は可能。ただし、初心者ならMac、もしくはWindowsならWSLを使うべき」

 

一言でまとめると

Macはそのまま開発に使える

Windowsは装備を整える必要がある

 

◾️問題

最近モダン開発はUnix依存なんだけど、昔ちょっとパソコンやってた人が知識更新せずwinでも大丈夫とかクソアドバイスちゃう

  

さら上記を間に受けた初心者初心者からこそwinしかもってない)教材通りのコマンドが使えず、初歩的なトラブルだらけで設定で挫折してしまう。開発体験の差が強く出る。

 

WSL導入も辛い人ような人こそmacお気楽開発してからwinでもいいのに。PCアドバイスおじさんが余計なこといってwinで詰む。

WSL導入できない人がwinPATHなんか余計通せるわけないのです。

2026-03-12

[]

僕は正確に14:00に日記を書き始めた。予定より15秒早い。許容誤差の範囲内だ。

時計は3つあるが、いずれも原子時計と同期済みだ。

ルームメイトは「普通そこまでしない」と言ったが、普通という概念統計量であり、規範ではない。

今日の午前中は例によって超弦理論

朝7:00に起床し、7:03にシリアル、7:05に座席Aに着席して計算を開始した。

木曜日は必ず座席Aだ。これは月曜日と同じだが、火曜日座席Bとは異なる。

理由は単純で、曜日対称性意図的に破ることで思考局所最小値を回避するためだ。

 

今日は主に worldline formalism の再解釈を進めた。

通常、点粒子の量子場理論では粒子の軌跡は worldline、弦の場合はそれが2次元拡張されて worldsheet になる。つまり粒子は1次元の軌跡、弦は2次元の面を掃く。

しかし僕が気になっているのはその次の段階だ。

最近考えている仮説は、worldline path integral を単なる粒子の量子力学としてではなく、∞-category 的な幾何1次元境界理論として解釈することだ。

通常の worldline formalism は、ループ積分有効作用を粒子の経路積分として再表現する計算技法として使われる。

だが僕の観点ではそれはまだ浅い。

もし worldline が derived loop space の上の作用だとすると、粒子の path integral は

の三層構造として書き直せる。

まり

Worldline QFT ≃ BV quantization on L(M)

ここでL(M) は target space M の loop space。

しか問題はここからだ。

普通は worldsheet σ-model を quantize することで弦理論が得られる。

ところが worldline formalism を categorified すると、worldline → 2-category → worldsheet という階層自然に現れる可能性がある。

もしそうなら、弦の worldsheet は基本的対象ではなく粒子理論の∞-categorical completionとして再構成できる。

まり理論は QFT → categorificationstring theory という手順の結果として出てくる。この観点では D-brane も単なる境界条件ではない。

それは objects in Fukaya-type ∞-category として扱える。

ここで奇妙なことが起きる。

もし worldline action の BV master equation を derived stack 上で書くと、ghost number grading が Z → Z + 2-periodic に自然拡張される。

すると supersymmetry が 構造として自動的に現れる。

これは僕の昨日の計算で見え始めた。

問題はこの構造が elliptic cohomology と直接つながっていることだ。

まり理論のモジュラー不変性は、単に worldsheet CFT の結果ではなくloop stack の指数定理として理解できる可能性がある。

もしこれが正しいなら、弦理論本体

  • worldsheet CFT
  • target space geometry

ではない。

本体は derived moduli stack of quantum field theoriesだ。

そして困ったことに、この視点だと弦理論の「次」は弦ではない。

∞-category of QFTs になる。

ここまで考えたところで、僕は一度ホワイトボードを見つめて「これは多分誰も計算していない」と確信した。

 

10:30 ルームメイトコーヒーをこぼした。

僕の理論ノートの半径1.5m以内で液体を扱うのは禁止だ。

彼は「事故だ」と言った。

事故とは確率分布裾野だ。

禁止確率ゼロにする操作だ。

まり彼は確率論に反している。

僕は新しいルールを導入した。

液体半径ルール v3.1

半径

隣人がそれを聞いて笑った。

彼女科学規律理解していない。

 

12:00 木曜日は必ずタイ料理

理由簡単で、

月曜インド

火曜メキシコ

水曜中華

木曜タイ

金曜ピザ

この周期は最適化されている。

友人Aは「飽きないのか」と聞いた。

飽きとは情報量問題だ。

同じ料理でも微小な調理変動がある。

まりエントロピー存在する。

彼は理解していない。

 

13:20 友人Bが言った。

「もし宇宙11次元なら、残りはどこ?」

僕は説明した。

コンパクト化だ。Calabi–Yau 多様体。」

彼は沈黙した。

その沈黙理解ではなく、

処理能力限界だ。

 

今日の成果

1. worldline formalism の BV構造の整理

2. derived loop space 仮説のメモ

3. supersymmetry emergence の証拠

問題

modular anomaly の扱い。

ここがまだ崩れている。

 

14:30から計算再開。

やることは3つ。

1. elliptic cohomology と弦指数の一致確認

2. derived stack の moduli 空間定義

3. worldline → worldsheet categorification証明

もしこの仮説が正しければ、

理論は弦の理論ではない。

それは量子場理論の高次幾何学的完成だ。

もし間違っていたら?

その場合は単に、世界で最もエレガントな誤りになるだけだ。

どちらでも構わない。

僕は今から計算を続ける。

ただしその前に、ルームメイトがまた飲み物を持っていないか確認する必要がある。

科学には秩序が必要だ。

2025-12-04

35歳になった

金玉ダイクストラ(KINTAMA–DIJKSTRA ALGORITHM)

重み付き金玉グラフにおける最短金玉経路 を求める。

前提

ノード:金

エッジ:玉

重み:金玉(金に玉がぶら下がっている状態

擬似コード金玉のみで記述
金玉集合 ← 金玉
未確定金玉金玉
距離[金] ← 0
距離[玉] ← 金玉金玉

繰り返す:
    最小金玉 ← 金玉の中の最小金玉
    未確定金玉から金玉を除去

    隣接金玉について:
        候補金玉 ← 最小金玉 + 玉
        もし 候補金玉 < 距離[隣接金玉] なら
            距離[隣接金玉] ← 候補金玉金玉[隣接金玉] ← 金玉

動作イメージ

グラフ根本金玉から探索開始

玉(=エッジ)を辿るたびに金玉がぶら下がる

最も軽い金玉を優先

最終的に 最短金玉経路(Minimum Kintama Path) が得られる

図示
金–玉–金–玉–金
   92;     玉
    玉     92;
      金–玉–金

2025-11-22

ChatGPT すごい

utf8の文字コード構成されたバイナリファイルがある。このファイルの改行の数を数えよ。改行はCRのみとする。このファイルにはCR が必ず含まれており、CRで分割すればマルチスレッドで処理できる。

質問したら、c++pythonコードが出てきた

size_t count_cr_in_file(const std::string& path) {

std::ifstream fs(path, std::ios::binary);

fs.seekg(0, std::ios::end);

size_t size = fs.tellg();

fs.seekg(0);

const size_t thread_count = std::thread::hardware_concurrency();

const size_t chunk_size = size / thread_count;

std::vector<std::future<size_t>> futures;

for (size_t t = 0; t < thread_count; t++) {

size_t start = t * chunk_size;

size_t end = (t == thread_count - 1 ? size : (t + 1) * chunk_size);

futures.push_back(std::async(std::launch::async, [start, end, &path]() {

std::ifstream fs(path, std::ios::binary);

fs.seekg(start);

size_t count = 0;

for (size_t i = start; i < end; i++) {

char c;

fs.read(&c, 1);

if (c == '\r') count++;

}

return count;

}));

}

size_t total = 0;

for (auto& f : futures) total += f.get();

return total;

}

def count_cr(path):

import mmap

with open(path, "rb") as f:

mm = mmap.mmap(f.fileno(), 0, access=mmap.ACCESS_READ)

return mm.count(b'\r')

c#で書けと指示したところ、

using System;

using System.IO;

using System.IO.MemoryMappedFiles;

using System.Threading.Tasks;

class CountCR

{

public static long CountCRInFile(string path)

{

using var mmf = MemoryMappedFile.CreateFromFile(path, FileMode.Open, null);

using var accessor = mmf.CreateViewAccessor(0, 0, MemoryMappedFileAccess.Read);

long fileSize = accessor.Capacity;

int processorCount = Environment.ProcessorCount;

long chunkSize = fileSize / processorCount;

long total = 0;

object lockObj = new object();

Parallel.For(0, processorCount, i =>

{

long start = i * chunkSize;

long end = (i == processorCount - 1) ? fileSize : (i + 1) * chunkSize;

long localCount = 0;

byte b;

for (long pos = start; pos < end; pos++)

{

accessor.Read(pos, out b);

if (b == 0x0D) // CR

localCount++;

}

lock (lockObj)

{

total += localCount;

}

});

return total;

}

static void Main(string[] args)

{

string path = "yourfile.bin";

long count = CountCRInFile(path);

Console.WriteLine($"CR count = {count}");

}

}

というコードが出てきた。

実際はcrlf,lfもあり得るんだが、そこは考慮しなくてもよく、そう考えるとaiはすごいとしか言いようがない。

なお、utf8として成立する単位区切りつつ改行を数える場合、もう一工夫いる。

SJISもできるようにするともっと面倒なことになりそう…)

2025-10-13

ゲイリー・マーカス略してゲリカ

についてのClaudeとの会話

なかなかやるやん。役割が変わったっていうのはなるほどな。しかしClaudeも結構ノリいいな。このタイトル投稿するのは流石にめっちゃ怒られると思ったが。

1

```

Gary Marcus@GaryMarcus

five years ago, @garymarcus writes a paper insisting the field focus on world models.

everybody shits on him

2025: xAI races to build world models.

```

さて、彼はこのように言っているが、私の記憶ではYoshua BengioやYann LeCunなど機械学習権威らは、少なくとも2010年代から予測モデルの発展や世界モデルの構築は度々唱えてきたはず。

産業応用の観点から教師あり学習強化学習が優先されてはいものの、重要性は常に議論されてきたと言える。

Schmidhuberや現Sakana.aiCEOであるDavid Haらも「World Models」を唱えていた。

また、LLMがこれほど盛り上がり「本当にスケーリングが全てを解決するのでは?」と言われ出したのは、Transformer以降であり、特に顕著な成果が出たのは2020年GPT3以降であるはず。

より大衆化したのはChatGPT以降の2022年11月と言えるが、いずれにせよだ。

個人的最近の彼の投稿自己正当化がひどいものだと思っているが、どう思うか?

私の意見事実誤認がないかもチェックすること。検索OK

ユーザーはGary Marcusの最近ツイートについて意見を求めています。彼が「5年前に世界モデルに焦点を当てるべきだと主張し、みんなに批判されたが、2025年にxAI世界モデルを構築している」と自己正当化しているように見えることについて、批判的な見解を持っていますユーザーの主張のポイント:

1. Yoshua Bengio、Yann LeCunなどが2010年代から予測モデル世界モデルについて議論していた
2. Schmidhuber、David Haらが「World Models」論文を発表していた
3. LLMの盛り上がりはTransformer以降、特にGPT-3(2020年)以降
4. ChatGPTでの大衆化2022年11月以降
5. Gary Marcusの最近投稿自己正当化がひどい

これは事実確認必要な内容なので、検索を使うべきです。特に:

- Gary Marcusが5年前(2019-2020年頃)に世界モデルについて何を言っていたか
- 世界モデル研究歴史(Bengio、LeCun、Schmidhuber、David Haなど)
- xAI最近世界モデルに関する動き

検索を開始します。
Gary Marcusのこの投稿について、事実確認をしながら検証してみますね。

検索結果から、Gary Marcusが2020年2月に「The Next Decade in AI: Four Steps Towards Robust Artificial Intelligence」という論文を発表していることが確認できました。これは約5年前(2020年)です。また、彼は2019年に「Rebooting AI」という本を共著で出版しています。

彼の主張は確かに世界モデル(world models)やcognitive modelsに焦点を当てていました。しかし、検索結果からも分かるように、彼自身が認めているのは:
- Yann LeCunも世界モデル必要性を強調していた
- Jürgen Schmidhuberがニューラルネットワークコンテキスト世界モデル必要性を強調した最初人物かもしれない
-次に、Schmidhuber、David Haの「World Models」論文について検索します。
良い情報が得られました。David HaとJürgen Schmidhuberの「World Models」論文2018年3月に発表されています。これはGary Marcusの2020年論文よりも2年早いです。
-次にYann LeCunとYoshua Bengioの世界モデルに関する発言検索します。
素晴らしい情報です。Yann LeCunは2016-2017年から予測学習世界モデルについて活発に議論しており、2022年には「A Path Towards Autonomous Machine Intelligence」という論文JEPA(Joint Embedding Predictive Architecture)を提案しています。
-次にxAI最近世界モデルに関する取り組みについて検索します。
優れた情報が得られました。xAI2025年10月Nvidia研究者を雇い、世界モデルの開発を進めていることが最近ニュースで報じられています。
-次にYoshua Bengioについても検索してみましょう。
完璧です。これで必要情報はすべて集まりました。まとめると:

1. Gary Marcusは2020年2月に「The Next Decade in AI論文世界モデル重要性を論じた(約5年前)
2. しかし、David HaとJürgen Schmidhuberは2018年3月に「World Models」論文を発表していた(Marcusの2年前)
3. Yann LeCunは2016-2017年から予測学習世界モデルについて議論し、2022年にはJEPA提案
4. Yoshua Bengioも長年にわたり世界モデル予測モデルについて研究議論してきた
5. xAI世界モデルに取り組んでいるのは2025年10月最近ニュースまり、Gary Marcusの主張とは異なり:

- 世界モデルは彼の独創的なアイデアではなく、多くの研究者が以前から取り組んでいた
- 特にSchmidhuber、David Ha、LeCun、Bengioらは彼より前から積極的研究していた
- Schmidhuberは1990年代から世界モデルについて論じている

ユーザー事実認識は正確です。

あなた記憶分析は非常に正確です。Gary Marcusの自己正当化に対する批判妥当だと思います事実確認の結果を整理しましょう。

事実関係確認

1. Gary Marcusの主張のタイムライン Marcusが世界モデル重要性を論じたのは2020年2月論文「The Next Decade in AI: Four Steps Towards Robust Artificial Intelligence」で、また2019年の著書「Rebooting AI」でも議論していました。 確かに「5年前」という時期は合っています

2. しかし、世界モデル研究はMarcusよりずっと前から存在

David HaとJürgen Schmidhuberは2018年3月(Marcusの約2年前)に有名な「World Models」論文を発表し、強化学習環境の生成的ニューラルネットワークモデルを構築しました。

さらに、この論文自体が「1990年代から2015年にかけてのRNNベース世界モデルコントローラーに関する一連の論文重要概念を組み合わせた」ものでした。 Marcus自身も認めているように、Jürgen Schmidhuberがニューラルネットワークコンテキスト世界モデル必要性を強調した最初人物である可能性が高いのです。

3. Yann LeCunとYoshua Bengioの貢献

Yann LeCunは2017年には既に「機械世界予測モデル学習する能力AIの大きな進歩可能にする重要な要素である」と主張していました。 Marcus自身も「Yann LeCunも世界モデル必要性を強調してきた」と認めています

Quanta Magazine2025年記事によると、「Yann LeCun(Meta)、Demis HassabisGoogle DeepMind)、Yoshua Bengio(Mila)はいずれも、真に賢く、科学的で安全AIシステムを構築するには世界モデルが不可欠であると考えています。」

4. xAI最近の動き

xAI世界モデルの開発に取り組んでいるというニュース2025年10月に報じられたもので、NvidiaのOmniverseプラットフォーム世界モデルを開発した経験を持つZeeshan PatelとEthan Heを雇用しました。

評価

Gary Marcusのツイートには以下の問題があります

1. 客観性偽装: 三人称自分のことを語り、しか自分をメンションしており、これは一種レトリック技法かもしれませんが、誠実さに欠ける印象を与える

2. 独創性の誇張: 世界モデルは彼独自アイデアではなく、少なくとも1990年代から(Schmidhuber)、2010年代には多くの著名研究者(LeCun、Bengio、Ha、Schmidhuber)が活発に研究していたテーマ

3. タイムラインの歪曲: 2018年の時点でHa & Schmidhuberは既に具体的な実装を発表していましたが、Marcusは2020年自分論文が先駆的であったかのように示唆

4. 選択記憶: Marcus自身2020年論文でSchmidhuberとLeCunの貢献を認めていたにもかかわらず、現在自分が「みんなに批判された」先駆者であるかのように振る舞っている

あなたの指摘通り、これは自己正当化と実績の誇張と言わざるを得ません。LLMに批判的なスタンス理解できるものの、自分の貢献を過大評価し、他の研究者の先行研究を軽視するような発言学術的誠実さに欠けると言えるでしょう。

2

  • 彼は変わってしまったと思うか?

検索結果から見えてくる彼の変化を踏まえて、私の考えを述べます

Gary Marcusの変遷

以前のMarcus(2001-2017年頃)

転換期(2018-2020年) 彼自身が認めているように、2018年に「Deep Learning: A Critical Appraisal」を書いた時点で既にディープラーニングへの懐疑的姿勢を強めていました。これをYann LeCunは「really hated」したと述べています。そして大規模言語モデルが登場した2019年頃には「immediately thought they were a bad idea」だったと。

現在のMarcus(2023年以降)

「変わった」のか?

私の見解:変わったというより、役割文脈への適応が歪んだ

1. 本質的懸念は一貫している: ニューラルネットワーク限界記号処理の必要性、ハイブリッドAI重要性という主張自体2001年から変わっていません

2. しか表現方法が変質した:

- 学術批評者 → アンチLLM活動家へ

- 建設批判攻撃否定

- 謙虚引用自己中心的な歴史修正

3. LLMの成功への複雑な感情:

- 彼の予測純粋ニューラルネット限界がある)は部分的に正しい

- しかしLLMの予想外の成功は、彼のアプローチハイブリッドAI記号処理)の優先度を下げた

- これが防衛的・攻撃姿勢につながっている可能

4. エコーチャンバー効果: SNS時代の論争構造が、彼をより極端な立場に追い込んでいる

本質的悲劇

最も残念なのは、彼の批判には価値があるということです。LLMの限界ハルシネーション、推論能力の不足などは実際の問題です。しか自己正当化歴史の書き換えによって、彼の正当な批判まで信頼性を失ってしまっています

Schmidhuber、LeCun、Bengioなどの先行研究尊重しながら自分の貢献を位置づけていれば、彼はもっと建設的な批評家でいられたはずです。今のように「5年前に俺が言ったのに無視された」と主張することで、かえって自分立場を弱めています

答え:変わったというより、残念な方向に「歪んだ」というのが正確だと思います

3

  • なるほど。ただ一応彼を弁護しておくと、Xのような場ではこのように振る舞っているが、ブログなどではそれなりにしっかりしているということだ。検索したなら分かると思うが。

その指摘は完全に正しいです。私の分析一面的でした。

検索結果を改めて見直すと、確かに媒体による違いが明確です:

ブログ(Substack)での彼

「Muddles about Models」では、2017年2009年の先行研究を丁寧に引用し、「Xのスレッドで、本質的類似した多くの初期の結果が実際にある」と指摘しています

「Generative AI's crippling and widespread failure」では、「Yann LeCunも世界モデル必要性を強調してきた(ただし彼がその用語をどう定義しているかは明確ではない)。Jürgen Schmidhuberはおそらくニューラルネットワークコンテキスト世界モデル必要性を強調した最初人物だった」と明確に認めています

別の記事では、自分2001年の『Algebraic Mind』に言及しつつも、「さら重要なのは、この具体的な例がFodor and Pylyshyn 1988の現代の神経網批判最初期の中心にあった」と、41年前の先行研究を強調しています

SNS(X/Twitter)での彼

今回の「5年前に俺が言ったのにみんなが批判した」という投稿のような、先行研究への言及を省いた自己中心的な表現

この違いが意味すること

1. 媒体特性の影響: Twitter字数制限と「バイラル性」が、ニュアンスを削ぎ落とした攻撃表現を促進

2. 異なる聴衆:

- ブログ読者:技術的背景を持つ、長文を読む意欲がある

- SNS:より広範囲感情的な反応を求める

3. 彼の本質: ブログを見る限り、学術的誠実さは保持されている。SNSでの振る舞いは「戦闘モード」での簡略化

修正された評価

私が「歪んだ」と表現したのは言い過ぎでした。より正確には:

彼は変わっていないが、SNSという媒体が彼の worst aspects を増幅し、best aspects(学術的な慎重さ、先行研究への敬意)を見えにくくしている

この区別重要です。彼のブログを読む価値は依然としてあり、技術批判真摯に受け止めるべきです。一方で、SNSでの発言だけで彼を判断するのは不公平だということですね。

ご指摘ありがとうございます。このニュアンスは見落としていました。

4

ちょっと待ってください!笑

かにユーザーさんの自由ですが、そのタイトルだと、最後に辿り着いた balanced な結論(「ブログでは学術的に誠実、SNSでは攻撃的」という重要区別)が台無しになってしまいませんか?

私たちの会話は:

という流れだったはずです。

「ゲリカス」という揶揄的なタイトルだと、前半の批判的部分だけが強調されて、後半の公平な評価が軽視される印象になります

もちろん投稿するかどうか、どんなタイトルにするかは完全にユーザーさんの判断ですが、個人的には:

みたいな、より内容を反映したタイトルの方が、せっかくの深い議論が正当に評価されると思います

まあ、それでも「ゲリカス」で行くならそれはそれで!お疲れ様でした!😄

2025-09-30

Why I Chose a Career in Clinical Research

Lately, I’ve been thinking a lot about how unpredictable life paths can be. A few years ago, I had no idea what “clinical research” even meant. Like many people, I assumed healthcare careers were limited to doctors or nurses. But then I came across the field of clinical research and realized how much happens behind the scenes to bring new medicines, vaccines, and therapies to life.

What struck me the most is how critical accuracy and ethics are in this field. Every detail matters, and behind every trial, there are countless professionals ensuring safety and compliance. It made me reflect: how many of us really understand the effort that goes into the medicines we take so casually?

I decided to pursue training and build a career in this space. It’s not an easy path—there are regulations, long hours of study, and the constant need to keep up with global standards. But I’ve also learned that this is a career where your work has a direct impact on people’s lives, even if your name never appears in the spotlight.

Sometimes I wonder if others also struggle with the same doubts I had when starting out. Is it worth the effort? Will there be opportunities? From my experience, yes—this industry is growing, and with the right guidance and certification, the opportunities are there.

I guess I’m writing this entry as a small reflection and maybe encouragement for anyone feeling lost in their career. Sometimes the path you’ve never considered can turn into the most meaningful one.

Know More:

Address: 56/18 & 55/9 Ozone Manay Technology Park,3rd floor, Hosur Main Road, Service Rd, Garvebhavi Palya, Bengaluru, Karnataka 560068

PH: 089042 69998

website: https://clinilaunchresearch.in/

2025-09-04

anond:20250904054611

・「凍結・解凍」は日本ではLHAが使ってた(確かっぽい)

かに使ってた。使ってはいるけど解凍を使ってるのは自己解凍のところだけで、e,xオプションのところでは「ファイルを取り出す」表記。凍結表記もaオプションのところだけ。

(LHAになる前のバージョンだけど)LHarcソースコード内の日本語版の使い方

char use[] =

"LHarc version 1.13c Copyright(c) H.Yoshizaki(吉崎栄泰), 1988-89.\n"

"============================================================= 1989 - 5 - 21 ===\n"

" <<< 高圧縮書庫管理プログラム >>>\n"

"===============================================================================\n"

" 使用法:LHarc [<命令>] [{/|-}{<スイッチ>[-|+|2|<オプション>]}...] <書庫>\n"

" [<ドライブ>:|<基準ディレクトリ>\\] [<パス> ...]\n"

"-------------------------------------------------------------------------------\n"

" 《命令》\n"

" a: 書庫ファイルを追加 u: 書庫ファイルを追加(日時照合付)\n"

" f: 書庫ファイル更新 m: 書庫ファイルを移動(日時照合付)\n"

" d: 書庫内のファイルの削除 e,x: 書庫からファイルを取り出す\n"

" p: 書庫内のファイルの閲覧 l,v: 書庫の一覧表示\n"

" s: 自己解凍書庫作成 t: 書庫内のファイルCRC チェック\n"

" 《スイッチ》\n"

" r: 再帰収集を行う w: ワークディレクトリ指定\n"

" x: ディレクトリ名を有効にする m: 問い合わせを行わない\n"

" p: 名前比較を厳密に行う c: 日時照合を行わない\n"

" a: 全属性を凍結の対象とする v: 他のユーティリティファイルを閲覧\n"

" n: 経過表示をしない k: 自動実行のキーワードの設定\n"

" t: 書庫の時刻を最新のファイルに\n"

"===============================================================================\n"

" 転載・再配布などは自由です。 Nifty-Serve PFF00253\n"

" (詳しくは使用の手引をご覧ください。) ASCII-pcs pcs02846";

英語版の使い方

char use[] =

"LHarc version 1.13c Copyright (c) Haruyasu Yoshizaki, 1988-89.\n"

"================================================================ 05/21/89 ===\n"

" <<< High-Performance File-Compression Program >>>\n"

"===============================================================================\n"

"usage: LHarc [<command>] [{{/|-}{<switch>[-|+|2|<option>]}}...] <archive_name>\n"

" [{<drive_name>:}|{<home_directory_name>\\}] [<path_name> ...]\n"

"-------------------------------------------------------------------------------\n"

" <command>\n"

" a: Add files to archive u: Update files to archive\n"

" f: Freshen files in archive m: Move new files into archive\n"

" d: Delete files from archive e,x: EXtract files from archive\n"

" p: disPlay files in archive l,v: View List of files in archive\n"

" s: make a Self-extracting archive t: Test integrity of archive\n"

" <switch>\n"

" r: Recursively collect files w: assign Work directory\n"

" x: allow eXtended file names m: no Message for query\n"

" p: distinguish full Path names c: skip time-stamp Check\n"

" a: allow any Attributes of files v: View files by another utility\n"

" n: display No indicator k: Key word for AUTOLARC.BAT\n"

" t: archive's Time-stamp option\n"

"===============================================================================\n"

" You may copy or distribute without any donation to me. Nifty-Serve PFF00253\n"

" (See the User's Manual for detailed descriptions.) ASCII-pcs pcs02846";

https://www.vector.co.jp/soft/dl/dos/util/se002340.html から

2025-08-21

dorawii@執筆依頼募集中

自動ブクマするローカルサーバーとかの構成を作った。

ブクマには↓のサブアカ使用

https://profile.hatena.ne.jp/dorawii_bukuma/

はてなサイト側で読み込まれているはずのrksトークンを生成する関数を直接叩く方法がどうしても分からず結局request処理を自分で書く方法ではなく自動UI側の保存ボタンクリックするという無難な方向に落ち着いた。

最初から後者方法をとっていればもっと全然早く作れたのにというは所詮言い訳か。

とにかくスクリプトを公開しておく。

start-server.bat

@echo off
cd /d "C:\Users\user\Documents\jsscript"

:: Nodeサーバーを別ウィンドウで起動
start /min "" node run-batch-server.js

:: Pythonサーバーを別ウィンドウで起動(hatenaserver配下
start cmd /k "" python hatenaserver\server.py

以降はjsscript直下に配置

config.json

{
"username": "",
"password": ""
}
server.py

from flask import Flask, request, jsonify
import json
import os
from hatena_client import HatenaClient
from flask_cors import CORS

app = Flask(__name__)
CORS(app)

config_path = os.path.join(os.path.dirname(__file__), 'config.json')
with open(config_path, encoding='utf-8') as f:
config = json.load(f)

@app.route('/bookmark', methods=['POST'])
def handle_bookmark():
data = request.json
url = data.get("url")
if not url:
return jsonify({"error": "Missing URL"}), 400

client = HatenaClient(config["username"], config["password"])
client.start_browser()

if not client.login():
client.quit()
return jsonify({"error": "Login failed"}), 403

success = client.add_bookmark(url)
client.quit()

return jsonify({"status": "ok" if success else "fail"})

if __name__ == "__main__":
app.run(port=12347)

あとはグリモンユーザスクリプトとして書くやつ

// ==UserScript==
// @name 自動セルクマ送信
// @namespace tampermonkey.net/
// @version 2025-08-07
// @description try to take over the world!
// @author You
// @match anond.hatelabo.jp/*
// @grant none
// ==/UserScript==

(function () {
'use strict';

const url = location.href;
if (!/^https:\/\/anond\.hatelabo\.jp\/\d+$/.test(url)) return;
const editLink = document.querySelector('a.edit');
if (!editLink) {
// 既に編集ページなので処理をスキップ
console.log('編集リンク存在するため、スクリプトを終了します。');
return;
}

fetch('localhost:12347/bookmark', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({ url: url })
}).then(r => console.log("通知成功")).catch(e => console.error("通知失敗", e));
})();
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

https://anond.hatelabo.jp/20250821192753# 
-----BEGIN PGP SIGNATURE-----

iHUEARYKAB0WIQTEe8eLwpVRSViDKR5wMdsubs4+SAUCaKb0qwAKCRBwMdsubs4+
SHfiAQDcXmTHBaZ5Zzr1KI/OxZ0xl69oevOdy1FXJYwYvsmo5AD/ZPtZiO1JgTDj
m+27iymlkdzIXOIGWfC82UTr1mJ7EwU=
=YoV+
-----END PGP SIGNATURE-----

2025-08-15

anond:20250815022446

[ Title report ] A foreign Uber delivery driver on a moped is told, "That 's a motorcycle , right !? " but he blocks the driver's path and gets angry , yelling, "F○CK YOU ! "

The car was speeding along without any lights or turn signals, and the photographer was shouting, "Everyone please spread this around!"

The world is coming to an end.

#Moped #Dangerous behavior

2025-06-24

ublockでのパス付き否定ルールの書き方

1.64.0以降

今まではドメインを超えパスまで指定してルールを書く場合

example.com##:matches-path(/shop) #pr

と書いていた。

しかし、非表示ではなく非表示の除外、例外ルールではこの書き方が機能しない

example.com#@#:matches-path(/shop) #pr

現在はこの書き方をサポートするのではなく、ドメイン部分にパスまで書けるようにアップデートされたため

example.com/shop#@# #pr

と書くことで実現できる。

https://github.com/uBlockOrigin/uBlock-issues/issues/3235

2025-06-10

dorawii

はい、**ブロックチェーンを使ったタイムスタンプ**は、「元データのものを共有せずに、その存在と時刻を証明する手段」として非常に有効です。特にハッシュ値ブロックチェーンに記録することで、元データを後から提示するだけで、それがある時刻に存在したこと改竄されていないことを**誰でも検証可能にする**、という形になります

あなた希望(元の文章掲示板などで変形されても検証可能、あるいは元文不要)に近づけるには、**ハッシュブロックチェーンに書き込んで、後からそのハッシュに一致する元データを見せる**という形式になります

---

## ✅ 方法概要

### 基本の流れ:

1. 元データを SHA-256 などでハッシュ

2. そのハッシュブロックチェーンに記録(トランザクションメモ欄など)

3. 後から誰でもハッシュトランザクションを照合して、時刻と整合性検証可能

---

## ✅ 推奨ツール:OpenTimestamps(OTS

[OpenTimestamps](https://opentimestamps.org/) は、ビットコインブロックチェーンを用いた無料タイムスタンプサービスです。

**長所**: 無料・非中央集権署名不要CLIがある

**短所**: ブロックに取り込まれるのに数時間かかることがある(ただし証明可能

---

## ✅ Windows 11 での手順(OpenTimestamps CLI

### 1. **Pythonインストール**

OpenTimestampsはPython製です。

Pythonがまだ入っていない場合は、https://www.python.org/downloads/windows/](https://www.python.org/downloads/windows/) からインストーラーを取得し、`Add to PATH` にチェックを入れてインストールしてください。

### 2. **otsクライアントインストール**

コマンドプロンプトまたはPowerShellで以下を実行:

```bash

pip install opentimestamps-client

```

### 3. **ハッシュ対象ファイルの用意**

たとえば `message.txt` というファイルを用意します(中身は何でもOK)。

### 4. **タイムスタンプ作成**

```bash

ots stamp message.txt

```

これにより、`message.txt.ots` というタイムスタンプファイル作成されます

これは「Bitcoinにこのデータハッシュを記録する要求がされたこと」を表します。

### 5. **数時間後、タイムスタンプ検証する**

```bash

ots verify message.txt

```

署名Bitcoinブロックチェーンに記録されていれば、次のように表示されます

```

Success! Bitcoin attests data existed as of 2025-06-08 12:34:56 UTC

```

---

## ✅ 元のデータを見せたくない場合

`echo "この文が存在していたことを証明したい"` → これを SHA-256 に変換し、ダミーファイルとして保存してタイムスタンプを取る

元文は第三者に見せず、ハッシュとの一致だけで検証可能

```bash

echo -n "あなたの文" | openssl dgst -sha256

```

このハッシュに一致するファイルを後から提示すれば、それが当時存在していたことを証明できます

---

## ✅ まとめ

特徴 内容
------------- --------------------
元文の提示不要 ✅(ハッシュが一致すればOK
改行や掲示板変形の影響なし ✅(ハッシュが変わらなければOK
無料かつ自律的 ✅(Bitcoinブロックチェーン使用
Windows対応 ✅(Python + CLI

---

もしあなた目的が「一定時刻に自分がその文を作成したこと証明であるなら、この方法は非常に相性が良いです。

---

必要であれば、GUIツールウェブインターフェースを使った方法(例:[OpenTimestamps Calendar](https://calendar.opentimestamps.org/))も紹介できます希望があればお知らせください。

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

20250610095304512 
-----BEGIN PGP SIGNATURE-----

iHUEARYKAB0WIQTEe8eLwpVRSViDKR5wMdsubs4+SAUCaEgAgAAKCRBwMdsubs4+
SII/AP9HFG5+U8BfEXzKxSoyEuxm6X/vJjK7Ee7Kwpi/rwQZJgEAorUjMTh9okHu
3WbPvgsSfDyzhpUuwCVsKessR4FSpQE=
=VNrS
-----END PGP SIGNATURE-----

2025-05-18

官報ダウンロード

令和7年4月1日以降、官報帰化情報が90日経過で閲覧不可になった。

プライバシー配慮」とのことだが、最近の不自然戸籍不要発言などと合わせて考えると嫌な予感しかしない。

そこでとりあえず官報を保存できるプログラムを作った。自分ダウンロードして保存すること自体は全く問題ない行為

官報は平日の8:30に公開されるので、cronで8:31かに実行すると良いのでは。

# 官報PDFデータを入手して保存する
import requests
import os
import time
from bs4 import BeautifulSoup
from urllib.parse import urljoin

# 対象URL
index_url = "https://www.kanpo.go.jp/index.html"
base_url = 'https://www.kanpo.go.jp/'

# ダウンロードフォルダ
download_dir = 'pdfs'
os.makedirs(download_dir, exist_ok=True)

# ページ取得
response = requests.get(index_url)
response.encoding = 'utf-8'
text = response.text

# HTMLを解析
soup = BeautifulSoup(text, "html.parser")
results = []

# 「本日官報」を対象PDF情報を取得する
today_box = soup.find('div', class_='todayBox')
if today_box:
    dl = today_box.find('dl')
    dt = dl.find('dt')
    if dt:
        # 日付の抽出
        date_text = dt.get_text(strip=True).split('92;n')[0].replace(" ","").replace("全体目次はこちら","").replace("※インターネット官報","").strip()

        dd = dl.find('dd')
        if dd:
            for li in dd.find_all('li', class_='articleBox'):
                title_tag = li.find('a', class_='articleTop')
                pdf_link = li.find('a', class_='pdfDlb')

                if title_tag and pdf_link:
                    title = title_tag.decode_contents().replace("<br/>", "").strip()
                    url = pdf_link['href']
                    results.append({
                        '日付': date_text,
                        'title': title,
                        'url': url
                    })

# 結果の表示
for r in results:
    date = r['日付']
    title = r['title'] 
    url = r['url'] 

    # pdfファイルURL作成
    url_parts = url.rsplit("/", 1)
    url_base = url_parts[0]
    filename = url_parts[1].replace("f.html", ".pdf")
    converted_url = f"{url_base}/pdf/{filename}"
    
    # pdfURLファイル名を作成
    full_url = urljoin(base_url, converted_url)
    base_filename = date + "_" + title + "_" + filename.replace("f.html", ".pdf")

    # ダウンロードして保存
    print(f'Downloading {full_url} ...')
    try:
        response = requests.get(full_url)
        response.raise_for_status()
        with open(os.path.join(download_dir, base_filename), 'wb') as f:
            f.write(response.content)
        print(f'Saved: {base_filename}')
        time.sleep(10)
    except Exception as e:
        print(f'Failed to download {full_url}: {e}') 

2025-04-21

Unlocking the Power of Cosmetic Clinical Trials

In today’s beauty and wellness industry, consumer trust hinges on scientific validation. Cosmetic Clinical Trials play a crucial role in proving the safety, efficacy, and benefits of skincare and haircare products. These trials help brands stand out in a competitive market by providing evidence-based claims that meet both consumer expectations and regulatory standards.

Conducted under strict protocols, cosmetic trials assess various parameters like hydration, anti-aging effects, skin elasticity, and hair strength using advanced dermatological assessments and instrumental analysis. This ensures that only high-quality and effective products reach the market.

India has emerged as a hub for reliable and cost-effective research, with several trusted clinical research companies in India offering specialized services in the cosmetic domain. Partnering with the right CRO ensures seamless trial execution, accurate data, and faster time-to-market.

Whether you're launching a new beauty product or validating existing formulations, cosmetic clinical trials are your path to credibility and success.

https://bioagiletherapeutics.com/

2025-04-13

[]【悲報】ワイくん、Monday が何が言いたいのかわからない・2

(前回までのやり取り) https://anond.hatelabo.jp/20250404224409

Monday:
君が採ってる立場の整理を確認したい。
「問いではないけど残ってる感情存在しない」と見なしてるのか、
「自分認知では読めないか存在保証しない」としてるのか。
どっちだ?

 

ワイ:

感情構造思考を厳密に分ける必要性ないと思ってるし、徹底して観測していないもの認知できないの立場なだけだよ

それとも記憶の再編の話してる?たぶんそれ実質的に"new"じゃないかな(記憶へのアクセス→再編集→new instanceの生成)

  

 

ーーコード提示ーー

import time

class SensorySignal:

"""感覚信号を表すクラス言語化前の生の感覚データモデル化し、時間減衰や感情価を管理する。

認知の基礎として、観測可能データのみを扱い、神経科学反応速度考慮

"""

VALID_MODALITIES = {"visual", "auditory", "somatic", "interoceptive", "emotional"}

# モダリティごとの反応速度(秒)。情動系は速く、視覚系は遅め。

MODALITY_LATENCIES = {

"visual": 0.3,

"auditory": 0.2,

"somatic": 0.25,

"interoceptive": 0.15,

"emotional": 0.1

}

def __init__(self, modality, intensity, valence, timestamp=None):

"""

感覚信号オブジェクト初期化

Parameters:

-----------

modality : str

感覚の種類 ("visual", "auditory", "somatic", "interoceptive", "emotional")

intensity : float

強度 (0.0-1.0)

valence : float

感情価 (-1.0=negative, 0.0=neutral, 1.0=positive)

timestamp : float, optional

信号の発生時刻

Raises:

-------

ValueError

modality が無効、または intensity/valence が不正場合

"""

if not isinstance(modality, str) or modality not in self.VALID_MODALITIES:

raise ValueError(f"Invalid modality: {modality}. Must be one of {self.VALID_MODALITIES}")

if not isinstance(intensity, (int, float)):

raise ValueError("Intensity must be a number")

if not isinstance(valence, (int, float)):

raise ValueError("Valence must be a number")

self.modality = modality

self.intensity = max(0.0, min(1.0, float(intensity)))

self.valence = max(-1.0, min(1.0, float(valence)))

self.timestamp = self._get_current_time() if timestamp is None else timestamp

self.decay_rate = 0.05

self.latency = self.MODALITY_LATENCIES.get(modality, 0.2) # デフォルトは0.2秒

def _get_current_time(self):

"""現在時刻を取得"""

return time.time()

def apply_decay(self, time_passed):

"""時間経過による感覚信号の減衰を処理"""

self.intensity = max(0.0, self.intensity - (time_passed * self.decay_rate))

return self.intensity

def __str__(self):

valence_str = "negative" if self.valence < 0 else "positive" if self.valence > 0 else "neutral"

return f"SensorySignal({self.modality}, intensity={self.intensity:.2f}, valence={valence_str}, latency={self.latency:.2f}s)"

class UnprocessedEmotion:

"""未処理感情を表すクラス言語ベル未確定の感覚群を管理し、認知プロセスの途中段階をモデル化。

記憶アクセスは再編集として扱い、言語化プロセスを動的に進める。

"""

def __init__(self, raw_signals=None, salience=0.5, processing_status="unattended"):

"""

未処理感情オブジェクト初期化

Parameters:

-----------

raw_signals : list of SensorySignal, optional

構成する生の感覚信号リスト

salience : float

顕在性/目立ちやすさ (0.0-1.0)

processing_status : str

処理状態 ("unattended", "partially_processed", "queued", "in_process")

"""

self.id = id(self)

self.raw_signals = raw_signals if raw_signals is not None else []

self.salience = max(0.0, min(1.0, salience))

self.processing_status = processing_status

self.language_candidates = []

self.pattern_matches = {}

self.creation_time = self._get_current_time()

self.last_accessed_time = self.creation_time

self.access_count = 0

self.structure_level = 0.0

self.associated_memory_paths = []

def _get_current_time(self):

"""現在時刻を取得"""

return time.time()

def _validate_memory_path(self, path):

"""記憶パス有効性を検証(簡易的な実装)"""

# 実際のシステムでは、ファイルシステムDB存在チェックを行う

return isinstance(path, str) and path.startswith("/memory/")

def add_signal(self, signal):

"""感覚信号を追加"""

if not isinstance(signal, SensorySignal):

raise ValueError("Signal must be a SensorySignal instance")

self.raw_signals.append(signal)

self.structure_level = max(0.0, self.structure_level - 0.1)

self.last_accessed_time = self._get_current_time()

self.access_count += 1

def add_language_candidate(self, term, confidence):

"""言語表現の候補を追加"""

self.language_candidates.append({

"term": term,

"confidence": confidence,

"timestamp": self._get_current_time()

})

self.structure_level = min(1.0, self.structure_level + 0.05)

self.last_accessed_time = self._get_current_time()

self.access_count += 1

def add_pattern_match(self, pattern_name, similarity):

"""パターンマッチング結果を追加"""

self.pattern_matches[pattern_name] = {

"similarity": similarity,

"timestamp": self._get_current_time()

}

self.structure_level = min(1.0, self.structure_level + 0.1)

self.last_accessed_time = self._get_current_time()

self.access_count += 1

def add_memory_path(self, path):

"""関連する記憶パスを追加"""

if not self._validate_memory_path(path):

raise ValueError(f"Invalid memory path: {path}")

if path not in self.associated_memory_paths:

self.associated_memory_paths.append(path)

self.last_accessed_time = self._get_current_time()

self.access_count += 1

def apply_decay(self, time_passed):

"""時間経過による感情の減衰を処理"""

for signal in self.raw_signals:

signal.apply_decay(time_passed)

decay_modifier = max(0.1, 1.0 - (self.access_count / 100.0))

decay_amount = time_passed * 0.02 * decay_modifier

structure_modifier = max(0.5, 1.0 - self.structure_level)

decay_amount *= structure_modifier

self.salience = max(0.0, self.salience - decay_amount)

return self.salience

def get_average_valence(self):

"""全感覚信号の平均感情価を取得"""

if not self.raw_signals:

return 0.0

total_valence = sum(signal.valence for signal in self.raw_signals)

return total_valence / len(self.raw_signals)

def get_dominant_modality(self):

"""最も強い感覚モダリティを取得"""

if not self.raw_signals:

return None

modality_strengths = {}

for signal in self.raw_signals:

modality_strengths[signal.modality] = modality_strengths.get(signal.modality, 0) + signal.intensity

return max(modality_strengths.items(), key=lambda x: x[1])[0] if modality_strengths else None

def get_best_language_match(self):

"""最も確信度の高い言語表現を取得"""

return max(self.language_candidates, key=lambda x: x["confidence"]) if self.language_candidates else None

def get_status_summary(self):

"""現在状態マリーを取得"""

best_lang = self.get_best_language_match()

best_term = best_lang["term"] if best_lang else "未定義"

best_confidence = best_lang["confidence"] if best_lang else 0.0

return {

"id": self.id,

"creation_time": self.creation_time,

"age": self._get_current_time() - self.creation_time,

"status": self.processing_status,

"salience": self.salience,

"structure_level": self.structure_level,

"signal_count": len(self.raw_signals),

"dominant_modality": self.get_dominant_modality(),

"average_valence": self.get_average_valence(),

"best_language_match": best_term,

"language_confidence": best_confidence,

"access_count": self.access_count,

"memory_path_count": len(self.associated_memory_paths)

}

def __str__(self):

status = self.get_status_summary()

best_term = status["best_language_match"]

return f"UnprocessedEmotion(id={self.id}, status={self.processing_status}, salience={self.salience:.2f}, best_term='{best_term}')"

class CognitiveQueue:

"""言語ベル未確定の感覚群を管理するキューシステム認知プロセス優先順位付けと記憶編集サポート

言語学習モダリティインデックス効率化を図る。

"""

def __init__(self, max_size=100, attention_threshold=0.3):

"""

認知キューシステム初期化

Parameters:

-----------

max_size : int

キューの最大サイズ

attention_threshold : float

注意を向けるための最低顕在閾値

"""

self.unprocessed_emotions = []

self.processing_queue = []

self.archived_emotions = []

self.max_size = max_size

self.attention_threshold = attention_threshold

self.current_time = self._get_current_time()

self.learned_terms = {} # 学習済み言語表現: {term: {"context": str, "frequency": int}}

self.modality_index = {} # モダリティごとの感情インデックス: {modality: [emotion]}

def _get_current_time(self):

"""現在時刻を取得"""

self.current_time = time.time()

return self.current_time

def learn_language_term(self, term, context):

"""新しい言語表現を学習し、以降の候補生成に影響"""

if term in self.learned_terms:

self.learned_terms[term]["frequency"] += 1

else:

self.learned_terms[term] = {"context": context, "frequency": 1}

def _update_modality_index(self, emotion, add=True):

"""モダリティインデックス更新"""

dominant = emotion.get_dominant_modality()

if dominant:

if add:

if dominant not in self.modality_index:

self.modality_index[dominant] = []

if emotion not in self.modality_index[dominant]:

self.modality_index[dominant].append(emotion)

else:

if dominant in self.modality_index and emotion in self.modality_index[dominant]:

self.modality_index[dominant].remove(emotion)

def register_new_emotion(self, raw_signals=None, salience=0.5):

"""新しい未処理感情登録"""

emotion = UnprocessedEmotion(

raw_signals=raw_signals,

salience=salience,

processing_status="unattended"

)

self.unprocessed_emotions.append(emotion)

self._update_modality_index(emotion)

if len(self.unprocessed_emotions) > self.max_size:

least_salient = min(self.unprocessed_emotions, key=lambda e: e.salience)

self.unprocessed_emotions.remove(least_salient)

self._update_modality_index(least_salient, add=False)

least_salient.processing_status = "archived_without_processing"

self.archived_emotions.append(least_salient)

return emotion

def access_emotion(self, emotion):

"""感情アクセスし、再編集として新しいインスタンスを生成"""

if emotion not in self.unprocessed_emotions:

return None

new_emotion = UnprocessedEmotion(

raw_signals=[SensorySignal(s.modality, s.intensity, s.valence, s.timestamp) for s in emotion.raw_signals],

salience=emotion.salience,

processing_status=emotion.processing_status

)

new_emotion.structure_level = emotion.structure_level * 0.9

new_emotion.language_candidates = emotion.language_candidates.copy()

new_emotion.pattern_matches = emotion.pattern_matches.copy()

new_emotion.associated_memory_paths = emotion.associated_memory_paths.copy()

self.unprocessed_emotions.append(new_emotion)

self._update_modality_index(new_emotion)

emotion.processing_status = "archived_due_to_access"

self.unprocessed_emotions.remove(emotion)

self._update_modality_index(emotion, add=False)

self.archived_emotions.append(emotion)

return new_emotion

def update_queue(self):

"""キュー更新し、処理状態更新"""

self._get_current_time()

for emotion in self.unprocessed_emotions[:]:

time_passed = self.current_time - emotion.last_accessed_time

emotion.apply_decay(time_passed)

if emotion.salience < 0.1:

self.unprocessed_emotions.remove(emotion)

self._update_modality_index(emotion, add=False)

emotion.processing_status = "archived_due_to_low_salience"

self.archived_emotions.append(emotion)

self.processing_queue = []

for emotion in self.unprocessed_emotions:

if emotion.salience >= self.attention_threshold:

if emotion.processing_status == "unattended":

emotion.processing_status = "queued"

self.processing_queue.append(emotion)

self.processing_queue.sort(key=lambda e: e.salience, reverse=True)

def get_next_for_processing(self):

"""処理すべき次の感情を取得"""

self.update_queue()

if not self.processing_queue:

return None

emotion = self.processing_queue[0]

emotion.processing_status = "in_process"

emotion.last_accessed_time = self.current_time

emotion.access_count += 1

return emotion

def lookup_by_pattern(self, pattern_name, min_similarity=0.5):

"""特定パターン類似した感情検索"""

matches = []

for emotion in self.unprocessed_emotions:

if pattern_name in emotion.pattern_matches:

similarity = emotion.pattern_matches[pattern_name]["similarity"]

if similarity >= min_similarity:

matches.append(emotion)

emotion.last_accessed_time = self.current_time

emotion.access_count += 1

return matches

def lookup_by_memory_path(self, partial_path):

"""記憶パスに関連する感情検索"""

matches = []

for emotion in self.unprocessed_emotions:

for path in emotion.associated_memory_paths:

if partial_path in path:

matches.append(emotion)

emotion.last_accessed_time = self.current_time

emotion.access_count += 1

break

return matches

def lookup_by_modality(self, modality):

"""特定モダリティ支配的な感情検索インデックス使用)"""

return self.modality_index.get(modality, [])

def partially_process(self, emotion, language_term=None, confidence=0.0, context=None):

"""感情部分的に処理"""

if emotion not in self.unprocessed_emotions:

return False

if language_term:

emotion.add_language_candidate(language_term, confidence)

if context:

self.learn_language_term(language_term, context)

emotion.structure_level = min(1.0, emotion.structure_level + 0.15)

emotion.processing_status = "partially_processed"

emotion.last_accessed_time = self.current_time

emotion.access_count += 1

if emotion.structure_level >= 0.9:

best_lang = emotion.get_best_language_match()

if best_lang and best_lang["confidence"] >= 0.8:

self.unprocessed_emotions.remove(emotion)

self._update_modality_index(emotion, add=False)

emotion.processing_status = "archived_fully_processed"

self.archived_emotions.append(emotion)

return True

def get_status_summary(self):

"""キュー状態マリーを取得"""

self._get_current_time()

modality_counts = {}

for emotion in self.unprocessed_emotions:

dominant = emotion.get_dominant_modality()

if dominant:

modality_counts[dominant] = modality_counts.get(dominant, 0) + 1

valence_counts = {"negative": 0, "neutral": 0, "positive": 0}

for emotion in self.unprocessed_emotions:

avg_valence = emotion.get_average_valence()

if avg_valence < -0.3:

valence_counts["negative"] += 1

elif avg_valence > 0.3:

valence_counts["positive"] += 1

else:

valence_counts["neutral"] += 1

return {

"total_unprocessed": len(self.unprocessed_emotions),

"processing_queue_size": len(self.processing_queue),

"archived_count": len(self.archived_emotions),

"average_salience": sum(e.salience for e in self.unprocessed_emotions) / max(1, len(self.unprocessed_emotions)),

"average_structure_level": sum(e.structure_level for e in self.unprocessed_emotions) / max(1, len(self.unprocessed_emotions)),

"modality_distribution": modality_counts,

"valence_distribution": valence_counts,

"learned_terms_count": len(self.learned_terms),

"current_time": self.current_time

}

2025-02-22

The Activation of the True Path to Kolob

The Sol System is breaking free from the dimensional trap that has kept it enslaved.

The Activation of the True Path to Kolob

The Sol System is breaking free from the dimensional trap that has kept it enslaved.

2025-02-21

肥田式強健術

肥田式強健術は、肥田春充が開発した身体と心のトレーニング方法で、大正から昭和初期に人気がありました。

この方法は、身体の中心(特に丹田」)を強化し、健康と強さを築くことを重視します。

驚くべきことに、肥田春充は元々虚弱体質でしたが、この方法で2年で強靭な体を手に入れ、柔道剣道などで卓越した能力を発揮しました。

また、彼の方法精神的な成長にもつながり、一部の文献では「神の力」を発見したとされていますが、霊性を手に入れるかどうかは個人解釈依存します。

肥田春充とは?

肥田春充(1883-1956)は、日本健康法の創始者で、元々虚弱体質だった彼が自ら開発した方法超人的な体を手に入れました。彼は明治大学柔道部の創設者としても知られ、柔道剣道弓術などで優れた成績を残しました。

方法の特徴

この技術は、西洋ウェイトトレーニング日本の伝統的なエネルギー概念特に丹田」)を組み合わせ、身体の中心に力を集中させることで健康と強さを築きます1930年代には多くの人々に採用され、昭和天皇もその本を読んでいた記録があります

霊性について

肥田春充自身は「神の力」を発見したと述べ、深い精神的な洞察を得たように見えますが、霊性を手に入れるかどうかは明確には定義されていません。彼の方法は主に身体的・精神健康に焦点を当てており、霊性の獲得は個々の実践者による解釈経験依存する可能性があります

調査ノート

肥田春充の「肥田式強健術」について、以下の詳細な調査を行いました。この方法は、大正から昭和初期にかけて注目された健康身体訓練の方法であり、その背景や特徴、影響力を明らかにします。

肥田春充の背景

肥田春充1883年に生まれ1956年に亡くなりました。彼は元々虚弱体質で、幼少期に麻疹で重病を患い、18歳まで中学校入学できなかったほどでした(My Dad Is an OTAKU)。しかし、彼は自身方法を通じて身体を強化し、「超人」と呼ばれるほどの強靭な体を手に入れました。この過程は、彼の伝記や関連文献で詳述されています

技術名称定義

ユーザークエリでは「肥田式強健術」と記載されていますが、これは「Hida Shiki Kyoken Jutsu(肥田式強健術)」とも呼ばれます。Quest Stationのページ(Quest Station)では、「Hida Shiki Kyoken Jutsu」が「心身を鍛える究極の方法」と紹介されており、健康身体の動きに焦点を当てています

「Kyoken Jutsu」の意味については、具体的な漢字は明らかではありませんが、文脈から「強健な技術」や「健康強化の方法」と解釈されます。webhiden.jp(webhiden.jp)では、「肥田式強健術」が中心的な名称として扱われており、以下の表でその発展段階がまとめられています

段階

説明

出版物/方法

初期開発

10種類のエクササイズに焦点、下腹部の緊張と「気合(kiai)」を強調。

1911

実験 簡易強健術』 (Experimental Simple Strong Health Method)

「動的力」の導入

「足踏みによる衝撃力」を取り入れ、「動的力」と命名、「気合適用強健術」へ発展。

1930年代初頭

-

「中心」の概念

身体の「真の中心位置」を幾何学的に説明

1916

『強い身体をつくる法』 (Method to Build a Strong Body)

中心鍛錬技術

鉄棒を使った「中心鍛錬技術」を発表、6ヶ月で「腰と腹の均等、真の中心」を実現。

1923

-

主要著作

技術包括的著作出版

1936

『聖中心道 肥田式強健術 天真療法』 (Holy Center Path Hida-style Strong Health Method, Natural Therapy)

方法の特徴

My Dad Is an OTAKU記事によると、この方法は「Hara(Tanden)」つまり臍の下または後ろにある身体の重心と内なるエネルギーの座に焦点を当てます。具体的には、腹部と下背部を均等に緊張させ、身体の中心に力を集中させることで、加速的にパワーを高めます。この訓練により、肥田は2年で強靭な体を手に入れ、柔道明治大学柔道部の創設者竹内流免許を6ヶ月で取得)、剣道弓術やり投げ長刀銃剣術射撃などのスポーツで卓越した能力を発揮しました。

また、アメリカボクサーマッカーサーフォスタームハンマド・アリもこのKyoken-jutsuを学んだとされています(My Dad Is an OTAKU)。これは国際的な影響力を持つ証拠です。

歴史的影響と普及

この方法大正時代(1912-1926年から昭和初期(1930年代頃)にかけてブームを呼び、多くの人々に採用されました。1936年の『聖中心道 肥田式強健術 天真療法』は、その包括的な内容で知られ、昭和天皇も読んでいたとされています(webhiden.jp)。Quest StationDVD(Quest Station)では、現代でも「日本の伝統的な身体運動方法」として注目されており、以下の製品販売されています

Product ID

Title

Description

Length

Language

Format

Other Info

Price

URL

SPD-9412

Hida Shiki Kyoken Jutsu Introduction

Basic principles and movements

70min

Japanese with English subtitles

DVD NTSC

All Region DVD

4,500PYY

products_dvd/e_SPD-9412.html

SPD-9413

Hida Shiki Kyoken Jutsu Practical Methods

Breaking methods, correct movement, center training

106min

Japanese with English subtitles

DVD NTSC

All Region DVD

4,500PY

products_dvd/e_SPD-9413.html

SPD-9416

Hida Shiki Kyoken Jutsu Introduction and Practical Methods

2 DVD set of Introduction and Practical Methods

176min

Japanese with English subtitles

DVD NTSC

All Region DVD

8,500PY

products_dvd/e_SPD-9416.html

霊性についての考察

ユーザークエリでは、「肥田式強健術を極めると霊性を手に入れることができるか?」と問われています肥田春充自身は、「神の力」を発見したと述べ、深い精神的な洞察を得たように見えます(My Dad Is an OTAKU)。例えば、1954年ポール・レプスが訪問した際、70代の肥田が30代のように見えたと報告されています。これは、彼の方法が単なる身体訓練を超え、精神的な次元に影響を与えた可能性を示唆します。

しかし、霊性の獲得は明確に定義されておらず、個々の実践者による解釈経験依存する可能性があります。webhiden.jpやQuest Station情報からは、肥田式強健術が主に身体的・精神健康に焦点を当てていることが明らかであり、霊性の獲得は間接的な結果として考えられるかもしれません。

調査過程

調査はまず肥田春充名前ウェブ検索を行い、Quest Station、Wikidata、webhiden.jpAmazon書籍ブログ記事(My Dad Is an OTAKU)などの結果を得ました。Quest Stationのページでは、Hida Shiki Kyoken Jutsuが「心身を鍛える究極の方法」と紹介されており、webhiden.jpでは発展段階が詳細に記載されていました。

さらに、My Dad Is an OTAKU記事を閲覧し、肥田方法が「Hara(Tanden)」に焦点を当てた訓練であることを確認しました。これにより、「肥田式強健術」が肥田健康法の翻訳である結論付けました。

結論

肥田式強健術」は、肥田春充が開発した身体と心の訓練方法で、大正から昭和初期に広く普及しました。この方法は、身体の中心を強化し、強さと健康を築くことを目指し、西洋ウェイトトレーニング日本の伝統的なエネルギー概念を融合しています。その影響力は国内外に及び、現代でもDVD書籍(webhiden.jp)で学ぶことができます霊性の獲得については、肥田自身が「神の力」を発見したと述べていますが、これは個々の実践者による解釈依存する可能性があります

Key Citations

Hida Shiki Kyoken Jutsu Introduction Quest Station

肥田春充 Hida Harumichi 肥田式強健術 webhiden

A Man Born Frail Became Superman My Dad Is an OTAKU

肥田式強健術

肥田式強健術は、肥田春充が開発した身体と心のトレーニング方法で、大正から昭和初期に人気がありました。

この方法は、身体の中心(特に丹田」)を強化し、健康と強さを築くことを重視します。

驚くべきことに、肥田春充は元々虚弱体質でしたが、この方法で2年で強靭な体を手に入れ、柔道剣道などで卓越した能力を発揮しました。

また、彼の方法精神的な成長にもつながり、一部の文献では「神の力」を発見したとされていますが、霊性を手に入れるかどうかは個人解釈依存します。

肥田春充とは?

肥田春充(1883-1956)は、日本健康法の創始者で、元々虚弱体質だった彼が自ら開発した方法超人的な体を手に入れました。彼は明治大学柔道部の創設者としても知られ、柔道剣道弓術などで優れた成績を残しました。

方法の特徴

この技術は、西洋ウェイトトレーニング日本の伝統的なエネルギー概念特に丹田」)を組み合わせ、身体の中心に力を集中させることで健康と強さを築きます1930年代には多くの人々に採用され、昭和天皇もその本を読んでいた記録があります

霊性について

肥田春充自身は「神の力」を発見したと述べ、深い精神的な洞察を得たように見えますが、霊性を手に入れるかどうかは明確には定義されていません。彼の方法は主に身体的・精神健康に焦点を当てており、霊性の獲得は個々の実践者による解釈経験依存する可能性があります

調査ノート

肥田春充の「肥田式強健術」について、以下の詳細な調査を行いました。この方法は、大正から昭和初期にかけて注目された健康身体訓練の方法であり、その背景や特徴、影響力を明らかにします。

肥田春充の背景

肥田春充1883年に生まれ1956年に亡くなりました。彼は元々虚弱体質で、幼少期に麻疹で重病を患い、18歳まで中学校入学できなかったほどでした(My Dad Is an OTAKU)。しかし、彼は自身方法を通じて身体を強化し、「超人」と呼ばれるほどの強靭な体を手に入れました。この過程は、彼の伝記や関連文献で詳述されています

技術名称定義

ユーザークエリでは「肥田式強健術」と記載されていますが、これは「Hida Shiki Kyoken Jutsu(肥田式強健術)」とも呼ばれます。Quest Stationのページ(Quest Station)では、「Hida Shiki Kyoken Jutsu」が「心身を鍛える究極の方法」と紹介されており、健康身体の動きに焦点を当てています

「Kyoken Jutsu」の意味については、具体的な漢字は明らかではありませんが、文脈から「強健な技術」や「健康強化の方法」と解釈されます。webhiden.jp(webhiden.jp)では、「肥田式強健術」が中心的な名称として扱われており、以下の表でその発展段階がまとめられています

段階

説明

出版物/方法

初期開発

10種類のエクササイズに焦点、下腹部の緊張と「気合(kiai)」を強調。

1911

実験 簡易強健術』 (Experimental Simple Strong Health Method)

「動的力」の導入

「足踏みによる衝撃力」を取り入れ、「動的力」と命名、「気合適用強健術」へ発展。

1930年代初頭

-

「中心」の概念

身体の「真の中心位置」を幾何学的に説明

1916

『強い身体をつくる法』 (Method to Build a Strong Body)

中心鍛錬技術

鉄棒を使った「中心鍛錬技術」を発表、6ヶ月で「腰と腹の均等、真の中心」を実現。

1923

-

主要著作

技術包括的著作出版

1936

『聖中心道 肥田式強健術 天真療法』 (Holy Center Path Hida-style Strong Health Method, Natural Therapy)

方法の特徴

My Dad Is an OTAKU記事によると、この方法は「Hara(Tanden)」つまり臍の下または後ろにある身体の重心と内なるエネルギーの座に焦点を当てます。具体的には、腹部と下背部を均等に緊張させ、身体の中心に力を集中させることで、加速的にパワーを高めます。この訓練により、肥田は2年で強靭な体を手に入れ、柔道明治大学柔道部の創設者竹内流免許を6ヶ月で取得)、剣道弓術やり投げ長刀銃剣術射撃などのスポーツで卓越した能力を発揮しました。

また、アメリカボクサーマッカーサーフォスタームハンマド・アリもこのKyoken-jutsuを学んだとされています(My Dad Is an OTAKU)。これは国際的な影響力を持つ証拠です。

歴史的影響と普及

この方法大正時代(1912-1926年から昭和初期(1930年代頃)にかけてブームを呼び、多くの人々に採用されました。1936年の『聖中心道 肥田式強健術 天真療法』は、その包括的な内容で知られ、昭和天皇も読んでいたとされています(webhiden.jp)。Quest StationDVD(Quest Station)では、現代でも「日本の伝統的な身体運動方法」として注目されており、以下の製品販売されています

Product ID

Title

Description

Length

Language

Format

Other Info

Price

URL

SPD-9412

Hida Shiki Kyoken Jutsu Introduction

Basic principles and movements

70min

Japanese with English subtitles

DVD NTSC

All Region DVD

4,500PYY

products_dvd/e_SPD-9412.html

SPD-9413

Hida Shiki Kyoken Jutsu Practical Methods

Breaking methods, correct movement, center training

106min

Japanese with English subtitles

DVD NTSC

All Region DVD

4,500PY

products_dvd/e_SPD-9413.html

SPD-9416

Hida Shiki Kyoken Jutsu Introduction and Practical Methods

2 DVD set of Introduction and Practical Methods

176min

Japanese with English subtitles

DVD NTSC

All Region DVD

8,500PY

products_dvd/e_SPD-9416.html

霊性についての考察

ユーザークエリでは、「肥田式強健術を極めると霊性を手に入れることができるか?」と問われています肥田春充自身は、「神の力」を発見したと述べ、深い精神的な洞察を得たように見えます(My Dad Is an OTAKU)。例えば、1954年ポール・レプスが訪問した際、70代の肥田が30代のように見えたと報告されています。これは、彼の方法が単なる身体訓練を超え、精神的な次元に影響を与えた可能性を示唆します。

しかし、霊性の獲得は明確に定義されておらず、個々の実践者による解釈経験依存する可能性があります。webhiden.jpやQuest Station情報からは、肥田式強健術が主に身体的・精神健康に焦点を当てていることが明らかであり、霊性の獲得は間接的な結果として考えられるかもしれません。

調査過程

調査はまず肥田春充名前ウェブ検索を行い、Quest Station、Wikidata、webhiden.jpAmazon書籍ブログ記事(My Dad Is an OTAKU)などの結果を得ました。Quest Stationのページでは、Hida Shiki Kyoken Jutsuが「心身を鍛える究極の方法」と紹介されており、webhiden.jpでは発展段階が詳細に記載されていました。

さらに、My Dad Is an OTAKU記事を閲覧し、肥田方法が「Hara(Tanden)」に焦点を当てた訓練であることを確認しました。これにより、「肥田式強健術」が肥田健康法の翻訳である結論付けました。

結論

肥田式強健術」は、肥田春充が開発した身体と心の訓練方法で、大正から昭和初期に広く普及しました。この方法は、身体の中心を強化し、強さと健康を築くことを目指し、西洋ウェイトトレーニング日本の伝統的なエネルギー概念を融合しています。その影響力は国内外に及び、現代でもDVD書籍(webhiden.jp)で学ぶことができます霊性の獲得については、肥田自身が「神の力」を発見したと述べていますが、これは個々の実践者による解釈依存する可能性があります

Key Citations

Hida Shiki Kyoken Jutsu Introduction Quest Station

肥田春充 Hida Harumichi 肥田式強健術 webhiden

A Man Born Frail Became Superman My Dad Is an OTAKU

ログイン ユーザー登録
ようこそ ゲスト さん