4章 AIを活用したプログラミング
生成AIは、コードの説明、たたき台、テスト案、エラー調査の補助に役立ちます。しかし、生成されたコードには誤り、脆弱性、存在しないライブラリ、利用条件に合わない実装が含まれることがあります。この章では、AIに任せる範囲と、開発者が確認する範囲を学びます。
この章の対象者
- プログラミングを始めたい、または学習中の方
- AIを使って定型作業を自動化したい方
- AI生成コードを安全に確認する方法を知りたい方
この章でできるようになること
- AIに依頼する前に、作りたい処理の仕様を整理できる。
- バイブコーディングを、試作と学習に適した範囲で使い分けられる。
- AI生成コードを、実行前に読んで確認できる。
- テスト、レビュー、依存関係、秘密情報、知的財産の確認を行える。
- 小さな自動化を、安全なデータで試せる。
4-1. AIは「仕様を形にする補助者」
AIに「プログラムを作って」とだけ頼むと、目的・入力・出力・例外・安全条件が不明なままコードが生成されます。まず、人が仕様を決めます。
| 仕様として決めること | 例 |
|---|---|
| 目的 | CSVの架空データを日付順に並べ替えたい |
| 入力 | sample.csv、列は日付・分類・金額 |
| 出力 | sorted_sample.csv を作る |
| 例外 | 日付が空欄ならエラー一覧に出す |
| 実行環境 | Python 3系、追加ライブラリなし |
| 禁止事項 | 元ファイルを上書きしない、外部送信しない |
| 確認方法 | 5行のテストデータで結果を比べる |
AIへの依頼例(Markdownで仕様を構造化する)
# CSV並べ替えプログラムの依頼
## 目的
架空のCSVファイルを日付順に並べ替えるPython 3のコードを作る。
## 入出力
- 入力:`sample.csv`
- 出力:`sorted_sample.csv`
- 日付が空欄の行:`errors.csv`へ出力
## 制約
- 元ファイルを変更しない
- 外部ライブラリを使わない
- 外部へデータを送信しない
## 出力形式と確認
各処理にコメントを付ける。実行前に確認すべき点と、5行の架空データによるテスト手順を説明する。4-2. バイブコーディングを試作に生かす
バイブコーディング(vibe coding)は、自然言語で作りたいものを伝え、AIが生成・修正するコードを実行しながら、対話的に試作を進めるAI支援開発スタイルです。Google Cloudも、自然言語のプロンプトから機能するコードを生成する、発展途上のソフトウェア開発実践として説明しています。【E4】
この講座では、バイブコーディングを「コードを理解しなくてよい方法」とは扱いません。学習、画面案、小さな社内用の試作には有用ですが、公開・業務利用では仕様、レビュー、テスト、権限、知的財産の確認を省略できません。
| 段階 | AIが支援できること | 人が必ず確認すること |
|---|---|---|
| 目的を決める | 画面案、処理案、質問事項の提案 | 利用者、範囲、成功条件、禁止事項 |
| 試作する | コード、設定、修正案の生成 | 入出力、依存関係、権限、秘密情報の有無 |
| 動かして比べる | エラー説明、テスト案、改善案 | テスト結果、期待どおりの動作、例外処理 |
| 公開・業務利用する | 文書化の下書き、レビュー観点の提案 | レビュー、セキュリティ、ライセンス、特許、承認 |
使い分けの目安
「動く試作品」を早く得ることと、「安全に運用できる製品」を作ることは別です。AIの提案を採用するたびに、変更内容を把握し、テスト結果を記録します。読んで説明できないコードや、権限・外部送信・金銭・個人情報を扱うコードは、そのまま公開・実行しません。
4-3. 生成コードをそのまま実行しない
AIのコードは、動きそうに見えても、要件を満たさない、危険な操作をする、古いAPIを使う、架空のパッケージを指定する場合があります。AI生成コードは信頼できない入力として扱い、検証と権限管理を行う必要があります。【E1】【E2】
実行前の確認表
- [ ] 何を入力として読み、何を出力・変更・送信するか理解できる。
- [ ] ファイル削除、上書き、ネットワーク送信、外部コマンド実行が含まれていない。
- [ ] パスワード、APIキー、個人情報、社内コードをプロンプトに含めていない。
- [ ] 使用するライブラリが実在し、公式配布元・ライセンスを確認した。
- [ ] エラー時の動作と、元に戻す方法を確認した。
- [ ] 小さな架空データでテストしてから実データを扱う。
図表案:AI支援開発の流れ
flowchart LR
A[仕様を決める] --> B[AIに下書きを頼む]
B --> C[人がコードを読む]
C --> D[依存関係・権限を確認]
D --> E[テストデータで実行]
E --> F{要件・安全性を満たすか}
F -- いいえ --> G[仕様・コードを修正]
G --> C
F -- はい --> H[レビュー・記録後に利用]4-4. テストで「動く」と「正しい」を分ける
プログラムがエラーなく動くことと、期待どおりの結果を出すことは別です。テストでは、正常な入力だけでなく、空欄、形式違い、大きな値、重複なども試します。
| テストの種類 | 例 | 確認すること |
|---|---|---|
| 正常系 | 正しい形式の5行のCSV | 期待した順序・出力になるか |
| 空データ | ヘッダーだけのCSV | 意図しない停止や上書きがないか |
| 異常系 | 日付が空欄・文字列 | エラーを安全に記録するか |
| 境界値 | 0件、1件、大きな数値 | 端の条件で誤らないか |
| 権限 | 読み取り専用ファイル | 失敗時に原因を分かりやすく示すか |
AIにテストケースを提案させることはできますが、採用するケースと結果の判断は人が行います。
4-5. セキュリティと知的財産(ライセンス・特許)の注意点
AIを組み込んだ開発では、プロンプトインジェクション、機微情報の漏えい、不適切な出力処理、過剰な権限などがリスクになります。【E1】 また、AIが提案する処理手法・システム構成・機能の組合せが、他者の有効な特許の請求項と関係する可能性も、公開・販売・業務提供の前に検討します。AIの回答だけで、特許を実施できるかどうかは判断できません。【E5】【E6】
| 注意点 | 避けること | 基本対策 |
|---|---|---|
| 秘密情報 | APIキーや本番データをプロンプトに貼る | 環境変数・秘密管理を使い、共有しない |
| 出力処理 | AI出力をSQLやシェルに直接渡す | 入力検証・サニタイズ・承認を行う |
| 外部ツール | AIに削除・送信・支払い権限を与える | 最小権限と人の承認を設ける |
| 依存関係 | AIが示したパッケージを無確認で導入する | 公式配布元、版、ライセンス、脆弱性を確認する |
| 特許・処理手法 | AIが提案した手法は自由に使えると判断する | 実装する機能、対象国、請求項、法的状態、関連特許を確認し、必要に応じて知財担当者・弁理士へ相談する【E5】【E6】 |
| 仕様変更 | モデル・APIの挙動を固定と考える | 版、日時、テスト結果を記録する |
AIの提案に特許が関係するか確認する
AIは、既知のアルゴリズム、データ処理の流れ、システム構成、最適化手法などを提案することがあります。その提案が新しい表現に見えても、実際に提供する製品・サービスの機能が、他者の有効な特許の請求項に含まれるかどうかは別問題です。ソースコードの見た目を変えたり、AIが「問題ない」と答えたりしても、特許侵害がないことの保証にはなりません。
- 調査対象を具体化する。 実装する処理、利用するデータ、システム構成、提供先、対象国・地域を整理する。
- 公開文献と法的状態を確認する。 J-PlatPatには日本だけでなく海外を含む公報、手続・審査経過、法的状態に関する情報が収録されています。これは一次的な調査の入口になります。【E6】
- 権利期間を単純化しない。 日本の特許権は原則として出願日から20年で終了しますが、延長制度があります。また、ある特許の期間満了を確認しても、関連する別の有効特許や、対象国・地域で存続する権利がないとは限りません。【E5】
- 公開・販売・業務提供の前に相談する。 重要な機能、競合分野、高額な投資、国外提供を伴う場合は、請求項と実施態様を照合できる知財担当者または弁理士等へ相談する。ここでの説明は法的助言ではありません。
「利益を得ない」だけでは判断しない
日本の特許権侵害では、特許発明を業として実施するかが重要です。特許庁は「業として」を、個人的または家庭内での利用を除く趣旨と説明しています。一方で、「営利ではない」ことと「業としてではない」ことは同じではありません。特許庁の資料でも、「業として」は一般に個人的・家庭的な行為以外を指し、必ずしも営利活動に限定されないと整理されています。【E7】【E8】
| 利用場面 | この章での扱い |
|---|---|
| 個人が自分または家庭内だけで使う | 日本の特許法上は「業として」に当たらない可能性がある。ただし、実際の利用態様や対象国・地域、他の権利・契約上の制約は別途確認する。 |
| 無償で配布・公開する、他人に使わせる | 利益の有無だけで除外とは判断しない。公開範囲、継続性、提供態様、対象国・地域を踏まえて確認する。 |
| 会社・団体・学校・NPO等の内部で使う | 直接の売上を生まなくても、組織の活動として継続的に利用する場合は、個人的・家庭内利用とは区別して、特許調査・相談の対象とする。 |
したがって、「自分で使い、利益を生まないから特許を気にしなくてよい」と一律にはいえません。 個人的・家庭内に限定された利用か、組織活動・公開・配布・継続利用に当たるかを先に整理します。判断が重要な場合は、対象国の制度と実施態様を踏まえて知財担当者・弁理士等へ相談します。
AIへの依頼時の注意
「特許を避けた実装を作って」とAIに頼んでも、網羅的な特許調査や実施可能性(FTO: Freedom to Operate)の判断にはなりません。AIの提案は調査のきっかけとして記録し、最終判断は公式の特許情報と専門的な確認に基づいて行います。
4-6. ミニ演習:安全な集計プログラムを設計する
「架空の売上データを月別に集計する」処理について、コードを書く前に次を作成します。
- 入力CSVの列名とサンプル3行
- 出力表の列名
- 空欄・形式違いの扱い
- 元ファイルを守る条件
- テストケース3件
- AIに依頼する文
振り返り
- AIに任せたのは仕様作成、コード、テスト案のどの部分か。
- コードを読んで理解できない行は残っていないか。
- 実データを使う前に、どの承認・保護が必要か。
まとめ
- AIにコードを頼む前に、目的・入力・出力・例外・禁止事項を仕様として決める。
- バイブコーディングは試作を速くするが、公開・業務利用ではレビュー、テスト、承認を省略しない。
- AI生成コードは実行前に読み、依存関係・権限・変更内容を確認する。
- 小さな架空データで、正常系と異常系をテストする。
- 秘密情報、外部操作、AI出力の直接実行、特許を含む知的財産の確認不足には特に注意する。
- 個人的・家庭内利用と、営利でない組織内利用・公開利用は同じではない。「利益がない」だけで特許上の確認を省略しない。
次の講座
次は 5章「生成AI・LLMと機械学習のしくみ」 で、LLM、Transformer、RAGなどの技術的な仕組みを学びます。
出典・エビデンス
| 本文の対象 | 根拠資料 | 確認した内容 |
|---|---|---|
| バイブコーディング | 【E4】 | 自然言語によるAI支援コード生成を用いる、発展途上のソフトウェア開発実践としての説明 |
| 特許権の存続期間・延長 | 【E5】 | 日本の特許権の存続期間は原則出願日から20年であり、延長制度があること |
| 特許情報・法的状態の確認 | 【E6】 | J-PlatPatが国内外の特許情報、手続・審査経過、法的状態に関する情報を提供していること |
| 「業として」と個人的・家庭内利用 | 【E7】【E8】 | 特許侵害における「業として」の考え方と、営利性だけでは判断できないこと |
| プロンプトインジェクション、漏えい、出力処理、過剰権限 | 【E1】 | LLM・生成AIアプリケーションの主要なセキュリティリスク |
| 生成AIのリスク管理・評価 | 【E2】 | 信頼性・安全性・セキュリティを含むリスク管理の考え方 |
| 組織でのAI利用 | 【E3】 | AI利用者が適切な管理・確認を行うための考え方 |
- 【E1】 OWASP Gen AI Security Project, *OWASP Top 10 for LLM and GenAI Applications*(2025版)
https://genai.owasp.org/llm-top-10/
- 【E2】 NIST, *Artificial Intelligence Risk Management Framework: Generative Artificial Intelligence Profile*(NIST AI 600-1、2024年7月26日)
https://doi.org/10.6028/NIST.AI.600-1
- 【E3】 経済産業省ほか, *AI事業者ガイドライン(第1.2版)*(2026年3月31日)
https://www.meti.go.jp/shingikai/mono_info_service/ai_shakai_jisso/
- 【E4】 Google Cloud, *Vibe Coding Explained: What It Is and How It Works*(利用前に最新版を確認)
https://cloud.google.com/discover/what-is-vibe-coding?hl=en
- 【E5】 特許庁, *第IX部 第1章 期間補償のための特許権の存続期間の延長*(特許法第67条第1項・第2項)
https://www.jpo.go.jp/system/laws/rule/guideline/patent/tukujitu_kijun/document/index/09_0100bm.pdf
- 【E6】 独立行政法人 工業所有権情報・研修館(INPIT), *特許情報プラットフォーム(J-PlatPat)*(2026年5月8日最終更新)
https://www.inpit.go.jp/j-platpat_info/
- 【E7】 特許庁, *被害に遭ったら -権利侵害とは*(利用前に最新版を確認)
https://www.jpo.go.jp/support/ipr/kenrishingai.html
- 【E8】 特許庁, *資料1 特許制度等に関する検討課題について*(第50回特許制度小委員会)
https://www.jpo.go.jp/resources/shingikai/sangyo-kouzou/shousai/tokkyo_shoi/document/50-shiryou/03.pdf 参照日:2026年7月14日。言語・ライブラリ・API・セキュリティ情報は更新されるため、実装時に公式資料と最新の脆弱性情報を確認してください。
