世界を動かす技術を、日本語で。

ドメインの専門知識こそが真の競争優位である

概要

  • ソフトウェア開発 で最も難しいのは、 コードを書くこと ではなく ドメイン理解 であった。
  • Agentic AI の登場により、 理解と実装の分離 が生じた。
  • 正しさの判断 が新たなボトルネックとなり、 ドメイン知識 の価値が増大。
  • 両方のスキル (技術+ドメイン知識)を持つ人材が最も重要に。
  • 今後は 業界や専門知識 の習得がエンジニアの差別化要素。

ソフトウェア開発における本当の難しさ

  • ソフトウェア開発 の本質的な難しさは、 コード記述 ではなく ドメインの正確な理解
  • 例: 給与システム 開発では、 差押え税引前控除給与期間中のレート変更 などの複雑なルール把握が必要。
  • 例: 交通アプリ では、 GTFSフィード の仕組みや、「 trip」と「 route」の違い、 バスの到着時刻 の曖昧さなどの理解が必要。
  • コード はその理解の「転写」に過ぎず、 理解の獲得 こそがエンジニアの仕事の本質。

Agentic AIによる構造の変化

  • Agentic AI は、 理解と実装 のリンクを切断。
  • モデル構築 を経ずに ソフトウェア生成 が可能となり、従来の前提が崩壊。
  • これにより、 「作れるか」 から 「正しいか判断できるか」 が新たな制約条件に。

誰がAIツールを使いこなせるか

  • ドメインエキスパート (例:ロジスティクス担当者、医療コーダー、保険数理士)は、 ソフトウェア知識が浅くても出力の正誤判断 が即座に可能。
    • 彼らは 現場経験 から「正しい出力」を知っている。
    • AIエージェント がコード生成を補完し、ドメイン知識が最大限に活きる。
  • 優秀な一般エンジニア は、 ドメイン知識が乏しい場合正しさの検証 が困難。
    • コードやテストは書けても、 業務的な誤り を見抜けない。
    • 「正解のオラクル」 を持たないため、出力の妥当性を保証できない。

キャリアパスの変化

  • 従来 は、エンジニアが ドメイン知識を獲得 することでキャリアアップが可能だった。
  • ドメインエキスパートソフトウェア開発技術 を身につけるのは困難だった。
  • Agentic AI の普及で、 エンジニアの強み(モデル→実装) が希少価値を失い、 ドメイン知識 の重要性が相対的に上昇。

今後価値が高まる人材像

  • 両方のスキル (堅牢なコード実装+深いドメイン知識)を備えた人材が最も価値を持つ。
    • 例:「 運転手は11時間を超えてはいけない」などの 業務ルール を理解し、 テストコード として正しく表現できる。
    • AIがコード生成、人間が 二重の審査(実装・業務正しさ) を行う構造。
  • エンジニアとしての差別化 には、 業界・制度・物理プロセスなどの深い理解 が必要。
    • AIには学習できない暗黙知 (例:1,000件の給与計算の現場経験)が希少価値。

これからのエンジニアへの提言

  • 機械的な実装力価値が低下
  • 深いドメインモデルの習得 が最大の資産。
  • 特定業界・制度・現場プロセス を、かつてプログラミング言語やフレームワークを学んだように 徹底的に学ぶこと が鍵。
  • AIにはできない部分 を自分の強みにすることが、これからのキャリア戦略。

Hackerたちの意見

ドメインの専門知識だけじゃないよね。難しいのはマーケティングや流通、リスクを取る姿勢、モチベーション、根気、そして忍耐力なんだ。特に「トリビアル」なものでも、参入障壁がなくても、ミリオンダラー企業になってるものはたくさんあるよ。ケバブスタンドとか、水のボトル、理髪店、引越し業者とかね。

リスク許容度、モチベーション、根気、そして忍耐。これが防御線だ。AIの前も今も変わらない。

最近出会った良い例があるんだ。釣りに行った時、チャーターに「俺が作った無料アプリ(https://oceanconnect.ca)を見てみない?」って聞いてみたんだ。彼の仕事に役立つかもしれないと思って。海のデータをどう使うのか全然分からなかったし、何を知りたいのかもわからなかった。そしたら、データの使い方や何ができるかについての質問がすごくて、めっちゃ興奮した。モデルはそれが抽象化するシステムとは違うってことを思い出させてくれたし、モデルを開発するための知識はそれを使うこととはほとんど関係ないんだなって。彼は水上での気象データの使い方について豊富な知識を持ってた。ある意味、彼は俺よりもデータについて詳しいかもしれない(彼が気づいていなくても、デジタル表現を理解していなくても)。プログラミングができれば、彼のような人たちのために役立つアプリを作るのがずっと得意だろうなと思った。彼のような人がアイデアを画面に出せば、LLMを使って素晴らしいことができるんじゃないかって考えたよ。いつか資金が得られたら、毎日水上の人たちにインタビューして製品を洗練させたいな。そのドメイン知識はすごく専門的で、複雑な分野で何十年も生きてきたら、想像もつかないことを知ってるんだよね。

この投稿で説明されているソフトウェアのジェネラリストも、ドメインの専門知識を持ってるよ。ソフトウェアの分野でね。今の時代、優れたジェネラリストのソフトウェアエンジニアなら、AIから逃げるためにランダムなドメインに飛び込むことはない。ソフトウェアが君のドメインなんだ。君はそれに留まり、拡大して変化していくんだよ。

友達が電気エンジニアで、FIDEのチェスレーティングが2000を超えたんだ。30年チェスをやってて、高校でチェスクラブを始めた。大学でマイクロコントローラーを使った時にちょっとプログラミングを学んだくらい。俺はインフラや管理の何でも屋で、コンピュータサイエンスの学位を持ってて、30年趣味でプログラミングしてる。良い日にはLichessで1000のレーティングがある。チェスボットのコンペをやってみたんだけど(オープンブック、AIを使ってプログラム、オープニングブックやエンドゲームテーブルを使って、自由にやる)、俺が圧勝したけど、実際の対局では20年で彼に2回しか勝ってない。彼はリアルで99%のランダムプレイヤーに勝てるし、俺はせいぜい20%くらいかな。何を言いたいのかよくわからないけど、ドメイン知識がもう全てじゃないのかな?それともドメイン自体が変わったのかな?

AIの視点から見ると、いくつかのドメインは浅い(チェスみたいに)、いくつかは深い(ここは自由に埋めてね)っていう解釈もできると思う。

実際にチェスをプレイすることが、効率的なゲームツリー探索アルゴリズムを書くことと、いくつかのシンプルな原則を超えて何の関係があるの?君は彼にプログラミングコンテストを挑んで勝ったけど、君ははるかに経験豊富なプログラマーだった。彼がAIを使えたとしても、君のドメイン知識が決定的な要因になったんだ。

最近、ほとんどバイブコーディングで作られたアプリをレビューしたんだ。オーナーは「もうすぐローンチできるから、ちょっとチェックしてほしい」って言ってた。見てみたら、データベース設計がめちゃくちゃだった。一部の機能は動いたけど、他はダメだった。欠けている部分や、なぜ壊れているのかを説明した。OPが言ったように、彼がドメインの専門家なんだ。先月だけで数十億のトークンを使った。ツールはどんどん良くなってる。でも、ドメイン専門家にAIを渡すからって、ソフトウェアエンジニアが不要になるわけじゃない。ドメイン専門家はAIを使ってソフトウェアを作れるし、ソフトウェアエンジニアはAIを使ってドメインについて学べる。両者は異なる専門知識を持っているんだ。

正直、これが俺の経験でもある。LLMは他のドメインを探求するのを簡単にしてくれるけど、一つのドメインのマスターにはなれない。専門的なドメイン知識はまだ必要なんだ。それでも、新しいアイデアを試したり、深く掘り下げたりするための素晴らしいツールにはなるし、好奇心があるなら学習を加速させるのにも役立つよ。

完全に同意だね。

自分が目指しているのは、基本的にはプラットフォームエンジニアになることだと思う。仕事はガードレールやバリデーション、プロンプトライブラリを作ること、そしてエージェントや手動レビューを行うこと。これでドメインの専門家がコーディングエージェントを使い始めるときに安全を確保するんだ。ちょっとT2/T3のカスタマーサポート(またはサポートエンジニア)に似てるけど、内部的な役割だね。危険なポイントや変なエッジケースを見つけて、全てが正しく設定されているか確認するのが仕事で、ルーチンの問題を100%自分で解決するわけじゃない。もちろん、クロスカッティングな問題にもたくさんの余地があるよ。

ドメインの専門知識とQAのマインドセットが組み合わさることでSWEを置き換えることができるけど、一貫したQAのマインドセットは珍しいね。

先月だけで数十億のトークンを使ったよ。Claude Code(最大限の努力でOpus 4.6)を一日中使ってるけど、これがどう可能なのか本当に理解できない。これって使い方が報われてるの?自分の理解不足かもしれないけど…どういうこと?

どれだけの議論が必要なんだろう?みんながAIを個人レベルでどう扱うか全然わからないって認めるまで。最初は良い開発者になってAIの使い方を学ぶだけで十分だったけど、次はアーキテクチャを設計できることが求められた。そして今は「センス」が全てを左右するようになって、結局はその分野の専門家であることが一番重要になってる。AIが安定して予測可能な改善状態か停滞状態になるまでは、こういう意見は無意味で、ほぼ完全に間違ってる可能性が高いね。

聞いたことないの?今適応しないと取り残されて、二度と働けなくなるよ!Copilot?それは去年の話。エージェンティックエンジニアリング?もう遅れてるよ!

全体的には同意だけど、職業によってはドメイン知識を蓄えたり秘密にしたりする傾向が出てくると思う。例えば配管工はパイプのフィッティングを変える方法を商業秘密や知的財産として守ろうとするだろうね。

LLMは、あなたの武器の一つとして追加するツールだよ。全能ではないし、他のツールと同じように注意が必要。今のところ、僕のアナロジーで一番しっくりくるのは、現代のドリルドライバーとドライバー/ブレースとビットなどの比較かな。古い道具に比べて、短時間で素晴らしい結果が得られるんだ。「1インチ間隔で床を1時間で全部ネジ止めした」とか「タバコ休憩をたくさん取った」とかの「すごい」エピソードもあるよ。(本当は、半分の時間で釘打ち機を使えたけど、将来的にその床を簡単に上げることはできないし、たぶん倍のコストがかかるだろうね。)いくつかのオンプレミスのLLMを持っていて、他のもアクセスできるから、最終的には…ブランドにアナロジーを広げると思う。新しい仕事を探すつもりは全然ないよ。ドリルドライバーは、使う人がいないと大工や現場作業員にはなれないからね!

僕はお金を生むソフトウェアを書いていて、AIはそのソフトウェアをもっとお金を生むように手助けしてくれるんだ。

20年前のOOPの盛り上がりを覚えてる?みんながGoFの本をざっと読んで、理由もわからずにパターンを使っていた頃のコードベースの掃除を、今でも続けているよ…。僕の予測では、20年後にはClaudeが共著したものを掃除していると思う。

AIが基本的に安定して予測可能な改善や停滞の状態になるまでは、こういった意見は無意味で、ほぼ完全に間違っている可能性が高いよ。AIについて覚えておくべき小さなこと:技術はまだ機能していない間はAIと呼ばれる。信頼できるようになったら、適切な名前を付けて、別のものがAIになるんだ。

最近、AIツールがソフトウェア開発を難しくしているという考えが固まりつつあるんだ。なぜなら、AIはできることのハードルを劇的に引き上げるから。個々の開発者は、今ではかなり挑戦的なプロジェクトに取り組むことができるようになった。最終的な制約は常に時間で、AIはその時間内にもっと多くのことを成し遂げる手助けをしてくれる。でも、その時間でできることはずっと難しくなる。もっと多くのことを理解しなきゃいけないし、AI以前の快適ゾーンから大きく外れなきゃならない。数日かけてコードベースをリファクタリングしたり、小さな機能を出す方法を考えたりするのは、以前は許容されていたけど、今はそれが難しくなっている。コーディングエージェントのおかげで、その曲線をもっと早く登れるけど、それでも登らなきゃいけないし、情報の量もずっと多くなる。非技術系の雰囲気でコーディングする人たちが自分の仕事を奪うことを心配しているなら、正しい反応は、その雰囲気のコーダーたちよりもずっと優れたソフトウェアを作ることだよ。それには、もっとスキル、もっと野心、もっと経験が必要なんだ。難しいよね!

なんか、観客や素人がプロスポーツを判断するのに似てる気がする。これを引用しないでほしいけど、要点を伝えたいんだ:彼らは、スポーツで成功するためには完璧な対称性が必要だと言うけど、それは子宮内の発達の安定性と強く関連している。対称性が高いほど、完璧な発達になるってね。数年後には、ブルース・リーの片足がもう一方よりもかなり短いとか、ウサイン・ボルトも似たような非対称な発達をしているってニュースが出てくる。そして、彼らは最初の主張をひっくり返して、「彼らは例外だから一般的なルールは適用されない」と言い出すんだ。だから、興味のあるものを作ってみて、うまくいくかもしれないよ :)

安定した状態は、システム思考者/エンジニアとドメイン専門家のペアプログラミング構造で終わると信じたいな。誰かがリンクリストがマップよりも良い時を見つける必要があるし、もう一人は臨床試験のコーディングが請求、監査、患者へのアプローチの前に行われるべき時を見つける必要があるんだ。

どれだけの持論を展開すれば、人々が個々のレベルでAIをどう扱うべきか全く分からないことを認めるのだろう? 誰も何をすべきか分からないなら、話すことが正しいアプローチだよね。

僕はアナリストとして働いていて、うちのグループには技術的なスキルが強いアナリストが約20%いて、残りはもっと伝統的なアナリストやドメインエキスパートだよ。この1年で、非技術系のアナリストたちがAIモデルを活用して内部ツールを開発する際に、より生産的になってきたのを見てきた。以前は、ほとんどすべてがTableauで開発されていたから、非開発者が作業ツールを構築する最もアクセスしやすい方法だったんだ。ついこの間、うちのグループのアナリストが、基本的にTableauレポートを移植したより柔軟なアプリを発表したよ。

コードのことなんて、全然関係ないんだ。ベンチャーキャピタルやプライベートエクイティのためにソフトウェアを作ってきた5年間を経て、このブログ記事には本当に共感するよ。コードを書くことは、僕の仕事の中で最も簡単な部分だし、顧客が何を求めているのか、その背後にあるファイナンシャルエンジニアリングやニュアンスを理解するのが一番難しいんだ。いつも冗談で、「もしできるなら、シニアファンド会計士を雇ってプログラミングを教えたい」と言ってるけど、問題はそういう人が全然いないことなんだ。エンジニアにファンド会計の細かいところを理解させて、これらの会社のためにソフトウェアを作るのは難しいよ。

よく分からないけど、ドメインの専門知識があってもスキルがないと、すごくテクニカルデットが溜まるポイントがあるよね。実際、私のキャリアの約半分は「ドメイン知識があって、チケットやエピックを閉じるには十分だけど、テクニカルデットが多い」っていう状況に対処してきた。つまり、私の仕事のかなりの部分は、こんな感じだった。 - ドメイン知識があっても、人間だからミスをしたり、フィードバックを受け入れなかったり、最悪の場合はコーディングエージェントが書いたものを二重チェックすることを拒否したりするから、PRを細かくレビューすること。 - 「これをリファクタリングして、技術的には正しいけど、書き方がひどすぎてタイムアウトになったり、マネージャーやDBAが叫んでる」っていう状況。

私たちはいつも冗談で、シニアファンドアカウンタントを雇ってプログラミングを教えたいって言ってるけど、問題はそういう人が全然いないことなんだ。エンジニアにファンド会計の細かいところを理解させて、こういう会社のためにソフトウェアを作るのは難しい。真に優れたソフトウェアエンジニアは、ドメインを学ぶ意欲があるけど、学ぶ方法が必要だよね。そう言うのは、いろんなレベルでそういうことをやってきた会社にいたからなんだ(たまに会社自体、たまにチーム、たまに同僚)。逆に、すべてが口先だけの会社にもいたことがある。そういうところでは、JIRAにあることや、IT以外の人が会議で言うことからしか情報を得られないことが多い。 ベンチャーキャピタルとプライベートエクイティのためにソフトウェアを作ってきた5年間、この記事には本当に共感する。コードを書くのは、仕事の中で一番簡単な部分だし、顧客が私たちに何を求めているのか、その背後にある金融工学やニュアンスを理解するのが難しい。特に過去5年間での大きなパラダイムシフトは、多くの会社が人を骨の髄まで働かせることを期待していることだと思う。それが逆効果になって、重要な会話ができなくなってしまう。文化も大きな要因で、少なくともサイドコンバセーションやミーティングが簡単にできる会社もあれば、ちゃんと話すためにchange.orgの請願書にサインしなきゃいけないような会社もある。結局、君の言う通りだね。要件はコードよりも重要だ。私がいた会社では、「正しい」という人の定義が、すべての要件が満たされていても、実装されている間ずっと不在だった人が書いたものの書き方が気に入らないから、機能が遅れたこともあった。 次のことを知ったら、「バッチプロセス」が%numberOfRecord%*10の挿入を持っていて、設計が悪いデータモデルのせいでSQLのアップサートを最も間違った方法でやっていることが分かる(つまり、DBから取得して、存在しない場合に挿入するレコードを追加する)ってことがある。そして、データレイヤーのクエリパターンを見直すのではなく、「パフォーマンスを改善する」ためにますます疑わしいことをやり続けるのを何度も見てきた。

空いてるよ。コーヒーでも飲みに行こうか。

これがまさに20年間のセキュリティアーキテクトとしての私の経験だ。 https://open.substack.com/pub/rakkhi/p/vibe-coding-as-securi...

エンジニアの利点、ドメインモデルを動くコードに変換する能力が、今や安くなった。私はAIをよく使う人間としてこれを言っている。でも、特に「動く」という言葉が入っているせいで、まだまだ安いとは言えない。