AI SE

AIを味方につけるためのスキルマップ〜 "全部できる"より、"AIに任せる力"を持とう 〜

目次

はじめに:スキルコレクターの末路

3年前、私は焦っていました。

新しい技術が次々と登場する。Flutter、Swift、Kotlin、Go、Rust、TypeScript...「これも学ばなきゃ、あれも学ばなきゃ」と、毎晩プログラミング学習に追われていました。

でも、どれも中途半端。

広く浅く知っているけど、深い専門性がない。
「何でもできます」と言いながら、何も極めていない。

典型的な「スキルコレクター」でした。

そんな時、尊敬する先輩エンジニアに言われた言葉があります。

「君は、"全部できる人"になろうとしている。
でも、AI時代に必要なのは、"AIに任せる力を持つ人"だよ」

その言葉が、私のキャリア観を変えました。


AI時代のスキルマップ:3つの軸

これから必要とされるスキルを、3つの軸で整理してみましょう。

【AI時代のスキルマップ】

          深い専門性
              ↑
              |
              |  ◎ 理想のポジション
              |    (T字型人材)
              |
横断的な知識 ←─┼─→ 狭い知識
              |
              |  × 避けるべき
              |    (何もない)
              |
              ↓
          浅い専門性

軸1:深い専門性(Depth)

「これなら誰にも負けない」という得意領域を持つ

私の場合:

  • Flutter/Dart でのモバイルアプリ開発
  • システム開発全体の品質管理
  • PHP/Laravel でのバックエンド設計

AIがどれだけ進化しても、深い専門性は簡単に代替されません。

なぜなら、深い専門性には「暗黙知」が含まれているから。

  • 「このプロジェクトでは、この技術を選ぶべき」という判断
  • 「このコードは、将来メンテナンスで苦労する」という予感
  • 「このチーム構成なら、この開発手法が合う」という洞察

こうした経験に基づく判断は、AIには難しいのです。

軸2:横断的な知識(Breadth)

「関連領域の全体像を理解している」状態

例えば、Flutterエンジニアなら:

  • モバイルアプリ開発の専門性(深い)
  • バックエンドAPI設計の理解(広く)
  • インフラ/DevOpsの基礎知識(広く)
  • UI/UXデザインの基本(広く)

全てを深く学ぶ必要はありません。でも、「会話ができるレベル」の知識は重要です。

軸3:AIリテラシー(AI Collaboration)

「AIを効果的に使える力」

これが、AI時代の新しい軸です。

  • Prompt Engineering:AIから最適な結果を引き出す
  • AIの得意/不得意を理解している
  • AIの出力を適切に評価できる
  • AIと協働してタスクを効率化できる

これから必要とされる5つのスキルセット

具体的に、どんなスキルを磨くべきか。5つに分類してみました。

スキルセット1:Prompt Engineering(AI対話力)

AIから最適な結果を引き出す技術

これは、もはや必須スキルです。

悪いPromptの例

Flutter でログイン機能を作って

これでは、AIは最低限の実装しか返してきません。

良いPromptの例

【目的】
Flutter 3.x でログイン機能を実装したい

【要件】
- メールアドレスとパスワードでログイン
- バリデーション
  - メールアドレス: RFC 5322準拠
  - パスワード: 8文字以上、英数字記号を含む
- ログイン失敗時は3回までリトライ可能、その後アカウントロック
- 状態管理: Riverpod 2.x を使用
- エラーハンドリング: ネットワークエラー、認証エラーを適切に処理
- セキュリティ: パスワードは平文で保存しない、JWTトークンで認証

【制約】
- 既存のプロジェクトに組み込むため、Material Design 3 に準拠
- テスタビリティを重視し、依存性注入を活用

【期待する出力】
1. ディレクトリ構造の提案
2. 実装コード(Repository層、Provider層、UI層を分離)
3. テストコードのサンプル

このレベルで指示を出せると、AIは驚くほど高品質なコードを返してきます。

Prompt力を鍛える3つのコツ

コツ1:5W1Hを明確にする

  • What(何を作るか)
  • Why(なぜ必要か)
  • Who(誰が使うか)
  • When(いつまでに)
  • Where(どこで動かすか)
  • How(どう実装するか)

コツ2:制約条件を明示する

  • 技術スタック
  • パフォーマンス要件
  • セキュリティ要件
  • 既存コードとの互換性

コツ3:段階的に深掘りする

最初から完璧なPromptは書けません。

1回目: 「Swift でカメラアプリを作りたい」
↓ AIの回答を見て
2回目: 「AVFoundation を使って、リアルタイムプレビュー付きで」
↓ さらに深掘り
3回目: 「カスタムフィルタを追加したい。Metal を使って実装して」

対話を重ねながら、理想の実装に近づける。


スキルセット2:「AIと共通言語を持つ」技術力

AIと効果的に協働するには、AIが理解しやすい言語やツールを知っていることが有利です。

Python:AIの母国語

AIモデルの多くは、Pythonで書かれています。

ChatGPT、GitHub Copilot、各種AIツール...すべてPythonとの親和性が高い。

私のPython活用例:

# データ分析スクリプト(ChatGPTが書いた)
import pandas as pd
import matplotlib.pyplot as plt

# プロジェクトのバグデータを分析
df = pd.read_csv('bug_report.csv')

# バグの発生頻度を可視化
df['created_at'] = pd.to_datetime(df['created_at'])
df.set_index('created_at').resample('W')['bug_id'].count().plot()
plt.title('Weekly Bug Report Trend')
plt.savefig('bug_trend.png')

私はPythonの専門家ではありません。でも、「ChatGPTに書いてもらったPythonコードを読んで、修正できる」レベルは重要です。

Flutter/Swift/PHPを深く知っていても、Pythonの基礎は押さえておくと、AIとの協働がスムーズになります。

SQL:データを語る言語

AIにデータ分析を依頼するとき、SQLの知識があると圧倒的に有利です。

例:システムのパフォーマンス分析

ChatGPTへの質問:
「このSQLクエリ、遅いんだけど最適化して」

SELECT u.name, COUNT(o.id) as order_count
FROM users u
LEFT JOIN orders o ON u.id = o.user_id
WHERE o.created_at >= '2025-01-01'
GROUP BY u.name
HAVING COUNT(o.id) > 10
ORDER BY order_count DESC;

SQLがわかれば、AIの提案を評価し、プロジェクトに適用できます。

Git/GitHub:協働の基盤

AIツール(GitHub Copilot、Cursor、Windsurf等)は、Gitのコンテキストを理解します。

  • コミット履歴から意図を推測
  • ブランチ名から機能を推測
  • PRのdiffから変更の影響を分析

Gitの使い方が上手いエンジニアは、AIも上手く使える。


スキルセット3:設計力と抽象化思考

これまでの連載でも強調してきましたが、改めて。

AIはコードを書くが、設計はしない。

設計力 = AIの出力を評価する力

AIが生成したコードを見て:

❓「このコードは、スケールするか?」
❓「このアーキテクチャは、将来の変更に耐えられるか?」
❓「このコードは、チームメンバーが理解できるか?」

これらを判断する力が、設計力です。

抽象化思考 = 共通パターンを見抜く力

具体例を見て、抽象的なパターンを見抜く。

例:複数の画面で似たような処理を発見

// ユーザー一覧画面
Future<void> loadUsers() async {
  setState(() => isLoading = true);
  try {
    final users = await api.getUsers();
    setState(() {
      userList = users;
      isLoading = false;
    });
  } catch (e) {
    setState(() {
      error = e.toString();
      isLoading = false;
    });
  }
}

// 商品一覧画面
Future<void> loadProducts() async {
  setState(() => isLoading = true);
  try {
    final products = await api.getProducts();
    setState(() {
      productList = products;
      isLoading = false;
    });
  } catch (e) {
    setState(() {
      error = e.toString();
      isLoading = false;
    });
  }
}

パターンを見抜き、抽象化する:

// 共通のAsyncValue型を定義(Riverpodスタイル)
class AsyncValue<T> {
  final T? data;
  final Object? error;
  final bool isLoading;
  
  // when メソッドでパターンマッチ
  R when<R>({
    required R Function(T data) data,
    required R Function() loading,
    required R Function(Object error) error,
  }) {
    if (isLoading) return loading();
    if (this.error != null) return error(this.error!);
    return data(this.data as T);
  }
}

このパターン認識と抽象化が、設計力の核心です。


スキルセット4:システム思考と全体最適化

部分最適ではなく、全体最適を考える。

私がシステム開発全体の管理をしていて、最も重要だと感じるスキルです。

ケーススタディ:パフォーマンス問題

状況:
Flutter製アプリで、一覧画面の表示が遅い。

開発者Aの提案(部分最適):
「リストの表示を最適化しましょう。ListView.builderを使って、仮想スクロールを実装します」

開発者Bの提案(システム思考):
「待ってください。なぜ遅いのか、原因を調査しましょう」

調査の結果:

  1. APIレスポンスが3秒かかっている(PHP側の問題)
  2. 画像が高解像度のまま送信されている(バックエンドで圧縮すべき)
  3. 毎回全データを取得している(ページネーションが必要)

真の問題は、フロントエンドではなく、システム全体の設計でした。

システム思考を鍛える方法

方法1:影響範囲を常に考える

コード変更をする前に:

  • この変更は、どこに影響するか?
  • バックエンドに影響は?
  • 既存ユーザーに影響は?
  • パフォーマンスに影響は?

方法2:メトリクスで測る

感覚ではなく、数値で判断。

  • レスポンスタイム
  • エラー率
  • ユーザー満足度
  • 開発速度

方法3:ステークホルダーマップを描く

このシステムに関わる全ての人を可視化:

[ エンドユーザー ] ─ 使う
       ↓
[ カスタマーサポート ] ─ サポート
       ↓
[ プロダクトオーナー ] ─ 方針決定
       ↓
[ 開発チーム ] ─ 実装
       ↓
[ インフラチーム ] ─ 運用

全員の視点で考える習慣が、システム思考を鍛えます。


スキルセット5:継続学習力

技術は変化し続けます。学び続ける力が、最も重要なスキルです。

私が実践している学習ルーティン

朝のルーティン(30分):情報収集

  • Hacker News(技術トレンド)
  • Zenn、Qiita(日本語の技術記事)
  • Flutter/Swift/PHP の公式ブログ
  • GitHub Trending(人気のリポジトリ)

週1回(2時間):深掘り学習

気になった技術を、実際に手を動かして試す。

月1回(半日):振り返りと計画

  • 今月学んだことを整理
  • 来月学ぶことを計画
  • スキルマップを更新

情報過多時代の学習戦略

すべての情報を追うのは不可能です。

私の情報フィルタリング法:

レベル1:流し読み(毎日)
タイトルだけチェック。興味があれば次のレベルへ。

レベル2:斜め読み(週に数本)
記事を開いて、概要を把握。

レベル3:精読(月に数本)
本当に重要な記事だけ、じっくり読む。

レベル4:実践(月1-2本)
実際にコードを書いて試す。

すべてを「レベル4」でやろうとすると、疲弊します。


AI×SEでキャリアを広げる:3つの方向性

AIを味方につけると、キャリアの選択肢が広がります。

方向性1:AI活用エンジニア

「AIを最も効果的に使えるエンジニア」

  • 開発速度が圧倒的に速い
  • AIツールを使いこなし、チームの生産性を向上
  • AIによるコード生成 → 品質管理 → 最適化のフローを確立

求められるスキル:

  • 深い技術力(Flutter/Swift/PHP等)
  • Prompt Engineering
  • AIの限界を理解し、適切に人間が介入

私自身、この方向性を目指しています。

方向性2:AI×ビジネスブリッジ

「AIで何ができるかを、ビジネス側に翻訳できる人」

  • 要件定義 + 生成AI分析
  • 「この業務、AIで自動化できますよ」と提案
  • ビジネス価値を最大化する技術選定

求められるスキル:

  • 課題定義力(連載第2回)
  • ビジネス理解
  • AIの最新動向の把握

方向性3:AI時代のアーキテクト

「AIが組み込まれたシステムを設計できる人」

  • AIモデルをシステムに組み込む設計
  • スケーラブルなMLOps環境の構築
  • AI倫理やバイアス問題への対処

求められるスキル:

  • システム設計力(連載第3回)
  • インフラ/クラウドの知識
  • 機械学習の基礎理解

実践:私の学習ロードマップ(2025年版)

参考までに、私が2025年に学んでいることを共有します。

Q1(1-3月):AIツールの深化

目標:

  • GitHub Copilot のショートカットを完全習慣化
  • Claude、ChatGPT、Gemini の使い分けをマスター
  • Cursor、Windsurf 等のAIエディタを試す

実践方法:

  • 毎日の開発で、意識的にAIツールを使う
  • 「AIに任せた方が速いタスク」のリストを作る
  • Prompt のテンプレート集を作成

Q2(4-6月):Python × データ分析

目標:

  • Pandas、Matplotlib で簡単なデータ分析ができる
  • プロジェクトのメトリクスを可視化するスクリプトを作る

実践方法:

  • Kaggleのチュートリアルを進める
  • 実際のプロジェクトデータで分析してみる
  • ChatGPTに書いてもらったコードを理解し、改良する

Q3(7-9月):Flutter × AIの融合

目標:

  • Flutter アプリに機械学習モデルを組み込む
  • TensorFlow Lite を使った画像認識アプリを作る

実践方法:

  • 公式ドキュメント + YouTube
  • 個人プロジェクトで小さく試す
  • 学んだことを記事にして発信

Q4(10-12月):品質管理 × AI

目標:

  • AIを活用した自動テスト生成
  • AIによるコードレビュー支援ツールの導入
  • 品質メトリクスの自動収集と分析

実践方法:

  • チームで試験的に導入
  • 効果測定と改善
  • ナレッジの体系化

学習を継続するための5つのコツ

スキルマップを描いても、継続できなければ意味がありません。

コツ1:完璧を目指さない

「70%理解したら、次に進む」

100%理解しようとすると、時間がかかりすぎて挫折します。

大まかに理解したら、実践しながら深める。

コツ2:アウトプット駆動で学ぶ

「学ぶ → 作る → 発信する」

  • ブログ記事を書く
  • GitHub にコードを公開する
  • 社内勉強会で発表する

アウトプットすることで、理解が深まります。

コツ3:学習時間を習慣化する

「いつ学ぶか」を決める

  • 毎朝7:00-7:30(情報収集)
  • 毎週土曜10:00-12:00(深掘り学習)
  • 毎月最終日曜(振り返りと計画)

時間を決めないと、「いつか学ぼう」で終わります。

コツ4:学習仲間を作る

一人では続かない

  • 社内で勉強会を開く
  • オンラインコミュニティに参加
  • TwitterやZennで学習記録を共有

誰かと一緒に学ぶと、継続率が上がります。

コツ5:「やらないこと」を決める

すべては学べない

私の「やらないことリスト」:

  • ❌ 話題の技術を全て追いかける
  • ❌ すべてのフレームワークを試す
  • ❌ 毎日新しいツールを試す

「やること」だけでなく、「やらないこと」を決めることで、集中できます。


AI時代の「T字型人材」を目指す

理想的なスキルセットは、T字型です。

     深い専門性
         |
─────────┼──────── 横断的な知識
         |

縦棒:深い専門性

  • Flutter/Swift/PHP のどれか1つを深く
  • システム設計 or 品質管理 or 特定のドメイン知識

横棒:横断的な知識

  • 開発の全工程(要件定義〜運用)を理解
  • フロント、バック、インフラの基礎
  • AIツールの活用力

これからは、T字に「AIリテラシー」が加わります。

     深い専門性
         |
─────────┼──────── 横断的な知識
         |
         |
    AIリテラシー

まとめ:「全部できる」を目指さない勇気

AI時代、すべてを学ぼうとすると、疲弊します。

大切なのは:

✅ 深い専門性を1つ持つ
✅ 関連領域の全体像を理解する
✅ AIを効果的に使える
✅ 継続的に学び続ける

完璧な技術者を目指さない。
AIと協働できる技術者を目指す。

AIは敵じゃありません。
最強のパートナーです。

でも、AIに使われるのではなく、AIを使いこなす。

そのためのスキルマップを描き、一歩ずつ進んでいきましょう。


次回予告(最終回)

第6回では、「これからも変わらない"システムエンジニアの本質"」をお届けします。

技術、ツール、フレームワーク...すべてが変化します。
でも、変わらないものがあります。

  • 技術は道具、信頼が価値を生む
  • 「システム」は人の営みを支えるもの
  • AI時代だからこそ求められる"誠実さと倫理観"
  • 次世代へのメッセージ:「AIと共に、より人間らしく」

このシリーズの締めくくりとして、
システムエンジニアという仕事の本質を、改めて見つめ直します。

最後まで、お付き合いください。


【AI時代を生き抜くシステムエンジニア論 - 連載目次】

  1. AI時代の到来と、SEの役割の変化
  2. AIに代替されないSEの基本「課題定義力」と「論理的思考」
  3. 変わる技術トレンド、変わらない「設計思考」
  4. AIと共存する時代の"チーム開発力"
  5. AIを味方につけるためのスキルマップ(今回)
  6. これからも変わらない"システムエンジニアの本質"(次回・最終回)

おすすめ記事

1

Skill50(スキルゴー)― 50代からの“見えるスキル”アプリ ー50代からのキャリアを強くする、あなた専用のスキル可視化ツール ー Skill50(スキルゴー)は、経験・実績・強みを“選ぶだけ” ...

2

はじめに:50代からのキャリアは、ここから加速する。 「この先、どう働いていけばいいんだろう?」 そんな不安を抱えながら、毎日の仕事をこなしていませんか? 50代は、キャリアの分岐点です。会社員として ...

3

2025年、AI技術はスマホアプリ開発において「なくてはならない存在」になりつつあります。特に**生成AI(Generative AI)**は、アプリの機能だけでなく、開発プロセスそのものを革新し始め ...

4

AIアプリ開発は「作って終わり」ではありません。特に ChatGPT API や 画像生成AI を利用する場合、APIコストがかかるため、収益化の仕組みを最初から考えておくことが重要です。 この記事で ...

5

ブログは、自分の考えや経験を発信できるだけでなく、正しく運営すれば収益を生み出すことができる魅力的なメディアです。特にWordPressは、世界で最も利用されているブログ作成ツールで、自由度が高く、将 ...

6

はじめに フリーランスや副業エンジニアとして活動する皆さん、限られた時間でより多くの高品質なコードを書く必要に迫られていませんか?2025年現在、AI技術の飛躍的な進歩により、個人開発者でも企業の開発 ...

-AI, SE