Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
生成AIを活用した初学者向けPython講座
Search
Soogie
September 18, 2025
Programming
0
7
生成AIを活用した初学者向けPython講座
StaPy#117 PyConJP2025プロポーザル落選祭り での発表
Soogie
September 18, 2025
Tweet
Share
More Decks by Soogie
See All by Soogie
5年分のツケを一気に払った話
soogie
3
2.3k
PyHack#141今日やったこと
soogie
0
520
レビュー駆動学習のススメ_StaPy#83
soogie
0
570
職場にPythonistaを増やす方法
soogie
2
710
StaPyの効能
soogie
0
570
Stapy#25_LT
soogie
1
830
無料でできる,Cloud9上で開発してHerokuにデプロイする手順を共有します(再)
soogie
0
1k
無料でできる、Cloud9上で開発してHerokuにデプロイする手順を共有します
soogie
2
2.1k
Develop on Cloud9 & Deploy to Heroku for FREE!!
soogie
0
110
Other Decks in Programming
See All in Programming
MCPでVibe Working。そして、結局はContext Eng(略)/ Working with Vibe on MCP And Context Eng
rkaga
5
2.3k
請來的 AI Agent 同事們在寫程式時,怎麼用 pytest 去除各種幻想與盲點
keitheis
0
130
Deep Dive into Kotlin Flow
jmatsu
1
370
奥深くて厄介な「改行」と仲良くなる20分
oguemon
1
570
「手軽で便利」に潜む罠。 Popover API を WCAG 2.2の視点で安全に使うには
taitotnk
0
870
アプリの "かわいい" を支えるアニメーションツールRiveについて
uetyo
0
280
CloudflareのChat Agent Starter Kitで簡単!AIチャットボット構築
syumai
2
510
HTMLの品質ってなんだっけ? “HTMLクライテリア”の設計と実践
unachang113
4
2.9k
楽して成果を出すためのセルフリソース管理
clipnote
0
190
AIを活用し、今後に備えるための技術知識 / Basic Knowledge to Utilize AI
kishida
22
5.9k
1から理解するWeb Push
dora1998
7
1.9k
さようなら Date。 ようこそTemporal! 3年間先行利用して得られた知見の共有
8beeeaaat
3
1.5k
Featured
See All Featured
Mobile First: as difficult as doing things right
swwweet
224
9.9k
Fireside Chat
paigeccino
39
3.6k
A designer walks into a library…
pauljervisheath
207
24k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
61k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
139
34k
Become a Pro
speakerdeck
PRO
29
5.5k
Code Review Best Practice
trishagee
71
19k
RailsConf 2023
tenderlove
30
1.2k
Large-scale JavaScript Application Architecture
addyosmani
513
110k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
229
22k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
46
7.6k
Optimizing for Happiness
mojombo
379
70k
Transcript
生成AIを活用した初学者向け Python講座 2025/09/18 StartPythonClub#117 杉山 剛(すーぎー @soogie.bsky.social)
自己紹介 • 定年間近の事務系サラリーマン 主なツール:Excel • Python歴11年の独学趣味プログラマー • お仕事でもPythonでデータ分析 • PyConJP2016,2018,2021,2024登壇
今年は落ちました • Python Boot Camp TA ☓ 5回 行けるところなら行く • Python関連書籍を中心に出版前レビューx20冊超 依頼は断らない • 最近は生成AIに頼りがち
トーク内容 話すこと • 社内向けに開催した「生成AIを活用してPythonで業務効率化」講座 の共有可能なコンテンツ • 生成AIの助けを借りて初学者が一歩前に進むためのヒント 話さないこと • 生成AIでらくらくコーディング的な話
※あくまで私個人の意見であり,所属組織の方針を代表するものではありません
第101回のトークでのまとめ(再掲) • 職場にPythonを広めるとき,ハードル下げるのはいいけど,あまり過保護に してしまうと自力で書くことができず,だんだん忘れていってしまう • 自分で考えて書く経験は大事。チャンスを奪わないよう,見守るし支えるけ ど手は出さない • 非エンジニアでもコーディングを楽しめるようになる(こともある) 今日の話が「正解」だとは思っていません。
皆さんのやりかた,特に非エンジニアにコードの書き方を身につけてもらう 方法についてのご意見・アドバイスお待ちしております。
でもね・・・自分で書いてくれないんです • これ、Pythonなら楽できるんじゃない?と思いつくところまではいく • でも、いざエディタを立ち上げて、1行目が書けない • 生成AIに要件を伝えたらコード書いてくれる時代だけど要件が書けない • 生成AIと3時間格闘してできたスクリプトが理解できず100回手動で回す →これじゃ、いくらPython教えても意味ないじゃないか~
ということで、講習会企画しました • Sさん(仮名)が働いている某社には、ベテラン社員の権利(ほぼ義務) として、社内向けの講習会を開く制度がある • なんでもやって良いわけではないので、一応「業務効率化」とタイトルに つける 「生成AIを活用してPythonで業務効率化するには」 • お昼休み1時間×3回の超短期集中コース
(しかも今日はそれを25分に圧縮)
講習会のうたい文句 「この作業面倒だなぁ~プログラムで自動化したい。Pythonが便利らしいけど どうしたらいいかわからないから手作業でがんばろう」 「あ、途中ミスってた。最初からやり直しか・・・」 ってなってる人たちが 「この作業面倒だなぁ~生成AIをうまく使ってPythonにやらせちゃおう♪ 「あ、途中間違ってた。プログラムのどこを直せばいいか生成AIに聞いて、修 正して流し直せばOK♪」 となって自力で業務効率化できるようになるための講座です
受講対象 • 全職種 • ただし、Pythonの基礎を学んだことがある人 ◦ Pythonコードの説明しないので、読んだこともない人はお断り ◦ 独学OK、本読んで挫折OK、学生時代に習ったけど忘れたOK ◦
他言語の経験ある人ならYouTube動画ちょっと見ればOK • これからPython学びたい人向けには別途入門講座やるよ →30人(某社従業員の約5%、なぜかエンジニアも数名)が応募
特におすすめしたい方 • 文法~基礎は学んだが、いざ自分がやりたいことをPythonで、と思うと 何から書けばよいかわからなくて、まだ生かせてない方 • 生成AIを使ってプログラムを書いてみたものの、書いてみたスクリプトが うまく動かなかったり、思っていたのとちょっと違ってたときに修正でき なくて挫折しがちな方 • 生成AIと無限に対話を繰り返して、とりあえず今回やりたいことはできた
けど、中身が理解できてないので応用できそうにない方
事前準備 • 某社はIT部門が管理しやすいように全員のPCが同スペックのWindowsマシン • ただしソフトをインストールするには事前申請と審査、そしてIT部門に 作業してもらう必要がある • まずIT部門に根回し ◦ 30人くらい一気に申請が来るので覚悟しといてね
◦ 申請者にインストールするのは同じソフト(Python3.13とVSCode) ◦ 受講者に配布する手順書も事前共有 • 受講者には申請書の書き方と手順書を伝授 (プロキシ設定のせいで全員必ずひっかかるpipエラーの回避方法含む)
第1回
生成AIにスクリプトを書いてもらうには(座学) • 要件を具体的に伝える ◦ プログラムは要するに「入力」「処理」「出力」 ◦ 「分析したい」→「〇〇列の人数、平均、SDを算出したい」「AとBの相関を調べたい」 ◦ 入力、出力は文字で説明するよりサンプルファイルを添付すると早い ◦
過剰に複雑なスクリプトが返ってくることがあるので初心者向けにシンプルに、とつける • いきなり理想形ではなく必要最小限から ◦ 処理をさらに「入力」「処理」「出力」に分解して小分けにする ◦ 複雑なものを最初から作ろうとすると、うまくいかなかったり直したいときにお手上げ ◦ 最初にコア部分を完成させて、徐々に便利にしていく ◦ もちろん簡単なものなら一発で書いてもOK
生成AIを使ってPython文法を復習しよう(実習) 1. Pythonで1から100までの数字を足す、初心者が文法の復習をするのにお勧めのプログ ラムを1つだけ書いてください
変数、forループ、range()関数、print()関数 以下略
生成AIを使ってPython文法を復習しよう(実習) 1. Pythonで1から100までの数字を足す、初心者が文法の復習をするのにお勧めのプログ ラムを1つだけ書いてください 2. forループってなんでしたっけ。あと、どうしてこれが1から100までの合計になるの か(101までじゃないのか)を詳しく教えてください
追加質問でfor文とrange()関数を深掘り 以下略
生成AIを使ってPython文法を復習しよう(実習) 1. Pythonで1から100までの数字を足す、初心者が文法の復習をするのにお勧めのプログ ラムを1つだけ書いてください 2. forループってなんでしたっけ。あと、どうしてこれが1から100までの合計になるの か(101までじゃないのか)を詳しく教えてください 3. 3の倍数だけを足すように修正してください
if文、剰余(%)
生成AIを使ってPython文法を復習しよう(実習) 1. Pythonで1から100までの数字を足す、初心者が文法の復習をするのにお勧めのプログ ラムを1つだけ書いてください 2. forループってなんでしたっけ。あと、どうしてこれが1から100までの合計になるの か(101までじゃないのか)を詳しく教えてください 3. 3の倍数だけを足すように修正してください 4.
今度は3の倍数のときにFizz、5の倍数のときにBuzz、両方の倍数のときにFizzBuzz、 いずれでもないときに元の数字を出力するように書き換えてください
if~elif~else, and 以下略
生成AIを使ってPython文法を復習しよう(実習) 1. Pythonで1から100までの数字を足す、初心者が文法の復習をするのにお勧めのプログ ラムを1つだけ書いてください 2. forループってなんでしたっけ。あと、どうしてこれが1から100までの合計になるの か(101までじゃないのか)を詳しく教えてください 3. 3の倍数だけを足すように修正してください 4.
今度は3の倍数のときにFizz、5の倍数のときにBuzz、両方の倍数のときにFizzBuzz、 いずれでもないときに元の数字を出力するように書き換えてください 5. 続いて、FizzBuzzを関数にして、1から100の数字のFizzBuzzの結果を印字するプログ ラムに書き換えてください
関数 以下略
生成AIを使ってPython文法を復習しよう(実習) 1. Pythonで1から100までの数字を足す、初心者が文法の復習をするのにお勧めのプログ ラムを1つだけ書いてください 2. forループってなんでしたっけ。あと、どうしてこれが1から100までの合計になるの か(101までじゃないのか)を詳しく教えてください 3. 3の倍数だけを足すように修正してください 4.
今度は3の倍数のときにFizz、5の倍数のときにBuzz、両方の倍数のときにFizzBuzz、 いずれでもないときに元の数字を出力するように書き換えてください 5. 続いて、FizzBuzzを関数にして、1から100の数字のFizzBuzzの結果を印字するプログ ラムに書き換えてください 6. Pythonの基本的なデータ型について教えてください 7. リスト型について、特に操作方法を詳しめに教えてください
文法の質問 以下略 以下略
第2回
パッケージのインストールについて(座学) • ちゃんとやるにはプロジェクトごとに仮想環境を作る • ぶっちゃけ社内ならこれで十分、というお勧めセットをご用意しました (第1回と第2回の間の宿題でpip install -r requirements.txt は全員実行済み)
• 使わないパッケージもあるけど大して容量食わないのでご安心を • 足りないときはAppendixの仮想環境(スコープ外)の作り方読んでね
お勧めセットの中身 分類 ポイント パッケージ名 データ分析定番 データ分析のスターターキット pandas, numpy, jupyterlab, tqdm
統計処理・機械学習 機械学習・統計分析の三種の神器 scipy, statsmodels, scikit-learn Excel操作 Excelファイル処理の三種の神器 xlrd, openpyxl, xlwings グラフ・可視化 データ分析結果をビジュアル化 matplotlib, plotly 簡易Webアプリ作成 データ分析と親和性が高いWebアプ リ作成ツール streamlit コードフォーマッター Pythonスクリプトを読みやすく自動成 型 black, isort, jupyterlab-code-formatter
実習の前に(座学) • 実習では面倒な形のExcelファイルを読み込む • 要件の書き方振り返り ◦ 「入力」「処理」「出力」を具体的に ◦ 処理は小分けに •
最初からすごいのを作ろうとするとハマるリスクが増大 ◦ 元のファイルをそのまま読み込みたい ◦ 読み込むファイルをUIで選びたい ◦ 集計内容や集計列をUIで指定したい ◦ 集計結果をいい感じに整形してパワポに貼り付けたい →全部できるっちゃできる。でもハマる • コア(集計)処理だけにする ◦ ファイルは扱いやすい形に手で加工してから読み込む
VS Codeのセットアップ(実習) 1. D:¥Home¥ai-lessonというフォルダを作る 2. そこに「import this」だけ書かれたzen_of_python.pyをコピー 3. 作成したフォルダをVS Codeで開き、zen_of_python.pyを開く
4. VS CodeがPython拡張を入れるようお勧めしてくるので入れる 5. zen_of_python.pyを実行してみる これで全員が新規スクリプトをコピペして実行する環境が完成
Excelファイルを読み込む(実習) あなたは優秀なPythonプログラマーです。 以下の要件を満たすPythonスクリプトを書いてください # 要件 - 添付したsample2.xlsxを読み込む - 列ごとの解答人数と、回答の平均値を算出する -
集計結果は、質問、人数、平均値の3列にしてresult.xlsxとして出力 # 注意事項 - 初心者にもわかりやすくシンプルな設計にする - 適切なコメントをつける - スクリプトの解説をつける 入力 処理 出力
複数行ヘッダ、セル結合ありのファイル(実習) # 要件 - 添付したセル結合&複数行ヘッダ.xlsxを読み込む - 列名は2行目を使う。 ただしセル結合で2行目がない場合は1行目の値を使う - 重複を避けるためB~S列は末尾に「_1回目」、
T~AK列は末尾に「_2回目」とつける - 読み込んだデータを「加工後.xlsx」として保存する 入力 処理 出力
出てきたスクリプトを読んで理解する • 長いスクリプトが出てきてビビるけど、解説部分も参考にしながら一通り 自分で読んで理解する • 分からないところは「〇〇行目~××行目の処理について詳しく」みたい に具体的に質問 • 読んだだけで要件に合致しているものができてそうかわかるのが理想 •
書けなくてもいいから読んでわかることが大事
エラーが出たら • エラー部分をコピペして質問 • 修正は部分ではなく全体置き換えを推奨(変数名が変わることあり) • ラリー部分も含めて全部生成AIに再送信している。堂々巡りになったら 新規チャットにしたほうがよい • それまでにできた不具合ありのスクリプトを添付して、不具合とともに
修正依頼するとあっさり直ったりする
結果はうのみにしない • エラーにはならないけど結果が間違ってる、ということもよくある • 結果が違っていたらそこを指摘して修正させる ◦ 修正結果は全体を出力させて全体コピペを推奨 • 手作業結果と突き合わせる、テストコードを書くなど、今後の利用頻度、 重要度、工数などとの見合いで考える
第3回
複数のシートを1つにまとめる(実習) # 要件 - 添付した複数シート.xlsxを読み込む - 「サマリ」シート以外のすべてのシートを読み込む (データ行数がすべて等しいはず) - 読み込んだデータを横に並べて1人1行のデータを作る
(氏名でマッチングせず単純に横に並べる) - 各シート共通仕様 - 1行目は読み込まない - 2行目が列名。2行目に値がないときは3行目が列名 - データは4行目以降 - シートを識別するため列名末尾にシート名をつける 例(氏名_1回目) - 結合したデータを「シート結合結果.xlsx」として保存する 入力 処理 出力
複数のファイルを1つにまとめる(実習) # 要件 - dataフォルダ(サブフォルダ含む)の回答ファイルをすべて読み込む - 回答ファイルは添付した「回答(ここに名前).xlsx」と同じレイアウト - 回答ファイルのK列にQで始まる設問ID、L列に回答(1~4またはブランク) -
読み込んだファイルの回答をまとめて回答一覧を作る - 回答一覧のレイアウトは「ファイル名、社員番号、氏名、設問ID、Q1~Q40」 - 出来上がった回答一覧は「回答一覧.xlsx」というファイル名で出力する 入力 処理 出力
他人が書いたスクリプトを理解する(実習) • 来週の自分も"他人" • あなたは優秀なPythonプログラマです。添付したPythonスクリプトを解読 して、初心者にもわかりやすいように解説してください # 解説のポイント - 概要:何をしてくれるスクリプトかを「入力」「処理」「出力」ごとに
- 処理の流れ:ステップごとの処理の詳しい説明 - プログラム内で定義している関数、変数の一覧 - 〇〇行~〇〇行について特に詳しく
まとめ
受講者の声 「管理職は集計作業が多いので今後書いてみたい」(営業マネジャー) 「今まで生成AIでスクリプトを書いていたが、より精度の高いスクリプトがで きそう」(研究職) 「ちょっとお客様の電話に出たら置いて行かれた。ちょっとスピードが速い。 あとで動画で復習します」(営業担当) 「実はPythonはわからずVBA使いですが参考になりました。Python入門講座に も参加したいです」(企画スタッフ) 「(我々に依頼せず)簡単なアプリは自分で書いてほしい」(エンジニア) 「生成AIをコードレビューやテストに生かしたい」(エンジニア)
今後 • 今年度中に初心者向けのPython入門講座を開催予定 • できれば生成AIをからめて、短期集中でやりたい(ノーアイデア) • 今回の講習は動画で社内からいつでも見ることができるので、 大量に初心者が生まれても自走してくれる(と期待したい)
Any Question?
None