AIが専門性を圧縮してくれるとき、それでも最後に人間に残るもの
(eggp.dev)こんにちは。私はフロントエンド開発者として8年目になります。
AIの助けを借りてDSLコンパイラを設計し、arXivに論文まで
投稿することになった経験を文章にまとめてみました。
- 複数のSaaSを作りながら感じていた「ドメインごとに同じ構造が繰り返される」という直感から出発しました
- AIをコーディング補助ではなく、各分野の専門家の思考様式を借りるためのツールとして活用しました
- 失敗のコストが構造的に低くなったことで、アーキテクチャを4回作り直してもなお、プロジェクトを押し進めることができました
- 同時に、AIでは埋められない残り20%――「今、間違ったことを問いかけている」という直感――の重要性も実感しました
AI活用の可能性と限界の両方を同時に感じた、率直な体験談です。
11件のコメント
形式言語が何かは分からないのですが、
state、computedは変数で、actionは関数のように見えるのに、何が違うのでしょうか? 文章を読むと状態図を描いたのかと思った一方で、ドメインが反復されるという内容とどう関係しているのかもよく分かりません。文中に出てくる単語自体は知らないものではないのに、あまりうまく読めませんね。たとえば、私たちが会員登録フォームを作ると考えてみましょう。
会員登録フォームで、名前、性別、年齢、兵役の除隊有無という4つの項目を受け取るとします。
「性別が男性の場合はセレクトボックスを表示し、兵役の除隊有無を尋ねる」
という条件が1つ追加で出てくると仮定します。
そして送信ボタンがあれば、それは私たちが普段言う会員登録に対するドメインモデルだと言えるでしょう。
このとき、名前、性別、年齢、兵役の除隊有無という4つはドメインに対する state であり、
兵役の除隊有無を尋ねる select box の visibility は性別から派生する computed です。
そして会員登録ボタンには action がマッピングされます。
どうも私の文章力が足りず、読みやすくうまく書けなかったようです。
概念自体は上で説明した内容と似ていると考えていただければと思います。
正確には理解できていないのですが、なんとなくどんな感じかは分かる気がします。
ありがとうございます。
興味深く拝読しました。ブログに書かれていた内容もです。たとえとして適切かどうかは分かりませんが、各言語のいちばん最初のチュートリアルが
Hello World!である理由や、昔Web開発を学ぶときに掲示板やショッピングモールを作りながら学んでいた過程は、結局おっしゃっていることと軌を一にしているのではないかと思います。昔はこう考えていたんです。掲示板とショッピングモールを作れる程度のテクニックがあれば、たいていのWebは実装できる。そして究極的には、結局プログラミングというのは Input と Output があるだけなのだと。たとえとして適切だと思います。私のプロジェクトも、実質的には人のIntentとSnapshotの2つだけで構成されています。
結局のところ、人の意図(例:キー入力、マウスクリック)をどのように計算し、どのような意味を持たせるかが、私のプロジェクトが進むべき道だと考えていました。
要するに、state diagram を描いてくれる mini language を作ったということですか?
いいえ、state diagram をお見せしたのは、Manifesto 内部の状態遷移を可視化する方法の一つであり、
決定論的ステートマシンをフレームワークとして作りました。
Manifesto Core 内部の計算は、同じ状態と命令に対して常に同じ結果だけが得られるように設計されています。
DSL を1つ作られたのはわかるのですが、決定論的状態機械がどういう内容なのかはよくわかりませんでした。非決定論的状態機械もあるのかなと思ったり……。ともあれ、興味深く拝見しました。今後もうまく育てていかれることを願っています。
ああ、先生のご指摘はその通りです。ステートマシン自体は決定論的である、という点はその通りです。私が manifesto で導入したのは非チューリング完全ベースのもので、DSL の内部にはループが存在しません。そのおかげで、プログラムを実行する前にプログラムがどのように動作するかを計算でき、なぜそのような結果になったのかも説明できます。
ご指摘ありがとうございます!
興味深く読みました。共感するところが多いですね。ワクワクする一方で、怖さもあります。
興味深く読んでいただき、ありがとうございます。
これから急速に変化する時代の流れの中で、どのように生きていくべきか
いろいろと考えさせられる今日この頃ですね