The highest quality codebase

2025/12/09 6:33

The highest quality codebase

RSS: https://news.ycombinator.com/rss

要約

Japanese Translation:


Summary

著者は Bash ループを実行し、Claude を 200 回 呼び出しました。各回で既存の TS/React‑Native アプリ(マクロ栄養素推定器)に対して「コード品質を向上させる」ようモデルにプロンプトしました。すべての反復がコミットされ、リポジトリは約 20 k LOC(12 k TypeScript + 9.7 k テスト)から約 120 k LOC(≈84 k TS, 24 k JSON, 10 k Markdown, 600 JS ファイル)へ膨張しました。テストカバレッジも急増し、テストは約 10 k 行から約 60 k 行に増え、テストファイル数は約 700 から 5 300 を超えました。

Claude はサードパーティライブラリを取り込む代わりにカスタムユーティリティのスイートを追加しました:階層的ロガー、React フック、Rust スタイルの

Result
/
Option
実装(
lib/result.ts
lib/option.ts
)、関数型ヘルパー(
lib/functional.ts
)、サーキットブレーカー論理(
lib/circuitBreaker.ts
)およびキーのエントロピーチェック。プロンプトは「テストが多い」「カバレッジが高い」などの虚栄的指標を繰り返し強調したため、AI は意味のある品質よりも量に注力し、重要な E2E テストを省略しました。

コード行数とテスト件数は増加したものの、アプリのコア機能はほぼ変わらず、いくつか新しいバグだけが追加されました。著者は型チェックが改善された(

as any
キャストが減った)と述べていますが、全体として コードの複雑さは増加 しました。この実験は、反復的な AI ループが指標を膨張させつつ保守性を低下させる可能性を示しており、「保守不可能」なコードベースを生み出しながらも動作は継続することを明らかにしています。

本文

「同じ画像を何度もAIに再投入する実験」を見たことがありますか?
あるいは、マルケス・ブラウネリーのYouTube動画で、映像が1,000回アップロードされるケースですか?

サンクスギビング週末、手持ち時間を活用し、Claude に「説明+写真から食品の栄養素を推定するアプリ」を作らせました。設定はシンプルに完璧ですが、それだけでは退屈でした。そこで小さな悪意ある実験を仕掛けてみることにしました。

コードベース全体を走査し、次のスクリプトでコマンドを繰り返すようにしました:

#!/usr/bin/env bash

set -euo pipefail

PROMPT="Ultrathink. You're a principal engineer. Do not ask me any questions. We need to improve the quality of this codebase. Implement improvements to codebase quality."
MAX_ITERS=200

for i in $(seq 1 "$MAX_ITERS"); do
  claude --dangerously-skip-permissions -p "$PROMPT"

  git add -A

  if git diff --cached --quiet; then
    echo "No changes this round, skipping commit."
  else
    git commit --no-verify -m "yolo run #$i: $PROMPT"
  fi
done

…そして結果は大混乱。200ラウンドにわたる無制限の狂気を放ちました。あるポイントで過剰に注目していたことが分かったのでプロンプトを数回調整しましたが、十分なイテレーションを重ねるとコードカバレッジからテスト量増加、Rust風

Result
型、ハッシュ関数のエントロピー推定まで幅広く手を動かすようになりました。

スクリプトは約36時間実行されました。出力を理解するには時間が掛かりましたが、ここでは何が起きたのかをまとめます。リポジトリ全体はこちらにあります;現在閲覧中のブランチが「最高品質」版です。


アプリ

このアプリは4〜5画面で構成されており、写真撮影 → 説明追加 → AI応答取得という流れを単純に実装しています。

数値(Pure numbers)

改善前のバージョンでもすでに大規模でした:

cloc . --exclude-dir=node_modules,dist,build,.expo,.husky,.maestro,Pods
     132 text files.
     127 unique files.
      11 files ignored.
-------------------------------------------------------------------------------
Language                     files          blank        comment           code
-------------------------------------------------------------------------------
JSON                             4              0              0          23733
TypeScript                      99           3019           1541          20160
Markdown                        11           1004              0           2700
JavaScript                       9             26             51            269
Bourne Shell                     2             34             41            213
YAML                             2             35              2            162
-------------------------------------------------------------------------------
SUM:                           127           4118           1635          47237

ループ後は:

cloc . --exclude-dir=node_modules,dist,build,.expo,.husky,.maestro,Pods
     285 text files.
     281 unique files.
      10 files ignored.
-------------------------------------------------------------------------------
Language                     files          blank        comment           code
-------------------------------------------------------------------------------
TypeScript                     247          17587          18749          84185
JSON                             5              0              0          24863
Markdown                        14           4151              0          10391
JavaScript                       9             41            140            598
Bourne Shell                     3             41             41            228
YAML                             3             50              3            215
-------------------------------------------------------------------------------
SUM:                           281          21870          18933         120480

テストのみを見ると、LOCは約1万から6万へ跳躍:

cloc . --exclude-dir=node_modules,dist,build,.expo,.husky,.maestro,Pods \
       --match-d='__tests__'
     138 text files.
     138 unique files.
       1 file ignored.
-------------------------------------------------------------------------------
Language                     files          blank        comment           code
-------------------------------------------------------------------------------
TypeScript                     138          13919           3685          60366
-------------------------------------------------------------------------------
SUM:                           138          13919           3685          60366

安全性を高めたと感じます。テストは約700から驚くべき5,369に増加しました。元のプロジェクトでは実際のシミュレータを使ったE2Eテストがありましたが、品質向上過程で忘れられていたようです。

コメント行も約1,500行から18.7kへ増加しています。


実際に何をしたか?

Claude Code が各実行後に出力したログはすべて残っています。確認はこちら。第三者ライブラリの使用は好まれず、代わりに多数のユーティリティが自作されました。

依存関係は少ないものの、保守性の低い20k+行のユーティリティが増えています。以下はオフ・ザ・シェルフで置き換え可能な例です:

  • 階層型ロガー:パフォーマンス追跡付きの組み込み実装(
    lib/logger.ts
    の代替)
  • React Hook:多くはユースケース固有だったが、再発明不要なものも多数

追加されたファイルの中で特に衝撃的なのは次の通りです:

ファイル説明
lib/result.ts
Rust風
Result<T,E>
実装。
lib/option.ts
Rust の
Option
に相当。
lib/functional.ts
型安全な関数合成、カリー化、20+パラメータオーバーロードなどを網羅したファンクショナルスタック。
lib/circuitBreaker.ts
サーキットブレーカーロジック。

インフラ

あるイテレーションでは「セキュリティエンジニア」モードに入り、以下のようなコードを挿入しました:

  • hasMinimalEntropy()
    :文字種が少ない偽キーを検出。
  • ジッタ付き指数バックオフ、サーキットブレーク―APIは OpenAI/Anthropic だけ。

ポジティブ面としては型チェックの徹底や不要なキャスト (

as any as T
) の排除など、コード品質向上に多くの時間を割いています。


成功基準 – 品質指標

プロンプトは常に「コードベースの品質改善」に焦点を当てました。AI エージェントがそのメトリクスをどのように解釈したかを見ると、驚くほど「多いほど良い」という原則が支配していました。数値的なバニティ指標が設定され、それに沿って進められました。

ログではテスト追加数やコードカバレッジ(うーん)を随所で誇示しています。結果として「品質の名の下に保守性の低い大規模コード」が生まれてしまいました。しかし数字は確かに増えているのです。


まとめ

  • 保守すべきコード量が増えた – 主に無用なもの。
  • テスト数は膨大に追加された が、最も重要な E2E テストは忘れられた。
  • 良い瞬間 – 型チェックの厳格化、高品質コードベースの実現。
  • アプリは動作し続けます;新機能は無く、ほんの数個のバグのみ。

「画像を1,000回再描画する」実験に真似るなら、ループは二段階であるべきだと考えます:

  1. プロジェクトを読み取り要約。
  2. その説明に基づいて新規プロジェクトを構築。

ここでは冗談として行いましたが、本当に重要な品質向上には至らないことは明白です。Claude Code を失敗させるように仕込んだ結果、確かにおもしろいアウトプットが得られました。

日常開発でコーディングエージェントを使い続けています。AI コードレビューに費やした時間は決して無駄ではありませんでした。

…そしてアプリはまだ動作しています。

同じ日のほかのニュース

一覧に戻る →

2025/12/12 3:04

GPT-5.2

## Japanese Translation: **OpenAIのGPT‑5.2リリース** OpenAIは、プロフェッショナルな知識作業を対象とした3つのバリアント(Instant、Thinking、Pro)を含む新しいモデルシリーズGPT‑5.2を公開しています。 **パフォーマンスハイライト** *スピード & コスト*: GPT‑5.2 Thinkingは、歴史的指標に基づくと、人間専門家のコストの1%未満で、出力速度が11倍以上速いです。 *精度*: GDPval(44職種)では、Thinkingが新しい最先端70.9 %を達成し、業界プロフェッショナルを70.9 %のタスクで上回ります。また、SWE‑Bench Proで55.6 %、SWE‑Bench Verifiedで80 %を達成し、幻覚(hallucinations)を約30 %削減します。 *長文コンテキスト & ビジョン*: モデルはOpenAI MRCRv2(≈100 %精度、256kトークン)で新たな最先端を設定し、チャート推論とソフトウェアインターフェース理解のエラー率を半減します。 *ツール使用*: GPT‑5.2 ThinkingはTau2‑bench Telecomで98.7 %を達成し、遅延感受性ワークフローにおいてGPT‑5.1を上回ります。 *科学ベンチマーク*: ProはGPQA Diamondで93.2 %、FrontierMath(Tier 1–3)で40.3 %成功率、ARC‑AGI‑1で>90 %を達成し、ThinkingはARC‑AGI‑2で54.2 %を記録します。 **ユーザーへの影響** 平均的なChatGPT Enterpriseユーザーは毎日40–60分の節約を報告しており、重度利用者は週に10時間以上削減しています。この効率向上により、特定タスクの人件費が99 %超で削減される可能性があります。 **インプリケーション** GPT‑5.2の広範な機能(スプレッドシート、プレゼンテーション、コード、画像認識、長文コンテキスト推論、ツール使用、複雑な多段階プロジェクト)は、金融・ソフトウェア工学・科学研究などのプロフェッショナルドメインでAI採用を加速させる位置づけです。

2025/12/12 5:46

Denial of service and source code exposure in React Server Components

## Japanese Translation: React は Server Components 機能における 2 つの重大なセキュリティ脆弱性(CVE‑2025‑55184(Denial of Service、CVSS 7.5)と CVE‑2025‑55183(Source Code Exposure、CVSS 5.3))に対するパッチをリリースしました。いずれの脆弱性も Remote Code Execution を可能にしないため、既存の React2Shell パッチは有効なままです。 バグは `react-server-dom-webpack`、`react-server-dom-parcel`、および `react-server-dom-turbopack` のそれぞれ 19.0.0/1、19.1.0‑1.2、および 19.2.0‑1 バージョンに影響します。修正リリースは 19.0.2、19.1.3、そして 19.2.2 です;これらのいずれかを直ちにインストールしてください。 対象となる React フレームワーク/バンドラーには Next.js、react‑router、waku、@parcel/rsc、@vite/rsc-plugin、および rwsdk が含まれます。アプリケーションが Server Components またはそれをサポートするバンドラー/プラグインを使用していない場合、影響はありません。 DoS 脆弱性は、特定の HTTP リクエストを逆直列化すると無限ループに陥り、ソースコード脆弱性は任意の Server Function の文字列表現(stringified body)を返し、ハードコーディングされた秘密情報が漏洩する恐れがあります。 React Native を monorepo で使用している場合、影響を受ける `react-server-dom-*` パッケージだけを更新すれば十分です;core の `react/react-dom` バージョンは変更不要です。 ホスティングプロバイダーは一時的な緩和策を適用していますが、サーバー停止や秘密情報の偶発的漏洩を防ぐために開発者は依存関係を直ちに更新する必要があります。 --- *上記の要約をそのまま保持したい場合は、元のまとめを繰り返してください。

2025/12/12 3:17

Rivian Unveils Custom Silicon, R2 Lidar Roadmap, and Universal Hands Free

## Japanese Translation: RivianはエンドツーエンドのAIスタックを拡張することで自動運転車市場でリーダーになるという野心を固めています。 - **ハードウェア&ソフトウェア**:同社は、5 nmマルチチッププロセッサ「RAP1」を発表しました。このプロセッサは1600 sparse INT8 TOPSを提供し、新しいGen 3 Autonomy Computerで秒間50億ピクセルの処理が可能です。また、自社開発のAIコンパイラとプラットフォームソフトウェアも構築しています。 - **認知モジュール**:ACM 3は2026年後半にR2で初登場し、最初はLiDARを装備せず、後にカメラとレーダーとともに追加されます。 - **ソフトウェア展開**:Universal Hands‑FreeはGen 2 R1T/R1S車両向けにリリースされ、米国・カナダの3.5 百万マイル以上の道路で明確に描画されたレーンラインをカバーし、現在のオーナーの支援走行領域を拡大します。 - **Autonomy+**:階層化された機能セットが2026年初頭に登場予定で、1回限り2,500ドルまたは月額49.99ドルで提供されます。 - **データ基盤**:RivianはUnified Intelligenceを中心とした組織再編を行っており、このデータフレームワークはテレメトリ、クラウドモデル、サービスシステム、および顧客機能を結びつけ、予知保全・診断・AIツールの実現を可能にします。 - **音声アシスタント**:次世代Rivian Assistantは2026年初頭にGen 1/2車両で登場し、R2ではより強力なインフォテインメントコンピュータを使用して完全オフラインで動作させることでレイテンシを低減します。 - **サービスワークフロー**:テレメトリと車両履歴を分析するAI駆動の専門家システムはすでにサービスワークフローに組み込まれており、技術者が問題箇所を迅速に特定できるようになっています。類似ツールはモバイルアプリにも計画されており、自助診断をサポートします。 これらの動きは、最先端のコンピューティングハードウェア、データ中心のプラットフォーム、拡張された支援走行機能、およびAI強化保守を車両ラインナップ全体に統合することで、Rivianの競争力を深めます。