>100 Views
October 14, 25
スライド概要
通信インフラ業界での約3年間での業務改善経験です。
業務の中で、人力ではキツイとなったときに、
「Pythonが使えるのでは?」と
使ってみて、実際に改善できた事例を共有します。
発表で紹介した追加の資料はこちら↓
https://github.com/m-ippei/AskAI-Python
下記、イベントにて発表した資料です。
https://supporterz-seminar.connpass.com/event/370484/
フリーランスシステムエンジニア ■経歴 エンジニア下積み歴10年、実務歴約3年 専門学校2年→アルバイト1年半→システムエンジニア約3年→語学学習1年→フリー ■経験 実務約3年間でインフラエンジニア,フロントエンジニア,バックエンドエンジニア,サーバサイドエンジニア,ツールエンジニア,ネットワークエンジニア,RPAエンジニア,基幹システムの運用導入習熟調整対応全般,関連部・開発ベンダ折衝等をすべて兼任 ■Python開発実績 通信インフラの受託開発時にPythonを使った業務用内製ツールを数百種類以上開発。 ■Python開発事例 大規模Excel操作ツール,デスクトップアプリ,RPAツール,入力支援ツール,REST APIサーバー,データチェック分析ツール,データ変換ツール,業務効率化ツール...etc。
を 実務 で 徹底的 に 話 使いこなした 2025年10月14日 サポーターズ勉強会 森田一平 © 2025 Ippei Morita
目次 • はじめに -前提部分- • 現場のPython -実践部分• 発展 –応用・開発のコツ- • おわりに 大項目は4ブロック 2 © 2025 Ippei Morita
目次 • はじめに -前提部分- • 現場のPython -実践部分• 発展 –応用・開発のコツ- • おわりに まずは前提部分から 3 © 2025 Ippei Morita
目次 • はじめに -前提部分- • 自己紹介 • 今回の内容 • Python • Pythonとは • なぜPythonなのか 前提部分 後の説明につながります。 • 業務背景 • どういった現場で働いていたのか • 開発の流れ • 業務課題 4 © 2025 Ippei Morita
目次 • はじめに -前提部分- • 自己紹介 • 今回の内容 • Python • Pythonとは • なぜPythonなのか • 業務背景 • どういった現場で働いていたのか • 開発の流れ • 業務課題 5 © 2025 Ippei Morita
自己紹介 大阪で働くフリーランスエンジニア 経歴 専門学校卒→他業種数年 →インフラエンジニア3年 →フリーランスエンジニア 大阪にある美味しいラーメン 好きなこと ・技術 初代Raspberry PI ・食べること 大阪にあるコスパ最強なのに美味しい焼肉屋さん 6 © 2025 Ippei Morita
今回の内容 通信インフラ業界での約3年間の業務改善経験を共有します。 この業務は、人力ではキツイ… が使えるのでは? 結果→ …使えたし、 めっちゃ業務改善できた 7 © 2025 Ippei Morita
目次 • はじめに -前提部分- • 自己紹介 • 今回の内容 • Python • Pythonとは • なぜPythonなのか • 業務背景 • どういった現場で働いていたのか • 開発の流れ • 業務課題 8 © 2025 Ippei Morita
Pythonとは 読みやすく、簡潔なプログラミング言語 読みやすい ・コードブロックの区切りがインデント 簡潔 ・他と比べて書く文字量が少ない ・変数の埋め込みが容易 9 © 2025 Ippei Morita
なぜPythonなのか 業務効率化・業務支援に必要な機能が ライブラリとして豊富に提供されている REST API Excel操作 GUI クリップボード 操作自動化 tkinter pyperclip PyAutoGUI 10 © 2025 Ippei Morita
目次 • はじめに -前提部分- • 自己紹介 • 今回の内容 • Python • Pythonとは • なぜPythonなのか • 業務背景 • どういった現場で働いていたのか • 開発の流れ • 業務課題 11 © 2025 Ippei Morita
どういった現場で働いていたのか? その1 客先常駐の受託開発で 分野はモバイルキャリアや一般のバックボーンネットワーク開発 この部分を構築・管理する仕事 常駐先 委託/請負 自社 • モバイルキャリア • 大学 • その他企業 12 © 2025 Ippei Morita
どういった現場で働いていたのか? その2 システム規模が大きい・関係者が多い・複雑かつ広範な業務領域により、 現場のSEは、その立場もさることながら仕事量が非常に多い 範囲 対象は日本全域の ネットワーク システム 関係者 既に全社・全国規模で相互に連携・ 展開するシステムだらけ 客先のグループ全体従業員数だけで30万人以上 +協業会社??万人+ベンダー??万人 ネットワークサービス 例えば、6両編成800人乗りが240本分で20万人 設計システム 管理システム 監視システム が業務レイヤー別、EoLのリプレイス、だけで なくこれらをまとめる集約システム系もある →一般的な開発サイクル・規模を超える 13 © 2025 Ippei Morita
開発の流れ 新しい通信速度(400G)に対応するネットワークを構築するのと同時に ネットワーク管理システムをアジャイルで構築する 1.ネットワーク網の構築 2.管理網の構築 3.増設対応・情報連携 増設 スイッチ NWコントローラー 連携 NW管理システム 担当領域 増設・変更したら、 機器情報更新が必要 他システム →収容管理システムはある、増設対応・連携機能はある、収容反映はどうやって? 14 © 2025 Ippei Morita
業務課題 その1 管理システム開発担当としては、順次、運用部門に引き渡す予定だったが、 東西共同かつ東先行・状況で話が進んだため、西の要件がおいてけぼりに 本来/想定 実際(西現場) NW管理システム NW管理システム NW設定投入装置 サービス開始しているし、 情報を入れなきゃ各方面に影響が… NW装置情報管理 我々(開発) ギャップ GUIで直接参照・直接管理 そんなこと言われたって聞いてないけど ※後にこれも大変ということがわかる 各ブロック・各地域でそれぞれの設計システムがある 開通担当者はまた別部署 論理設定担当者はまた別部署 各ブロック・各地域のNW装置設計者・管理者 運用部 結果、開発担当が装置情報を収集してデータ投入をすることに 15 © 2025 Ippei Morita
業務課題 その2 装置データ登録ギャップから東で新たなツールが発生、西には開発体制がない ので、ソースコードをもらうも動かないためデータが入らない 設計方針の相違と暫定オペレーション 装置担当(東) 装置担当(西) 東はNW装置設計をExcelで管理してるから、 それを内製ツールでNW管理システム にいれることにする(!新情報!) インポートツール 別システム ソースコードをもらって 西用にカスタマイズ設置 入力してもらう 担当領域 西用インポートツール NW装置情報 ※後に私がリバースエンジ ニアリングで解決し西の 保守開発もする (Python&Node) 課題:データに不備あるし、 ツールも動かない 我々(開発) 別管理Excel 手入力 東NW管理システム 課題:ベースが手動Excel情報なので 初期データ構築に苦労 NW装置情報 西はExcel使ってないし、 各部門ごとで違うシステムを 使ってる (本来は開発だけれども) データ入れたいので、このフォーマット に装置情報入れてくれないでしょうか RESTシーケンス 西NW管理システム GUI操作で入れるしかない 16 © 2025 Ippei Morita
前提部分のまとめ 日本最大規模のインフラ事業部門で働きはじめたが、基幹システムと手運用の 間におちる仕事(データ)を大量に扱うような現場に入ることになった。 • 自分は受託開発のエンジニアなので現場レベルで対応するしかない。 • 状況は、上司と先輩がExcelと管理システムを往復して、手作業でデータを 修正している状況、ツールもエラーで一部しか動いていない。 • 自身のスキルとしては、Web開発知識+コーディング問題をPythonによる基 礎訓練を積んでいるも、実務経験がない状態 • よって、いくらでも仕事とデータがある環境で0からPythonの活用範囲を探 りながらつぎつぎと業務改善した事例をこれからお話する 17 © 2025 Ippei Morita
目次 • はじめに -前提部分- • 現場のPython -実践部分• 発展 –応用・開発のコツ- • おわりに 実践部分 業務背景をおさえつつも、みなさん にとって活用できる形で話をする 18 © 2025 Ippei Morita
目次 • 現場のPython -実践部分• Excel編 • • • • • Excel操作にPythonスクリプトがある世界 たった5行から始められるPython×Excel Pythonは実務要件でもシンプルになりうるか? 実際にあったシチュエーション openpyxl と xlwings の使い分け • 自動化編 • Pythonにおける自動化 • どうやってGUI操作をPythonから? • GUI操作例 ログイン自動化 4編にわけてお話します。 • REST編 • REST APIサーバーの作成 • RESTクライアント • データ編 • 業務課題 再掲詳細版 • 業務課題にどのように取り組んだのか? • Python処理の業務効率化を3段階アップ 19 © 2025 Ippei Morita
目次 • 現場のPython -実践部分• Excel編 • • • • • Excel操作にPythonスクリプトがある世界 たった5行から始められるPython×Excel Pythonは実務要件でもシンプルになりうるか? 実際にあったシチュエーション openpyxl と xlwings の使い分け • 自動化編 • Pythonにおける自動化 • どうやってGUI操作をPythonから? • GUI操作例 ログイン自動化 • REST編 • REST APIサーバーの作成 • RESTクライアント • データ編 • 業務課題 再掲詳細版 • 業務課題にどのように取り組んだのか? • Python処理の業務効率化を3段階アップ 20 © 2025 Ippei Morita
Excel操作にPythonスクリプトがある世界 人の感覚で量が多い、毎回同じことしているのなら、Pythonスクリプトにしな い理由がない 手動操作 Pythonスクリプト 大量のデータ処理 遅い 速い 再現性/エラー ムラ/人為的なミス 毎回同じ結果 変化対応 すべて手動修正 スクリプト修正のみ 効率 単純作業 自動化 コスト 作業員確保、エラーコスト 初期はかかるが、長期的には削減 データ集計 時間がかかる 瞬時に実行可能 レポート作成 手入力で時間がかかる 自動生成 異常値検出 人の手で確認が必要 ルールベースで自動化 処理を代行 複雑なノウハウの伝達 スクリプトの実行依頼 21 © 2025 Ippei Morita
たった5行から始められるPython×Excel PythonからExcelを扱うなんてややこしいなんて思われがちだが、 やってみると思いのほかシンプル 1.ライブラリのインストール(初回のみ、もちろんpythonもインストールしておく) 2. 処理の記述&RUN target.xlsx 3.取得結果の表示 22 © 2025 Ippei Morita
Pythonは実務要件でもシンプルになりうるか? 例えば、社員が100人以上いて、全員の出欠を集計しようが、追加部分は、for 文とちょっとした記述が増える程度で済む。 23 © 2025 Ippei Morita
実際にあったシチュエーション ルールをPythonに落とし込めば、確実かつ速く 処理ができて、使いまわしや修正も容易 書き換え依頼 ・特定のセルを固定で書き換える ・ある場所のセルを他セルの状況によって書き換える 業務背景 対象Excelファイルが数百以上あって、管理システム投入用の ツールは、データ不備が原因だと思うから、こういった条件 で一括で書き換えて欲しい 結果 • ツール活用の実用性を証明できた • 他にも手動でやっている人がいたが、やらなくてよくなった 24 © 2025 Ippei Morita
openpyxl と xlwings の使い分け Excelデータの読み込みには、openpyxlを使い、 Excelデータの書き込みには、xlwingsを使うのがおすすめ 比較 openpyxl xlwings 読込スピード 普通 遅い 書きこみスピード 普通 遅い 書きこみ 書きこむとファイルサイズが変わる場合が あった 特に問題なし 仕組み Excelファイルを直接読み書き 裏でExcelを起動する 動作条件 ライブラリがあれば問題ない Excelがインストールされていること ※私のプロジェクトの場合。要件によって使い分けるとよい 25 © 2025 Ippei Morita
Excel編のまとめ どんな職場でもExcelの定型業務はあるはず。 業務負担が大きい部分との交点が、Python活用のきっかけとなりうる 26 © 2025 Ippei Morita
目次 • 現場のPython -実践部分• Excel編 • • • • • Excel操作にPythonスクリプトがある世界 たった5行から始められるPython×Excel Pythonは実務要件でもシンプルになりうるか? 実際にあったシチュエーション openpyxl と xlwings の使い分け • 自動化編 • Pythonにおける自動化 • どうやってGUI操作をPythonから? • GUI操作例 ログイン自動化 • REST編 • REST APIサーバーの作成 • RESTクライアント • データ編 • 業務課題 再掲詳細版 • 業務課題にどのように取り組んだのか? • Python処理の業務効率化を3段階アップ 27 © 2025 Ippei Morita
Pythonにおける自動化 人のためのGUIも人がやる方法で動かすことができる こういう画面操作系って人間しか操作できないと思っていませんか? 検索 OK OK キャンセル それ、Pythonから操作できます! 28 © 2025 Ippei Morita
どうやってGUI操作をPythonから? Pythonのライブラリのインストールと数行のコードだけで RPAツールを使わずに画像認識を使うパソコン操作ができてしまう 1. ライブラリのインストール(初回のみ、opencv-pythonはconfidenceオプションを使うため) 2. クリックしたいパーツをスクショしてトリミング 3. 右のコードを書いて▷RUN 4. 一瞬で画面上のOKボタンまで飛んでクリック OK 29 © 2025 Ippei Morita
GUI操作例 ログイン自動化 下記のライブラリを組み合わせると、ログイン認証のようなアプリ起動→VPN キー取得→パスワード入力→ログインのような多段階認証も自動化可能になる 活用できるライブラリ クリップボード 操作自動化 キー監視 pyperclip PyAutoGUI pynput Webスクレイピング アプリ起動 Beautiful Soup subprocess ※ログインツール開発においては、セキュリティに注意。 例としてこういったものを組めるようになると、ノウハウの転用が可能になるということ 30 © 2025 Ippei Morita
自動化編のまとめ ふだん何気なくやってるGUI作業も自動化できることを意識すると 非効率な手作業を見直すきっかけになる 31 © 2025 Ippei Morita
目次 • 現場のPython -実践部分• Excel編 • • • • • Excel操作にPythonスクリプトがある世界 たった5行から始められるPython×Excel Pythonは実務要件でもシンプルになりうるか? 実際にあったシチュエーション openpyxl と xlwings の使い分け • 自動化編 • Pythonにおける自動化 • どうやってGUI操作をPythonから? • GUI操作例 ログイン自動化 • REST編 • REST APIサーバーの作成 • RESTクライアント • データ編 • 業務課題 再掲詳細版 • 業務課題にどのように取り組んだのか? • Python処理の業務効率化を3段階アップ 32 © 2025 Ippei Morita
REST APIサーバーの作成 ライブラリインストール後、たった7行でREST API完成 1. ライブラリのインストール(初回のみ) 2. 右のコードを書いて▷RUN 3. ブラウザまたはPowerShellで下記を入力 4. 立派なREST APIサーバー完成 33 © 2025 Ippei Morita
RESTクライアント RESTクライアントもPythonのエコシステムによって 限りなく直観的かつシンプルに書ける 1. ライブラリのインストール(初回のみ) 2. サーバ側のコードを書いて▷RUN 3. クライアント側ののコードを書いて▷RUN 4. 実行後、結果が返ってくる 34 © 2025 Ippei Morita
REST編のまとめ • Python処理を外部アクセス契機でPythonコードをそのまま実行できるのが Python×REST APIサーバーの強み • もし、既存システムにREST APIがあって、PythonからRESTリクエストでき るようになると、Pythonをつかったデータ連携ができるということ 35 © 2025 Ippei Morita
目次 • 現場のPython -実践部分• Excel編 • • • • • Excel操作にPythonスクリプトがある世界 たった5行から始められるPython×Excel Pythonは実務要件でもシンプルになりうるか? 実際にあったシチュエーション openpyxl と xlwings の使い分け • 自動化編 • Pythonにおける自動化 • どうやってGUI操作をPythonから? • GUI操作例 ログイン自動化 • REST編 • REST APIサーバーの作成 • RESTクライアント • データ編 • 業務課題 再掲詳細版 • 業務課題にどのように取り組んだのか? • Python処理の業務効率化を3段階アップ 36 © 2025 Ippei Morita
業務課題 再掲詳細版 元情報が手入力された情報を様々なツールを経て、Excelファイルに転記される。 そして、頻度と量が非常に多い上に、常にデータ分析が要求される Excelファイル 日本全国の新規switch 設計情報 • 物理接続先(switch名・ポート) • 竣工日 • 工事状況 • ポートモジュール 別システム 入力してもらう ↓手動管理データは値の不備が入る インポートツール 別管理Excel 手入力 ↓エラートレースはデータ分析必要 NW管理システム NW装置情報 その上、2週間に一回、3000件ほどExcelが送られてくる 37 © 2025 Ippei Morita
業務課題にどのように取り組んだのか? 2週間に1回、3000件ほどのExcelが送られてくるので、それを一つ一つは見て られない。よって、Pythonで比較ツールを作成 インポートツール NW管理システム NW装置情報 2週間前 現在 このフォーマットは、8種類以上もある 38 © 2025 Ippei Morita
Python処理の業務効率化を3段階アップ 最初の業務改善を大きな痛みのある順番で、手作業とデータ処理効率化を段階 的に進めることで、開発要件と実業務のギャップを作らずに生産性アップ 1.Excel直接比較 2. 辞書型Pickle化 Excelの特定範囲を2次元配列 にして、辞書型Pickle化 旧 3.JSON⇔DB化→CSV → 装置単位 新 openpyxlで両方のExcel情報を メモリ上に展開して、 差分があれば、テキストファ イルに書きだす。 一度、辞書型Pickle化すれば、再度旧 データを読み込まずに済むうえに、再 度、特定データの読み出しもPickle ファイルから可能になる デメリット:再実行に時間がか かる。元情報は直接Excelを見 なければならない デメリット:データが生の配列なので、 構造化されておらずデータ分析のため の加工が難しい ⇔ → 装置集約 旧 新 JSONに変換、SQLと相互変換、CSV化ツールを作 成、これにより運用性能と汎用性の大幅向上 メリット ・JSON変換で情報が構造化される ・SQL相互変換でクエリ発行可(CSVにも出来る) ・CSV同士の比較によって軽量かつ高速に ・CSV化することで、特定データ分析が容易に 39 © 2025 Ippei Morita
データ編 まとめ Pythonの豊富なライブラリによって、 • 手動データのチェック • データの相互変換 • データ分析 もできるようになる。 40 © 2025 Ippei Morita
現場のPython –実践部分- まとめ Pythonの汎用性の高さによって、ちょっとした処理のような初心者でも出来る ような入り口の低い所から少し先までできることが示せた • 次のパートでは、応用編にふれる • また、実際の動作イメージや開発において何が大変かにもふれる 41 © 2025 Ippei Morita
目次 • はじめに -前提部分- • 現場のPython -実践部分• 発展 –応用・開発のコツ- • おわりに 応用・開発のコツ 42 © 2025 Ippei Morita
目次 • 発展 –応用・開発のコツ- • Python実践の応用 • その他応用例一覧 • Python開発で苦労するポイントは 43 © 2025 Ippei Morita
Python実践の応用 動作動画を3つ紹介する 1.GUI作業自動化 2.GUI+ダイアログ操作 3.単純GUI作業自動化 44 © 2025 Ippei Morita
その他応用例一覧 基礎のアレンジをやっていくと、いつのまにか自分にとってこれが欲しいとい うツールを即座にピンポイントで自前で作れるように 汎用処理のライブラリ化 • データの入出力処理があまりに多かったので 自身が使いやすいようにライブラリ化した。 →https://github.com/m-ippei/pythondatautil シンプルなSQL操作のライブラリ化 • SQLの独立ファイルでシンプル操作するライ ブラリがなかったので、作った。 →https://github.com/m-ippei/pythondbutil その他 • 汎用コピペツール • 汎用多画面同時コマンド投入ツール • TeraTerm,WinSCPログイン簡素化起動ファイル 作成ツール • 業務特化分析ツール • 基幹システム 支援REST APIサーバ • 業務システム支援クライアントツール クライアントツー ル 入力支援REST NW管理システム (新)実行業務ごとに切り出した ↑ シンプルAPI (新)非同期REST処理 代行サーバ ↑(既)シーケンスを要求する ローレベルREST API 45 © 2025 Ippei Morita
Python開発で苦労するポイントは? 課題解決レベル相応に学ぶコストはあるが、やればやるほど長期的には学びの 蓄積効果によって、スケールメリットがある 実質的な壁 それを具体的にどうやって実現するのか Pythonの書き方? ライブラリでできること? 基本的な構文を扱える必要がある。けど暗記しないといけないわけじゃない。 壁の突破方法 いきなり理想的なコードを書こうとせずに、最も小さい要件でまず動くことを確認する 本番データで色んな未確認処理を一度にすべて動かす。 テストデータで、まずもっとも簡単な確認から積み重ねて動かす チャンス Pythonならそれが容易 今なら生成AIに聞いて、処理を書いてもらってそれぞれのパーツで何をしてるか把握できたなら、 適宜、修正/テストしてそれを採用できる 46 © 2025 Ippei Morita
発展編のまとめ • 基礎レベルの課題解決を行うと、応用レベルの課題解決も次第にできるよう になる • どんな課題も小さな課題の集合体にすぎない。 • 課題要素を分解して、要素技術を組み合わせて、一個一個、一番重要かつ痛 みのある業務から対処をしていくことで、やがて課題が小さくなり、負債解 消から生産性向上への業務フローへと変わっていく 47 © 2025 Ippei Morita
目次 • はじめに -前提部分- • 現場のPython -実践部分• 発展 –応用・開発のコツ- • おわりに その他 48 © 2025 Ippei Morita
目次 • おわりに • 今回の内容でカバーしきれていないところ • 追加リソース • 追加リソースの紹介 • Pythonを実務で徹底的につかこなしてみて • まとめ 49 © 2025 Ippei Morita
今回の内容でカバーしきれていないところ 内容と時間の都合上、別途、興味があれば著者に対して 深掘り・質問していただければ、お答えします。 応用例の解説 プロジェクト・案件によりけり、どんな応用もシンプルの組み合わせ Pythonコードの細かいノウハウ 今後また紹介できる機会があれば 業務背景の詳細と効果 Pythonにまつわる話がテーマのため時間と内容の都合上省略 使用ライブラリの詳しい解説 今回は、Pythonでこんなことができるというところから説明 Pythonそのものについて深掘り 生成AIの方が上手く説明するのでそちらに預ける。次ページ。 50 © 2025 Ippei Morita
追加リソース Pythonそのものについての深堀りを生成AIとの対話で記事にしました。 https://github.com/m-ippei/AskAI-Python ↓コンテンツの一部 51 © 2025 Ippei Morita
追加リソースの紹介 全24コンテンツを公開! Pythonに関する疑問を徹底的につぶしておいたので確認してみてください! 52 © 2025 Ippei Morita
Pythonを実務で徹底的に使いこなしてみて 流行りなどを受動的に学ぶ姿勢だと獲得できないことが、Pythonを活用しなが ら課題解決をすることで応用範囲が広がっていくことを知れた Pythonのエコシステムによって促された学習スタイル 1. 受動的学習スタイル(これまで) • 自分のスキルが教える人の技量に依存する • 流行りの技術は付加価値が出しづらい • 表層の技術習得は、移り変わりが激しい 2. 能動的学習スタイル(使ってみて) • Pythonで出来ることですぐに目の前の課題解決することで、生きたスキルを獲得できる • これができるなら、これもできるはずと仮説を立てるとそれに対する情報が出てくる • 手を動かして、たくさんのプログラムを作るとコードが洗練化・資産化してくる • 実践を通しての課題解決が、深部の仕組みの理解を要求され、さらに詳しくなれる 53 © 2025 Ippei Morita
まとめ これでもまだ、Pythonに関する情報のほんの頭の部分にしかすぎません。 課題解決・業務改善を通じて、Python活用を楽しみつつ 共に社会インパクトを生み出しましょう! 54 © 2025 Ippei Morita
おわり © 2025 Ippei Morita