ソフトウェアエンジニアから AI エンジニアへスキルチェンジ
AI 始めました!というと、ミーハーな感じがありますが、15年ほどやってきたソフトウェアエンジニアとしてのキャリアは終わりにして、 2カ月程前から AI エンジニアになりました。ここ5年程は、過去の経験の切り売りしかしていない感じがずっとあったのですが、 全く新しいことを始めて1から勉強し直しているところでとても楽しいです。
目次
- AI エンジニアって何?
- 今までのAI/機械学習と違うところ
- 自律的なエージェントの構成要素
- 自律的なエージェントが人間を拡張した先
- 未来への不安
- ブラックボックスを超えて
- 自然言語が主役になる時代のソフトウェア開発
- やりたいこと
AI エンジニアって何?
雑に言えば、この表現が言いえて妙だと思います: 「LLM インテグレーション屋さん」
LLM インテグレーション屋さんになることにしたので、今は Stanford の NLP 動画見まくって LM を作るところから勉強しなおしている。 https://t.co/TC9UU54UKX https://t.co/GuDhyeRwd6
— Ryosuke Iwanaga (@riywo)
May 2, 2025
LLM には限らなくていいのですが、AI を活用したソフトウェアを作る人、といったところでしょうか。 なので、スキルセットの一部は今まで通りソフトウェアエンジニアなのは変わらないです。 でも、必ず AI が関わってくる縛りが入ります。
今までのAI/機械学習と違うところ
これまでも、AI もしくは機械学習を古典的なソフトウェアに組み込むという仕事はずっとありました。 典型的にはレコメンデーション、最近だと画像認識などなど。 これらはデータに基づき学習したモデルを介することで、人間が決定論的にプログラムするだけでは 実現の難しいロジックを実行可能にしてくれます。
ただ、LLM 以前はモデル学習の部分が完全にソフトウェアからは切り離されていて、 機械学習屋さんがどこかで作ったモデルを、ブラックボックスとして活用するという形でしか使えませんでした。 モデルの挙動を変えたい場合、ソフトウェア屋さんとしては機械学習屋さんの仕事を待つ、しかできなかったのです。
LLM を筆頭に最近のモデルが画期的だと僕が感じるのは、プロンプトによって既に学習済のモデルの挙動を推論時に修正できるという点です。 これは機械学習の民主化だと考えられます。今までは専門知識と専用インフラ、および膨大なデータを持っている ごく限られた人たちにしかできなかったモデルの振る舞いの変更を、ソフトウェアの知識すらない人がプロンプト(自然言語)を修正するだけで行えるのです。
しかし、これだけなら 2022年の ChatGPT の登場時にはすでにできたことで、今さらという話です。 プロンプトに加えて、僕が AI に全振りしようと思ったきっかけは自律的なエージェントが現実的になってきたところです。
ChatGPT の登場時点では、推論の振る舞いを修正はできるものの、使い方としてはあくまでも一問一答のチャット形式が主流でした。 人間側が主導的に会話を進めることで、やりたいことを完遂させるという形式は、いわゆるチャットボットとしてすぐに浸透はしました。 ただ、僕は正直未来を感じませんでした。タスクを終わらせるために人間がずっとリードしないといけないので、1人ができることには限りがあります。 もちろん単体の効率が良くなるタスクも多いですが、高度で曖昧なタスクでは人間側のスキル、つまりどういう質問をするか、がずっと重要になります。 また、時間も拘束されるので、複数タスクを同時に行うことも難しいです。
これが特に最近(実際はもっと前からあった)、エージェントが自律的にタスクを解決までもっていくというやり方が台頭してきました。 僕が最初にこれを認識したのは、2カ月ほど前に Cline を初めて触ってみたときに、「これやって」という雑な指示に対して、Cline がエージェントとなって、 LLM とツールを駆使して解決まで自律的に動いたのを目にした時です。これはゲームチェンジャーだと感じました。
自律的なエージェントの構成要素
今時点で自律的なエージェントのシンプルな構成は、ReAct (Reasoning and Acting) と呼ばれるエージェントです。 これは、至って簡単な仕組みです。まず、エージェントはタスクを受け取ると LLM に何をすればいいかを聞きます。 その際に、エージェントが現実世界に対して実行可能なこと(ツール)の一覧を一緒に渡して、 LLM にはその中からどれをどういう風に使うかを指示してもらいます。LLM を脳みそとして次に実行するツールの指示を受け取った エージェントは指示通りそのツールを実行します(例えば検索するとかファイルを読み書きするとか)。 次が重要で、実行が終わったらその結果を LLM に戻して次の指示を仰ぎます。 ある意味、エージェントはただのメッセンジャーで知的なことは何もしていません。あとは、LLM がタスクが完了したと判断するまでこのループを続けます。
これだけです。 最近の コーディングエージェントや、OpenAI o3 の様なエージェント的なモデルも含め、大雑把な言い方をすればだいたいやってることはこれです。 たったこれだけ。しかし、LLM 側が scaling law と呼ばれる経験則で日々性能が上がり、ツール側も MCP (Model Context Protocol) を始めとして様々なアイデアが出てくることで、 こんなにもシンプルな構成で驚くほどに柔軟に多様なタスクを、自律的にこなせるようにすでになっています。 1
ReAct はおそらくエージェントのベースラインに過ぎなくて、マルチエージェントと呼ばれる複数のエージェントの協調動作など、今からまさにこの領域が 高度に発展して複雑化しながら、できることがもっと増えていく可能性を秘めています。でも僕はそのことよりも、ベースラインそのものが すでにこれほど強力であることに感動して、これより良くなる未来しかないという事実を感じた結果、AI に全振りすることにしました。
自律的なエージェントが人間を拡張した先
エージェントが自律的にタスクを行ってくれると、人間は時間から解放されます。適切に指示を行い(もしくは将来的には勝手に意図を汲み取って) タスクを機械が勝手にやってくれると、その時間で人間は他のことができます。機械が自律的に処理している間は人間の指示は不要なので、 タスクを並列で大量に実行することも容易に可能です。つまり、時間と作業量の両面で、1人の人間ができることの限界を突破してくれます。
コンピューターによって、人間はその限界を何度も突破してきました。高速な数値計算やリアルタイム制御によって宇宙にも進出しました。 ネットワークやデータベースによって地理を超えた大量の通信や取引を日々行っています。これから自律的なエージェントによって、 今までは人間が介在する必要があると思われていた知的作業の多くを、コンピューターに委ねることができるようになる、と僕は感じました。 その中には、ソフトウェア開発も含まれます。
知的作業にかかる時間と単位時間にできる作業量の限界から解放されることで、人間はまた別のことに時間を使えるようになります。 ただ、知的であることを誇りとしてきた人にとっては、自分たちの得意領域やある意味快楽でもあった部分を奪われる話になります。 先日友人ともこういった話をしていて、じゃあ人間に残る知的作業は、与えられる情報を見て感情を判断することくらい(例: 映画を見て感想を述べる)になっていくのか。 それすらも機械がもっていったら、もはやそれは知的生命体であり、そうなったときに人間には何が残るのか? 人間を排除するという判断が妥当となる世界がきても驚きはしない、そんな結論になりました。
未来への不安
少し脱線というか未来の話に行き過ぎました。そんな未来が見えるなか、足元で自分たちはどうしたらいいの?というのが今みんな悩んでいるところのようです。 ここ最近何人かのジュニアなソフトウェアエンジニアを目指している人たちから、今自分たちが勉強していることって意味があるの?といった相談を受けました。 コーディングエージェントによってジュニアな仕事が必要なくなる、というのは容易に想像がついてしまいますからね。
AI に全振りした側からアドバイスできることとしては、AI を使う方法(= LLM インテグレーション屋さん)に関しては逆に言うと今は全員がほぼ同じスタートラインなので、 これまでの経験値とか関係なく最前線に最速でたどり着ける可能性があるから、そっちにも賭けてみるといいと思います。
バブルだなんだと言われようが、AI を使った製品作り(コーディングエージェントを使って古典的なソフトウェアを作るという意味ではない)は、ほぼ確実に すべてのソフトウェア業者が取り組むことになります。そうなったときに、業界15年のソフトウェアエンジニアだけど AI には懐疑的で ChatGPT で情報が止まってる人(2カ月前の僕)と、 業界未経験のソフトウェアエンジニアだけど AIエージェントは何個も作ったことがあって最新情報を追いかけている人だったら、どっちを採用したいでしょうか。
AIエージェントを作るために必要になるソフトウェアエンジニアスキルはジュニアレベルだけとは限りませんが、コーディングエージェント始め AI の力によって、 相当な部分が補完できてしまうのはおそらく事実です。なので、大事になってくるのは AI/LLM をどこまで理解していて次をどこまで予測でき、 そして予測外のブレークスルーに対してどれだけ早く対応できるか、といったところになります。
古典的なソフトウェアエンジニアのスキルとは違って、AI/LLM の常識は毎日変化しています。昨日のベストプラクティスが明日には不要になる、 そういうスピード感なので、腰を据えてじっくり勉強するみたいなノリではすぐに置いて行かれます。逆に言うと、そういう方が得意で燃えるという人にとっては すぐに活躍できる場所となるでしょう。インプットとアウトプットを同時にやって、しかも量もスピードもこなす、少なくともそういうスキルが今は求められます。
ブラックボックスを超えて
一方で、毎日の様に出てくる新しいサービスや論文を触って眺めてふんふんと納得しているだけでは、最先端の人たちには追いつけません。 AI/LLM を昔の機械学習モデルの時の様にブラックボックスとして見ているうちは、いつまでも LLM インテグレーション屋さんです。
僕は、LLM インテグレーション屋さんをやりながら、同時に中身もちゃんと理解しようと努めています。 これは、ソフトウェア開発をやるに当たって、CPU や OS、コンパイラなどの基盤となる技術を学ぶことと同じです。 別に CPU や OS を作る仕事をできるようになるつもりはないけど、それらを知っていると知らないとでは大きな差があることは ソフトウェアエンジニアであれば分かっていることかと思います。
同じことが AI/LLM でも言えます。より良い使い方を考え先を見通すためには、AI/LLM の基盤技術を知ることは必須です。 ひとまず、Transformer を組んで学習・推論をやってみて、最近のモデルで使われる技術を知り、今は Post training に 非常に興味があるので Reinforcement Learning を学びつつ、Fine tuning を理解してできるようになろうとしています。 学習の過程はこんな感じ。
- The best course to catch up LLM - Stanford CS336: Language Modeling from Scratch
- Breaking the Black Box: A Software Developer’s Deep Dive into Transformers
Pre training にあたる部分は、どうしても引き続き機械学習屋さんの仕事というか、規模の関係で誰でもできるものではないのですが、 Fine tuning に関してはプロンプトの様に民主化が進むと僕は考えています。なので、ここはそれが来るまでにしっかりと頭と手になじませたうえで、 誰かが考えてくれるであろうめっちゃいい感じの Fine tuning 技術を駆使して、LLM インテグレーション屋さんできるようになろうと思ってます。
先述のジュニアエンジニアの例で言うと、単にエージェント作ったことがあるだけの人よりも、こうした基盤技術の理解がある人の方が 今後の適応能力に大きな開きがあるのは、ソフトウェアエンジニアの採用で CS の基礎が重視されていたのと本質的には変わらないでしょう。
自然言語が主役になる時代のソフトウェア開発
こんな感じでインプットとアウトプットを全部 AI/LLM に振ることにしたので、15年ほど積み上げたソフトウェア開発のスキルはもう忘れてしまいましたし、 情熱も執念も全くありません。
他のソフトウェアエンジニアの人たちの AI/LLM への反応を見ていると、コーディングエージェントをフル活用して古典的なソフトウェア開発の効率を上げようとする人たちと、 LLM の非決定的な出力に疑念が強いので距離を置いている人たち、が大半という感じでしょうか。どちらの立場も僕は否定はしませんし、なんなら 2カ月前までは LLM なんぞ知らんし関係ないと思ってました。
僕の今時点での考えは、古典的なソフトウェア開発はもちろんなくなりはしませんが、徐々に従事者を減らしていくと感じています。 アナロジーとしては、コンパイラや言語基盤、OS や CPU などを開発運用している人たちは今でももちろんいるし欠かせないのですが、数という意味では圧倒的に少数であるように、 2025年現在に存在するプログラミング言語を読み書きできるスキルは、近いうちに多くのソフトウェア開発では不要となっていくと思っています。 代わりに、自然言語というもっと裾野の広い言語によってソフトウェア開発ができるようになり、LLM は人間が読み書きするには不自由だが 機械同士では安定して効率のよい中間言語を用いて、自然言語の指示を実際に動くソフトウェアへと変換していく、そこにはもう人間の目は要らない。 高度なソフトウェア開発のスキルをもった一部の人たちがこうした基盤の開発運用を続ける一方で、小学生が自然言語を使ってあたかも工作をするように 創造的なソフトウェアを生み出せる世界の方が、僕は見てみたいです。 2
なので、ソフトウェア開発のスキルをこれからの時代に活かし続けるのであれば、そうした基盤的なことに関わりはじめた方がいいと思います。 例えば非決定的な出力をどうやって安定したソフトウェアに転換するのか、そのためには何が必要になるのか。 自分のレビューを通さなくても LLM が出してきたロジックをデプロイするためには、何が達成されればいいのか。 などなど、いくらでも答えのない領域があるので、ぜひソフトウェアエンジニアの皆さんに解決してほしいです。
一方、アプリケーションとしてのソフトウェアは LLM インテグレーション屋さんがどんどん生み出すことになるので、そちらで生きていきたい人は LLM の最新情報を追いかけながらも、LLM の基礎技術を学んでいくと良いと思います。また、上に書いたような世界が来るにはまだ時間はかかると 思われるので、それまではソフトウェアエンジニアの基礎技術も引き続き必要になります。なので、ジュニアエンジニアの人はちょっと大変ではありますが ソフトウェアエンジニアの研鑽もしっかりやっておくと、LLM インテグレーションしかできない人との大きな差分になってくると思います。
やりたいこと
とはいえ、ソフトウェアエンジニアのスキルしかない人が LLM の基礎技術を学ぶのは結構無理があるなと感じます。 僕は、不良学生でしたがそれでも20年前に機械学習をかじっていたので、割とすんなりと論文やらオンライン講義についていけました。 でも、機械学習を全くやったことがない人にとってはあまりにも未知の領域すぎると思います。
前述のように、これまではそこは棲み分けされていたのでそれで良かったんです。でも LLM によって民主化が進む中で、 表面をさらうような入門は増えてきましたが、もう一歩専門性を身に着けたい人向けに踏み込んだ学習コンテンツというのは足りていない気がしています。
というわけで、機械学習をやったことがないソフトウェアエンジニア向けに、ボトムアップで数式を可能な限り排除して LLM (というか Transformer) にたどりつけるような学習コンテンツを作ってみようかなと考えてます。 イメージとしては、PyTorch で Transformer を徐々に作っていきながら、その裏の処理を数式で説明するんじゃなくて 実際に(行列)計算させてイメージを持たせる感じかなと思ってます。行列嫌いな人でもついていって、少しは行列が理解できるようになれば。 何分、僕も行列が嫌いなので、自分のためにももっと理解を深めたい。
モチベーション維持のために、そういうコンテンツを求めてますという人は何かしら応援してくれるとありがたいです。
あと、AI/LLM に関連するお仕事も大歓迎です(日本時間でも対応できます)ので、ご連絡頂けたら幸いです。