【AI時代の必須スキル】生成AIと未来を創る、すべてのエンジニアのための5つの鍵

サムネイル

これはなに?

こんにちは、DMM.comのミノ駆動です。 プラットフォーム開発本部 Developer Productivity Group 横断チームにて、 プラットフォームの設計品質向上に取り組んでいます。

ここ最近、AIエージェントなどの登場により ITサービス開発においてAIとの協働が急速に進んでいます。
「これからの開発はAI協働が必須」
「エンジニアにとってAIを使いこなすことが必須基礎スキルとなる」
とも言われ始めています。

望む望まざるに関わらず、生成AIによる開発のスケールは、業界的に必然の流れになるでしょう。
そんな中、生成AIを使いこなすにはどうすればいいのか、 生成AIと上手く協働するにはどのようなノウハウが必要なのか、 どのようなスキルが必要なのか、迷いや不安が生じることも多いでしょう。
実際のところ、生成AIから精度の高い回答を得ることや、どのように生成AIを活用するかを考案することは難しく、多くの方が悩んでいるのではないでしょうか。

この記事では、生成AIとの協働において、生成AIの力を引き出すために必要なスキルを解説します。 今後すべてのITエンジニアにとって重要なスキルとなるでしょう。

この記事の理解目標

ITサービス開発には、フロントエンド、バックエンド、インフラなど、さまざまな技術分野があります。 どんな分野であっても、以下5点のスキルが、生成AIの力を引き出すうえで必要であると私は考えます。

  • 目的を定義するスキル
  • 別のシステムへ置き換える考え方
  • テクノロジーの本質を踏まえたAI活用スキル
  • 専門分野の知識
  • 問題分析と言語化

これらのスキルの必要性を理解することを目標とします。

生成AIの力を引き出す5つのスキル

では順番にスキルを解説していきます。

スキル1:目的を定義するスキル

生成AIを含め、世の中にはさまざまなシステムがあります。 例えば自動車や掃除機、SNSなど。 システムとは一体何でしょうか。
ずばり、システムとは目的を達成するための手段です。 システムにはそれぞれ目的があります。

システム 目的
自動車 移動するため
掃除機 部屋をきれいにするため
SNS 意思疎通するため
ショッピングサイト 商品を売買するため

そしてこれは生成AIにもまったく同じことがいえます。

生成AIは、非常に柔軟な目的達成手段です。 文章生成、設計支援、アイデア出し、コード生成など、応用範囲は驚くほど広いです。

多目的に使える生成AI

しかし、さまざまな目的に利用できるからこそ、目的を見失いがちです。
たとえば「このコードを良い感じにして」と雑に依頼して、生成AIは的確にコード改善してくれるでしょうか。 運良くある程度は改善されるかもしれません。 しかし、パフォーマンスが悪化するコードに変更されたり、 意図とは異なる名前に変数名を変更されたり、 的を射ない「改善」をしてしまうことが実際に起こります。 目的が不明確だと、生成AIから良い回答を引き出すことはできません。
そしてこのような使い方を続けていると、そのうち「生成AIは使えない」と失望することになるでしょう。

生成AIを利用する際は、まず目的を明確に定義することが大事です。 以下は、コード改善における具体的な目的の例です。

  • 意図が読み取れるように変数名を改善したい
  • N+1が発生しないようにクエリを改善したい
  • 副作用が生じないようにメソッド構造を改善したい

「なぜ生成AIを使うのか」という根本的な問いを見失ってはいけません。 さまざまな目的に利用できるからこそ、目的を明確に定義するスキルが必要になります。

そしてこの目的を定義するスキルは、以下に説明する他のスキルの基盤になります。

スキル2:別のシステムへ置き換える考え方

生成AIの活用には 「従来の活動の一部を別のシステムに置き換える」 という発想が重要です。 具体的にどういうことか、例を挙げて考えてみます。

たとえば「目的地へ移動したい」という目的を考えます。 我々人類には2本足が備わっており、二足歩行で目的地へ移動できます。 人類は大昔から二足歩行で移動してきました。 しかし時代が進むにつれ、より便利な移動手段が発明されてきました。 馬車、機関車、自動車、飛行機などです。

これは一体何を意味するのでしょうか。 「システムは目的達成の手段」であると説明しました。 つまりこれは、 「ある目的のための手段は、別の手段に置き換えられる」 ということを意味します。
「目的地へ移動したい」という目的に対し、二足歩行システムから自動車や飛行機といった別のシステムへ置き換えられるのです。

目的に対して手段は置き換え可能

ここでソフトウェア開発の目的に目を向けてみましょう。 ソフトウェアの各開発プロセスには、それぞれ目的があります。 例えば以下のようなものです。

目的 対応する開発プロセス
顧客の要求を明確にしたい 要求定義
何をもって要求を満たすと言えるのかを明確にしたい 要件定義
要件を満たす仕組みや構造を具体化したい 設計
設計内容を実際に動作する形にしたい 実装

生成AIをソフトウェア開発に活用することも同様です。 各目的のために従来やっていた活動のうち、どの部分を生成AIに置き換えるかです。

生成AIは、ともすると単発的な使い方に陥りがちで、効果も限定的です。
ソフトウェア開発全体に対し生成AIの効果を戦略的に発揮するには、 ソフトウェア開発にかかる目的を網羅及び把握し、 その内 どの部分を生成AIに置き換えるか(または生成AIと協働するか) を考えることが重要です。

全体のうち、どの部分を生成AIに置き換えるか考えよう

また、ソフトウェア開発とは、ソフトウェア品質特性の作り込み及び向上と等価です。 ソフトウェア品質特性とは、ソフトウェアの品質を評価する基準です。 さまざまな特性があります(JIS X 25010:2013を参考に作成)。

品質特性 説明 品質副特性
機能適合性 機能がニーズを満たす度合い 機能完全性、機能正確性、機能適切性
性能効率性 リソース効率や性能の度合い 時間効率性、資源効率性、容量満足性
互換性 ほかのシステムと情報の共有、交換できる度合い 共存性、相互運用性
使用性 利用者がシステムを満足に利用できる度合い 適切度認識性、習得性、運用操作性、ユーザーエラー防止性、ユーザーインターフェイス快美性、アクセシビリティ
信頼性 必要なときに機能実行できる度合い 成熟性、可用性、障害許容性、回復性
セキュリティ 不正利用から保護する度合い 機密性、インテグリティ、否認防止性、責任追跡性、真正性
保守性 システムを修正する有効性や効率の度合い モジュール性、再利用性、解析性、修正性、試験性
移植性 ほかの実行環境に移植できる度合い 適応性、設置性、置換性

開発プロセスは、必ずなんらかの品質特性に寄与します。 たとえば以下です。

開発プロセス 品質特性
要求定義 機能適合性
クエリパフォーマンス改善 性能効率性
リファクタリング 保守性

クエリパフォーマンス改善とリファクタリングとでは、生成AIへの指示の仕方が違います。 生成AIを活用するうえでは 「どのソフトウェア品質特性に寄与するか」 を意識することも非常に重要です。

スキル3:テクノロジーの本質を踏まえたAI活用スキル

生成AIの力を最大限引き出すためには、テクノロジーの本質を理解することが不可欠です。
テクノロジーの本質が何であるかは、テクノロジーの使用によって何が変わるのかに着目するとわかります。 たとえば、飛行機を使うことで、二足歩行に比べて何百倍も速く移動できます。 ドライヤーを使うと、髪を早く乾かすことができます。 SNSを使うと、一瞬で多くの人と意思疎通が可能になります。
これらの例から言えることは、 テクノロジーの本質とは能力の拡大(及び縮小) であるということです。

生成AIもまた、テクノロジーの一種です。 その力を引き出すためには、 「どの能力を拡大するか」という観点 が必要です。
この観点での考察において重要なのは、生成AIを使用する目的です。 目的が明確になると、目的達成のために拡大したい能力が決まります。
たとえば保守性を高めることを目的とした場合、技術的負債の分析やリファクタリングが必要な活動となります。 ここで、拡大したい能力を技術的負債の分析能力とすると、 「負債の分析精度を高めるプロンプトを実装する」という使い方に行き着きます。
実際に私は、静的解析ツールでは分析困難な負債を分析できるプロンプトを実装し、実務に活かしています。

注意しなければならないのは、テクノロジーは能力を拡大する一方で、 トレードオフになっている別の能力を縮小してしまう性質があるという点です。

たとえば、飛行機は移動速度が優れていますが、二足歩行より小回りが劣ります。 SNSは多くの人と意思疎通できる一方、文脈が削ぎ落とされ、意図が正確に伝わりにくくなる側面があります。 必ずしもテクノロジーが全てにおいて万能ではないのです。

速度 小回り
飛行機 速い 低い
二足歩行 遅い 高い
意思疎通の範囲 文脈
SNS 広い 伝えにくい
対面での会話 狭い 伝えやすい

生成AIも同様に、何らかの能力が縮小するリスクを伴います。
たとえば、コードの保守性と性能効率性はトレードオフの関係にあります。 パフォーマンスに優れたコードを書こうとすると、どうしても保守性が犠牲になるケースがあります。 パフォーマンス目的で実装されたコードに対して生成AIに負債分析させたらどうなるでしょうか。 負債ではないのに負債だと誤った分析をしてしまうでしょう。 これは負債分析の能力拡大によって、パフォーマンス分析の能力が縮小していることを意味します。

こうしたテクノロジーによる能力縮小の弊害を避けるために、人間側が適切に判断する必要があります。
たとえば目的地への移動においては、飛行機で近場まで移動した後、自動車や徒歩などより小回りのきく方法で移動しますよね。 意思疎通においては、文脈が分かる内容をポストしたり、実際に会って話してみるといった手段が取れます。
生成AIも、目的に合致した使い方を適切に選択する、といった判断が必要です。

こうした能力の拡大と縮小の性質を理解したうえで生成AIの活用方法を考えることが重要です。

スキル4:専門分野の知識

生成AIから高精度な回答を引き出すには、要点をおさえ的確に指示する必要があります。 逆に要領を得ない雑な指示をすると回答精度が落ち、ハルシネーションが増大します。

的確に指示するには、生成AIに解かせたい問題に関する専門知識が必要です。
たとえば、医療ソフトウェア用のソースコードを生成AIに実装させる場合、雑にプロンプトを書いて良い結果が得られるでしょうか。 医療現場の課題や規制といった専門知識を、プロンプトを書く人間側が知っていなければ、的確な実装は難しいでしょう。

私は保守性が専門ですが、保守性に関するタスクを生成AIに指示すると、たまに誤った回答を生成してくることがあります。 専門知識のない人が見ると、誤りに気付くのは困難です。 ハルシネーションが発生していないか確かめるためにも、専門知識を深めることが重要です。

「生成AIがあればエンジニアは要らない」といった声があるようですが、私はそう思いません。 生成AIとの協働が進むほど、より専門性が必要になってくると私は考えます。

そして専門性は、前述した「テクノロジーによる能力拡大」に大いに関係します。 私が実装した負債分析プロンプトにより、素早くかつ高い精度で技術的負債を分析できるようになりました。 プロンプト実装できたのは、私に技術的負債に関する知見があるからです(下記は拙著)。

gihyo.jp

これはどういうことかというと、指示を出す人間の能力が生成AIにより拡大されたということです。 専門性が高ければ高いほど、生成AIによる能力拡大の恩恵が大きくなります。

生成AIと協働する文脈において、スペシャリストは自身の専門性をより高めていくことが大事です。

ではゼネラリスト(多様な分野の知識を持ち、多角的な視点から業務を遂行する人材)はどうでしょうか?
ゼネラリストの仕事はさまざまなものを組み合わせて相乗効果を出すことです。 相乗効果を生み出すスキル、相乗効果をより高めるスキルを伸ばすことが重要になるでしょう。
複数のAIモデルやサービスを連携させて、より複雑なタスクを行う「AIオーケストレーション」という概念があります。 最近ではMCPやA2Aといった実装形態として登場しています。 AIオーケストレーションにより高い相乗効果を得るのがゼネラリストの主戦場になるのではないかと私は考えます。

スキル5:問題分析と言語化

生成AIに回答を生成させることは「AIに問題を解かせる」と同義です。 つまり生成AIから「良い解」を得るには「良い問い」を立てることが重要です。 「良い問い」を立てるには、解決したい問題を分析し、生成AIに的確に伝える言語化力が必要です。

問題が何であるかを把握するには、やはり目的が大事です。 問題は、目的があってはじめて顕在化します。
たとえば、登山を目的に考えてみましょう。 なんの装備もなしに無事に登山できるでしょうか? 虫に刺されるかもしれませんし、道に迷うかもしれません。 急な天候不良により寒くなるかもしれません。
このように、目的が決まることで問題が浮き彫りになります。

目的があってはじめて問題が顕在化する

ソフトウェア開発でも同様です。
たとえばタスク管理アプリにおける通知機能の追加を考えてみます。 通知機能の目的は、ユーザーが重要なタスクを忘れないようにすることです。 この目的を達成するにあたり解決が必要な問題を考えると、以下のような問題が洗い出されます。

  • 通知が多すぎてユーザーが煩わしく感じるかもしれない
  • 通知機能の実装によってアプリのパフォーマンスが低下するかもしれない
  • 通知に含まれる内容が他者に見られたくない内容かもしれない

これだけではありません。 洗い出された問題についてさらに深い洞察を得るには、言語化が不可欠です。
人が頭の中で考えていることは意外に曖昧です。 文字に書き出すと、問題が明瞭詳細になるだけでなく、矛盾に気付いたり、新たな発見を得られたりします。

このように、問題分析力を高めることが生成AIの力を引き出すことにつながります。

技術や仕事の本質を洞察することが生成AIの力を引き出すことにつながる

以上、生成AIの力を引き出すための5つのスキルを解説しました。 ところでこれらのスキルを一度俯瞰してみましょう。

  • 目的定義
  • 別のシステムに置き換える考え方
  • テクノロジーの本質
  • 専門分野の知識
  • 問題分析と言語化

どのスキルも、生成AIの有無に関係なく、的確に技術を扱い、良い成果を創出するために必要なスキルです。

技術とは何か、仕事で成果を創出するとはどういうことかについて、本質を深く洞察することが、生成AIの力を引き出すことにつながるのです。

AI活用スキルを高めるためのアプローチ

上述したスキルを高めるにはどうすればいいでしょうか。 いくつか方法を紹介します。

目的駆動の考え方を身につける

仕事には必ず目的があります。 良い成果を創出するには、まず目的を明確にし、目的達成のための目標や手段を整理することが重要です。

d21.co.jp

書籍『目的ドリブンの思考法』は、目的を整理し、構造化する方法を解説しています。 この本を読むことで、目的駆動の考え方が身につき、目的定義のスキル向上につながります。

問題分析の考え方を身につける

問題の整理や分析にもテクニックが必要です。

解像度を上げる――曖昧な思考を明晰にする「深さ・広さ・構造・時間」の4視点と行動法eijipress.co.jp

書籍『解像度を上げる』は、問題整理のテクニックを解説する本です。 深さ、広さ、構造、時間の4つの観点で整理し、問題の解像度を向上します。 問題が具体的に、精緻になるので、生成AIに対する指示もより的確になります。

抽象化、具体化の考え方を身につける

目的定義や問題整理には、抽象化や具体化の考え方が必須です。

www.php.co.jp

書籍『「具体⇄抽象」トレーニング』は、抽象化と具体化の考え方やその効用を解説する本です。 この本で抽象化と具体化のトレーニングをすれば、目的定義や問題整理をより円滑に進めることができるでしょう。

自分の仕事の目的を明確にする

日々の仕事に追われていると、自分の仕事の目的を忘れてしまいがちです。
仕様書どおりに実装するのが目的ですか?
与えられたタスクをこなすことが仕事の目的ですか?
違うはずです。
「なぜその仕事をするのか」「なんのために必要な仕事なのか」を考える必要があります。 本記事で解説したように、生成AIで自分の仕事をスケールさせるには、目的を明確にすることが重要です。

自分の仕事の目的を棚卸ししてみましょう。
考えてもよくわからないのであれば、次のプロンプトで生成AIに尋ねてみましょう。 仕事の目的に加え、より良い仕事をするためのヒントも得られるでしょう。

# 役割

あなたは以下の専門家として振る舞ってください。
- ソフトウェア開発
- 目的−目標−手段の関係性
- アリストテレスの目的論

# 命令

あなたの仕事は以下です。
- 「# 私の普段の業務」から、私の業務の目的と上位目的を類推してください。
- アリストテレスの目的論の観点から、私がより良い仕事をするにはどうするのが望ましいかを提案してください。哲学用語の使用は禁止です。哲学に無知な人でも分かるように平易な言葉で説明してください。

# 私の普段の業務

(ここに自分の業務を列挙する)

自分が扱っている技術の本質を深く理解する

技術は問題解決の手段です。 自分が扱っている技術がどのような問題を解決するものなのか本質を理解することが、 生成AIの力をより引き出すことにつながります。 生成AIの能力拡大効果であなたの能力を最大化するためにも、自分の得意技術を深く理解することは重要です。

次のプロンプトで生成AIに質問すると、技術と解決したい問題の関係性がわかります。 また、より奥深い洞察を得るためにどのような知識を身につければよいのかもわかります。

# 役割

あなたは以下の専門家として振る舞ってください。
- ソフトウェア開発技術
- ISO/IEC 25010のプロダクト品質モデル

# 命令

あなたの仕事は、「# 技術」に示す技術について、以下を説明することです。
- この技術が解決する問題
- 寄与する品質特性
- この技術のより奥深い洞察を得るために何を学べばよいのか
  - 寄与する品質特性の観点からも解説すること

# 技術

(ここに何か1つだけ技術を書く)
(例: React, Docker, ドメイン駆動設計 etc..)

おわりに

弊社DMM.comのプラットフォーム開発本部でも、 部門全体をあげて開発業務のAX化(AI Transformation)に取り組み始めました。

developersblog.dmm.com

私もこのAX化に協力しています。 AI活用のナレッジ共有や育成といった、AI活用標準化向けての施策をとりまとめています。 本記事で取り上げたスキルやリテラシーを部門全体に浸透させ、 生成AIによる開発力の向上を力強く加速させていきます。

一緒に働く仲間を募集しています

dmm-corp.com