LLM にボージング言語を使う

2026/05/23 0:10

LLM にボージング言語を使う

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

要約

Japanese Translation:

大規模言語モデルは生態系の分断を拡大するため、自律エージェントとして最大限の効果を発揮させるためには、開発者は強力な慣習と低分散を有する言語を優先すべきです。JavaScript は高い分断性(例えば複数のフレームワークなど)を示し、Python は一貫性のないパッケージマネージャーとバージョンの混乱に苦しんでおり、これらは両者ともに AI ツールに混乱を引き起こす「高分散」を生み出しています。一方、Google 製の Go は堅牢な標準ライブラリ、ネイティブ同等のパフォーマンス、gofmt、go vet、gopls、golangci-lint といったツールによる「正しい方法一つ」を強制する厳格なツールチェーンを特徴としています。単純で型安全な並行処理モデル(Goroutines)により複雑な非同期レジームは避けられ、かつトレーニングコーパスに広く普及しています。さらに、Go の有界な慣習エラーは Python の任意のメタクラスを回避し、そのガーベッジコレクションは Rust や C/C++ に見られるメモリ管理の制限問題を解決します。強力な慣習を持つ言語はコーディングエージェントへの信頼性の高い推論をもたらします;Ruby/Rails も単一の Rails フレームワークを提供することでこの原則を実証しています。これらの利点を考慮すると、チームはバックエンド、CLI、エージェントオーケストレーターなどの複雑なシステムを構築するために Go の採用を検討すべきです。一貫した技術的ソリューションの提供についてご支援が必要な場合は、Sancho Studio(技術的リーダーシップ、戦略、セキュリティに焦点を当てたソフトウェアコンサルティング集団)までご連絡ください。

本文

一貫性が AI エージェントを成功させる:Go と Sancho Studio の視点

2026 年 4 月 20 日、Sancho Studio(技術・戦略・セキュリティのソフトウェアコンサルティング)を運営するジェイコブより、大規模言語モデル(LLM)時代における「一貫性」の重要性と、なぜ Go ギリスが AI エージェントにとって最適かを解説します。

1. なぜ一貫性が重要なのか?

「複利効果」とコードのコスト

  • 不整合は悪化し、一貫性は寄与する: LLM は不整合な技術を拡大・増幅させますが、一貫性のある技術には静かに貢献します。
    • 出力が最悪なのは:**フラグメンテーション(分断)**に悩む言語やエコシステムです。
    • 結果が最高なのは:強力な慣習を持つものです。
  • 生残するものは一貫性: 大規模コーパスから学習したモデルにおいて、どのツールが生き残るかを決める要因は「一貫性」です。

コードの実行リスク

  • 推論実行にはギャンブル要素: コード自体の作成コストは低くても、実行には不確定性が伴います。
    • モデルがパッケージインストールの判断を誤る可能性があります。
    • 2019 年以前の奇妙なコーディングパターンを採用する可能性があります。
  • 適切な選択: トークン(コスト)を賭けるなら、一貫性が高く補強されたモデル重みを持つ埋め込みベクトルセットを選ぶべきです。

💡 理想のプログラム: ソフトウェア開発において、インフォメーション処理・ファイル I/O・ネットワークリクエストなど、基本的な動作を行う**「中央値レベル」の安定したプログラム**が求められます。

2. エコシステム分断とモデルの視線

分断されたエコシステムの現実

  • JavaScript の状態: 2024 年の調査では深刻な分断が描かれています。
    • 人間にとってのイライラは、モデルにとっては強化学習やエージェントハンネス(学習用データ)内で解決可能な課題です。
    • Claude Code の事例などで示されるように、Anthropic は JavaScript フレームワークに対して学習バイアスを入れている可能性もあります。

Python の複雑さ

  • 言語バージョン・パッケージマネージャ・OS 互換性など、技術的リーダーを悩ませるマトリックスが存在します。
    • pip
      vs
      poetry
      vs
      uv
    • ツールチェーンの重要性 vs クロスコンパイル?
    • async
      の採用 vs タスクキュー?
    • Web フレームワークは
      Django
      FastAPI
      か?

学習モデルによる解釈

  • コーパスの反映度: モデルの視点では、多様な書き方があり、訓練時の「近さバイアス(recency bias)」に関わらず、ほぼ同程度の重みで扱われます。
    • 結論: 訓練コーパス内の分散が低い(一貫した)言語・エコシステムほど、コーディングエージェントによって適切に表現され、信頼性高く実行されます。
  • ベクトル空間での学習: 高次元ベクトル空間において、余弦類似度はモデルが次のトークンを予測するための基盤となります。
    • 一貫したコーパス = 一貫した推論トークン

言語ごとの比較事例

言語特徴と評価
Ruby / Rails汎用的な JS ベネンドより出力が一貫する。
「Ruby が優れた言語だから」ではなく、実質的に**「一つの Rails」**が存在するため。
JavaScript十数種類のフレームワークがありデフォルト機能の Venn 図が異なる。
「設定より慣習(Convention over configuration)」は人間には柔軟だが、機械にとっては一貫性を生む制約として理想的。

3. Go ゴ言語:エージェントのための最適解

Go はほぼ偶然ですが、現在の時代と AI エージェントに最も適した言語です。開発者が望む高次の表現(ジェネリクスなど)への抵抗姿勢は不評でしたが、エンジニアの多くがその利便性を再評価しています。

第一の利点:並行処理モデル

Go ルーチンは、スレッドやコールバック、

async/await
、あるいは色付き関数規制などに比べて、エージェントにとって扱いやすいプリミティブです。

  • シンプルで型安全。
  • 訓練コーパス全体で普遍的に使用されているため学習しやすさがあります。
  • **「関数の色」**という概念が存在しません(Go の強み)。
results := make(chan string, len(urls))
for _, u := range urls {
    go func(u string) {
        resp, err := http.Get(u)
        if err != nil {
            results <- err.Error()
            return
        }
        defer resp.Body.Close()
        results <- resp.Status
    }(u)
}
for range urls {
    fmt.Println(<-results)
}

第二の利点:標準ライブラリ (
net/http
)

  • net/http
    単体で、マイクロサービスの非自明な部分を動かせます。
  • 暗号化パッケージは Google が資金とメンテナンスを担っており、世界レベルの品質です。
  • Zoom や Keybase のようなシステムでも、デフォルト機能に依存しただけで外部ライブラリ伸手を切る必要がありません。
package main

import (
    "fmt"
    "net/http"
)

func main() {
    http.HandleFunc("/healthz", func(w http.ResponseWriter, r *http.Request) {
        fmt.Fprintln(w, "ok")
    })
    http.ListenAndServe(":8080", nil)
}

第三の利点:ツールチェーン(最も評価されていない)

Go は意図的に**「ことの大半に一つの正しいやり方」**を採用しています。これにより、モデルにとって最適な環境が構築されます。

  • gofmt
    ,
    go vet
    ,
    go fix
    : 単一の規範的スタイルを強制し、交渉の余地を許しません。
  • 学習とフィードバック: 「一つの正しいやり方」のツールセットは、訓練コーパスの分散低下に最も望ましい組み合わせです。
    • gopls
      : リアルタイムのセマンティックフィードバック(ガードレール)。
    • golangci-lint
      : コーディングスタイルを静的に強制し、エージェントに準拠させるプロンプティング不要化。
$ go vet ./...
./user.go:22:2: result of fmt.Errorf call not used
./user.go:38:9: declaration of "err" shadows declaration at line 34

$ golangci-lint run
user.go:51:6: exported func LoadUser should have comment (revive)
user.go:63:3: if block ends with return, drop this else (golint)

第四の利点:ごみ収集(Garbage Collection)付きのパフォーマンス

  • メモリ管理の問題: LLM はメモリ管理において一貫性がなく、これは近々解決される見込みはありません。
  • Rust の限界: 型と Borrow Checking でメモリ安全性を強制していますが、**人間には優秀でもエージェントにとっては常に戦い(難所)**です。
  • C/C++ のリスク: メモリバグや
    use-after-free
    などの過去の苦難(半世紀以上のエラー)が訓練データに埋め込まれており、モデルが再現・回避する難度が高いです。
  • Go の優位性: エージェントに直接メモリを管理させずとも、ネイティブに近いパフォーマンスを提供します。
func parseLines(r io.Reader) []string {
    var out []string
    s := bufio.NewScanner(r)
    for s.Scan() {
        out = append(out, s.Text())
    }
    return out
}

第五の利点:小さな既知のフォトリック(落とし穴)

  • nil
    ポインタ追跡など、人間には難しい失敗は、適切なツールあればエージェントにとっては意外と容易です。
  • 「イディオマチックな Go」の失敗セットは有界(bounded)であり、「何でもあり」の Python などとは異なり予測可能です。

4. 結論:Go を採用しよう

「Go が最高の言語だ」と言いたいわけではありませんが、この言語とツールチェーンでは、エンジニアが望む大部分のノンビジュアル(視覚的ではない)ソフトウェアを書き上げる事が可能になります。

  • 次回の CLI ツール
  • バックエンドサーバー
  • エージェントオーケストレーター

これらを構築する際は、AI エージェントと共に Go を採用することを強く推奨します。

Sancho Studio のチームは、一貫して高品質な成果物を納品できるよう技術リードをお探しです。ご興味のある方はお気軽にご連絡ください。

同じ日のほかのニュース

一覧に戻る →

2026/05/26 5:41

いくつかの興味深い現代風ピクセルフォント

## Japanese Translation: Vercel による Geist Pixel は、新しさ重視のベクトルフォントから、プロフェッショナルな生産環境に適合した堅牢で機能的なタイポグラフィシステムへの転換を象徴する。アンドリュー・グリーソン氏の Analog Mono(低基準線問題を解決)、ジョセフ・ファチュラ氏の Two Slice(読みやすい 2 ピクセル高のベクトルフォント)、および古谷由美氏の Coral Pixels(ノスタルジックなサブピクセルレンダリングによるフレアを包含)など、過去のデザインは特定の美的特徴や歴史的真似に焦点を合わせていたのに対し、Geist Pixel は重要な生産上の課題に取り組む。ビューポート間での一貫したスケーリングを保証し、対立するタイポグラフィ指標を解決するとともに、文字形式以外の領域(キアニング、メタデータ、追加のグリフ、垂直指標など)において「目に見えない本業」として多大な努力を投入している。ユーザー体験を劣化させる可能性のあるリスクの高い新奇品ではなく、Geist Pixel は広範なタイポグラフィエコシステムにおける信頼性の高いシステムツールおよび拡張機能として振る舞う。この進化は、現代的インターフェースに必要な本質的なタイポグラフィ的堅牢性を保ちながら、画面上で本物らしいテクスチャを維持することを可能にする新たな業界標準を確立する。 ## Text to translate: Improved summary: Geist Pixel by Vercel marks a shift from novelty vector fonts to a rigorous, functional typography system built for professional production. Unlike earlier designs—such as Andrew Gleeson’s Analog Mono (fixing low baseline issues), Joseph Fatula’s Two Slice (a 2‑pixel tall readable vector font), and Kumiko Yoshida’s Coral Pixels (incorporating nostalgic subpixel rendering fringing)—which focus on specific aesthetic quirks or historical replication, Geist Pixel addresses critical production challenges. It ensures consistent scaling across viewports, resolves conflicting typographic metrics, and includes significant “invisible hard work” beyond letterforms in areas like kerning, metadata, extra glyphs, and vertical metrics. Rather than being a risky novelty that can degrade user experience, Geist Pixel acts as a reliable system tool and extension within a broader typographic ecosystem. This evolution establishes a new industry standard where pixel fonts maintain authentic visual texture while preserving the essential typographic rigor required for modern interfaces.

2026/05/23 2:17

Adobe と Microsoft を飛び越えてGitで管理する書籍製作パイプラインを作成しました

## 日本語訳: 著者は、新規の形式付けをソフトウェア工学上のタスクとして扱い、Adobe InDesign などの高価なライセンスに依存する脆弱な専用ファイルから、オープンでプレーンテキスト形式のアートファクトへの移行を行うことで、自己出版の自動化を目指している。以前は Microsoft Word と Adobe InDesign を用いて印刷物を制作しており、Calibre を使って Kindle 版への変換を試みても品質が不足していた上、LibreOffice のアップデートにもかかわらず高品質なタイポグラフィを達成できていなかった。今回の移行では LaTeX と自作の Python スクリプトを採用し、電子書籍版および印刷版双方で高品質なテキストを提供すると同時に、Adobe InDesign などの高額ライセンスへの依存度を低減させている。 最も重要な点として、Standard Ebooks のガイドラインを採用することで、厳格なスタイルマニュアルとコマンドラインツールが不可欠な「リンター」として機能し、コードの品質を自動的に検証してデジタル上のエラーを未然に防ぐ。最終出版である『サルデーニャ公(Prince of Savoy)』により、Git を用いたバージョン管理に基づく開発へのピボットが完了した。今後、プロジェクトでは汎用的なスクリプトを活用し、Open Document XML をそのままクリーンな XHTML と LaTeX にマッピングする手法を採用する。この方法は、著者にとって持続可能で再現可能なアプローチを提供し、脆弱なバイナリ形式を意味論的データ構造に置き換えることで、高価なソフトウェアへの依存関係を持たずに長期的な互換性を促進する。

2026/05/26 14:57

予兆的な再会

## Japanese Translation: 学術的な集会で、著者は同世代の多くが大型言語モデル(LLM)による知識労働の人間的側面の喪失に対して広く不安を抱いているのに対し、以前の高齢世代が直面した恐怖とは対照的だと指摘した。この感情は、ウェスリアン大学の工学プロジェクトのために構築され、後にブラウン大学 CS の卒業生アダム・レビエンタールによってメンテナンスされた 1992 年のネットワーク接続型テトリス「BattleTris」の復活という具体的な成功と鮮明な対比を形成していた。長年にわたり、グリッド構成を変更する特定の武器を含むこのレガシーコードベースは、元の 32 ビット Solaris ビルドに影響を与えたことのない現代システム上でクラッシュに見舞われていた。最近、「スパイ」兵器によって開始された試合では、バッファ過負荷によりスタックのスマッushing の検出エラーが発生した:`sendBoard` 関数は 4 バイト(`sizeof(int)`)しか割り当てていないが、8 バイト(`sizeof(unsigned long)`)を書き込み、結果として現代の 64 ビット Linux システム上で 1114 バイトの過負荷を引き起こしていた。 多くの専門家の圈で現在恐れている LLM クロードを使用することで、チームは割り当てと書き込み操作間のこの特定の不一致を特定した。これらの AI の洞察に基づいたターゲットされた修正を適用することで、彼らはゲームを成功裏に移植し再構築し、20 年間クラッシュせずにもう一度元の著者たちにプレイさせることができた。この成功は、LLM が歴史的なデジタルアーティファクトの保存において脅威ではなく有益なパートナーであることを示す強力な証拠であり、現在の不安を引き起こすその技術自体が、複雑なレガシーシステムのデバッグを効果的に支援し、古いプロジェクトの継続的な関連性を確保することを可能にすることを明らかにしている。