【実践】ちょっと便利なツールをPythonで作ろう!

パソコンは趣味や仕事で欠かせない存在ですが、単純作業に追われて時間を浪費していると感じたことはありませんか?

「自動化」といえばPythonが有名ですが、「せっかくPythonを学んだのに、具体的なツール作成方法がわからない」という方は案外多いはず。

でもご安心ください。本ブログを読めば、学んだ知識を生かして自分に役立つツールを作れるようになります。

もちろん、これからPythonを始めようとする方にとっても参考になる内容となっていますので、Pythonを使って便利なツールを作りたいと思っている方は、是非本ブログを活用してください。

目次

はじめに

本ブログの目的と概要

本ブログの目的は、趣味や仕事で日々行っているパソコン上の単純作業を、効率化/自動化するためのツール作成をサポートすることです。

もう少し詳しく解説すると、Pythonの基本的な文法はある程度理解しているものの、自作ツールの作り方がいまいち分からない方や、日常の作業効率化/自動化するためにPythonの勉強を始めようとしている方に向けて、自作ツール作成に関する具体的な手順と事例を学んでいただき、実践的なスキルを身に付けていただくことを目指しています。

本ブログで使用するツールの動作環境

本ブログで作成するツールは、開発環境と実行環境をUSBにインストールし、任意のWindows11 PCに挿して使用したり、あるいはUSBの内容をまるごとPCにコピーして使用する運用スタイルを想定しています。

必要なライブラリや開発ツールは自作ツールの内容によって異なるため、必要なタイミングで随時紹介しますが、全てに共通するのは以下の内容です。

動作するOSWindows11
開発言語Python 3.12.x
開発ツールVisual Studio Code (通称 VSCode)

読者に期待するスキルセット

本ブログに掲載している内容は、以下のスキルセットを持っていることを想定しています。プログラミングの経験は不要ですが、基本的なPythonの文法を知っていて、パソコンが一通り操作できることが必要です。

  • 基本的なWindowsパソコンの操作ができる
  • メモ帳やテキストエディタを用いてテキストファイルが作成できる
  • バッチファイルについて浅く理解している
  • コマンドプロンプトから簡単なコマンドを実行できる
  • Pythonの文法に関する基礎知識がある(変数、データ型、基本的な制御構文など)

Pythonのプログラムはコマンドプロンプトから実行することが一般的であるため、本ブログで公開するツールにおいてもコマンドプロンプトからの実行を前提としています。

また、ツールをエクスプローラーからダブルクリックで実行したり、低時刻に自動実行させるために、テキストエディタの操作やバッチファイルの知識が必要となります。

自作ツールで欠かせないPythonの基礎知識をざっくり解説」の記事で基本的な文法を紹介しています。もしPython文法に不安のある方は、おさらいの意味を含めてさっと目を通していただければと思います。

【初心者歓迎】Pythonで作る!かん...
自作ツールで欠かせないPythonの基礎知識をざっくり解説 | 【初心者歓迎】Pythonで作る!かんたんツール工... Pythonは非常に強力で柔軟なプログラミング言語であり、さまざまな自作ツールを作成するのに適しています。 本記事では、本ブログで公開している自作ツールのソースコード...


なぜPythonが効率化/自動化に適しているのか

Pythonはそのシンプルな文法と便利なライブラリが数多く用意されており、効率化/自動化に適したプログラミング言語です。

  • シンプルで読みやすい文法
    Pythonはコードが直感的で読みやすく、初心者でも学びやすい言語です。
  • 豊富なライブラリ
    データ処理や自動化に役立つライブラリ(例:Pandas、Openpyxl、PyAutoGUIなど)が充実しており、効率的に開発が進められます。
  • クロスプラットフォーム
    Windows、Mac、Linuxなど、多様な環境で動作するため、企業の様々なITインフラに対応可能です。

ツール開発/実行環境

WinPythonのインストール

Pythonを使ってツールの作成や実行を行うために、Python開発環境を整える必要があります。
Pythonの開発環境にはいくつかの種類がありますが、本ブログではWinPythonを使用します。

WinPythonは、Windows環境に最適化されたポータブルな開発・実行環境であり、次の特徴があります。

  • 圧縮ファイルを解凍するだけでPythonの開発・実行環境が構築できる
  • Windowsや既存のアプリに影響を及ぼさない
  • USBにコピーして他のPC上で動作させることができる
  • フォルダ丸ごとコピーするだけで環境の複製やバックアップがおこなえる
  • Pythonの複数バージョンを共存することが可能で、かつ同時に利用できる

WpnPythonの具体的なインストール方法と使い方は次の記事をご覧ください。

VSCodeのインストール方法と使い方

WinPython で作成した開発・実行環境に VSCodeをインストールします。詳細は次の記事をご覧ください。

【初心者歓迎】Pythonで作る!かん...
WinPythonにVSCode Portable版を入れよう! | 【初心者歓迎】Pythonで作る!かんたんツール工房 本ブログで紹介する自作ツールは、WinPythonで作ったPython開発・環境を前提にしています。 そこで本記事では、Python開発ツールとして人気が高い Visual Studio Code 、略...

更に詳しい使い方については@ITの「第1回 Visual Studio Codeでデバッグをするための基礎知識」が参考になります。

ツールの作り方

ツールの自作は、自分のニーズにぴったり合ったものを作れるだけでなく、プログラミングスキルを向上させる絶好の機会でもあります。ここでは、ツールを作るための基本的なステップを紹介します。

作りたいものを明確にする

まずは何を作りたいのかを明確にしましょう。これはツールの目的や機能を具体的にするための重要なステップです。次のような質問を自分に投げかけてみてください

  • 何を解決したいのか?
  • どのような機能が必要か?
  • 誰が使うのか?

例:
「複数のCSVファイルを一つにまとめるツールを作りたい。」

仕様を決める

次に、ツールの仕様を具体的に決めます。仕様とは、ツールが持つべき機能や動作の詳細です。これには以下が含まれます。

  • 入力と出力の形式
  • 必須機能とオプション機能
  • インターフェースのデザイン(CLI、GUI、Webアプリなどの画面デザイン)

<参考例>
入力形式:複数のCSVファイル
出力形式:結合された一つのCSVファイル
必須機能:2ファイル目以降のヘッダは破棄する
     マウスのドラッグ&ドロップでファイル選択できる
オプション機能:
     「2ファイル目以降のヘッダは破棄しない」スイッチを付ける
     文字コードをUTF-8から Shift-JIS に変換できる
画面デザイン:

画面項目ごとの役割や動作をまとめた一覧表を作成する方法も効果的です。

実現方法を検討する

仕様が決まったら、それをどのように実現するかを考えます。ここでは、使用するライブラリやツールを選定します。また、必要に応じて実現可能性や技術的な課題、解決策も検討します。

<参考例>
使用ライブラリ:Tkinter(GUI作成用)、pandas(CSVの読み込み/書き出し)
技術的課題  :巨大なCSVを結合する場合、メモリに収まらない。
課題への対策 :結合対象のCSVが巨大な場合は仕方ないが、CSVの結合はメモリで行わず、
        1ファイルづつ読み込んで出力ファイルにAppendすることで対応する。

プログラムの構成を考える

次に、プログラム全体の構成を考えます。

  • 全体をいくつのモジュールに分けるのか
  • 各モジュールの従属関係(どのモジュールがどのモジュールを呼ぶか)はどうするのか
  • 各モジュールにはどのような処理を行わせるのか
  • 各モジュールにはどのような名前を付けるのか

例えば、次のような図を書くと具体的なイメージがつかみやすくなります。

Pythonはモジュールごとにファイルを分けることが多いので、モジュール=ファイルとして考えておきましょう。

個々の処理手順を考える

最後に、各機能の具体的な処理手順を考えます。
GUIを持つツールの場合は、画面の操作ごとに実行する処理を考えていきます。処理手順を図式化する方法としてフローチャートが有名ですが、単純に処理ごとに箱を書いていくだけでも構いません。

修正しやすい自作ツール作成ポイント

処理手順を単純に上から下へと並べていってもプログラムは作成できますが、やりたい処理が増えるほどプログラムが複雑になり、プログラムの修正や再利用が難しくなります。

そこで、この章では後々の修正や機能追加、再利用を考慮したプログラム作成のポイントを解説します。

本ブログで紹介する自作ツールは、これらのポイントを考慮して作成しています。ソースコードを読み解く上での参考にして頂ければと思います。

画面と処理の分離

自作ツールを含む一般的なアプリケーションは、利用者が画面を操作することで、その操作に応じた処理が実行され、結果を画面やファイルに出力します。

この一連の流れを1つの長いプログラムとして作成することも可能ですが、プログラムが複雑に絡み合って理解が難しくなると同時に、画面や処理に手を加えたり、別ツールに一部流用することが困難になります。

この対策には、プログラムを適切な単位(例えば機能ごと)に分割して作成することが有効であり、画面と処理を分けるというアプローチがよく行われます。

本ブログで紹介するツールは、原則的に画面と処理を分けて個別に作成することを推奨し、また実践しています。

画面と処理の連携

画面と処理を分けて個別に作成した場合、両者を連携させて1つのツールに仕上げる必要があります。画面と処理の連携にはいろいろな方法がありますが、本ブログでは単純に画面操作ごとに必要なクラスやメソッドを呼び出す方法を採用します。

部品化と再利用

例えば、「複数のCSVファイルを読み込んで1つのCSVファイルに結合する」自作ツールと、「EXCELファイルを読み込んでCSVファイルに変換する」自作ツールを考えた場合、「CSVを出力する」という機能は流用できそうです。

流用できそうな機能を思いついたら、流用しやすいように部品化します。ここでいう部品化とは、クラス化や関数化という意味です。

関数化する場合、第一引数は出力ファイル名、第二引数はCSVを格納したDataFrame、第三引数は文字コード・・・という具合に流用を意識した関数の仕様を考え、その通りの関数を作成します。

最初は難しいかも知れませんが、共通化を意識してプログラムを作成していくことで、だんだんコツが飲み込めてくると思います。

共通化は自分の資産を増やし、後々の自作ツールの生産性をアップしたり、機能追加や変更などのメンテナンスに非常に役立つので、是非心がけてプログラムを作成してください。

本ブログで使っているGUIライブラリ

本ブログで紹介する自作ツールは、次のライブラリを使っています。ライブラリの概要や使い方については個別の記事があるので、そちらをご覧ください。

用途ライブラリ名関連記事
UI作成TkinterTkinterによる画面作成のポイントをサンプル付きで紹介
UI作成CustomTkinterCustomTkinterによる画面作成のポイントをサンプル付きで紹介

自作ツール向けに簡単な画面がサクッと作れる自作ライブラリを「【CustomTkinter】テキスト記述でGUIを簡単作成するライブラリを紹介!」の記事で紹介しています。テキストボックスやコンボボックスなどのウィジェットをテキストファイルに記述するだけの手軽さなので、興味のある方はご覧ください。

あわせて読みたい
【CustomTkinter】テキスト記述でGUIを簡単作成するライブラリを紹介! 本ブログで紹介しているツールも含め、自作ツールはちょっとした作業を自動化することが目的なので、簡易的な画面で事足りることが大半です。 とはいうものの、CustomTk...

自作ツールに欠かせないPythonライブラリの基礎知識

カテゴリ概要記事へのURL
ファイル/フォルダファイル/フォルダのパス分解、結合ファイルパス/フォルダパス操作
ファイル/フォルダ指定フォルダからファイル一覧取得ファイル名一覧の取得
ファイル/フォルダフォルダコピー、移動、削除フォルダ操作
データベースSQLiteへの接続、検索、更新、削除SQLite基礎
データベースSQLite のメタデータ取得方法SQLite応用
データベースpandasからのSQLite の利用 SQLite実用
スクレイピングスクレイピングが簡単になる自作クラスの紹介便利なスクレイピング自作クラス
可視化Matplotlibの使い方グラフ作成のポイント
可視化グラフ描画が簡単になる自作クラスの紹介便利なグラフ描画自作クラス

本ブログで紹介する自作ツール一覧

本ブログで公開を予定している自作ツールの一覧です。優先順位と難易度を考慮して、随時作成していきます。

スクロールできます
ツール概要ユースケース優先順位
プログラム・ランチャーメニュー一覧から任意のプログラムを起動自作ツールを簡単に呼び出して使えるようにしたい場合1
スクレイピングツールウェブから自動的にデータを収集定期的にウェブデータを収集・更新したい場合1
データ可視化ツールデータをグラフで可視化データ分析結果を視覚的に示したい場合1
CSV結合ツール複数のCSVファイルを1つのCSVファイルに結合データ統合・分析のために複数のCSVをまとめたい場合2
CSV分割ツール大きなCSVファイルを複数の小さいCSVファイルに分割大容量データを扱いやすくするために分割したい場合5
フォルダZip圧縮ツールフォルダを丸ごとZip圧縮(AES暗号化対応)フォルダを丸ごとZip圧縮したい場合5
Parquet⇔CSV相互変換ツールParquetとCSVのフォルダ一括相互変換フォルダ内ファイルをParquetとCSVの間で相互変換したい場合
複数のCSVを1つのブックにまとめる複数のCSVファイルを1つのExcelブックにまとめる複数のCSVデータを一つのExcelブックで管理したい場合2
複数のCSVを1つのシートにまとめる複数のCSVファイルを1つのExcelシートに統合データ統合・分析のためにCSVを1つのシートで管理したい場合2
Excelの各シートをCSVに変換Excelファイルの各シートを個別のCSVファイルに変換大量のExcelデータを個別に処理したい場合5
YouTubeダウンロードツールYouTube動画をダウンロードオフラインでYouTube動画を視聴したい場合2
画像背景切り抜きツール画像から背景を自動的に切り抜く商品画像やプロフィール写真の背景を削除したい場合2
CSV仕分けツールCSVデータを特定の条件で分類して別ファイルに仕分け条件に基づいてデータを整理・仕分けしたい場合3
画像色合い調整ツール画像の色合いを自動的に調整画像の見栄えを改善するために色合いを調整したい場合3
メール自動送信ツール指定の条件でメールを自動送信定期連絡や通知を自動化したい場合4
PDF結合ツール複数のPDFを結合するPDFを分割し、回転したり不要なページを削除したい場合4
PDF分割ツール1つのPDFをページ単位に分割する複数のPDFを1つのPDFに結合したい場合4
フォルダコピーツールフォルダとその中身をコピーデータバックアップやフォルダ構造を複製したい場合6
ファイル名の一括変更ツール複数のファイル名を一括で変更大量のファイル名を効率的に変更したい場合6
動画⇔画像変換ツール動画→画像+音声を抽出、画像+音声⇒動画を作成動画を画像+音声に分解、画像処理後に動画に戻したい場合6
動画音声入れ替えツール動画の音声を、別の音声で入れ替えする質の良い動画と音声を組み合わせたり、BGMを置き換えたい場合6
動画切り出し・結合ツール動画の指定範囲の切り出し、複数動画の結合を行う動画の一部を切り出し、1つの動画にまとめたい場合6
動画の超解像化ツール解像度が低い動画をAIによって高解像度化する古いビデオカメラの動画の画質を向上させたい場合6
コード変換ツール文字コード、改行コードの変換文字コードや改行コードを指定したものに変換したい場合7
OCRツール画像やPDFからテキストを抽出紙資料やスキャンデータをテキスト化したい場合7

まとめ

本ブログの目的は、Pythonを使った実用ツールを自作できるようにサポートすることです。
ただし、基本的なWindowsの操作ができて、コマンドプロンプトの概要とPythonの基本文法について、ある程度の知識がある方を対象にしています。

本記事ではそのための最初の一歩として、次の内容を取り上げました。

  • 自作ツール開発・実行環境の作り方
  • 自作ツールの作り方
  • 修正しやすい自作ツール作成ポイント
  • 本ブログで紹介する自作ツール一覧

自作ツールは作成次第、自作ツール一覧に記事のリンクを張っていきます。
また、各記事で紹介する自作ツールは、読者のプログラミングの勉強材料となること、読者自身の用途に合わせたカスタマイズがしやすいことを心がけ、プログラムの読みやすさに重点を置きながら、ある程度使えるレベルのものをソースコードと簡単な解説付きで公開し行く予定です。

もし本ブログが参考になると思われたなら、ブックマークに登録していただければ幸いです。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

目次