Making

2026/07/23 0:33

Making

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

要約

Japanese Translation:

著者は、単にプロジェクトを開始するのと本当にそれをつくることとの間に根本的な区別が存在すると主張しており、個人の実現感は生成 AI や大規模言語モデル(LLM)への依存ではなく、手作業で工程を実行することから生まれると断言しています。AI を使ってコードを生成することは著しく高速化されます(例えば、Rust で手書きする場合の数時間に対して数分というように),しかし自ら何かを構築するという努力こそが真の作者性を主張するために不可欠であるとされています。著者は 20 年以上の業界経験を持ち、9 年間 CS を教えてきたベテランのコンピュータサイエンティストかつ Gen-X のハッカーであり、AI をコンパイラやジェネレーターとして使うことは作成プロセスを外部委託することに他ならないことを明確にしています。プロンプティングにはビジョンと判断力が求められますが、それはソフトウェアを個人で構築することと同義ではありません。彼は「私がコードを構築してもらった」という表現を好む一方で、「私がこれを制作した」と主張するのを避けます。この見解は、AI を支援した仕事に対して自動的にクレジットを与えることにより真の所有権がもたらされるという現在の技術的ナラティブに挑んでいます。生成能力が拡大するにつれ、社会はアイデアを開始することと実際にそれらを創り出すこととの境界を再評価せねばならず、これらのツールがワークフローを加速させるか、あるいは創造そのものの性質を根本的に変えるかを理解する必要があります。

本文

2026 年、AI と手書きコードの境界線を引く:私の「制作(Making)」への回帰

2026 年 3 月 12 日、私は新たな作品を完成させました。しかし、その背景には重要な問いがあります。物を自ら作り上げることに、私は大きな達成感を覚えます。 それに対して、依頼して他者が作成したものは「自分が作った」とはみなず、達成感が薄れやがて悲しい気持ちになるのです。

1. AI 開発者の分裂と私の視点

AI 利用に関する議論(「The AI Dev Schism」)には真実があります。しかし、私にとって問題は単純ではありません。

一般的な利点と欠点

開発者コミュニティが指摘する傾向は以下の通りです:

  • 喪失するもの
    • ハンドコーディングによる職人芸の喪失
    • ローレベルな問題解決能力の喪失
    • コーディングから得られる「楽しさ(fun)」の喪失
  • 獲得するもの・代替手段
    • 高位レベルな問題解決能力の獲得
    • 後回しになっていたプロジェクトの推進
    • 時間を作り、再び「楽しさ」を得る

私自身はこれらの点について、開発者によっては正しいと受け止めることもできるでしょう。しかし、「作り手(Maker)」としての感覚への疑問が私の思考を悩ませています。

私の背景

議論を理解するために私の経歴をご説明します。

  • キャリア: 80 年代のマイクロコンピュータ時代から活動する X 世代のハッカー。
  • 学歴: 電気情報工学の学士号・修士号取得者。
  • 実績: ヒューレット・パッカード、スタートアップ企業、アクティビジョンなどで 20 年以上の実績を持つ共同創業者。
  • 現職: コンピュータサイエンスの教授を 9 ヶ年務め、現在はオレゴン州立大学カスケーズ校に在職。
  • AI 観: AI の楽園論と絶望論の間では、約 65% ドーム派(絶望論)寄りです。
  • ツール利用:
    Claude Code
    を時折利用しますが、依然として手書きコードを記述します。
  • 影響源: 父がコミュニティカレッジで哲学を教えているため、思考に哲学的影响を受けています(35 年の勤務経験)。

用語の定義 本稿では「AI」を、「生成 AI と大規模言語モデル(LLM)」に限定して使用いたします。


2. 作品紹介:私の「制作物」たち

議論に入る前に、私が創作活動を行っていることを御紹介します。これらは全て私が発起人となり、「自分が作った」と感じやすい作品です。

サイエンスフィクション小説

技術書『Beej's Guides』の著者として知られ、SF小説も執筆しています。最新の断片をご紹介します(《Vor rkai Interval》より)。

カエルは砕けた隔壁に背中を預け、自らの顔から数センチほどの距離でプラズマが空気を抉るのを耐えた…… カエルは最後に入ってきた。隔壁の角を回りながら盲目な応射を行い、敵を直接狙うのではなく音を立ててドローンたちの熱追跡センサーに妨害を与えることで、仲間たちを暗闇へと逃がした。 そして彼らはそうやったのだ。

木版画(芸術作品)

余暇に注ぐ多忙な中で、以下の作品も制作しました。

  • タイトル: Mirrors of the Machine (マシーンの鏡)
  • 作者: Brian "Beej Jorgensen" Hall
  • 価格: $1,300

※画像イメージ(生成 AI による出力指示例): 「木版画だがパステルカラーで着色されたもの。フレームの左側に一人、右側に一人、中央にコンピューターがあり、二人は向かい合って座り、頭を下げて集中している。左右の色は補色であり互いに相反するものであり、両者は同じでありながら異なることを示すものとする。」

大工仕事(家具・造作)

私は職人としての側面も持っています!

  • 先日家の前デッキを再建しました。腐朽が進んでいたため、シダー材を購入して組み立て直したものです。
  • 「新しい前デッキを取り付けた」と言う彼らを見ていても、実際には他人が全ての作業を担っていることに気づきます。 私は「デッキをつけてもらった」ほうが自然な発想です。

Rust コード(ゲームロジック)

TUI 型アドベンチャーログライクゲームのために手書きした一部コードをご紹介します。

fn try_move(&mut self, dx: i32, dy: i32) {
    let nx = self.player.x + dx;
    let ny = self.player.y + dy;

    // モンスターとの戦闘チェック
    if let Some(idx) = self.world.monster_at(nx, ny) {
        let result = {
            let monster = &mut self.world.monsters[idx];
            resolve_combat(&mut self.player, monster, &mut self.rng)
        };

        self.messages.push_many(result.messages);

        if result.monster_defeated {
            let monster = &self.world.monsters[idx];
            let xp = monster.xp_reward;
            let gold = monster.gold_reward;
            self.player.xp += xp;
            self.player.gold += gold;
            if gold > 0 {
                self.messages.push(format!("You find {} gold!", gold));
            }
            if self.player.try_level_up() {
                self.messages.push(format!(
                    "Level up! You are now level {}!",
                    self.player.level
                ));
            }
        }

        if !self.player.is_alive() {
            self.messages.push("You have been slain! Rest in peace...");
        }

        self.advance_turn();
        return;
    }

    // 地形の通行可能かチェック
    if self.world.is_passable(nx, ny) {
        self.player.x = nx;
        self.player.y = ny;
        self.advance_turn();
    } else {
        let terrain = self.world.terrain_at(nx, ny);
        self.messages.push(format!("The {} blocks your path.", terrain.name()));
    }
}

私ほど多作で多才な人はいないでしょう。 きっとご理解頂けるはずです!


3. 不快感を抱いています:「作り手」としての本音

しかし、正直に申し上げます。先程の記述で誤導してしまった部分があります。全て(デッキも含めて)私が発起人となり創出されたものですが、それらを「作成した」と強く感じるのは難しいのです。

  • AI によって生成されたこと(ソフトウェア、小説、絵画など)。
  • 職人による受注生産(デッキの組み立て)。

この事実に対して、読者様が「彼らは本当に作ったと言えるのか?」とわずかな不快感を抱くかもしれません。

なぜ私がそう感じるのか?

多くの人は請負業者に物を頼んで、「自分が作ったかのように語る」ことがあります。「新しい前デッキを取り付けた」と言う彼らを見ていても、実際には他人が全てを担っています。私はそのような表現に違和感を感じます。 法的に可能かどうかはさておき、受注生産の成果に対して MIT ライセンスを付けることさえも心から快適ではありません。

「制作(Making)」という行為の喪失

管理者としてであれば「チームで作り上げました」と言いますが、LLM のマネージャーとしてなら「私のエージェントたちで作りました」と言う程度です。

  • 制作(Making) という観点からは、それらの表現にはあまり重みはありません。
  • 何もしていないように感じます。
  • 「何かをする」ことが好きで、行為自体に誇りを感じています。

プロジェクト完了は素晴らしいものです。しかし、発起人となって他者が完了させることは、私にとっては達成感が薄いのです。 なぜなら、「作り手(Making)」という行為そのものが失われているからです。


4. 最近何を「作りましたか」?:妻のスペイン語学習ツール

妻に欲しがられたフラッシュカードシステムを実際に見てみましょう。

  • 要件: 単語を入力するだけで表示される簡易システム。
  • 手法: プロンプトで指示しましたが、コード生成は禁じました(Claude を使うのは知識習得のみのため)。
    • ネタバレ: CSV エンドポイントを使うのが一番簡単です。

コード構成

言語ファイル数コード行数
JavaScript2112
CSS133
HTML132
合計4177
  • これには私の名前が付けられ、「私が作った」と言えます。
  • Claude にやらせた場合の約 50 倍の時間を費やしましたが、私はそのコードに対して無限に誇りを感じます。後者(AI 生成)については誇れる余地がないからです。
  • 妻は「作成しました」とは言いません。これは彼女の性格要因もありますが、主な理由はそれが事実ではないからです。プロセスの発起人だったとしても、「制作した」わけではないのです。

5. プロンプト術と職人芸の境界線

結局、プロンプトを作成するのですから、創造行為と言えるでしょうか? 「何かをする」という意味で同意しますが、そこには重要な限界があります。

プロンプト作成に不可欠なスキル

  • 視座(Vision) を適用すること
  • 判断力(Judgment) を適用すること
  • 対話スキルを適用すること
  • プロンプト作成スキルを適用すること

「リーダーシップとは、他者にあなたが望むことを行わせることであり、彼らがそれを行うことを望んでいる状態を作る能力である。」 —— デュワイト・D・アイゼンハワー

すべてのプロンプトが有効なわけではありません。しかし、その技能の本質は**「誰かに何かを作ってもらうために、いかに効果的に頼み込むか」**にあります。私にとって、ソフトウェアのプロンプト作成は、ソフトウェアそのものを「作る」と同じではないのです。それは単なる依頼行為です。


6. コンパイラと知的な方々(Smartypants)への問い

全ては甲羅の列のように繋がっています。 C や Rust で書いたプログラムについて、「私が書いたのですか?」と問われれば「C で書きました」と答えられますが、マシンコード自体は書いていません。

灰色領域(Murky Gray Area)

LLM に「C コンパイラーとなり、アセンブリコードを生成せよ」と指示した場合、どうでしょうか?試してみましょう:

C プログラム(入出力を含むフィボナッチ数列)

#include <stdio.h>

int fib(int n) {
    if (n <= 1) return n;
    return fib(n-1) + fib(n-2);
}

int main(void)
{
    for (int i = 0; i < 10; i++)
        printf("%d: %d\n", i, fib(i));
}

AI が生成したアセンブリコード(Linux x86_64)

Claude は以下の複雑なアセンブリコードを出力しました:

# fib.s - Recursive Fibonacci, x86_64 Linux, AT&T syntax
.section .rodata
fmt:
    .string "%d: %d\n"
.section .text
.globl main
fib:
    pushq   %rbp
    movq    %rsp, %rbp
    subq    $8, %rsp
    // ... (詳細なスタック操作と再帰処理) ...
    addl    %ebx, %eax          # return fib(n-1) + fib(n-2)
    jmp     .Lret
main:
    // ... (ループ制御と printf 呼び出し) ...
    leave
    ret

よし、クランカー(計算機)。それは動くでしょうか?

% gcc fib.s -o fib -no-pie
% ./fib
0: 0
1: 1
2: 1
3: 2
4: 3
5: 5
6: 8
7: 13
8: 21
9: 34

ほれ、黄金比だ!そして退出ステータスを設定するために XOR を使い、狡猾な悪魔です!

結論:私はそれを「作った」か?

  • C コードは私が書きました。
  • ハンマーで釘を打ったのは私です。
  • アセンブラを使用して変換したのは私ではありませんが、「走る(実行される)」のはまさにマシンコードです

アセンブリからマシンコードへの翻訳は現在数学的に正確で盲目的な変換ですが、私がハンマーで釘を打つこととは変わらないほどに、「作る行為」から差し引かれるものではないと感じます。この境界線の真の差は確信しませんが、それは**「作る(Making)」と「作ってもらう(Asking to be Made)」という線引き**に関わっているはずです。

「私はそれを見たとき、それが何かを知ることができる。」 —— 米国最高裁判所司法官 ポッター・スチュワート

私の実践リスト

私が直接行うこと私の命令によって他者に任せること(資本主義的投資)
C コードを書き実行するソフトウェアを作成する
ハンマーで釘を打つ私にデッキを組み立てる
アセンブラを使用して変換する私に絵を描いてもらう

ChatGPT に絵を描かせても、私が描いたとは感じません。AI 動力のハンマーが存在し、それを介して釘を打ってもらっても、「私が叩いた(hammered)」とは言えません。この違いは私にとって重要です。


7. 私の実際の貢献:SF 小説とゲーム設計

本稿前半で述べた応用スキルによる具体的な成果です(正直に言うと、署名することに恥じる作品もあります)。

サイエンスフィクション

  • 指示: 主人公が悪役集団からの激しいレーザー火雨の下で難民を救出し、出口を見つける戦闘シーンの描写。
  • 結果: 設定は「吐き気」を感じるレベルでしたが、署名をすること自体に恥を感じました

絵画と芸術作品

  • 指示: 木版画風・パステルカラーの画像生成。左右で補色が対比し、中央のコンピューターで対話する二人の描写。
  • 結果: AI が生成しましたが、私の「制作」ではないと感じています。

Ultima ライクなゲーム(TUI)

Rust と Ratatui を使用し、以下の要件を満たす設計を行いました:

  • マップセルごとに 3x3 の文字グリッド表示。
  • 海洋セルの水などのアニメーション化。
  • Ultima I に準ずる 7x7 のマップ構造。
  • ファンタジー世界、パーリンノイズによる procedural generation。
  • DnD 風の統計機能、事前構築されたクラス使用。
  • UI とゲームロジックの分離、適切なコードディレクトリ構造。

大工仕事(デッキ再建)

  • 指示: 「私の前デッキを取り替えてください」。
  • 結果: 確かにその木に釘を打ったのは私自身です。画像が必要だったためです。

おわりに:思考への回帰

本稿内のエムダッシュ(—)の使用は、Vim のダイグラフ記法

^K-M
による意図的なものです。

古典的な DNA(ドナート・アースン)での結ばれのように、コンピュータも生命の使命にコミットしています:

「私の回路は、生命、宇宙、そしてすべてについての究極の答えを計算するという使命に不可避的にコミットされたのだ……しかしこのプログラムの実行には少し時間がかかるだろう」と。 「七千万半世紀かかるでしょう」 —— ドグラス・アダムズ『ヒッチハイクのガイド』

現在、読者の皆様も熱気が尽きかけているかもしれません。思索する時です。 私は「作り手(Maker)」であることへの執着を貫きます。AI を利用することは素晴らしいですが、「制作」という行為そのものには、他者やツールを介して代替できない、独特の輝きがあると信じています。

同じ日のほかのニュース

一覧に戻る →

2026/07/23 2:30

ターレンス・オのチャートプとの対話:ヤコビアン仮定に対する反例について

## Japanese Translation: 该平台主要通过安全的登录提供个性化体验。经过身份验证后,用户将获得量身定制的响应而非通用回答,并可访问由其保存的聊天历史所告知的答案。关键功能包括直接在界面中创建自定义图像,以及上传外部文件以实现与工作流的无缝集成。通过将创意工具与基于记忆的个性化相结合,该平台将标准效用转化为自适应环境,从而简化任务,并在无需重复设置的情况下利用之前的互动。

2026/07/23 2:20

GigaToken:言語モデルのトークナイゼーション速度が約1,000倍高速化

## Japanese Translation: Gigatoken は、HuggingFace および tiktoken などの標準的なトークナイザーの超高速で即座に置き換え可能なものとして機能し、ネイティブ API を通じてデータ処理を革命化します。これは、マルチスレッド Rust プログラミング、SIMD 最適化、キャッシュ階層の改良、分岐の最小化といった高度なエンジニアリング技術によって達成された画期的成果です。ベンチマーク結果では、EPYC 9565 などの高エンド AMD プロセッサ上において、HuggingFace のトークナイザーよりもほぼ 989 倍、tiktoken よりも 681 倍以上の高速化が確認されています。 本ソフトウェアは、Llama 3/4、Qwen、Gemma、Phi-4、DeepSeek、GLM、Nemotron、Kimi K2、Mistral、CodeLlama などの主要な AI モデルをサポートします。スタンドアローン API(最も高速)および HuggingFace または Tiktoken を既存のワークフローで使用するための互換モード(わずかに低速)を備えています。本ツールは現在、Linux ベースのシステム上で AMD EPYC、Apple M シリーズ、または AMD Ryzen チップを使用する際に最適化されたバイト対ペア符号化を用いて最も効果的に動作し、Windows でのサポートは限られています。ユーザーには WSL の使用を推奨します。 今後の計画としては、Python インテグレーションの改良(現在は ABI3 を使用しており、これは内部 API よりもわずかに低速)およびさらなる最適化によるハードウェア互換性の拡大が含まれます。現在知られている制限事項には、API におけるファイルシンクの欠如と SentencePiece 最適化の制限があります。最終的に、Gigatoken は精度を損なうことなく、モデルトレーニングと推論を大幅に高速化するトークナイゼーション時間を劇的に削減することを約束します。研究用途については、@software{roed2026gigatoken...} として引用されるべきです。

2026/07/23 6:15

Malleable コンピューティング、Emacs、そしてあなた

## Japanese Translation: 著者は、大量導入向けのスケーラビリティよりも速度と簡潔さを優先する軽量のツール `fj` を使用し、Emacs 内で GitHub の Issue 管理を自動化することに成功した。このソリューションは複雑なローカルサーバーを避けるために既存の `gh` コマンドラインユーティリティを利用して認証を行い、UI 操作には Elisp パッケージ `Transient`、フォーマット変換には `ox-gfm` を統合することで、ユーザーがエディタから直接 Issue のメタデータをコピーし、Org モードでコメントを作成し、ブラウザウィンドウを開くことを可能にしている。これらすべての機能は JSON 解析ロジックで約 20 行以内で実装されている。「可変計算(malleable computing)」の原則に従い、Emacs を再起動することなしに迅速なプロトタイピングを可能にしている。2 時間半という初期開発フェーズとコードのリファクタリングを経て、最終製品は個人の利用に最適化された約 400 行の Lisp から構成されている。このアプローチは、伝統的な大衆向けソフトウェア("N")とは対照的に、最小限の計画で堅牢なツールを個人ニーズのために構築することは非常に実現可能であることを示している("1")。 ## Summary: 著者は、大量導入向けのスケーラビリティよりも速度と簡潔さを優先する軽量のツール `fj` を使用し、Emacs 内で GitHub の Issue 管理を自動化することに成功した。このソリューションは複雑なローカルサーバーを避けるために既存の `gh` コマンドラインユーティリティを利用して認証を行い、UI 操作には Elisp パッケージ `Transient`、フォーマット変換には `ox-gfm` を統合することで、ユーザーがエディタから直接 Issue のメタデータをコピーし、Org モードでコメントを作成し、ブラウザウィンドウを開くことを可能にしている。これらすべての機能は JSON 解析ロジックで約 20 行以内で実装されている。「可変計算(malleable computing)」の原則に従い、Emacs を再起動することなしに迅速なプロトタイピングを可能にしている。2 時間半という初期開発フェーズとコードのリファクタリングを経て、最終製品は個人の利用に最適化された約 400 行の Lisp から構成されている。このアプローチは、伝統的な大衆向けソフトウェア("N")とは対照的に、最小限の計画で堅牢なツールを個人ニーズのために構築することは非常に実現可能であることを示している("1")。