Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Select an option

  • Save masakielastic/dea1ad3671ca8ac2905a4c1107c770f8 to your computer and use it in GitHub Desktop.

Select an option

Save masakielastic/dea1ad3671ca8ac2905a4c1107c770f8 to your computer and use it in GitHub Desktop.
「AI時代の職務経歴書、スキル説明、エンジニア面接を、ビジネス課題・実装・検証・監査・説明の一連の流れとして整理するガイドライン」

AI時代の職務経歴書・スキル説明・エンジニア面接ガイドライン

1. このガイドラインの目的

AIによって、エンジニアが扱える範囲は広がった。

従来は実装経験を中心に説明すればよかったが、現在は次の工程まで一人で扱える。

  • ビジネス課題の調査
  • 要件整理
  • 技術選定
  • 実装
  • テスト
  • コードレビュー
  • 顧客説明
  • 運用手順の作成
  • 障害対応
  • 改善計画

一方で、面接時間と面接官の認知容量は増えていない。

そのため、職務経歴書、スキル欄、面接では、知っている技術をすべて説明するのではなく、次の一連の流れを再現できることを示す。

ビジネス課題 → 制約と優先順位 → 技術的な問題構造 → 選択肢とトレードオフ → 開発計画 → アーキテクチャと実装 → 検証と人間の監査範囲 → 説明 → 導入・運用・撤退

このガイドラインでは、職務経歴書を「経歴の一覧」ではなく、面接で共有する前提条件と評価プロトコルとして扱う。


2. 基本原則

2.1 技術名より、仕事の流れを示す

次のような記述だけでは、何を任せられるか判断できない。

  • PHP経験10年
  • Symfony経験5年
  • ChatGPTを利用
  • EC-CUBEのカスタマイズ経験
  • DDDを学習

技術名は、判断能力の証拠として使う。

中心に置くのは、次の内容である。

  • どの課題を扱ったか
  • 何を優先したか
  • どの案を採用したか
  • 何を採用しなかったか
  • どこを人間が監査したか
  • どう検証したか
  • 誰にどう説明したか
  • 問題時にどう戻したか

2.2 AI利用は、実装・検証・説明のセットで記述する

AI利用をコード生成だけで説明しない。

AI支援開発は、次の工程として示す。

課題整理 → 選択肢の生成 → 実装支援 → 検証 → 相手別説明 → 運用・改善

AIが担当した作業と、人間が保持した判断を分ける。

AIへ任せやすい作業

  • 情報探索
  • 既存コードの調査
  • 選択肢の列挙
  • 定型コードの生成
  • テストケース候補の抽出
  • 静的解析エラーの整理
  • 差分の要約
  • 説明資料の初稿
  • 運用手順の雛形

人間が保持する判断

  • ビジネス課題の定義
  • 制約と優先順位
  • 業務ルール
  • 責務境界
  • 品質水準
  • 監査範囲
  • 受入条件
  • 採用・不採用判断
  • リリース判断
  • 撤退判断

2.3 完璧なコードではなく、品質投資の配分を説明する

すべての案件へ同じ品質水準を適用しない。

プロトタイプ、社内ツール、短期キャンペーン、決済処理では、必要な品質が異なる。

品質水準は、次の条件から決める。

  • 利用者数
  • 利用期間
  • 障害時の影響
  • 扱うデータ
  • 金銭への影響
  • 外部サービスとの連携
  • 復旧可能性
  • 変更頻度
  • 保守期間

面接では、常に最高品質を目指すと答えるのではなく、どの領域へ先に品質投資するかを説明する。


2.4 すべてを検査せず、人間の監査範囲を決める

AI生成コードをすべて一行ずつ確認する運用は成立しない。

人間の監査資源は、重大事故につながる境界へ集中する。

監査範囲は、次の6項目で決める。

  1. 権限
  2. 守る資産
  3. 副作用
  4. 可逆性
  5. 検知可能性
  6. 被害範囲

人間の必須監査対象

  • 認証・認可
  • 決済・返金
  • 個人情報
  • 在庫
  • 受注状態
  • 会計
  • データ削除
  • 一括更新
  • マイグレーション
  • 外部APIの更新処理
  • ファイルアップロード
  • 本番バッチ
  • ログへの機密情報出力

自動検証へ寄せやすい対象

  • コードスタイル
  • Lint
  • ビルド
  • 定型的な表示変更
  • 既存テストで覆われた処理
  • 破棄可能なプロトタイプ

ただし、ファイル種別だけで判断しない。

テンプレート変更でも、個人情報表示、URL生成、raw 出力を含む場合は監査レベルを上げる。


3. 職務経歴書の構成

3.1 職務要約

職務要約では、技術スタックの列挙より、仕事の進め方を示す。

記述例

Web開発において、ビジネス課題、制約、技術的な問題構造を整理し、実装、検証、説明、運用までを一連の工程として扱う。 AIは調査、選択肢整理、コード生成、テスト観点抽出、説明資料作成に利用し、業務ルール、責務境界、受入条件、監査範囲、リリース判断は人間側で管理する。 コードだけでなく、テスト、検証記録、顧客説明、運用手順を成果物として残す。


3.2 標準ワークフロー

個別案件ごとに同じ工程を繰り返さず、職務経歴書の前半に共通ワークフローを置く。

標準ワークフロー

  1. ビジネス課題を整理する
  2. 制約と優先順位を決める
  3. 技術的な問題構造を分解する
  4. 選択肢とトレードオフを比較する
  5. 開発計画を段階化する
  6. 責務境界を決めて実装する
  7. 自動検証と人間の監査範囲を分ける
  8. 顧客、経営者、開発者、運用担当者向けに説明を分ける
  9. 導入、監視、復旧、撤退方法を定義する
  10. 判断を次回へ再利用できる形で記録する

3.3 個別案件の記述形式

各案件では、工程全体を繰り返さず、重要な判断を中心に書く。

推奨フォーマット

ビジネス課題

何に困っていたか。

制約と優先順位

何を優先し、何を後回しにしたか。

技術的な問題構造

どのデータ、状態、外部サービスが関係したか。

選択肢と判断

何を比較し、なぜその案を選んだか。

実装と責務

どの層・機能へ何を配置したか。

検証

正常系、異常系、権限、障害、復旧をどう確認したか。

人間の監査範囲

どこを必ず人間が確認したか。

説明と運用

誰に何を説明し、どのように導入したか。


3.4 個別案件の記述例

EC-CUBEカスタマイズ調査

EC-CUBE 4系のサイト固有カスタマイズについて、コア改変、app/Customize、プラグイン、イベント、PurchaseFlowの使い分けを整理した。 AIを既存コード調査、実装案比較、テスト観点抽出、説明資料作成に利用した。 人間側では、受注、在庫、決済、ポイント、メールへの影響範囲と責務境界を整理し、Controllerへ業務判断を流出させない方針を設定した。 決済、在庫、認可、状態遷移、二重実行防止を人間の重点監査対象とし、定型的なControllerやフォーム実装は自動テストと静的解析を中心に確認した。 顧客向けには業務影響と保守リスク、開発者向けにはSymfony・EC-CUBEの拡張方法として説明を分けた。


4. スキル欄の書き方

4.1 ツール名だけを書かない

弱い例

  • ChatGPT
  • Claude
  • Codex
  • Symfony
  • EC-CUBE
  • PHPUnit

これでは利用範囲と責任範囲が分からない。

改善例

AI支援開発

  • 要件整理、影響分析、実装案比較
  • 既存コード調査、コード生成、リファクタリング支援
  • テストケースと異常系の抽出
  • 静的解析、自動テスト、手動確認による受入
  • 顧客、経営者、開発者、運用担当者向け資料の作成
  • 業務ルール、責務境界、受入条件、監査範囲は人間側で管理

EC-CUBE・Symfony

  • app/Customize、Plugin、EventSubscriber、PurchaseFlowの適用判断
  • Controller、Service、Repository、FormTypeの責務分離
  • 受注、在庫、決済、ポイント、メールへの影響分析
  • 認可、CSRF、状態遷移、二重実行防止の確認
  • PHPUnit、Playwright、PHPStanによる検証
  • 顧客向け業務説明と開発者向け技術資料の作成

4.2 スキルは三段階で説明できるようにする

同じスキルを、相手の理解度に合わせて説明する。

レベル1:業務上の意味

ECサイトの変更が在庫や決済へ与える影響を整理し、事故を防ぐ。

レベル2:一般的な設計

画面処理、業務処理、データアクセスを分離する。

レベル3:実装詳細

Controller、Service、Repository、PurchaseFlow、EventSubscriberを責務に応じて使い分ける。

最初からレベル3で説明しない。


5. 面接の基本プロトコル

面接では、複数のビジネス課題に対して、同じ判断手順を再現できるかを示す。

5.1 回答の基本構造

  1. ビジネス課題
  2. 制約と優先順位
  3. 技術的な問題構造
  4. 選択肢とトレードオフ
  5. 開発計画
  6. アーキテクチャと実装
  7. 検証
  8. 人間の監査範囲
  9. 導入・運用・撤退

5.2 最初は業務レベルで答える

最初からフレームワーク固有の用語を出さない。

注文キャンセルでは、画面上の状態だけでなく、決済、在庫、ポイントが連動します。 そのため、表示変更と業務処理を分け、部分失敗と二重実行を検証します。

面接官が詳細を求めた場合だけ、次の段階へ進む。

実装では、Controllerを入力と応答に限定し、業務処理をServiceへ集約します。

さらにEC-CUBE固有の質問があれば説明する。

EC-CUBEでは app/Customize とPurchaseFlowを責務に応じて使い分けます。


5.3 回答時間を三段階で準備する

30秒版

  • 課題
  • 優先順位
  • 採用方針
  • 検証

2分版

  • 問題構造
  • 選択肢
  • 実装
  • 監査範囲
  • 導入・撤退

深掘り版

  • クラス構成
  • 状態遷移
  • テスト
  • セキュリティ
  • ログ
  • 運用
  • AI制御

6. 面接で想定される定番質問

6.1 AIをどこで使いますか

回答の軸

  • 調査
  • 選択肢整理
  • 実装支援
  • テスト観点抽出
  • 説明資料作成

回答例

AIは、既存コードの探索、実装案の比較、定型コード生成、テストケース候補、説明資料の初稿に使います。 業務ルール、責務境界、受入条件、監査範囲、リリース判断は人間側で持ちます。


6.2 AI生成コードをすべてレビューしますか

回答例

すべてを同じ深さでは確認しません。 権限、決済、個人情報、在庫、削除、外部API更新のような高リスク領域は人間が必ず監査します。 コードスタイル、型、定型的な表示処理は自動検証へ寄せます。 判断基準は、資産、副作用、可逆性、検知可能性、被害範囲です。


6.3 完璧な設計を目指しますか

回答例

すべての案件へ同じ品質水準は適用しません。 試作品や社内ツールでは、まず動くものを作り、利用価値を確認します。 一方で、決済、個人情報、在庫、認可は初期段階から検証を厚くします。 後回しにした設計課題には、改善または撤退の条件を付けます。


6.4 どこを人間が監査しますか

回答フォーマット

  1. 守る資産を特定する
  2. 重大事故を挙げる
  3. 必須監査範囲を決める
  4. 自動化する範囲を決める
  5. 受入条件を示す
  6. 復旧方法を示す

ECサイトの例

重要資産は、注文、決済、在庫、ポイント、顧客情報です。 決済取消、状態遷移、在庫復元、権限、二重実行防止は人間が監査します。 定型的な画面実装や型チェックはAIと自動検証へ寄せます。 決済失敗、通信切断、再実行、権限不足を受入試験に含めます。 問題時は自動処理を止め、手動運用へ戻せるようにします。


7. ケース反復型の面接準備

一つの成功事例だけでは、再現性を判断しにくい。

異なる性質の事例を三つ以上用意する。

7.1 業務処理

例:

  • EC-CUBEの注文キャンセル
  • 在庫連携
  • 決済
  • ポイント
  • 予約管理

示す能力:

  • 状態遷移
  • データ整合性
  • 部分失敗
  • 二重実行
  • 監査証跡

7.2 顧客接点

例:

  • 問い合わせフォーム
  • 資料請求
  • CRM連携
  • メール送信
  • スパム対策

示す能力:

  • 個人情報
  • 入力境界
  • 外部サービス
  • 障害時の運用
  • 顧客説明

7.3 保守・非機能

例:

  • WordPress更新
  • 表示速度改善
  • セキュリティ対応
  • PHP更新
  • テスト導入

示す能力:

  • 影響分析
  • 品質基準
  • 段階導入
  • ロールバック
  • 運用手順

7.4 AI生成の社内ツール

例:

  • データ整理
  • 社内検索
  • レポート生成
  • 定型業務支援

示す能力:

  • 品質水準の調整
  • 利用範囲の制限
  • 捨てる条件
  • 本番システム化の境界

8. 面接官の認知負荷を下げる説明

8.1 一度に説明する論点を絞る

  • 制約は3点まで
  • 選択肢は2案、最大3案
  • アーキテクチャの責務は3領域程度
  • 監査対象は重要なものから示す
  • AI利用の説明は最後に置く

8.2 AI制御とドメイン設計を同時に詳しく話さない

主線はビジネス課題とアーキテクチャに置く。

第1パス

  • 業務課題
  • 制約
  • 設計
  • 検証
  • 運用

第2パス

  • AIをどこで使ったか
  • 人間が何を判断したか
  • AI出力をどう検証したか

AI制御は、アーキテクチャの代替ではなく、決めた設計を守らせる開発プロセス上の仕組みとして説明する。


9. 職務経歴書と面接の分担

職務経歴書で示すこと

  • 標準ワークフロー
  • AIと人間の責任境界
  • 代表的なビジネス課題
  • 品質水準の決め方
  • 人間の監査範囲
  • 成果物
  • 面接で深掘り可能な論点

面接で確認すること

  • なぜその案を採用したか
  • 何を採用しなかったか
  • どこを人間が監査したか
  • 何を自動検証へ任せたか
  • どの異常系を確認したか
  • 問題時にどう戻すか
  • 別の課題でも同じ判断を再現できるか

10. 成果物の示し方

AI時代は、コードだけを成果物としない。

次をセットで示す。

  • 実装コード
  • テストコード
  • 受入条件
  • 検証記録
  • 設計判断記録
  • 採用しなかった案
  • 顧客向け説明
  • 開発者向け技術資料
  • 運用手順
  • ロールバック手順

成果物ごとに役割を分ける。

コードには How テストには What 判断記録には Why コメントや設計記録には Why not 運用手順には When and Who


11. 避けるべき表現

11.1 AIツール名だけを並べる

ChatGPT、Claude、Codexを利用できます。

何を任せ、何を人間が判断したかを追加する。


11.2 すべて確認すると主張する

AI生成コードは必ずすべてレビューします。

現実性がなく、監査資源の配分能力も示せない。


11.3 完璧な設計を常に主張する

必ずDDDとクリーンアーキテクチャを採用します。

課題、規模、寿命、事故コストに応じた判断を示す。


11.4 技術用語から説明を始める

PurchaseFlowとEventSubscriberを使います。

先に業務上の意味を説明する。

注文処理と画面変更を分け、在庫や決済への影響を限定します。


11.5 成果だけを誇張する

AIで開発速度を10倍にしました。

前提、品質、監査、検証、運用が分からない。


12. 最終チェックリスト

職務経歴書

  • ビジネス課題から説明している
  • 共通ワークフローを記載している
  • AIと人間の役割を分けている
  • 人間の監査範囲を示している
  • 検証方法を示している
  • 顧客・開発者・運用担当者への説明を示している
  • 導入・撤退方法を示している
  • 技術名だけの列挙になっていない
  • 面接で深掘りできる論点を残している

スキル欄

  • ツール名ではなく利用工程を示している
  • 一般向け・技術者向けに説明粒度を変えられる
  • 業務上の意味を説明できる
  • 人間が保持する判断を明確にしている
  • 成果物と検証方法を示している

面接

  • 最初は30秒から2分で全体を説明できる
  • 技術詳細は質問されたら追加する
  • 制約と優先順位を示している
  • 採用しなかった案を説明できる
  • 人間の監査範囲を説明できる
  • AIと自動検証へ任せる範囲を説明できる
  • 正常系だけでなく異常系を示している
  • 撤退・復旧方法を説明できる
  • 異なるビジネス課題でも同じ型を再現できる

13. まとめ

AI時代の職務経歴書と面接で重要なのは、生成AIを使えること自体ではない。

評価すべきなのは、次の能力である。

  • ビジネス課題を技術課題へ変換する
  • 制約と優先順位を決める
  • 品質水準を案件ごとに変える
  • 責務境界を設計する
  • AIへ任せる範囲を決める
  • 人間が監査すべき境界を特定する
  • 検証と受入条件を定義する
  • 相手に合わせて説明する
  • 小さく導入し、問題時に撤退する
  • 判断を次の案件へ再利用する

職務経歴書を工程説明の正典にし、面接では、何を判断し、何を監査し、何をAIへ任せたかを確認する。

AI時代のエンジニア面接は、候補者がすべてを知っているかを確認する場ではない。

限られた人間の判断と監査を、どこへ配分するかを確認する場である。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment