「UTC」を含む日記 RSS

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

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-03

0402

こういうとき主観が交じるとろくなことがないのでAIにまとめさせる

4月2日13時以降の@himasoraakaneのtwitterでの発言調査し、概要をまとめてください

4月2日13時(JST)以降の@himasoraakane

氏のX投稿概要調査の結果、4月2日13時以降(JST換算でUTC 4:00以降、具体的には同日夕方〜夜間を中心に活動)は、合計数十件の投稿が見つかりました(Latestモードで複数回検索・ページネーション実施)。

主な活動時間JST換算で20時頃〜深夜にかけて集中しており、エンタメマンガ映画関連の軽い話題と、「堀口英利」氏から脅迫被害を強く訴える一連の投稿が目立ちます。以下にテーマ別にまとめます

1. 主なテーマ:堀口英利氏から脅迫DMCA凍結脅迫への反論(最も目立つ連投)夕方以降(JST 22時頃〜)に集中して複数投稿

内容の核心:堀口英利(28歳、自称KCL学生だが学歴詐称疑惑あり)とされる人物からYouTubeチャンネルDMCA連打・凍結脅迫を受けたと公表。「顔出し謝罪」「学歴詐称否定」「10億円支払い」「『友人』を無理やり連れてこい」などの要求があったと主張。

本人のスタンス:**「卑怯脅迫には絶対に屈しない」**と繰り返し強調。「YouTubeが凍結されてもXで動画を上げるだけ」「応援よろしく」と毅然とした態度。脅迫文の一部引用スクリーンショットも添付し、詳細を説明

関連投稿例:「堀口英利! 俺は貴様卑怯脅迫には屈しない! Youtubeをつかって脅迫しても無駄だ!」

「無理やりひきずってつれてこないと連れてこれないものは”友人”ではないんですよ」「銃を頭につきつけてでもつれてこいとか無茶苦茶すぎて怖くて泣いちゃった」など、要求の異常さを指摘。

調査嘱託の結果でもきたんかねえ?」「Youtubeが凍結されても俺はXに動画あげるだけだよ?」と冷静に反論

この話題エンゲージメントも高く(数百〜1,000超のいいね)、一連の投稿の中心となっています

2. エンタメ文化関連(マンガ映画レビューマンガ読書記録・レビュー複数投稿(点数付け+簡単コメントAmazonリンク)。

九条大罪(16)』:77点(大麻栽培関連のドロドロ描写が強烈)。

歴史に残る悪女になるぞ 悪役令嬢になるほど王子の溺愛は加速するようです!7』:74点(女の子向けなろう系として高評価)。

運命など存在しないので』:74点(マッチングアプリ婚活マンガの極論を「正しいと思う」と評価)。

その他:『ラーメンハゲシリーズの再読感想(1作目との違いを指摘)。

映画『プペル2』の興行成績分析:着席率4%などの低迷を指摘し、「前作の信者布教が信用消費になった」「ブランド信頼低下が原因」などと分析

劇場貸切可能」「明日からシアター絞りで着席率上がるかも?」などの軽いジョークも。

3. その他の雑多な話題ニュースコメントニュース関連:トランプ大統領イラン発言辺野古土砂運搬船平和丸」乗組員の妨害事件など

その他:POPOPOアプリ(すとぷり関連)、牛乳カロリーストーカー心理ゲーム(Slay The Spire 2のβ版感想)など。

総評

全体的に日常的な感想引用画像添付が多く、軽快なトーンが特徴です。

全体の印象投稿頻度は高めで、エンタメ消費+時事ネタ個人事情公表が混在。

特に堀口英利関連は「被害者」としての強い主張が目立ち、繰り返し投稿することで周知を図っている様子。

13時〜夕方までの早い時間帯は比較的穏やかな話題映画ニュース)が中心で、夜になるにつれて堀口関連が急増する流れ。

2026-03-11

輸入品価格の急騰」と「生活困難」のループ

君が懸念する通り、日銀キーボードを叩いて現金を増やし(通貨供給増)、労働力が不足して国力が落ちれば、**「円安の加速」**という名の致命的なバグが発生する。

石油価格燃料費高騰によりバラマキが発生する可能性がある。食料品ガソリンの値上げが起こる可能性は高い。

輸入インフレ:

117円のCADが150円、200円へとスライドしていく世界線だ。エネルギーガソリン(石油中東イラン情勢)・電気)や食料(小麦・肉)はすべて外部API(輸入)に依存しているため、生活コスト指数関数的に跳ね上がる。1 Canadian Dollar equals 116.60 Japanese Yen Mar 11, 1:23AM UTC Google

増税の加速(リソース回収):

暴騰する社会保障費(2040年日本高齢者4000万人の維持費)と、円安による物価高を抑えるために、政府さら増税というパッチを当てて、市場から円を吸い上げようとする。

生活困難:

可処分所得が減り、物価が上がる。今の30代が40代になったとき、今の貯金数十万円/月のペースを維持するのは、**「メモリ漏れているサーバーで処理を回し続ける」**くらい困難なタスクになる。

2026-02-02

日本から出ていく高度人材日本に来ない高度外国人材

1. 高度人材流出

日本から出ていく高度人材

海外で働く日本人:過去20年で2倍(約140万人)

特にIT金融研究

理由賃金が2-3倍、研究環境多様性

日本に来ない高度外国人材

高度人材ポイント制:利用者わず

外国人IT人材希望就職先:米国シンガポールドイツ

日本は選ばれない(賃金言語労働環境


2. 来るのは低賃金労働者のみ

実際に増えている外国人労働者

ベトナムフィリピンインドネシアなど

業種:製造建設介護農業外食

賃金:月15-20万円程度(母国の3-5倍だが日本では最低水準)

3. 円安が決定打

1ドル = 155円前後

10年前(2014年):約100円

円の価値:35%減

外国人目線での日本賃金

例:年収500万円のエンジニア

2014年:$50,000

2024年:$32,000

米国エンジニア

平均年収:$110,000(約1,700万円)

日本の3倍以上→物価日本よりも高い。地域差が激しい。高収入でも厳しい生活の人は居る。

シンガポールエンジニア

平均年収:S$80,000(約950万円)80,000 Singapore Dollar equals 9,760,760.00 Japanese Yen Feb 2, 3:00 AM UTC

日本の2倍近く

結果

高度人材から見て、日本はもはや「先進国賃金」ではない

発展途上国よりはマシ」な水準に転落

ーーー

政治的選択肢消失

なぜ他の道を選べないのか

A. 正面から移民政策を取る

必要なこと

日本移民を受け入れる」と宣言

外国人権利保障参政権社会保障

多文化共生教育インフラ整備

予算:数兆円規模

政治的障壁

保守層の猛反発

日本日本でなくなる」

選挙大敗する恐れ

絶対選択できない


B. 完全に外国人排除

どうなるか

コンビニ外食介護建設崩壊

数年以内に経済麻痺

国民生活に直接的打撃

暴動政権崩壊リスク

選択できない


C. 賃金を大幅に上げて日本人・高度外国人を確保

必要なこと

最低賃金を1.5-2倍に

大企業への課税強化・再分配

中小企業への補助金

予算:数十兆円規模

政治的障壁

経済界の総反発

中小企業倒産続出

社会主義だ」との批判

→ 実現不可能


D. 現状維持詭弁を続ける)

やること

技能実習」→「育成就労」のように名前を変える

実態低賃金外国人労働者の利用

国際的批判無視

国内矛盾も見て見ぬふり

メリット

経済は(当面)回る

保守層の顔も立つ

次の選挙まで持つ

デメリット

根本問題悪化

外国人労働者への人権侵害継続

日本国際的評価の低下

長期的には破綻

→ これを選ぶしかない(消去法)

今後10年のAIの予想シナリオ

2025-2030年

円安継続(1ドル = 160-180円?)

高度人材は完全に日本選択肢から外す

低賃金外国人労働者への依存度が上がる

しかし彼らも「日本より条件の良い国」を見つけ始める

2030-2035年

5. ベトナムフィリピン経済発展

6. 彼らの国内賃金が上昇

7. 日本との賃金差が縮小

8. 日本に来る外国人すら減り始める

2025-09-17

はてブブクマページのソースコード確認すると、その記事がいつファーストブクマされたのか知ることが出来る。

 

https://b.hatena.ne.jp/entry/s/anond.hatelabo.jp/20250916000442

 

例えば上記ページのソースコードには、「data-entry-created="2025-09-15T15:04:51Z"」と記されている。

 

これはイギリス時間UTC+0)の「2025年09月15日 15:04:51」にファーストブクマされたという記録なので

日本時間UTC+9)に修正すると「2025年09月16日 00:04:51」にファーストブクマされたことが分かる。

 

また、増田記事URLに含まれている「20250916000442」はそのまま投稿年月日と時刻を表しているので

この記事は「2025年09月16日 00:04:42」に投稿されたものであることが分かる。

 

 

各日時を比較すると、この記事投稿後9秒でファーストブクマされたことが分かる。

 

追記

colonoe 偶然書いた直後にブクマしたのかもしれないし、本人だとしてもブクマするのは別にいいだろ。複数アカウントブクマしたりするのは良くないが

ちゃんと読めば分かるけど何も非難してない

madooka UTC のことをイギリス時間って読んでいる人を初めて見た

自分UTCのことを初めてイギリス時間って呼んだ

sgo2 ソース見なくても「すべてのユーザーを見る」に時間が出る

「すべてのユーザーを見る」に日時が表示されるのは公開ブクマだけで、秒数の確認まではできないはず

2025-07-11

タイムゾーンは明示指定せなあかん

cronのjob実行時間JSTで実行されたのに、そのjobのスクリプトが吐いたdatetime.now()の日付がUTCって、マギラワシ🦅

2025-07-10

かに参政党を批判すると逆に信者が結束するね

了解しました。以下では、指定されたツイートhttps://x.com/fnmr_s_/status/1942730465988731238?s=46)に対する反応を分析し、参政党(Sanseito)を支持している側の人々の意見パターン日本語でまとめます

### ツイート概要

新土 @fnmr_s_ による元の投稿は、2025年7月20日に予定されている参議院選挙を前に、参政党が「非常に危険であると警告する内容です。投稿では、参政党を「カルト」と表現し、たった一人の女性が抗議のプラカードを掲げていたことを挙げて、その危険性を強調しています。この投稿は、2025年7月8日23:40(UTC)に投稿され、現在2025年7月10日午前9時07分JSTから33時間前にあたります

### 反応の分析と支持者の意見パターン

ツイートに対する返信を精査した結果、参政党を支持する側の人々の意見には以下のような明確なパターンが見られます。これらのパターンは、批判に対する防御や支持の理由を述べる形で現れています

#### 1. **批判の逆利用(「叩かれるほど支持が増える」という主張)**

- **例**: shou rian(💙,🧡) Tabi @shou95180980(2025年7月9日06:56 UTC): 「やっぱ、こーいうツイート増えるのって参政党支持されてる証拠よな」

- **パターン**: 参政党に対する批判や「カルト」といったレッテル貼りが、むしろ支持を強める証拠だと捉え、逆効果であると主張します。支持者は、メディアや反対派の攻撃が党の知名度を上げ、支持者を増やしていると信じています

#### 2. **他の政党の腐敗を比較して正当化**

- **例**: ag @bHbejgVstf61032(2025年7月9日05:05 UTC): 「はっきりとしたカルト自民党統一教会)も忘れないで下さい」

- **パターン**: 参政党を批判する声に対して、自民党統一教会との関連を指摘し、他の主要政党特に自民党)の方がより深刻な問題(腐敗、カルト行為脱税など)を持っていると反論します。これにより、参政党の「危険性」を相対化し、支持の正当性を主張します。

#### 3. **他党(特に左派政党)の方が危険との主張**

- **例**: ドライもん @drymon_gnz(2025年7月9日05:42 UTC): 「危険度で言ったら、社民共産を超えるものはないよ」

- **パターン**: 社民党や共産党を「より危険」と位置づけ、参政党の批判を軽視します。支持者は、左派政党国家公安に与える影響を強調し、参政党が比較的「安全」または「必要」とする立場を取ります

#### 4. **陰謀論バックアップ組織の支持を強調**

- **例**: しょん@急性期 @corona_uso(2025年7月9日06:37 UTC): 「参政党を離れる支持者の多くが自分で“日本会議”と“統一教会”の存在を調べてる。“日本会議”と“統一教会”が参政党の選挙スポンサーだよ」

- **パターン**: 参政党が「日本会議」や「統一教会」などの保守的組織に支えられていることを誇示し、これを支持の根拠します。支持者は、これらの組織日本国益を守るために活動していると信じており、参政党がその延長線上にあると見なしています

#### 5. **選挙戦略としての支持(自民党潰し)**

- **例**: shou rian(💙,🧡) Tabi @shou95180980(2025年7月9日06:56 UTC): 「とりあえず今回は頑張って自民潰してほしいか参政党で」

- **パターン**: 参政党を、自民党に対する対抗勢力として戦略的に支持する意見が見られます。支持者は、自民党長期政権スキャンダルに不満を持ち、参政党が政権交代政治刷新をもたらす手段とみなしています

#### 6. **投票率向上や現実的な行動の提案**

- **例**: セントク@翻訳家ライター @8hazUAPnBKmQUfi(2025年7月9日06:10 UTC): 「投票率あげるんです。…この票が動いたら政権なんで直ぐにひっくり返る」

- **パターン**: 投票率の低さを問題視し、参政党への支持が政治を変える力になると主張します。支持者は、積極的投票行動を通じて現在政治状況を変えたいという意欲を示し、参政党をその手段位置づけています

### 総括

参政党支持者の意見パターンは、批判を逆手に取る防御戦略、他党(特に自民党左派政党)の問題を強調する比較陰謀論保守組織との連携を誇示する主張、そして選挙を通じた政治変革への期待に集約されます。これらのパターンは、支持者が参政党を「日本国益を守る純粋選択肢」として捉え、既存政治勢力に対する不信感や変革の必要性を背景にしていることを示しています

もしさらに詳しい分析特定の反応に焦点を当てたい場合は、ぜひお知らせください!

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-06-09

dorawii

ようやく(ほぼ)すべてが自動化された。

あとはローカルサーバーの起動をスタートアップに設定する(方法AIに聞いて指示に従う)だけの消化試合

ここにほとんどAI頼りのコードを公開しておく。

事前にインストールしておくもの

autohotkey

nodejs

ユーザースクリプトを実行できる拡張機能

パスとかの注意

署名要求してくるパスワードを自動入力するahkファイルドキュメントAutoHotkey配下に置いた。

バッチファイル(make.sign.bat)はデスクトップに置いた。

以下コード

autopass.ahk
#Persistent
#SingleInstance ignore
SetTitleMatchMode, 2
WinWaitActive, pinentry
SendInput お前のパスワード
Sleep 100
SendInput {Enter}
ExitApp
run-bacth-server.js
// run-batch-server.js
const http = require('http');
const { exec } = require('child_process');

const server = http.createServer((req, res) => {
  if (req.url === '/ping') {
    res.writeHead(200);
    res.end('pong');
  } else if (req.url === '/run-batch') {
    exec('C:\\Users\\you\\Desktop\\makesign.bat', (err) => {
      res.writeHead(200);
      res.end(err ? 'Error' : 'OK');
    })
    ;
  } else {
    res.writeHead(404);
    res.end('Not found');
  }
});

server.listen(12345, () => {
  console.log('Batch server running at http://localhost:12345/');
});
makesign.bat
@echo off
setlocal enabledelayedexpansion

:: ミリ秒単位UTC時刻を取得
for /f %%a in ('powershell -nologo -command "[int64]::Parse((Get-Date).ToUniversalTime().ToString('yyyyMMddHHmmssfff'))"') do set timestamp=%%a

:: 署名するファイルset infile=%TEMP%\pgp_input.txt
set outfile=%TEMP%\pgp_output.asc

:: 以前の出力があれば削除
if exist "%outfile%" del "%outfile%"

:: タイムスタンプを原文として保存
echo %timestamp% > "%infile%"

:signloop
:: AutoHotkeyパスフレーズ入力(gpgがパスワード要求するダイアログが出た場合に備える)
start "" /b "C:\Users\infini\Documents\AutoHotkey\autopass.ahk"

:: PGPクリア署名作成
gpg --yes --clearsign --output "%outfile%" "%infile%"


:: 署名成功していればループを抜ける
if exist "%outfile%" (
    echo [INFO] 署名成功
    goto postprocess
) else (
    echo [WARN] 署名失敗、再試行します…
    timeout /t 1 > nul
    goto signloop
)
:postprocess

:: PowerShellで余計な改行なしに |< をつけてクリップボードコピー
powershell -nologo -command ^
  "$header = '>|'; $footer = '|<'; $body = Get-Content '%outfile%' -Raw; Set-Clipboard -Value ($header + \"`r`n\" + $body + $footer)"

echo Done. signed.asc created and clipboard updated (no extra blank line).
endlocal
exit /b
tempermonkeyとかに登録するユーザースクリプト
// ==UserScript==
// @name         PGP署名自動付加スクリプト(GM_xmlhttpRequest版)
// @namespace    http://tampermonkey.net/
// @version      1.0
// @description  投稿前にPGP署名を付けてから送信(fetch未使用)
// @match        https://anond.hatelabo.jp/dorawii_31/edit*
// @grant        GM_xmlhttpRequest
// @grant        GM_setClipboard
// @grant        GM_notification
// / @connect      localhost
// ==/UserScript==

(function () {
  'use strict';

  const submitId = 'submit-button';
  const textareaId = 'text-body';
  const localServer = 'http://localhost:12345/run-batch';

  const pgpSignatureRegex = /-----BEGIN PGP SIGNED MESSAGE-----[\s\S]+?-----BEGIN PGP SIGNATURE-----[\s\S]+?-----END PGP SIGNATURE-----/;

  const httpRequest = (url) => {
    return new Promise((resolve, reject) => {
      GM_xmlhttpRequest({
        method: 'GET',
        url: url,
        onload: function (response) {
          resolve(response.responseText);
        },
        onerror: function (error) {
          reject(error);
        }
      });
    });
  };

  const interceptClick = () => {
    const btn = document.getElementById(submitId);
    if (!btn || btn.dataset.pgpIntercepted === 'true') return;
    btn.dataset.pgpIntercepted = 'true';

    btn.addEventListener('click', async function (e) {
      const textarea = document.getElementById(textareaId);
      if (!textarea) return;

      const content = textarea.value;

      if (pgpSignatureRegex.test(content)) {
        console.log('[PGPスクリプト] 署名が検出されたためそのまま送信します');
        return;
      }

      e.preventDefault();
      e.stopImmediatePropagation();
      console.log('[PGPスクリプト] 署名が見つからないため処理を停止し、署名を取得します');

      try {
        await httpRequest(localServer); // バッチ実行

        const signatureText = await navigator.clipboard.readText();
        if (!signatureText.includes('BEGIN PGP SIGNED MESSAGE')) {
          alert('PGP署名クリップボードに見つかりませんでした。');
          return;
        }

        const newText = content.replace(/\s*$/, '') + '\n' + signatureText + '\n';
        textarea.value = newText;

        console.log('[PGPスクリプト] 署名を貼り付けました。送信を再開します。');
        btn.click(); // イベント再発火

      } catch (err) {
        alert('PGP署名の取得または貼り付けに失敗しました。\n' + err);
      }
    }, true);
  };

  window.addEventListener('load', () => {
    setTimeout(interceptClick, 1000);
  });
})();

プロミスメソッドとか全然まだ理解してなくてそのなかに関数代入したその関数オブジェクトプロパティresponseを?いやまあそのあたりのコードが示すデータの流れが全然理解できないような人間でもここまでできちゃった。

AIすごいなと思うよ。そして思うのは今後重要になってくるのは文法とか自体に詳しいことじゃなくて、そのプログラムの処理内容を指示できるシステムエンジニア的な言語化能力のほうじゃないかなと思った。

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

20250609111559680 
-----BEGIN PGP SIGNATURE-----

iHUEARYKAB0WIQTEe8eLwpVRSViDKR5wMdsubs4+SAUCaEbCbwAKCRBwMdsubs4+
SLueAPwOv7PBk4voAe5qlcCEvs/PJhmKc5QAb/1R43JMQFuDZgD/UTPEKsL/PhK9
jFGv2HDXK1dVjLNwvosgX9uYJh5xxwY=
=qiOE
-----END PGP SIGNATURE-----

2025-06-08

dorawii

ChatGPTにバッチファイルを作ってもらったのでこれから署名捗るぞ。これだけ手軽化できたらレスバに入っても署名つけるのも億劫にならずできそうだ。

なにせ文章を書き折ったらあとはバッチダブルクリックしてCtr+Vするだけだ。

原文には現在日時のミリ秒表示を使うことにした。

名乗る人が増えることを期待して作らせたものを公開しておく。

@echo off
setlocal

:: ミリ秒単位UTC時刻を取得
for /f %%A in ('powershell -nologo -command "[int64]::Parse((Get-Date).ToUniversalTime().ToString('yyyyMMddHHmmssfff'))"') do set timestamp=%%A

:: PGPクリア署名作成
echo %timestamp% | gpg --yes --clearsign > signed.asc

:: PowerShellで余計な改行なしに |< をつけてクリップボードコピー
powershell -nologo -command ^
  "$header = '>|'; $footer = '|<'; $body = Get-Content 'signed.asc' -Raw; Set-Clipboard -Value ($header + \"`r`n\" + $body + $footer)"

echo Done. signed.asc created and clipboard updated (no extra blank line).
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

20250608045542542 
-----BEGIN PGP SIGNATURE-----

iHUEARYKAB0WIQTEe8eLwpVRSViDKR5wMdsubs4+SAUCaEUXzgAKCRBwMdsubs4+
SCvuAQDjRjPVCO1F9DgmAKoqKYG7qB9r4e7y2Ky+/umT/OhnygEA8h2NL8zIczSp
hcOk/MaDWJJ2Y7WDA3d6gxFakW8TKAw=
=HE4/
-----END PGP SIGNATURE-----

2025-03-01

日記を書くの画面

もう3/1なのにまだ2/28なんだけどどうなってんの

ここだけUTC?

2024-01-16

anond:20240116091710

NICT運用する小金井局の18台のセシウム原子時計および4台の水素メーザー原子時計の時刻を1日1回平均・合成することによって協定世界時UTC)を生成し、これを9時間進めたもの日本標準時JST)となる。

小金井で決まってるらしいで

2023-01-02

三流エンジニアがやりがちなミス

タイムゾーン考えずに時間を使う

暗黙的にJSTとして時間を使ったせいでUTCで作った場所で盛大にバグる

応急処置バグったところを+9とかやってしまうと、それ以降に逆に誰も気付かずに更に影響範囲が拡がったりする

海外展開しようとしたときバグに気付くがどうしようもなくなって途方にくれて海外だけは別アプリになったりする

UNIXTIMEを使えば楽なんだけれど、そうすると生データぱっと見で時間判別できないので困ることも多い

素直にUTCでISO8601が良い

文字コードUTF-8だと大丈夫だと思ってしま

とりあえずUTF-8にしとけば大丈夫、ってことで実装を進めた結果、Mac/Winでハマる

他にもBOMでハマったりして、むしろSJISの方が良かったんじゃ無いか、とか言い出す

DB統一的になっている場合はまだ後からどうにかできるが、変なところでキャッシュされてたりすると凄い困ることになる

MySQLなりPostgreSQLなりでUTF-8を正しく扱う方法はいろんな記事があるのでちゃんと読んでおけば問題無い

価格浮動小数にしてしま

「将来的にはグローバル展開が必要

とかよく分からないことを言い出して価格浮動小数にしてしま

かに米国なら$2.43みたいな感じで価格を使ったりするし、むしろ小数点以下が無い通貨の方が珍しいのだけれど

丸め誤差を考えないで作ってしまってバグが見つかりめちゃくちゃ揉める

応急処置として丸め機能とかが追加されて事なきを得るけれど

そもそも最小単位で扱って表示の時に小数化すれば良いだけ

他にある?

2022-12-15

日付ずれてる

日記を書く」って押したとき日記の日付がずれてて14日になってる

多分UTCになってるから9時には15日になるんだろう

2022-08-19

anond:20220819135754

すっぱい葡萄

出典: フリー百科事典ウィキペディアWikipedia)』 (2021/11/02 10:25 UTC 版)

「酸っぱい葡萄」(すっぱいぶどう)は[1]、イソップ寓話の一つで、その邦題日本語題名)の一つ。原題古代ギリシア題名)は "Ἀλώπηξ καί σταφυλή" (ラテン翻字:Alópex kái staphylé、和訳:狐と葡萄)[2]、ラテン題名は直訳した "Vulpes et uva "、英題も直訳した "The Fox and the Grapes " で、邦題にも直訳した「狐と葡萄(きつねとぶどう)」がある。狐が己が取れなかった後に、狙っていた葡萄を酸っぱくて美味しくないモノに決まっていると自己正当化した物語が転じて、酸っぱい葡萄sour grape)は自己能力の低さを正当化擁護するために、対象を貶めたり、価値の無いものだと主張する負け惜しみ意味するようになった[3]。

2022-04-25

anond:20220425004317

例えばUTC+3時間を「モスクワ時間」と呼んでるけど、

仮にこれを「厳密に東経45度のロシアの市名で呼ぼう」ってことで「アトカルスク時間」としたらロシア人以外ほとんど分からないのと同じように

日本人以外では「Akashi Time Zone」とか表示されても分からないだろうね。

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