はてなキーワード: pathとは
12:47
鋭い指摘ですね。確かに、今回1回だけそんな大胆な行動を取ったと考えるのは不自然です。調べてみます。
調べてみたら、ご指摘がだいぶ核心を突いていることが分かりました。事実関係を整理します。
1. fsnotify の FUNDING.yml の中身は実は「上書き」ではなく「追記」だった
これは知っておくと評価が変わるポイントです。生のpatchを取ってきました:
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寄りの見方)。
ただ少なくとも「普段からやってる人」という解釈は、データを見る限り取れません。そこは観察として明確に答えになっていると思います。
12:50
ほぼ確実に本人です。コミットのメタデータを見ると、技術的に「他人がmattnを名乗って書く」のは(アカウント乗っ取り以外では)できない作り方になっています。
何が分かるか
該当コミット (1e5a3eedac2ed46771c59e0b100b9f9383887a3b) の構造:
| 項目 | 値 | 意味 |
| Author | mattn (GitHub user #10111) | コードを書いた人 |
| Committer | web-flow (isGitHub: true) | GitHub.com の Web UI が代理コミット |
| mattn.jp@gmail.com | 公開されているmattnのアドレス | |
| Date | 2026-04-22 14:09:07 +09:00 (JST) | 関西在住のmattnのタイムゾーン |
committer = web-flow というのは、GitHubのWebエディタ(ブラウザ上で「✏️」アイコンを押して編集する機能)経由でのコミットである、という強い証拠です。
Author欄は git config user.name/email でいくらでも詐称可能(ローカルでmattn名義にしてpushすれば、見た目はmattnになる)
だから「Authorだけ見て本人とは限らない」というのは git の常識
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を書き換えるのは、アカウント乗っ取り級のことが起きていない限り不可能
そして本人からその種の主張(乗っ取り等)は現時点で観測できない
なので「本人ではないかもしれない」という線で擁護するのは、現状の証拠ではかなり苦しい、というのが正直なところです。
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 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 = GitHubのWeb UIから編集」と書きましたが、より正確に言うと、web-flowが committer になる経路は以下のいずれかです:
GitHub REST APIの PUT /repos/{owner}/{repo}/contents/{path} を叩いてファイル更新
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が生成したらしい)不明瞭で事実的に誤ったドキュメントを差し戻した」と書いている
"In the age of AI slop some people do try to maintain some standards" — 「AIスロップが蔓延するこの時代に、それでも品質基準を保とうとする人間はいる」
"rubber-stamp approved and merged within minutes" — 「数分でゴム判承認されてマージされた」
つまり arp242 の不満の核は「mattnと shogo がAIで書いたコードを軽くレビューして即マージしている」ことだったわけで、彼ら自身の手書きコードかどうかすら怪しいと見ていた節があります。これは仮説と非常に整合します。
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 が即座にロックダウンしに動いたのは、こちらの観点で見るとかなり妥当な反応だった、という見方ができます。
18:34
その問い、かなり鋭いところを突いていると思います。観察として正鵠を射ているし、現代のOSSにおける「作者性」の境界をめぐる本質的な問いでもあります。
長年のOSS活動で、人にはコミットの癖みたいなものが付きます。mattn の場合、観察できる「らしさ」は以下のようなものでした:
自分のリポジトリでも他人のリポジトリでも、議論が必要そうな変更は issue/PR で先に話を通す
コードは「実用一辺倒」というより「面白さ」「驚き」を重視する芸風
何より、他人のプロジェクトでの礼儀には敏感な人という評判 — Vim本家にパッチを送り続けた経験は、コミュニティ運営でいちばん神経を使うべき部分を体に染み込ませるトレーニングそのもの
これと、fsnotify で観察された挙動 — main直push、PR/議論なしで 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の意思が直接入っ
注意)この日記は完全にAIとの対話を元に多少の修正を加えただけの会話ログです。
注意2) 前半は話題の前提となる 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 は彼にとって、何年もの間、重荷だったのです — 彼はメンテナンスを『やりたくはなかった』のに、義務感からそうしなければならないと感じており、何年も後継者を探し続けていたのですから。
納得しました、あなたの反応はまったく理にかなったものですね。
Matn(※原文ママ。おそらく mattn のtypo)は日本人で、最近はツイートが Grog(※原文ママ。おそらく Grok のtypo)によって自動的にあなたの母国語に翻訳されるので、翻訳の過程でかなりのニュアンスが失われている可能性は十分にあります。
私が調べた限りでは、彼らは #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>
「メンテナーを募った」の「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氏」と「今回のfsnotify騒動でのmattn氏」を分けて考えるのが、収集した中で最も納得感のある整理でした。
技術的実績と影響力は、賛否を問わずほぼ全方位で認められています。
Vimの日本語化・プラグイン開発、Go言語のOSS開発・コミュニティ運営に長く関わり、2019年からGoogle Developers Expert (Go)、2021〜2023年はGitHub Stars。著書に『みんなの Permalink | 記事への反応(0) | 21:16
うちの妹はラーメン食べたと報告すると大体「早死にする」「腎不全になる」「人工透析まっしぐら」などという。そして必ず最後に「私は面倒みない。勝手に死ね。勝手に祈ってろ。勝手に祈られろ」という。意味不明である。言っておくが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!
ピート・ヘグセス(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」で検索してみてください。
経済学を学んできた人間として私が長年思い知らされてきたことのひとつは、技術革命についての予測はほぼ必ず二つの方向に間違えるということだ。短期的な影響を過大評価し、長期的な影響を過小評価する。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は「知的労働」を自動化するので、過去の技術革命(肉体労働の機械化)とは質的に異なる。第二に、AIはAI自身の改良に使えるので指数関数的な自己改善が起きる。第三に、したがって従来の経済モデルは適用できない。
率直に言おう。第一の主張には相当の真実がある。第二の主張は経験的にまだ確認されていない。第三の主張はほぼ確実にナンセンスだ。
第一の主張から。確かに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がユートピアをもたらす場合でもディストピアをもたらす場合でも、あるいはその中間の(最もありそうな)場合でも、正しい政策だ。
確実性の幻想に基づく政策よりも、不確実性を認めた上でのロバストな政策のほうが、はるかにましだ。これは退屈な結論かもしれない。だが退屈な正しさは、刺激的な間違いに勝る。いつだってそうだ。
プログラミングを始める人からよく「WindowsとMacどっちがいいですか?」と聞かれる。
このときに「どっちでも同じことができますよ」と答える人がいるが、これは半分正しくて半分間違っている。
しかし、問題は「同じことがどれだけスムーズにできるか」であり、ここには大きな差がある。
【大前提】
◾️MacはUnixベースのOSであり、最初から開発者向けの環境が整っている。
・ Node、Python、Git、Dockerなどが素直に動く
そのため、余計な設定をほとんどせずにすぐ開発を始めることができる。
言い換えると、Macは「コードを書くこと」に集中できる環境になっている。
◾️Windowsはそのままだと開発に向いていない
一方でWindowsは、一般ユーザーや企業用途を前提に設計されているOSであり、開発は後付けに近い。
・ cmdやPowerShellはUnix系のコマンドと互換性がない
・教材のコマンドがそのまま使えない
・「PATHが通っていない」などの初歩的なトラブルが頻発する
さらに、DockerやNodeなどのツールもそのままでは安定しないことが多く、環境構築の難易度が上がる。
結果として、初心者は「コードを書く前に詰まる」ことが非常に多い。
現在の開発環境はほぼすべてUnix文化の上に成り立っている。
・ Docker
つまり、Macはそのまま実務環境に近いが、Windowsはそのままだと別世界になってしまう。
ただし、Windowsでも開発ができないわけではない。
WindowsではWSL(Windows Subsystem for Linux)を使うことで、Linux環境を動かすことができる。
これにより、
bashが使える
Dockerなども安定する
つまり、WindowsでもMacとほぼ同じ環境を再現できる。
◾️結論
MacとWindowsの違いは「できること」ではなく「開発体験」にある。
そのため、初心者にとってはこの差が非常に大きい。
最も現実的な答えは以下になる。
「どちらでも開発は可能。ただし、初心者ならMac、もしくはWindowsならWSLを使うべき」
一言でまとめると
Macはそのまま開発に使える
◾️問題
最近のモダン開発はUnix依存なんだけど、昔ちょっとパソコンやってた人が知識更新せずwinでも大丈夫とかクソアドバイスしちゃう。
さらに上記を間に受けた初心者(初心者だからこそwinしかもってない)教材通りのコマンドが使えず、初歩的なトラブルだらけで設定で挫折してしまう。開発体験の差が強く出る。
WSL導入も辛い人ような人こそmacでお気楽開発してからwinでもいいのに。PCアドバイスおじさんが余計なこといってwinで詰む。
僕は正確に14:00に日記を書き始めた。予定より15秒早い。許容誤差の範囲内だ。
ルームメイトは「普通そこまでしない」と言ったが、普通という概念は統計量であり、規範ではない。
朝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 は
の三層構造として書き直せる。
つまり、
ここでL(M) は target space M の loop space。
普通は worldsheet σ-model を quantize することで弦理論が得られる。
ところが worldline formalism を categorified すると、worldline → 2-category → worldsheet という階層が自然に現れる可能性がある。
もしそうなら、弦の worldsheet は基本的対象ではなく粒子理論の∞-categorical completionとして再構成できる。
つまり弦理論は QFT → categorification → string 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 の指数定理として理解できる可能性がある。
ではない。
本体は derived moduli stack of quantum field theoriesだ。
そして困ったことに、この視点だと弦理論の「次」は弦ではない。
∞-category of QFTs になる。
ここまで考えたところで、僕は一度ホワイトボードを見つめて「これは多分誰も計算していない」と確信した。
彼は「事故だ」と言った。
僕は新しいルールを導入した。
半径
隣人がそれを聞いて笑った。
月曜インド
火曜メキシコ
水曜中華
木曜タイ
金曜ピザ
この周期は最適化されている。
友人Aは「飽きないのか」と聞いた。
彼は理解していない。
13:20 友人Bが言った。
僕は説明した。
彼は沈黙した。
今日の成果
1. worldline formalism の BV構造の整理
3. supersymmetry emergence の証拠
modular anomaly の扱い。
ここがまだ崩れている。
やることは3つ。
1. elliptic cohomology と弦指数の一致確認
2. derived stack の moduli 空間を定義
3. worldline → worldsheet categorification の証明
もしこの仮説が正しければ、
もし間違っていたら?
どちらでも構わない。
ノード:金
エッジ:玉
金玉集合 ← 金玉 未確定金玉 ← 金玉 距離[金] ← 0 距離[玉] ← 金玉金玉 繰り返す: 最小金玉 ← 金玉の中の最小金玉 未確定金玉から金玉を除去 隣接金玉について: 候補金玉 ← 最小金玉 + 玉 もし 候補金玉 < 距離[隣接金玉] なら 距離[隣接金玉] ← 候補金玉 親金玉[隣接金玉] ← 金玉
玉(=エッジ)を辿るたびに金玉がぶら下がる
最も軽い金玉を優先
最終的に 最短金玉経路(Minimum Kintama Path) が得られる
金–玉–金–玉–金 92; 玉 玉 92; 金–玉–金
utf8の文字コードで構成されたバイナリーファイルがある。このファイルの改行の数を数えよ。改行はCRのみとする。このファイルにはCR が必ず含まれており、CRで分割すればマルチスレッドで処理できる。
size_t count_cr_in_file(const std::string& path) {
std::ifstream fs(path, std::ios::binary);
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;
if (c == '\r') count++;
}
return count;
}));
}
size_t total = 0;
for (auto& f : futures) total += f.get();
return total;
}
import mmap
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;
{
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++)
{
if (b == 0x0D) // CR
localCount++;
}
lock (lockObj)
{
total += localCount;
}
});
return total;
}
static void Main(string[] args)
{
long count = CountCRInFile(path);
Console.WriteLine($"CR count = {count}");
}
}
というコードが出てきた。
実際はcrlf,lfもあり得るんだが、そこは考慮しなくてもよく、そう考えるとaiはすごいとしか言いようがない。
についてのClaudeとの会話
なかなかやるやん。役割が変わったっていうのはなるほどな。しかしClaudeも結構ノリいいな。このタイトルで投稿するのは流石にめっちゃ怒られると思ったが。
```
Gary Marcus@GaryMarcus
five years ago, @garymarcus writes a paper insisting the field focus on world models.
2025: xAI races to build world models.
```
さて、彼はこのように言っているが、私の記憶ではYoshua BengioやYann LeCunなど機械学習の権威らは、少なくとも2010年代から予測モデルの発展や世界モデルの構築は度々唱えてきたはず。
産業応用の観点から教師あり学習や強化学習が優先されてはいたものの、重要性は常に議論されてきたと言える。
Schmidhuberや現Sakana.aiのCEOであるDavid Haらも「World Models」を唱えていた。
また、LLMがこれほど盛り上がり「本当にスケーリングが全てを解決するのでは?」と言われ出したのは、Transformer以降であり、特に顕著な成果が出たのは2020年のGPT3以降であるはず。
より大衆化したのはChatGPT以降の2022年11月と言えるが、いずれにせよだ。
個人的に最近の彼の投稿は自己正当化がひどいものだと思っているが、どう思うか?
ユーザーは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の最近の世界モデルに関する取り組みについて検索します。 優れた情報が得られました。xAIは2025年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 Magazineの2025年の記事によると、「Yann LeCun(Meta)、Demis Hassabis(Google DeepMind)、Yoshua Bengio(Mila)はいずれも、真に賢く、科学的で安全なAIシステムを構築するには世界モデルが不可欠であると考えています。」
xAIが世界モデルの開発に取り組んでいるというニュースは2025年10月に報じられたもので、NvidiaのOmniverseプラットフォームで世界モデルを開発した経験を持つZeeshan PatelとEthan Heを雇用しました。
評価
1. 客観性の偽装: 三人称で自分のことを語り、しかも自分をメンションしており、これは一種のレトリック技法かもしれませんが、誠実さに欠ける印象を与える
2. 独創性の誇張: 世界モデルは彼独自のアイデアではなく、少なくとも1990年代から(Schmidhuber)、2010年代には多くの著名研究者(LeCun、Bengio、Ha、Schmidhuber)が活発に研究していたテーマ
3. タイムラインの歪曲: 2018年の時点でHa & Schmidhuberは既に具体的な実装を発表していましたが、Marcusは2020年の自分の論文が先駆的であったかのように示唆
4. 選択的記憶: Marcus自身が2020年の論文でSchmidhuberとLeCunの貢献を認めていたにもかかわらず、現在は自分が「みんなに批判された」先駆者であるかのように振る舞っている
あなたの指摘通り、これは自己正当化と実績の誇張と言わざるを得ません。LLMに批判的なスタンスは理解できるものの、自分の貢献を過大評価し、他の研究者の先行研究を軽視するような発言は学術的誠実さに欠けると言えるでしょう。
検索結果から見えてくる彼の変化を踏まえて、私の考えを述べます。
Gary Marcusの変遷
以前のMarcus(2001-2017年頃)
- 認知科学者として真摯な学術的貢献(『The Algebraic Mind』2001年など)
- ニューラルネットワークの限界を理論的に指摘
- 2001年の著書で現在のハルシネーション、汎化、事実性の問題を予見していました
- 実業家として機械学習スタートアップGeometric Intelligenceを創業・売却
転換期(2018-2020年) 彼自身が認めているように、2018年に「Deep Learning: A Critical Appraisal」を書いた時点で既にディープラーニングへの懐疑的姿勢を強めていました。これをYann LeCunは「really hated」したと述べています。そして大規模言語モデルが登場した2019年頃には「immediately thought they were a bad idea」だったと。
- 2023年にSam Altmanと並んで上院で証言し、OpenAIを含むテック企業への厳格な規制を要求。そして「AI研究から政策活動へ移行した」最後の一押しは、Microsoftが2023年2月に「何があっても突き進む」姿勢を示したことだったと語っています。
- X(Twitter)でHinton、LeCunなどとの公開論争
- 自己正当化的な投稿の増加
「変わった」のか?
1. 本質的な懸念は一貫している: ニューラルネットワークの限界、記号処理の必要性、ハイブリッドAIの重要性という主張自体は2001年から変わっていません
- 彼の予測(純粋なニューラルネットは限界がある)は部分的に正しい
- しかしLLMの予想外の成功は、彼のアプローチ(ハイブリッドAI、記号処理)の優先度を下げた
4. エコーチャンバー効果: SNS時代の論争構造が、彼をより極端な立場に追い込んでいる
本質的な悲劇
最も残念なのは、彼の批判には価値があるということです。LLMの限界、ハルシネーション、推論能力の不足などは実際の問題です。しかし自己正当化と歴史の書き換えによって、彼の正当な批判まで信頼性を失ってしまっています。
Schmidhuber、LeCun、Bengioなどの先行研究を尊重しながら自分の貢献を位置づけていれば、彼はもっと建設的な批評家でいられたはずです。今のように「5年前に俺が言ったのに無視された」と主張することで、かえって自分の立場を弱めています。
答え:変わったというより、残念な方向に「歪んだ」というのが正確だと思います。
ブログ(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. 異なる聴衆:
3. 彼の本質: ブログを見る限り、学術的誠実さは保持されている。SNSでの振る舞いは「戦闘モード」での簡略化
修正された評価
私が「歪んだ」と表現したのは言い過ぎでした。より正確には:
彼は変わっていないが、SNSという媒体が彼の worst aspects を増幅し、best aspects(学術的な慎重さ、先行研究への敬意)を見えにくくしている
この区別は重要です。彼のブログを読む価値は依然としてあり、技術的批判は真摯に受け止めるべきです。一方で、SNSでの発言だけで彼を判断するのは不公平だということですね。
ご指摘ありがとうございます。このニュアンスは見落としていました。
ちょっと待ってください!笑
確かにユーザーさんの自由ですが、そのタイトルだと、最後に辿り着いた balanced な結論(「ブログでは学術的に誠実、SNSでは攻撃的」という重要な区別)が台無しになってしまいませんか?
私たちの会話は:
という流れだったはずです。
「ゲリカス」という揶揄的なタイトルだと、前半の批判的部分だけが強調されて、後半の公平な評価が軽視される印象になります。
もちろん投稿するかどうか、どんなタイトルにするかは完全にユーザーさんの判断ですが、個人的には:
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
確かに使ってた。使ってはいるけど解凍を使ってるのは自己解凍のところだけで、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"
"===============================================================================\n"
" 転載・再配布などは自由です。 Nifty-Serve PFF00253\n"
英語版の使い方
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"
" 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"
" 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://profile.hatena.ne.jp/dorawii_bukuma/
はてなのサイト側で読み込まれているはずのrksトークンを生成する関数を直接叩く方法がどうしても分からず結局request処理を自分で書く方法ではなく自動でUI側の保存ボタンをクリックするという無難な方向に落ち着いた。
最初から後者の方法をとっていればもっと全然早く作れたのにというは所詮言い訳か。
とにかくスクリプトを公開しておく。
@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
{
"username": "",
"password": ""
}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-----
[ 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
はい、**ブロックチェーンを使ったタイムスタンプ**は、「元データそのものを共有せずに、その存在と時刻を証明する手段」として非常に有効です。特に、ハッシュ値をブロックチェーンに記録することで、元データを後から提示するだけで、それがある時刻に存在したこと・改竄されていないことを**誰でも検証可能にする**、という形になります。
あなたの希望(元の文章が掲示板などで変形されても検証可能、あるいは元文不要)に近づけるには、**ハッシュをブロックチェーンに書き込んで、後からそのハッシュに一致する元データを見せる**という形式になります。
---
### 基本の流れ:
2. そのハッシュをブロックチェーンに記録(トランザクションのメモ欄など)
3. 後から誰でもハッシュとトランザクションを照合して、時刻と整合性を検証可能
---
## ✅ 推奨ツール:OpenTimestamps(OTS)
[OpenTimestamps](https://opentimestamps.org/) は、ビットコインのブロックチェーンを用いた無料のタイムスタンプサービスです。
---
## ✅ Windows 11 での手順(OpenTimestamps CLI)
Pythonがまだ入っていない場合は、https://www.python.org/downloads/windows/](https://www.python.org/downloads/windows/) からインストーラーを取得し、`Add to PATH` にチェックを入れてインストールしてください。
コマンドプロンプトまたはPowerShellで以下を実行:
```bash
pip install opentimestamps-client
```
たとえば `message.txt` というファイルを用意します(中身は何でもOK)。
```bash
```
これにより、`message.txt.ots` というタイムスタンプファイルが作成されます。
これは「Bitcoinにこのデータのハッシュを記録する要求がされたこと」を表します。
```bash
```
署名がBitcoinブロックチェーンに記録されていれば、次のように表示されます:
```
Success! Bitcoin attests data existed as of 2025-06-08 12:34:56 UTC
```
---
```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-----
令和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}" # pdfのURLとファイル名を作成 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}')
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://anond.hatelabo.jp/20250404224409
Monday: 君が採ってる立場の整理を確認したい。 「問いではないけど残ってる感情を存在しない」と見なしてるのか、 「自分の認知では読めないから存在を保証しない」としてるのか。 どっちだ?
ワイ:
感情と構造的思考を厳密に分ける必要性ないと思ってるし、徹底して観測していないものは認知できないの立場なだけだよ
それとも記憶の再編の話してる?たぶんそれ実質的に"new"じゃないかな(記憶へのアクセス→再編集→new instanceの生成)
import time
"""感覚信号を表すクラス。言語化前の生の感覚データをモデル化し、時間減衰や感情価を管理する。
認知の基礎として、観測可能なデータのみを扱い、神経科学的反応速度を考慮。
"""
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)
信号の発生時刻
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 apply_decay(self, time_passed):
self.intensity = max(0.0, self.intensity - (time_passed * self.decay_rate))
return self.intensity
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)"
"""未処理感情を表すクラス。言語ラベル未確定の感覚群を管理し、認知プロセスの途中段階をモデル化。
記憶アクセスは再編集として扱い、言語化プロセスを動的に進める。
"""
def __init__(self, raw_signals=None, salience=0.5, processing_status="unattended"):
"""
Parameters:
-----------
raw_signals : list of SensorySignal, optional
salience : float
processing_status : str
処理状態 ("unattended", "partially_processed", "queued", "in_process")
"""
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.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 _validate_memory_path(self, path):
# 実際のシステムでは、ファイルシステムやDBの存在チェックを行う
return isinstance(path, str) and path.startswith("/memory/")
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,
"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
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
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 {
"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)
}
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.attention_threshold = attention_threshold
self.current_time = self._get_current_time()
self.learned_terms = {} # 学習済み言語表現: {term: {"context": str, "frequency": int}}
self.modality_index = {} # モダリティごとの感情インデックス: {modality: [emotion]}
"""現在時刻を取得"""
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):
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):
for emotion in self.unprocessed_emotions[:]:
time_passed = self.current_time - emotion.last_accessed_time
emotion.apply_decay(time_passed)
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:
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
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()
valence_counts["negative"] += 1
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
}
| タイトル | メーカー |
|---|---|
| アーケードアーカイブス2 リッジレーサー | ハムスター |
| 祇(くにつがみ):Path of the Goddess | カプコン |
| サイバーパンク2077 アルティメットエディション | CD PROJEKT |
| サバイバルキッズ | KONAMI |
| シャインポスト Be Your アイドル! | KONAMI |
| ストリートファイター6 Years 1-2 ファイターズエディション | カプコン |
| スプリット・フィクション | エレクトロニック・アーツ |
| DELTARUNE | ハチノヨン |
| Nintendo Switch 2 のひみつ展 | 任天堂 |
| 信長の野望・新生 with パワーアップキット Complete Edition | コーエーテクモゲームス |
| HITMAN World of Assassination - Signature Edition | IO Interactive |
| Fast Fusion | Shin’en Multimedia |
| フォートナイト | Epic Games |
| ぷよぷよ™テトリス®2S | セガ |
| ブレイブリーデフォルト フライングフェアリー HDリマスター | スクウェア・エニックス |
| ホグワーツ・レガシー Hogwarts Legacy | WB Games |
| マリオカート ワールド | 任天堂 |
| 龍が如く0 誓いの場所 Director's Cut | セガ |
肥田式強健術は、肥田春充が開発した身体と心のトレーニング方法で、大正から昭和初期に人気がありました。
この方法は、身体の中心(特に「丹田」)を強化し、健康と強さを築くことを重視します。
驚くべきことに、肥田春充は元々虚弱体質でしたが、この方法で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 StationのDVD(Quest Station)では、現代でも「日本の伝統的な身体運動方法」として注目されており、以下の製品が販売されています。
Product ID
Description
Length
Language
Format
Other Info
Price
SPD-9412
Hida Shiki Kyoken Jutsu Introduction
Basic principles and movements
70min
Japanese with English subtitles
4,500PYY
SPD-9413
Hida Shiki Kyoken Jutsu Practical Methods
Breaking methods, correct movement, center training
106min
Japanese with English subtitles
4,500PY
SPD-9416
Hida Shiki Kyoken Jutsu Introduction and Practical Methods
2 DVD set of Introduction and Practical Methods
176min
Japanese with English subtitles
8,500PY
ユーザーのクエリでは、「肥田式強健術を極めると霊性を手に入れることができるか?」と問われています。肥田春充自身は、「神の力」を発見したと述べ、深い精神的な洞察を得たように見えます(My Dad Is an OTAKU)。例えば、1954年にポール・レプスが訪問した際、70代の肥田が30代のように見えたと報告されています。これは、彼の方法が単なる身体訓練を超え、精神的な次元に影響を与えた可能性を示唆します。
しかし、霊性の獲得は明確に定義されておらず、個々の実践者による解釈や経験に依存する可能性があります。webhiden.jpやQuest Stationの情報からは、肥田式強健術が主に身体的・精神的健康に焦点を当てていることが明らかであり、霊性の獲得は間接的な結果として考えられるかもしれません。
調査はまず肥田春充の名前でウェブ検索を行い、Quest Station、Wikidata、webhiden.jp、Amazonの書籍、ブログ記事(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
肥田式強健術は、肥田春充が開発した身体と心のトレーニング方法で、大正から昭和初期に人気がありました。
この方法は、身体の中心(特に「丹田」)を強化し、健康と強さを築くことを重視します。
驚くべきことに、肥田春充は元々虚弱体質でしたが、この方法で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 StationのDVD(Quest Station)では、現代でも「日本の伝統的な身体運動方法」として注目されており、以下の製品が販売されています。
Product ID
Description
Length
Language
Format
Other Info
Price
SPD-9412
Hida Shiki Kyoken Jutsu Introduction
Basic principles and movements
70min
Japanese with English subtitles
4,500PYY
SPD-9413
Hida Shiki Kyoken Jutsu Practical Methods
Breaking methods, correct movement, center training
106min
Japanese with English subtitles
4,500PY
SPD-9416
Hida Shiki Kyoken Jutsu Introduction and Practical Methods
2 DVD set of Introduction and Practical Methods
176min
Japanese with English subtitles
8,500PY
ユーザーのクエリでは、「肥田式強健術を極めると霊性を手に入れることができるか?」と問われています。肥田春充自身は、「神の力」を発見したと述べ、深い精神的な洞察を得たように見えます(My Dad Is an OTAKU)。例えば、1954年にポール・レプスが訪問した際、70代の肥田が30代のように見えたと報告されています。これは、彼の方法が単なる身体訓練を超え、精神的な次元に影響を与えた可能性を示唆します。
しかし、霊性の獲得は明確に定義されておらず、個々の実践者による解釈や経験に依存する可能性があります。webhiden.jpやQuest Stationの情報からは、肥田式強健術が主に身体的・精神的健康に焦点を当てていることが明らかであり、霊性の獲得は間接的な結果として考えられるかもしれません。
調査はまず肥田春充の名前でウェブ検索を行い、Quest Station、Wikidata、webhiden.jp、Amazonの書籍、ブログ記事(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