はじめに: ハッカー未来派もシンギュラリティ戦争に宣戦布告する

本日GPT-4が発表された. 同時にGoogleがPaLMという生成系AIのAPIを発表.

米国司法試験が上位10%の賢さで解答できるらしい. Twitterでは東大試験の数学も解けたとか.

いままでずっとAIブームを横目にあまり深く注視してなかったが, 今度は無視できないかもしれない.

歴史が変わる.

そしてコロナのような縁遠いものではなく, テクノロジーのどまんなかに爆弾を打ち込まれた. 黒船到来, ここからテクノロジー戦争が始まる.

本日は人類滅亡のカウントダウンが始まったシンギュラリティの記念日かもしれない.

ハッカー未来派としても, この戦争に宣戦布告する. ここから数年は, この兵器を使いこなしたものだけが生き残る. APIを開発したり, 情報を加工するスキルは数年持つかもしれない. しかしそれすらもあと5年もつのかわからない. だが, 今のところはそこにエッジを持つ私はやがて消えゆくエッジを価値に変えるために動く. 武士にとっての刀は現代においてなんの役にも立たなくなったように, おそらくプログラミングのスキルはもういらない.

というわけで? ClojureからChat APIを叩いてみた.

Code

(ns lib.chat
  (:require
    [aleph.http :as http]
    [byte-streams :as bs]
    [cheshire.core :as json]
    [clojure.edn :as edn]
    [clojure.java.io :as io]))

(def api-key
  (delay (-> "creds.edn"
             io/resource
             slurp
             edn/read-string
             :api-key)))


(def url "https://api.openai.com/v1/chat/completions")
(def model "gpt-3.5-turbo")


(defn chat
  [content]
  (let [headers {"Authorization" (str "Bearer " @api-key)
                 "Content-Type"  "application/json"}
        data    {:model model :messages [{:role "user" :content content}]}
        body    (json/generate-string data)
        params  {:headers headers :body body}]
    (-> @(http/post url params)
        :body
        bs/to-string
        (json/parse-string true)
        :choices
        first
        (get-in [:message :content]))))

(def ret (chat "人生は不幸の連続です."))

優しいね!

それは正確ではありません。人生には幸福な瞬間もあります。幸福を見つけるためには、自分自身の心、環境、自己啓発、人々との関係、機会など、さまざまな要因を考慮することが必要です。不幸な出来事が起こるかもしれませんが、それを克服することができます。人生は失敗や困難に直面することがありますが、それを乗り越えることでより強い、より愛情深い人になれます。

AIで生成したコードをREPLで素早く検証するチャット駆動開発とREPL駆動開発時代の到来か?

もはや, ChatAIの登場で, 人間が難しいコードを書く時代が終わるのかもしれない. 現在はコードのパーツを言葉から生成できるようになった. この吐き出されたコードが正しいのかどうかは人間か判断する必要がある. AIはテストをしてくれない.

すると, 吐き出された関数を即座に検証して部品として取り込むことはREPL駆動開発はとても優れている点と言える.

REPL駆動開発の素晴らしいところは対話的にコードがかけることだった. このプロンプトに相談しながら開発をするスタイルは, REPL駆動開発と似ており, とても相性がいい予感がしている. いや, インタフェースが似ているだけかもしれない.

REPL駆動開発とClojureによる高速開発のムーブメントくるか? しかしおそらく, Pythonとかに比べてマイナーなClojureは学習の元となる情報がほかの言語に比べて圧倒的に少ない気がした.

コードを書くスキルが数年で価値がなくなることを前提に老害プログラマのプライドを捨てて次の手を考える

プログラマの仕事は再定義される. パレートの法則がはたらくならば, プログラマの8割が職を失い2割が残る. 他の知的労働もそうなるだろう.

まず深刻な影響がでるのはSES業界における下請け企業だろう. 下請け会社のヘボコーダーに仕様書を書いて投げるくらいならば自分でやったほうがもはや生産性が高いかもしれない. コミュニケーションコストが省ける. NTTデータを頂点とするSESピラミッド構造は数年で完全崩壊する. 恐ろしいことだ. 数年程度勉強したプログラマはいらない.

コードを書くスキルが不必要になっていくことを前提にして, 先を読んで今のうちに行動しないといけない. わたしはミニマリストとしてほとんどの持ち物を捨てた. コードを書くへんな老害プライドを捨てる覚悟を持とう.