Upgrade to Pro — share decks privately, control downloads, hide ads and more …

20251014_Pythonを実務で徹底的に使いこなした話

 20251014_Pythonを実務で徹底的に使いこなした話

通信インフラ業界での約3年間での業務改善経験です。

業務の中で、人力ではキツイとなったときに、
「Pythonが使えるのでは?」と
使ってみて、実際に改善できた事例を共有します。

下記、イベントにて発表した資料です。
https://supporterz-seminar.connpass.com/event/370484/

Avatar for 森田 一平

森田 一平

October 13, 2025
Tweet

More Decks by 森田 一平

Other Decks in Technology

Transcript

  1. © 2025 Ippei Morita を 実務 で 徹底的 使いこなした 話

    に 2025年10月14日 サポーターズ勉強会 森田一平
  2. © 2025 Ippei Morita 目次 2 • はじめに -前提部分- •

    現場のPython -実践部分- • 発展 –応用・開発のコツ- • おわりに 大項目は4ブロック
  3. © 2025 Ippei Morita 目次 3 • はじめに -前提部分- •

    現場のPython -実践部分- • 発展 –応用・開発のコツ- • おわりに まずは前提部分から
  4. © 2025 Ippei Morita 目次 4 • はじめに -前提部分- •

    自己紹介 • 今回の内容 • Python • Pythonとは • なぜPythonなのか • 業務背景 • どういった現場で働いていたのか • 開発の流れ • 業務課題 前提部分 後の説明につながります。
  5. © 2025 Ippei Morita 目次 5 • はじめに -前提部分- •

    自己紹介 • 今回の内容 • Python • Pythonとは • なぜPythonなのか • 業務背景 • どういった現場で働いていたのか • 開発の流れ • 業務課題
  6. © 2025 Ippei Morita 自己紹介 6 大阪で働くフリーランスエンジニア ・技術 ・食べること 専門学校卒→他業種数年

    →インフラエンジニア3年 →フリーランスエンジニア 経歴 好きなこと 初代Raspberry PI 大阪にある美味しいラーメン 大阪にあるコスパ最強なのに美味しい焼肉屋さん
  7. © 2025 Ippei Morita 目次 8 • はじめに -前提部分- •

    自己紹介 • 今回の内容 • Python • Pythonとは • なぜPythonなのか • 業務背景 • どういった現場で働いていたのか • 開発の流れ • 業務課題
  8. © 2025 Ippei Morita 目次 11 • はじめに -前提部分- •

    自己紹介 • 今回の内容 • Python • Pythonとは • なぜPythonなのか • 業務背景 • どういった現場で働いていたのか • 開発の流れ • 業務課題
  9. © 2025 Ippei Morita どういった現場で働いていたのか? その2 13 システム規模が大きい・関係者が多い・複雑かつ広範な業務領域により、 現場のSEは、その立場もさることながら仕事量が非常に多い 対象は日本全域の

    ネットワーク 客先のグループ全体従業員数だけで30万人以上 +協業会社??万人+ベンダー??万人 例えば、6両編成800人乗りが240本分で20万人 既に全社・全国規模で相互に連携・ 展開するシステムだらけ ネットワークサービス 監視システム 設計システム 管理システム が業務レイヤー別、EoLのリプレイス、だけで なくこれらをまとめる集約システム系もある →一般的な開発サイクル・規模を超える 範囲 システム 関係者
  10. © 2025 Ippei Morita 開発の流れ 14 新しい通信速度(400G)に対応するネットワークを構築するのと同時に ネットワーク管理システムをアジャイルで構築する 1.ネットワーク網の構築 2.管理網の構築

    3.増設対応・情報連携 NWコントローラー スイッチ NW管理システム 他システム 連携 担当領域 増設 →収容管理システムはある、増設対応・連携機能はある、収容反映はどうやって? 増設・変更したら、 機器情報更新が必要
  11. © 2025 Ippei Morita 業務課題 その1 15 管理システム開発担当としては、順次、運用部門に引き渡す予定だったが、 東西共同かつ東先行・状況で話が進んだため、西の要件がおいてけぼりに NW管理システム

    NW装置情報管理 NW設定投入装置 本来/想定 実際(西現場) 各ブロック・各地域のNW装置設計者・管理者 GUIで直接参照・直接管理 NW管理システム 各ブロック・各地域でそれぞれの設計システムがある 開通担当者はまた別部署 論理設定担当者はまた別部署 サービス開始しているし、 情報を入れなきゃ各方面に影響が… 我々(開発) そんなこと言われたって聞いてないけど ギャップ 結果、開発担当が装置情報を収集してデータ投入をすることに 運用部 ※後にこれも大変ということがわかる
  12. © 2025 Ippei Morita 業務課題 その2 16 装置データ登録ギャップから東で新たなツールが発生、西には開発体制がない ので、ソースコードをもらうも動かないためデータが入らない 設計方針の相違と暫定オペレーション

    東はNW装置設計をExcelで管理してるから、 それを内製ツールでNW管理システム にいれることにする(!新情報!) 西はExcel使ってないし、 各部門ごとで違うシステムを 使ってる 東NW管理システム インポートツール 西用インポートツール 別管理Excel 別システム 入力してもらう ソースコードをもらって 西用にカスタマイズ設置 西NW管理システム NW装置情報 NW装置情報 装置担当(東) 装置担当(西) 我々(開発) (本来は開発だけれども) データ入れたいので、このフォーマット に装置情報入れてくれないでしょうか GUI操作で入れるしかない RESTシーケンス 課題:データに不備あるし、 ツールも動かない 課題:ベースが手動Excel情報なので 初期データ構築に苦労 担当領域 手入力 ※後に私がリバースエンジ ニアリングで解決し西の 保守開発もする (Python&Node)
  13. © 2025 Ippei Morita 前提部分のまとめ 17 日本最大規模のインフラ事業部門で働きはじめたが、基幹システムと手運用の 間におちる仕事(データ)を大量に扱うような現場に入ることになった。 • 自分は受託開発のエンジニアなので現場レベルで対応するしかない。

    • 状況は、上司と先輩がExcelと管理システムを往復して、手作業でデータを 修正している状況、ツールもエラーで一部しか動いていない。 • 自身のスキルとしては、Web開発知識+コーディング問題をPythonによる基 礎訓練を積んでいるも、実務経験がない状態 • よって、いくらでも仕事とデータがある環境で0からPythonの活用範囲を探 りながらつぎつぎと業務改善した事例をこれからお話する
  14. © 2025 Ippei Morita 目次 18 • はじめに -前提部分- •

    現場のPython -実践部分- • 発展 –応用・開発のコツ- • おわりに 実践部分 業務背景をおさえつつも、みなさん にとって活用できる形で話をする
  15. © 2025 Ippei Morita 目次 19 • 現場のPython -実践部分- •

    Excel編 • Excel操作にPythonスクリプトがある世界 • たった5行から始められるPython×Excel • Pythonは実務要件でもシンプルになりうるか? • 実際にあったシチュエーション • openpyxl と xlwings の使い分け • 自動化編 • Pythonにおける自動化 • どうやってGUI操作をPythonから? • GUI操作例 ログイン自動化 • REST編 • REST APIサーバーの作成 • RESTクライアント • データ編 • 業務課題 再掲詳細版 • 業務課題にどのように取り組んだのか? • Python処理の業務効率化を3段階アップ 4編にわけてお話します。
  16. © 2025 Ippei Morita 目次 20 • 現場のPython -実践部分- •

    Excel編 • Excel操作にPythonスクリプトがある世界 • たった5行から始められるPython×Excel • Pythonは実務要件でもシンプルになりうるか? • 実際にあったシチュエーション • openpyxl と xlwings の使い分け • 自動化編 • Pythonにおける自動化 • どうやってGUI操作をPythonから? • GUI操作例 ログイン自動化 • REST編 • REST APIサーバーの作成 • RESTクライアント • データ編 • 業務課題 再掲詳細版 • 業務課題にどのように取り組んだのか? • Python処理の業務効率化を3段階アップ
  17. © 2025 Ippei Morita Excel操作にPythonスクリプトがある世界 21 人の感覚で量が多い、毎回同じことしているのなら、Pythonスクリプトにしな い理由がない 手動操作 Pythonスクリプト

    大量のデータ処理 遅い 速い 再現性/エラー ムラ/人為的なミス 毎回同じ結果 変化対応 すべて手動修正 スクリプト修正のみ 効率 単純作業 自動化 コスト 作業員確保、エラーコスト 初期はかかるが、長期的には削減 データ集計 時間がかかる 瞬時に実行可能 レポート作成 手入力で時間がかかる 自動生成 異常値検出 人の手で確認が必要 ルールベースで自動化 処理を代行 複雑なノウハウの伝達 スクリプトの実行依頼
  18. © 2025 Ippei Morita 実際にあったシチュエーション 24 ルールをPythonに落とし込めば、確実かつ速く 処理ができて、使いまわしや修正も容易 ・特定のセルを固定で書き換える ・ある場所のセルを他セルの状況によって書き換える

    書き換え依頼 業務背景 対象Excelファイルが数百以上あって、管理システム投入用の ツールは、データ不備が原因だと思うから、こういった条件 で一括で書き換えて欲しい 結果 • ツール活用の実用性を証明できた • 他にも手動でやっている人がいたが、やらなくてよくなった
  19. © 2025 Ippei Morita openpyxl と xlwings の使い分け 25 Excelデータの読み込みには、openpyxlを使い、

    Excelデータの書き込みには、xlwingsを使うのがおすすめ openpyxl xlwings 読込スピード 普通 遅い 書きこみスピード 普通 遅い 書きこみ 書きこむとファイルサイズが変わる場合が あった 特に問題なし 仕組み Excelファイルを直接読み書き 裏でExcelを起動する 動作条件 ライブラリがあれば問題ない Excelがインストールされていること 比較 ※私のプロジェクトの場合。要件によって使い分けるとよい
  20. © 2025 Ippei Morita 目次 27 • 現場のPython -実践部分- •

    Excel編 • Excel操作にPythonスクリプトがある世界 • たった5行から始められるPython×Excel • Pythonは実務要件でもシンプルになりうるか? • 実際にあったシチュエーション • openpyxl と xlwings の使い分け • 自動化編 • Pythonにおける自動化 • どうやってGUI操作をPythonから? • GUI操作例 ログイン自動化 • REST編 • REST APIサーバーの作成 • RESTクライアント • データ編 • 業務課題 再掲詳細版 • 業務課題にどのように取り組んだのか? • Python処理の業務効率化を3段階アップ
  21. © 2025 Ippei Morita Pythonにおける自動化 28 人のためのGUIも人がやる方法で動かすことができる OK キャンセル OK

    検索 こういう画面操作系って人間しか操作できないと思っていませんか? それ、Pythonから操作できます!
  22. © 2025 Ippei Morita GUI操作例 ログイン自動化 30 下記のライブラリを組み合わせると、ログイン認証のようなアプリ起動→VPN キー取得→パスワード入力→ログインのような多段階認証も自動化可能になる クリップボード

    操作自動化 pyperclip PyAutoGUI キー監視 pynput Beautiful Soup Webスクレイピング subprocess アプリ起動 ※ログインツール開発においては、セキュリティに注意。 例としてこういったものを組めるようになると、ノウハウの転用が可能になるということ 活用できるライブラリ
  23. © 2025 Ippei Morita 目次 32 • 現場のPython -実践部分- •

    Excel編 • Excel操作にPythonスクリプトがある世界 • たった5行から始められるPython×Excel • Pythonは実務要件でもシンプルになりうるか? • 実際にあったシチュエーション • openpyxl と xlwings の使い分け • 自動化編 • Pythonにおける自動化 • どうやってGUI操作をPythonから? • GUI操作例 ログイン自動化 • REST編 • REST APIサーバーの作成 • RESTクライアント • データ編 • 業務課題 再掲詳細版 • 業務課題にどのように取り組んだのか? • Python処理の業務効率化を3段階アップ
  24. © 2025 Ippei Morita REST APIサーバーの作成 33 ライブラリインストール後、たった7行でREST API完成 1.

    ライブラリのインストール(初回のみ) 2. 右のコードを書いて▷RUN 3. ブラウザまたはPowerShellで下記を入力 4. 立派なREST APIサーバー完成
  25. © 2025 Ippei Morita RESTクライアント 34 RESTクライアントもPythonのエコシステムによって 限りなく直観的かつシンプルに書ける 1. ライブラリのインストール(初回のみ)

    3. クライアント側ののコードを書いて▷RUN 2. サーバ側のコードを書いて▷RUN 4. 実行後、結果が返ってくる
  26. © 2025 Ippei Morita REST編のまとめ 35 • Python処理を外部アクセス契機でPythonコードをそのまま実行できるのが Python×REST APIサーバーの強み

    • もし、既存システムにREST APIがあって、PythonからRESTリクエストでき るようになると、Pythonをつかったデータ連携ができるということ
  27. © 2025 Ippei Morita 目次 36 • 現場のPython -実践部分- •

    Excel編 • Excel操作にPythonスクリプトがある世界 • たった5行から始められるPython×Excel • Pythonは実務要件でもシンプルになりうるか? • 実際にあったシチュエーション • openpyxl と xlwings の使い分け • 自動化編 • Pythonにおける自動化 • どうやってGUI操作をPythonから? • GUI操作例 ログイン自動化 • REST編 • REST APIサーバーの作成 • RESTクライアント • データ編 • 業務課題 再掲詳細版 • 業務課題にどのように取り組んだのか? • Python処理の業務効率化を3段階アップ
  28. © 2025 Ippei Morita 業務課題 再掲詳細版 37 元情報が手入力された情報を様々なツールを経て、Excelファイルに転記され る。そして、頻度と量が非常に多い上に、常にデータ分析が要求される インポートツール

    別管理Excel 別システム 入力してもらう NW管理システム NW装置情報 手入力 日本全国の新規switch 設計情報 • 物理接続先(switch名・ポート) • 竣工日 • 工事状況 • ポートモジュール Excelファイル その上、2週間に一回、3000件ほどExcelが送られてくる ↓手動管理データは値の不備が入る ↓エラートレースはデータ分析必要
  29. © 2025 Ippei Morita Python処理の業務効率化を3段階アップ 39 最初の業務改善を大きな痛みのある順番で、手作業とデータ処理効率化を段階 的に進めることで、開発要件と実業務のギャップを作らずに生産性アップ 1.Excel直接比較 旧

    新 openpyxlで両方のExcel情報を メモリ上に展開して、 差分があれば、テキストファ イルに書きだす。 デメリット:再実行に時間がか かる。元情報は直接Excelを見 なければならない 2. 辞書型Pickle化 Excelの特定範囲を2次元配列 にして、辞書型Pickle化 一度、辞書型Pickle化すれば、再度旧 データを読み込まずに済むうえに、再 度、特定データの読み出しもPickle ファイルから可能になる デメリット:データが生の配列なので、 構造化されておらずデータ分析のため の加工が難しい 3.JSON⇔DB化→CSV ⇔ → JSONに変換、SQLと相互変換、CSV化ツールを作 成、これにより運用性能と汎用性の大幅向上 メリット ・JSON変換で情報が構造化される ・SQL相互変換でクエリ発行可(CSVにも出来る) ・CSV同士の比較によって軽量かつ高速に ・CSV化することで、特定データ分析が容易に 旧 新 → 装置単位 装置集約
  30. © 2025 Ippei Morita 目次 42 • はじめに -前提部分- •

    現場のPython -実践部分- • 発展 –応用・開発のコツ- • おわりに 応用・開発のコツ
  31. © 2025 Ippei Morita 目次 43 • 発展 –応用・開発のコツ- •

    Python実践の応用 • その他応用例一覧 • Python開発で苦労するポイントは
  32. © 2025 Ippei Morita その他応用例一覧 45 基礎のアレンジをやっていくと、いつのまにか自分にとってこれが欲しいとい うツールを即座にピンポイントで自前で作れるように • データの入出力処理があまりに多かったので

    自身が使いやすいようにライブラリ化した。 →https://github.com/m-ippei/pythondatautil 汎用処理のライブラリ化 シンプルなSQL操作のライブラリ化 • SQLの独立ファイルでシンプル操作するライ ブラリがなかったので、作った。 →https://github.com/m-ippei/pythondbutil その他 • 汎用コピペツール • 汎用多画面同時コマンド投入ツール • TeraTerm,WinSCPログイン簡素化起動ファイル 作成ツール • 業務特化分析ツール • 基幹システム 支援REST APIサーバ • 業務システム支援クライアントツール NW管理システム 入力支援REST クライアントツール ↑(既)シーケンスを要求する ローレベルREST API (新)実行業務ごとに切り出した ↑ シンプルAPI (新)非同期REST処理 代行サーバ
  33. © 2025 Ippei Morita Python開発で苦労するポイントは? 46 課題解決レベル相応に学ぶコストはあるが、やればやるほど長期的には学びの 蓄積効果によって、スケールメリットがある それを具体的にどうやって実現するのか ライブラリでできること?

    Pythonの書き方? 基本的な構文を扱える必要がある。けど暗記しないといけないわけじゃない。 実質的な壁 壁の突破方法 いきなり理想的なコードを書こうとせずに、最も小さい要件でまず動くことを確認する 本番データで色んな未確認処理を一度にすべて動かす。 テストデータで、まずもっとも簡単な確認から積み重ねて動かす Pythonならそれが容易 チャンス 今なら生成AIに聞いて、処理を書いてもらってそれぞれのパーツで何をしてるか把握できたなら、 適宜、修正/テストしてそれを採用できる
  34. © 2025 Ippei Morita 発展編のまとめ 47 • 基礎レベルの課題解決を行うと、応用レベルの課題解決も次第にできるよう になる •

    どんな課題も小さな課題の集合体にすぎない。 • 課題要素を分解して、要素技術を組み合わせて、一個一個、一番重要かつ痛 みのある業務から対処をしていくことで、やがて課題が小さくなり、負債解 消から生産性向上への業務フローへと変わっていく
  35. © 2025 Ippei Morita 目次 48 • はじめに -前提部分- •

    現場のPython -実践部分- • 発展 –応用・開発のコツ- • おわりに その他
  36. © 2025 Ippei Morita 目次 49 • おわりに • 今回の内容でカバーしきれていないところ

    • 追加リソース • 追加リソースの紹介 • Pythonを実務で徹底的につかこなしてみて • まとめ
  37. © 2025 Ippei Morita 今回の内容でカバーしきれていないところ 50 内容と時間の都合上、別途、興味があれば著者に対して 深掘り・質問していただければ、お答えします。 応用例の解説 業務背景の詳細と効果

    使用ライブラリの詳しい解説 プロジェクト・案件によりけり、どんな応用もシンプルの組み合わせ Pythonにまつわる話がテーマのため時間と内容の都合上省略 今回は、Pythonでこんなことができるというところから説明 Pythonそのものについて深掘り 生成AIの方が上手く説明するのでそちらに預ける。次ページ。 Pythonコードの細かいノウハウ 今後また紹介できる機会があれば
  38. © 2025 Ippei Morita Pythonを実務で徹底的に使いこなしてみて 53 流行りなどを受動的に学ぶ姿勢だと獲得できないことが、Pythonを活用しなが ら課題解決をすることで応用範囲が広がっていくことを知れた 1. 受動的学習スタイル(これまで)

    2. 能動的学習スタイル(使ってみて) • 自分のスキルが教える人の技量に依存する • 流行りの技術は付加価値が出しづらい • 表層の技術習得は、移り変わりが激しい • Pythonで出来ることですぐに目の前の課題解決することで、生きたスキルを獲得できる • これができるなら、これもできるはずと仮説を立てるとそれに対する情報が出てくる • 手を動かして、たくさんのプログラムを作るとコードが洗練化・資産化してくる • 実践を通しての課題解決が、深部の仕組みの理解を要求され、さらに詳しくなれる Pythonのエコシステムによって促された学習スタイル