はてなキーワード: githubとは
20年ぶりに大学に入学したけど大学の授業ってこんなに簡単だったかと思うことが多かった。
備忘と2期生のために、履修した講義について難易度と所感を以下。
前提として、各講義は15回に分かれており、15回がそれぞれ6本の動画から構成されている。1回(6本)の動画視聴時間が計1時間半程度。
動画1本につき小テストに合格しないと先に進めず、また1回(動画6本)ごとにレポート1本提出(100字程度の授業の感想から、習った概念を500字以内で説明まで内容は多岐にわたる)。
1つの講義で90本動画を見て(倍速不可につき22.5時間かかる)、15本レポートを出して、試験を受ければ2単位がもらえる(単位数1の講義や試験なしなど例外もあり)。
1年間で取れる単位は48単位まで、4Qに分かれているので案分すると1Qは6つの講義を履修するのが上限ということになる。
| 科目名 | 難易度 | 所感 |
|---|---|---|
| アカデミックリテラシー | 易 | 学内の各科目の紹介のような内容。 |
| 現代社会と数学 | 易 | 講義スタイルが一番画期的だったと思う。講義内容は面白いし試験は簡単。 |
| ITリテラシー | 易 | ITパスポートみたいな内容を学ぶ。ITパスポートより少し簡単。 |
| 人文社会入門 | 易 | 試験は簡単。 |
| Webアプリケーション開発1 | 中 | 前提知識なしだと講義そのものが難しいかも、htmlとかjavascriptとかを書く。講義へきちんと取り組んでいないと最後のレポートで詰む。試験は簡単。 |
| デジタルツールの使い方 | 易 | ITリテラシーより簡単。いろいろなツールを紹介されるので講義内容は面白い。この講義を取るとadobeのアカウントがもらえる。 |
| 経済入門 | 易 | 講義内容は面白い、試験は簡単。 |
| データサイエンス概論 | 易 | 統計学入門の入門。講義内容は面白い。試験は簡単。 |
| Webアプリケーション開発2 | 中 | 前提知識なしだと講義そのものが難しいかも、githubから練習問題のリポジトリをフォークしてクローンしてDocker立ち上げてコード編集してcommitしてpushしてプルリクを出す。webアプリケーション開発1から続いて講義へきちんと取り組んでいないと最後のレポートで詰む。試験は簡単。 |
| 多言語ITコミュニケーション | 易 | 試験は簡単。 |
| 地域課題の解決とイノベーション | 易 | 課題は主に町おこし、事例は興味深く、試験は簡単。 |
| クリエイティブ現場論 | 易 | カワンゴやGACKTやとよたみのるの話を聞くという、一番金がかかっていそうな講義。試験は無しでレポート100%。 |
| ビジュアルプログラミング | 易 | スクラッチでいろいろ作る。小学生になった自分の子供に教えてあげたい内容。試験は簡単。 |
| 統計学入門 | 難 | 講義中では新しい概念を難解な数式を用いて学ぶ、試験でも実際に数式を用いて問題を解かねばならない。 |
| 線形代数1 | 難 | 講義中では新しい概念を難解な数式を用いて学ぶ、試験でも実際に数式を用いて問題を解かねばならない。 |
| 機械翻訳実践(英語読解・作文) | 難 | 高校の英語をきちんと理解しているかどうかで難易度が異なる。試験は機械翻訳関係ないので、理解していないと点数が取れない。 |
| 伝わる論理とコミュニケーション | 易 | ロジカルプレゼンテーションみたいなことをやる、講師もコンサル。試験は簡単。 |
| マンガ産業史 | 易 | 戦前から電子書籍の勃興までをざっと学ぶ、講義内容は面白い。試験問題数はありえなく多いが問題は簡単。 |
| 人工知能活用実践 | 易 | 講義内容は履修した中で一番面白い。試験は無し、人工知能サービスを利用して製作した物を提出する課題が4つあり。課題も面白かった。 |
| Pythonプログラミング | 易 | notebookでpythonの文法から学ぶ。試験は簡単。 |
| Webユーザーエクスペリエンス | 易 | UX(UI)の構成や概念について学ぶ。ニコニコ動画のUX担当者を招き事例として扱ったが、あれのUXは優れている前提でよいのか。試験は簡単。 |
| 数学的思考とは何か | 中 | 実際の数式も出るが、より抽象的な概念を学ぶ、変数とはそもそもどう要請され何を満たすために産まれたのか、とか。数学史みたいな感じ。試験は簡単。 |
| グラフ理論 | 中 | 最小カットや5色定理の証明なども学ぶので中としたが、統計学入門や線形代数とは比較にならないほど易しい。試験は簡単。 |
| 心理学 | 易 | 心理学の様々な分野を学ぶ。内容はかなり面白い。試験は簡単。 |
統計学入門と線形代数1は記憶にある大学の講義くらいの難易度。
機械翻訳実践(英語読解・作文)は自身の英語力の無さの問題だと思う。逆に言えばある程度の力がないと、これ受講しても試験問題を解けるだけの英語は身につかない。
GitHub Copilotの従量課金が騒がれてるが、AI業界の異常なレベルの積極投資を見れば、どこだって遅かれ早かれこうなるよなぁ。
GitHubだけじゃなくてo365の方のCopilotも同じように悲鳴上がってる。
コーディングエージェントはもう実用レベルになってるからまだ分かるけど、社内業務のAI利用ってまだまだコーディングとは比べ物にならないぐらいレベル低いから、これでコーディングど同じように金搾り取られるのは納得いかんなぁ。
プログラミング言語の文法は言語とバージョンを定めれば会社によって変わったりしないけど、業務内容は会社によって千差万別なんだよね。
コーディングルールに沿わないコードをエージェントが生成したとしても動かないわけじゃないが、一般的な業務ルールに基づいてAIが業務やっちゃうと問題起こる企業多いと思う。
コーディング界隈と同じレベルで業務用途のAIに課金されたらたまらんなぁ。
ClaudeやGeminiに乗り換えてもいずれ同じどん詰まりにたどり着く。
「スマートクリエイティブ(Smart Creative)」は、Google の元CEOだった Eric Schmidt たちが How Google Works で広めた概念だよ。
簡単に言うと、
「専門知識だけの人」でも
「言われたことをやる人」でもなく、
技術・ビジネス・創造性を横断して、自分で問題を発見し、動ける人」
のこと。
⸻
従来の知識労働者との違い
1. 「与えられた問題」を解くだけじゃない
従来の知識労働者:
例:
⸻
2. 専門特化だけではない
昔:
が分離。
をある程度またぐ。
⸻
3. 指示待ちより、実験する
特徴:
だから、
とは相性が悪い。
⸻
どんな職種に多い?
多い職種
プロダクト系
技術系
事業系
境界型
⸻
AIで、
は自動化される。
すると価値が残るのは:
みたいな部分。
つまり、
「知識を持ってる人」より
⸻
1. 専門を1つ持つ
まず核。
例:
何でもいいけど、
「これなら戦える」が必要。
⸻
2. 隣接分野を広げる
例えば:
⸻
3. 発信する
「作る+伝える」が強い。
などで、
⸻
4. 小さく作る習慣
超重要。
今はAIで、
を1人で高速試作できる。
だから、
「考えて終わり」より
「まず出す」が強い。
⸻
かなり本質的な特徴
同じ会社でも:
では全然違う。
だから、
職種よりも、
「自分で問いを立てて、学び、作り、試す」
この姿勢が核心。
現場は一応IT会社だ。といっても大手広告代理店(というジャンルにしておく)の子会社で、俺はそこにSIerから常駐で入っている。小規模なウェブアプリ開発の案件。Aという部長が来るまでは、まあ普通の現場だった。
A部長は親会社からの出向だった。定年前の、よくあるやつ。なぜこの人が「IT会社」に送られてきたかというと、エクセルが得意だから、らしい。親会社の中では「ITに強い人」ということになっていた。
実際のA部長は、予想通りエクセルが得意なだけだった。コードは一行も書けない。VBもわからない。VLOOKUPが好き。「セル結合はやめたほうがいいよ」と、こっちが頼んでもいないのに得意げに教えてくる。配布物は、もちろん全部エクセル。
ここまではいい。よくいる人だ。問題は、赴任した時期だった。世の中が、AIで何でも作れると沸騰し始めた、あの時期だ。
A部長はclaudeで部下の日報管理アプリを作ってみたらしい。そして、あっという間に見た目だけは見事なwebアプリができたことに、本人が一番驚いていた。それからは、誰彼構わず見せびらかすようになった。みんな内心では冷笑していたが、たまに気を遣った若手が「すごいですね」と言ってあげる。それでまた調子に乗る。今でもSNS上で繰り返されるバイブコーダーのあの残念な光景のリアル版。
ログインは社員番号と暗証番号。データがどこに保存されているかは、本人も知らない。
「社員管理アプリ群を作った。今あるB社の勤怠管理システムは、もう解約していい」
「俺がたった一ヶ月で作ったこれを見てくれ。無料で、素人がここまでできるんだ」
もう一度言う。ログインは全部共通で、社員番号と暗証番号。保存先は本人も知らない(えーと、っていう感じで流してた)。そして個人情報の登録欄には、携帯番号も、住所も、家族構成まで入力させる欄があった。
会議室の温度は、一ミリも変わらなかった。それが何を意味するか、誰も分かっていない。分かっている数少ない人間は、黙っていた。俺も、そのひとりだった。
「俺の作ったアプリ、いい感じでみんな使ってるようだ。まだまだ拡張する。一緒に手伝ってくれ。」
常駐の立場で、NOとは言えない。
手伝い始めて、構造が見えてきた。
コードはgitで管理され、GitHubにも上がっていた。デプロイ先はVercel。ちゃんとしてるじゃないか、と一瞬思った。聞いてみた。
「GitHubは当然使ってるよ! でも、どういう仕組みかはよくわからん。claudeの指示通りにやったら上手くいったようだよ。」
でも、リポジトリは全てpublicになっていた。
一番驚いたのは、その運用だった。
claudeがVercelにデプロイする。A部長がそれを本番環境で目で見て、OKだと思ったら、claudeに指示して初めてGitHubにpushされる。順序が、逆なのだ。全世界に公開された本番が、彼にとっての動作確認画面になっていた。家族構成まで入力させるアプリの、本番が。
そして、ずっと引っかかっていた「保存先」を、自分の目で確かめることにした。自分の画面でアプリを開いて、F12を押した。開発者ツール。localStorage。
そこに、全部あった。
userInfo というキーに、長い文字列。一見ランダムな英数字で、お、暗号化してるのか、と一瞬感心しかけた。違った。ただのbase64だった。デコードしたら、JSONがそのまま出てきた。氏名、社員番号、携帯、住所、緊急連絡先、配偶者の名前、子どもの人数。一文字も暗号化されていない、ただエンコードされただけの個人情報。
……true に書き換えたら、どうなる?
書き換えた。リロードした。管理者メニューが開いた。社員の個人情報が、エクセルみたいに並んでいた。家族構成つきで。
このアプリは、誰がログインしているかも、その人が管理者かどうかも、全部ブラウザの中のメモ書きで判断していた。サーバーは、何も覚えていない。
なぜ、こうなったのか。気になって、コードとgitの履歴を遡った。
そうしたら、claudeはちゃんと警告していた。
ソースのコメントに、そのまま残っていた。「※ localStorageはXSSに脆弱です。本番では認証情報を保存しないでください」。別の箇所には「この権限チェックはクライアント側で動作します。サーバーサイドでの検証が別途必要です」とも。
claudeは、正しいことを言っていた。何度も、ちゃんと。
履歴から、流れが見えた。claudeはたぶん毎回、「安全な方法はこちらです。手早く動かすだけならこうもできます(非推奨)」と二つ並べて出していた。A部長は、迷わず手早いほうを選び続けたのだろう。エラーが消えれば次へ進み、赤い字が出れば「直して」と投げ返す。能書きは読まない。Acceptするだけ。とりあえず動くコードだけが採用され続け、本番に流れていく。claudeが残した「使わないでください」は、誰にも読まれないまま、ソースに鎮座しているのみ。
俺はここで、ようやく腑に落ちた。
バイブコーディングで本当に怖いのは、AIが間違えることじゃない。AIは、むしろ正しかった。怖いのは、その正しさを評価できる人間が、現場に一人もいないことだ。
コードを書く力は、AIが配ってくれた。誰でもアプリが作れるようになった。でも、出てきたものが正しいかどうかを判断する力までは、配られていない。実装は民主化された。評価は、まだ民主化されていない。そして、その二つのあいだに空いた深い断層に、社員全員の家族構成が、平文で落ちている。
俺はA部長に、できるだけ穏やかに説明した。F12というキーを押すだけで、プログラミングを齧った事のある人なら社員の個人情報が見えてしまうんです、と。
「じゃあ、F12を押せないようにclaudeに指示出しておくよ」
直近のmattn PRのうち、shogo82148がApproveしているものを並べると
| PR | 内容 | PR作成→Approve | Approve→merge | レビュー本文 | 差分規模 |
|---|---|---|---|---|---|
| #736 | Windows remWatch nil deref修正 | 約54分44秒 | 約10分32秒 | LGTM | 2 files, +18/-3 |
| #738 | CI: macos-13置換・Go 1.26 | 約22分20秒 | 約33秒 | LGTM | 2 files, +10/-9 |
| #742 | Windows TestRemoveState復活 | 約6時間9分 | 約12分27秒 | 画像のみ | 1 file, +4/-6 |
| #743 | Windows TestClose復活 | 約6時間9分 | 約12分17秒 | LGTM | 1 file, +1/-5 |
| #744 | Go最低版を1.23へ、unsafe修正 | 約5時間14分 | 約10分51秒 | LGTM | 3 files, +6/-13 |
| #741 | inotify event buffer最適化 | 約3日19時間 | 約10時間10分 | LGTM | 1 file, +10/-5 |
| #748 | kqueue dangling symlink修正 | 約1日1時間34分 | 約1時間22分 | 画像のみ | 2 files, +22/-4 |
| #749 | Windows WatchList race修正 | 約1日30分 | 約1時間25分 | 画像のみ | 2 files, +75/-15 |
| #754 | inotify recursive remove prefix bug修正 | 約14時間14分 | 約2日9時間 | 画像のみ | 2 files, +43/-1 |
| #755 | inotify/windows recursive rename prefix bug修正 | 約13時間47分 | 約2日8時間 | 画像のみ | 3 files, +72/-2 |
shogo82148のレビューは、GitHub上に残る痕跡としては非常に薄く、複数PRを短時間にApproveしているため、十分な独立レビューだったのか疑念を持たれても仕方ない。
一方で、PR作成からApproveまでの経過時間だけを見ると数時間〜数日空いているものも多く、「全て数分で承認された」とは言えない。
とても深い見識のある方の投稿だと感じた。
この内容を見た後に、GitHubのissueを読んでみたら、当初とは全く印象が変わって見えたし、自分にはなかった視点を教えていただけて感謝。
あーこれおもしろいな
悪意を持って解釈すれば
こういう感じか?えっぐう
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 <pieter@binky.org.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 <pieter@binky.org.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。著書に『みんなの