Refactoring English: Month 16

Michael Lynch

Refactoring English:16か月目

原文は Michael Lynch により に公開されました。 このブログを購読する

一行サマリー

ゴールは目前

ハイライト

  • Hacker Newsのトップページに、ある記事を一気に書き上げて掲載された。
  • 今後数年、ソフトウェアのセキュリティは恐ろしいことになると予想している。
  • 家族向け写真共有アプリの最初のマイルストーンを達成した。

目標の自己採点

毎月初めに、その月に達成したいことを宣言している。結果は以下のとおりだ。

Refactoring Englishを完成させる

  • 結果:新しい章を公開したが、まだ完成していない
  • 評価:C

残り3章を1か月で完成させるのは野心的な目標だとわかっていたが、可能だと思っていた。結果は3章中1章しか仕上げられなかったが、本はほぼ完成に近づいている。

Refactoring Englishの指標

指標2026年2月2026年3月増減
ユニーク訪問者数7,7886,932-856 (-11%)
予約販売による収益$886.20$725.80-$160.40 (-18%)

今月は訪問者数も売上もやや減少したが、目立ったプロモーションがなくても読者や購入者が安定して訪れてくれているのは嬉しい。

今月唯一のプロモーションは、「Which Design Doc Did a Human Write?」という記事だった。Lobstersでは好評だったが、Hacker Newsでは振るわなかった。/r/programmingでは「AI生成」だとして却下され、記事自体は人間が書いたものだとモデレーターにメッセージで説明しても覆らなかった。

この記事のアイデアは、前回のRefactoring Englishライブクラスから得たものだ。AIが設計書を書くのに十分かどうかを議論する中で、自分が手書きした設計書をAIに別バージョンとして生成させるのは簡単だと気づいたのだ。読者が挙げた、人間とAIを見分ける「手がかり」についての推測を読むのは面白かった。

Simon Willisonの手法を使うチャンスを見極める

Simon Willisonは過去3年間、Hacker Newsで最も人気のあるブロガーだ。最近、Willisonのあまり使われていないが効果的なブログ戦略について書いた

Simonはしばしば、TikTokやTwitterといった閉鎖的なプラットフォームの中からアイデアを見つけ、それをオープンなウェブへと持ってくる。そうすることでHNで議論しやすくなるのだ。彼の最も人気のある投稿の中には、短い引用やリンクに少しコメントを添えただけのものもある。「ExcelにCopilotを入れたことが心配だ」は、彼がTikTokで見た動画からの引用に過ぎない。「コンピュータに責任を取らせることはできない」は、Simonがいくつかのツイートを要約したものだ。

Simonはこの手法を「インターネット全体に貢献するための、労力は少なく価値は高い方法」と呼んでおり、私も同感だ。

Willisonの戦略で唯一難しいのは、いつ使うかを見極めることだ。ツイートやTikTokを片っ端から要約しても、あまり注目は集まらないだろう。興味深い情報がウェブにとって扱いにくい形式に閉じ込められていることに気づき、まだ新鮮なうちにウェブへ移植する必要がある。

先週、Nicholas Carliniの「Black Hat LLMs」講演を見て、Willisonの手法を使うチャンスだと気づいた。

講演の中でCarliniは、誰にも23年間気づかれていなかったリモートから悪用可能な脆弱性をLinuxカーネルで見つけた経緯を語った。驚くべきことに、Carliniがやったことは誰にでもできたことだった。Linuxカーネルのソースコードの各ファイルをClaude Codeに渡し、脆弱性を探すよう指示しただけなのだ。

Carliniの発見についての議論をネットで探してみたが、誰も話題にしていないことに驚いた。YouTubeで公開され、Hacker Newsのスレッドでも言及されてはいたが、受けるべき注目に比べてはるかに注目されていなかった。Claude CodeがFreeBSDのバグのエクスプロイトを書いたことは大騒ぎになっていたが、こちらの方がよほど大きなニュースに感じられた。

そして、その予感は当たった。

その記事は3時間で一気に書き上げた。普段は数週間かけて10〜30時間かけるのに比べ、はるかに速いペースだった。これまでに4万1000人のユニーク読者を集め、Hacker NewsLobstersで好評を博した。自分ではTwitterに投稿すらしていないのに、読者のほぼ半数はTwitter経由で記事にたどり着いていた。

これまで個人ブログの記事がバズったときは、多くの読者がさらに掘り下げてRefactoring Englishを見つけてくれた。今回はそうはならなかった。AIに興味のある読者は、AIを使わずに書くことについての本にはあまり興味がないからだろう。

今後数年、ソフトウェアセキュリティは厳しい状況が続くだろう

Carliniの講演は、私がここ数か月考えてきたことを浮き彫りにしている。今後数年はサイバーセキュリティにとってかなり厳しい時期になるということだ。

かつては、セキュリティ脆弱性を見つけるコストが高いことが、一般の人々をサイバー攻撃からある程度守っていた。

例えば半年前、オープンソースのファイル同期ツールであるSyncthingを使っているユーザーをハッキングしたいと考えたとする。自分がソフトウェアセキュリティの専門家でない限り、次のような人を雇う必要があっただろう。

  • 脆弱性を見つけるのが得意
  • それを悪用可能な形にすることに報酬を受けても抵抗がない
  • 見知らぬ依頼人と仕事をすることをいとわない

仮にSyncthingの脆弱性を見つけて悪用してくれる人を5000ドルで見つけたとしても、それでも多大な労力と費用がかかる。しかも、雇った相手が誠実で詐欺ではないと仮定しての話だ。

さらに、そこまで苦労したとしても、エクスプロイトを使うたびにそれを「燃やす」リスクがある。誰かがシステムの侵害に気づき、原因をSyncthingまで遡れば、エクスプロイトを特定してバグを報告され、エクスプロイトは無価値になってしまうかもしれない。

それを今の状況と比べてみよう。月額100ドルでClaude Codeのサブスクリプションを買えば、Carliniと同じように重大な脆弱性を見つけられる。Claude Codeにはガードレールがあり、脆弱性を武器化するリクエストは拒否されるが、オープンウェイトモデルを使って誰にも咎められずにこっそりエクスプロイトを開発できるようになるまで、そう時間はかからないだろう。

つまり、エクスプロイト開発のコストは劇的に下がったのに、修正する側の価値は変わらないか、むしろ下がっている。AIが生成したバグ報告があまりに多いため、ベンダーはバグバウンティプログラムを終了させており、善意の研究者への金銭的報酬がなくなっている。

Carliniがやったことは偶然ではない。私も同じ手法を再現し、人気のあるコードベースで未発見のリモートコード実行の脆弱性をあまり苦労せずに見つけた。おそらくもっと見つけられるだろうが、私にとっての金銭的価値はマイナスだ。そのプロジェクトにはバグバウンティがないため、ベンダーと修正を調整するために何時間もかけても報酬は0円だからだ。

見つけた脆弱性に対して支払いを渋る欲張りな巨大企業がいるわけではない。メンテナーは善意でプロジェクトに取り組んでいる一人の個人に過ぎない。まさに「Dependency」のxkcdそのものだ。彼自身も報酬を得ていないので、脆弱性報告にお金を払う余裕はない。とはいえ、数十億ドル規模の企業が確実に彼のコードを使っている。

xkcd #2347、「Dependency」

いずれ、AIセキュリティツールが今日の静的解析ツールのように安価で手軽になる均衡点に戻るだろう。ベンダーはAIを使って、本番環境に出る前にセキュリティ上の問題を検出するようになる。

短期的には、突然手の届く果実となった脆弱性が大量に存在する。攻撃者にとってはそれらを悪用する価値があり、善意の研究者にとっては修正するインセンティブがほとんどない状況だ。

「Little Moments」最初のマイルストーンに到達

昨年12月、既存の選択肢にうんざりしたため、赤ちゃんの写真を共有するための無料のオープンソースアプリを作ることを発表した

このアプリは簡単にバイブコーディングで作れるだろうと思っていたが、設計書を書く練習の良い機会だと気づいた。Refactoring Englishでは設計書のプロセスについて書いてきたが、本格的でフルサイズの設計書を書くのは10年近くぶりだった。

短期的な満足感という点ではバイブコーディングの方がはるかに楽しいため、設計書を書くのは辛かった。だから12月からここまで時間がかかったのだが、ようやく集中してアプリ「Little Moments」の設計書を書き上げた。設計書が完成すれば、あとは簡単だった。

現在は、TinyBeansからエクスポートしたデータをインポートしてローカルで表示できる。実際の家族のプライベートな写真は見せたくないので、テスト用にダミーデータを作成した。

この最小限の実装でさえとてもワクワクしていて、完成させるのが待ちきれない。

TinyBeansやPhotoCircleを使ったことがなければ、こんな極めて基本的なアプリのプロトタイプに興奮するのが奇妙に聞こえるかもしれないが、あのアプリたちのユーザー体験がどれほどひどいかは強調してもしすぎることはない。

TinyBeansでは、次の写真や前の写真を見るという基本的な流れすらまともに機能しない。写真を表示しているときは、一度写真一覧に戻ってから次の写真を探さなければならない。しかもそれはモバイルアプリの場合だ。ウェブアプリでは、写真を連続して見ることすらできず、カレンダーから探さなければならない。さらに広告や有料プランへの誘導が至るところにあり、動作はとにかく遅い。

Little Momentsは非常に高速で、ナビゲーションをさらに簡単にするためにキーボードショートカットモバイルでのスワイプジェスチャーも追加した。アプリを完成させてTinyBeansの利用をやめるのが楽しみだ。

まとめ

今月達成したこと

学んだこと

  • 今後数年はサイバーセキュリティにとって厳しい時期になる
    • 悪意ある攻撃者が脆弱性を見つけるのがかつてないほど容易になっている一方で、それを修正したい善意の研究者への報酬は減少している。

来月の目標

  • Refactoring Englishを書き上げる

この記事は「muse-spark-1.2-contributor」を使用して翻訳されました。

コメント