この記事はリライトしました

初回公開日:2024-09-17
リライト更新日:2026-09-30

旧タイトル:【保存版】AI時代の必須スキル!生成AIプログラミング2023

主な変更点

  • 2023を題に付けた旧稿を現在の初心者の作成・検証手順へ全面再構成。
  • 対話/補完/複数ファイル支援の形を比較し特定製品ランキングを作らない。
  • 架空の数量集計、入力条件、テスト表、エラー相談テンプレートを独自作成。

生成AIを使ってプログラミングを始めるなら、一つの処理を作り、入力と期待する結果を決めて、実際に確かめるところまで進めることをおすすめします。 コードを生成してもらうことは出発点です。何をするコードか理解し、間違いや例外を見つけ、直すことも制作に含まれます。

この記事は、AIを補助に使いながら、小さなプログラムを読んで試したい方に向けたものです。実案件の開発速度が何倍になる、プログラミング未経験でもすぐ仕事を受けられる、といった保証はしません。

後半では、Pythonで品目別の数量を集計する練習例を紹介します。架空のデータだけを使い、外部サービスへの接続やファイルの書き換えを行わない、小さな例です。

原公開日:2024年9月17日。内容確認日:2026年9月30日。

AIを使えば、プログラミングの知識は不要ですか?

仕様を決め、コードを読み、入力と期待した結果を比較して、必要な部分を直すプログラミングの流れ。
仕様から、コードと結果を確認。本文の説明を整理した図です。

不要にはなりません。コードを初めから全部書く負担を減らせる場面はありますが、結果が目的に合っているか、どこを変更するかは確かめる必要があります。

例えば、集計結果が表示されても、空欄を無視したのか、同じ品目を別々に数えたのか、入力を上書きしたのかは、画面だけではわからないことがあります。必要な処理を言葉にして、コードと結果を照合するための理解が必要です。

GitHubのCopilotインライン提案に関する公式資料も、生成されたコードが不正確な場合があること、利用者が内容を確認し、テストする必要があることを説明しています。GitHub「Responsible use of GitHub Copilot inline suggestions」

学習中は、AIに「完成品を全部作って」だけでなく、「この処理を説明して」「この入力ではどう動くか」「この部分だけ直したい」と聞きながら進められます。

最初の題材は、どう選べばいいですか?

入力が小さく、期待する結果を自分で確認できる題材を選ぶと、試した結果を判断しやすくなります。

練習の題材自分で確かめる結果初回の範囲
品目別の数量集計
手で足した合計と一致するか
架空の一覧を画面に表示する
日付順の並べ替え
順序と元の件数が一致するか
コピーした練習データだけを使う
定型文の生成
指定した項目が入り、余計な内容がないか
下書きを表示するところまで
簡単なクイズ
正解・不正解の判定が合うか
自分で作った問題で試す

最初から、本番の顧客へ送信する仕組みや、業務データを一括で書き換える仕組みにする必要はありません。まず、判断できる範囲で作ってから、保存、接続、公開などの機能を順に考えます。

どのAIツールを選べばよいですか?

使いたい作業に合わせて、支援の形を比較できます。製品によって機能や実行の権限、契約の条件が違うため、導入前に公式情報を確認してください。

支援の形主な使い方確かめたいこと
対話でコードを相談する
仕様案、短いコード、エラーの説明を求める
出された案をどこで実行し、誰が確認するか
エディタで補完する
書いている箇所に提案を受ける
提案の差分と、参照される情報
複数ファイルを扱う支援
既存の構成を調べ、変更や検証を補助する
変更する範囲、実行する操作、確認できる記録

これは製品の順位表ではありません。学習の最初は、一つのファイルや関数を扱い、提案の内容を読み返せる形から始める方法があります。費用、対応する環境、利用上限、データの取り扱いは、契約する時点の公式資料で確かめましょう。

AIへの指示には、何を書けばいいですか?

目的に加え、入力、出力、例外、処理してはいけないことを書きます。コードの好みよりも、どんな動作を求めているかを先に決めましょう。

例えば、今回の品目集計では、次のように指定できます。

品目集計プログラムを依頼する仕様例
Pythonで、品目別の数量を集計する関数を作りたいです。

目的:架空の一覧を使って、集計処理と入力確認を学ぶ。
入力:item(品目名)とquantity(数量)が入った辞書の一覧。
出力:品目名ごとの合計数量を辞書で返す。

条件:
・数量は0以上の整数。文字列、小数、負数は受け付けない。
・品目名は文字列で、前後の空白を除いて空ならエラー。
・同じ品目名は合計する。空の一覧は空の辞書を返す。
・入力した一覧は変更しない。
・外部への送信、ファイルの読み書きは行わない。

まず処理の順番を説明し、短いコードを示してください。
正常な入力と、条件に合わない入力の確認例も付けてください。

これは、この稿で扱う練習用の仕様です。AIへ書けば必ず条件を満たす、という意味ではありません。出力されたコードを仕様と比べ、確認例も自分で見直します。

実例:Pythonで品目別の数量を集計する

架空の品目一覧にあるメモ帳2個、ペン1個、メモ帳3個を、メモ帳5個とペン1個へまとめる集計例。
品目をそろえ、数量を集める。本文の説明を整理した図です。

次は筆者がこの稿のために用意した練習例です。実務の台帳や、あらゆる入力形式に対応するプログラムではありません。

入力は、itemとquantityという項目を持つ辞書の一覧です。辞書は、項目名と値を組にして扱うPythonのデータ構造です。この例では、品目名の前後にある空白を除き、数量を足します。

def total_by_item(rows):
    totals = {}

    for row_number, row in enumerate(rows, start=1):
        item = row.get("item")
        quantity = row.get("quantity")

        if not isinstance(item, str) or not item.strip():
            raise ValueError(f"{row_number}行目: 品目名を確認してください")

        if type(quantity) is not int or quantity < 0:
            raise ValueError(f"{row_number}行目: 数量は0以上の整数です")

        item = item.strip()
        totals[item] = totals.get(item, 0) + quantity

    return totals


sample = [
    {"item": "メモ帳", "quantity": 2},
    {"item": "ペン", "quantity": 1},
    {"item": " メモ帳 ", "quantity": 3},
]

print(total_by_item(sample))

期待する結果は次のとおりです。

{'メモ帳': 5, 'ペン': 1}

この例で大切なのは、結果を手で確認できることです。同じ品目が合計され、空白がある「 メモ帳 」も「メモ帳」として数えられることを見ます。

数量が文字列の"3"なら、数字に見えても、この仕様ではエラーです。文字列を自動で整数へ変えたい場合は、別の条件として設計します。あいまいな入力を勝手に補うことと、決めた仕様で処理することを分けて考えましょう。

Pythonの基礎文法や辞書、関数は、Python公式チュートリアルで確認できます。このチュートリアルはPython言語の入門であり、プログラミング自体が初めての方には難しい箇所もあります。実行する環境の準備が難しい場合は、まずこの関数の入力と結果を読むところから始めてかまいません。

「動いた」だけでなく、何をテストすればいいですか?

集計関数へ正常な入力、空の一覧、負数、文字列の数量を入れ、期待した結果またはエラーになるか比べるテスト。
入力ごとに、期待した結果と照合。本文の説明を整理した図です。

正常な例だけでなく、空欄や条件に合わない入力でも、期待どおりに扱うかを確かめます。テストとは、この例では、入力に対する結果やエラーが仕様に合うかを確認する作業です。

入力の例期待する結果何を確かめるか
同じ品目が複数ある
合計される
品目を正しくまとめるか
空の一覧
空の辞書
データがない場合を扱えるか
数量が0
合計へ0として入る
許可した境界の値を扱えるか
数量が負数・小数・文字列
エラー
条件に合わない値を拒むか
品目名が空白だけ
エラー
集計の対象が明確か
処理した後の元データ
変わらない
指示した範囲以外を変更していないか

例えば、次の確認を加えられます。

assert total_by_item(sample) == {"メモ帳": 5, "ペン": 1}
assert total_by_item([]) == {}
assert total_by_item([{"item": "ペン", "quantity": 0}]) == {"ペン": 0}

assertは、条件が真かを確かめるために使っています。すべての利用場面の正しさを証明するものではありません。入力が辞書ではない場合など、この例が扱っていない状況もあります。

また、TrueやFalseを数量として受け付けないために、数量の型を厳密に確認しています。仕様にどんな値を認めるかを決めると、必要な確認も見えてきます。

エラーが出たときは、AIにどう相談しますか?

使った入力、期待していた動作、実際の結果、該当するコードをまとめます。エラーメッセージだけでは、何を直したいかが伝わらない場合があります。

期待したこと:
実際に起きたこと:
再現するための小さな入力:
該当する短いコード:
実行環境と表示されたエラー:

まず原因の候補と、確かめる順番を説明してください。
修正が必要な場合は、変える箇所と理由を示してください。
変更後に、元の正常な例と問題の例を確かめる方法も教えてください。

業務の情報、パスワード、認証用の文字列などがコードやエラーに含まれる場合は、そのまま相談文へ貼らず、公開・共有してよい練習用の形にします。

AIの案を取り入れた後は、問題のあった例と、以前に動いていた例の両方を確かめます。一つのエラーを消すために、別の動作を変えてしまう場合もあるからです。

次にCSVや業務フローへ広げるときは、何が必要ですか?

小さな集計練習を、コピーしたデータの読み込み、新しい出力の確認、権限や運用の検討へ段階的に広げる流れ。
練習から、運用の条件へ。本文の説明を整理した図です。

今回の例はメモリ上の一覧を扱うだけです。CSVファイルを読み書きする場合は、列名、文字コード、区切り、空欄、保存先などの条件が増えます。

PythonにはCSVを扱う標準ライブラリのcsvがあります。独自にカンマで文字列を分ける前に、公式資料で読み書きの方法を確認できます。Python公式「csv」

業務へ広げるなら、元データを保存し、練習用のコピーで読み込みから確認までを試します。出力先を新しいファイルにする、既存ファイルがあるときの動作を決める、エラーを記録する、といった設計も必要です。

「収集→整理→連携→処理→検証→確認」という業務フローでも、それぞれに何を入れ、何が出るかを定義します。AIを使う工程、決めたルールで動かす工程、人が判断する工程を区別すると、何を作るかが明確になります。

よくある質問

AIにコードを書かせることと、AIを組み込んだアプリは同じですか?

違います。今回のようにAIを相談やコード作成の補助に使っても、できたプログラムの実行時にAIが動くとは限りません。AIサービスをアプリから呼び出す場合は、接続、費用、認証、送る情報、失敗時の扱いなどを別途設計します。

学習では、どの言語が一番よいですか?

作りたいものによります。この稿は小さな集計を説明しやすい例としてPythonを使いました。Web画面、スマートフォンアプリ、ゲームなどでは必要な言語や環境が違うため、目的と学習資料を合わせて選びましょう。

エラーが出なくなれば、本番で使えますか?

エラーが出ないことと、業務の条件を満たすことは別です。結果の正しさ、例外、入力情報の扱い、運用、変更後の確認などを、使う場面に合わせて確かめる必要があります。

プログラミングの仕事をすぐ受けてもよいですか?

練習で動くことと、相手の要件を満たして保守できることは分けて考えましょう。まず担当できる範囲を整理し、説明、検証、修正ができる作品を残します。仕事の契約や責任を、AIが代わりに引き受けるわけではありません。

関連する記事

HTサポートワークスへの業務フローやAI活用の相談は、相談フォームからお聞かせください。

記事の制作と確認について

AIを下書きや構成の整理に活用し、主張を一次資料と照合してリライトしました。参照した資料と確認範囲は、本文の出典・注意点に記載しています。

製品の仕様や制度は変更されることがあります。利用する際は、本文で示した条件と最新の公式情報を確認してください。