こんな方へ特におすすめ
- ストップウォッチ作成の記事を読んだ方
- 自作アプリを初期起動と共に実行させたい方
- 簡単にPythonのアプリを開発したい方
概要
こんにちは。サイオステクノロジーのはらちゃんです!今回9本目のブログ執筆です。
前回はストップウォッチアプリを開発しました。しかし、コードのままだと逐一コマンドで起動する必要があり面倒です。
そこで今回は、もっと便利に活用するために自動で起動させる方法を簡単3ステップでお伝えします。
EXE化ってなに?
はじめに、”EXE(エグゼ)化”という変換の概要をご説明します。
EXE化とは、「プログラミング言語(Pythonなど)の翻訳機と、プログラムの指示書をひとまとめにして、誰でもワンクリックで動かせる状態にすること」です。
EXE化の仕組み
stopwatch.py はただの「設計図」のようなもので、動かすにはPythonという「工具」と、Tkinterという「部品」が必要です。そのため、EXE化する前のプログラム単体ではアプリを起動させることができません。

PyInstallerは、「設計図(スクリプト)」「工具(Python本体)」「部品(ライブラリ)」の全てを一つにまとめて、StopWatch.exe という「完成品(実行ファイル)」を製造します。
そのため、EXE化の工程を経てようやくアプリがどこでも起動できる準備が整います。

この仕組みはよく料理に例えられます。
「レシピ(指示書)」を動かすには、受け取る相手のPCに「キッチン(Python環境)」と「調理器具(ライブラリ)」が完備されている必要があります。
相手側で用意する手間を省くために、このレシピをプロのシェフごと箱詰めにして「お弁当」にするのです。
EXE化のメリット・デメリット
| 項目 | EXE化のメリット | EXE化のデメリット |
|---|---|---|
| 起動 | ダブルクリック一発 | 展開処理の時間がかかる |
| 配布 | 相手にファイルを渡す | ファイルサイズが大きくなる |
| コード | ダブ中身が見えにくくなる | コードの修正ができない |
前提条件
- Windows 上で作業すること
- Python 3.8+ がインストールされていること
- pyinstallerをインストール可能であること
Step1:EXE化
さっそく箱詰めしていきましょう。
.bat ファイルの作成
この.batファイルは、PythonスクリプトをEXEファイルに変換する「PyInstaller」というツールを実行するためのものです。
これを実行すると、stopwatch.py から StopWatch.exe を作成します。
@echo off
REM PythonのEXE化ツール「PyInstaller」をインストールします
pip install pyinstaller
echo.
echo --- Building StopWatch.exe ---
echo.
REM PyInstallerを実行します
REM --onefile: 関連ファイルをすべて1つのEXEにまとめます
REM --noconsole: GUIアプリ実行時に後ろで黒いコンソール画面が出ないようにします
pyinstaller --onefile --noconsole --name StopWatch stopwatch.py
echo.
echo --- Build finished! ---
echo `dist` フォルダ内に `StopWatch.exe` が作成されました。
echo.
pause
Step2:スタートアップへの登録
.ps1 ファイルの作成
この.ps1ファイルは、EXEファイルをWindowsの「スタートアップ」フォルダに登録し、PC起動時に自動実行するためのスクリプトです。
param(
[string]$TargetPath = "C:\Users\YourName\Documents\TIMER\dist\StopWatch.exe",
[string]$ShortcutName = "StopWatch.lnk"
)
# (以下は変更不要)
$startup = [Environment]::GetFolderPath('Startup')
$w = New-Object -ComObject WScript.Shell
$sc = $w.CreateShortcut((Join-Path $startup $ShortcutName))
$sc.TargetPath = $TargetPath
$sc.WorkingDirectory = Split-Path $TargetPath
$sc.Save()
Write-Host "Shortcut created in: $startup"
Step3:実行
いよいよアプリの起動です。以下のコードを順に実行してください。
必ず、Windows上で作業するように注意してください。WSL(Linux)上でPyInstallerを実行しようとしてもエラーになります。
# "cd" の後に、stopwatch.pyがあるフォルダのパスを入力します
cd C:\Users\YourName\TIMERもしコードがWSL上にあるなら、Windows上にダウンロードされるようにツールのインストールも行ってください。
pip install pyinstallerpyinstaller --onefile --noconsole --name StopWatch stopwatch.pyこれでEXEファイルが作成できました!
最後に、.ps1 ファイルの2行目にある、$TargetPathをビルド結果のパスに書き換えてます。
param(
# ↓↓↓ この行のパスを書き換える ↓↓↓
[string]$TargetPath = "C:\Users\YourName\Documents\TIMER\dist\StopWatch.exe",
[string]$ShortcutName = "StopWatch.lnk"
)
# (以下は変更不要)修正したスクリプトを実行します。
.\create_shortcut.ps1これで、Windowsのスタートアップフォルダにショートカットが作成されました。
PCを再起動してみてください。 ログイン後、自動的にストップウォッチ (StopWatch.exe) が起動し、デスクトップの常に一番手前に表示されれば、すべての作業は完了です。
エラー解決
PowerShellのセキュリティエラーです。Windowsが、信頼できる作成元(Microsoftなど)によって署名されていないスクリプトの実行をデフォルトでブロックしているために発生しています。
以下のコマンドを実行して、今開いているこのPowerShellの画面(プロセス)だけ、一時的にスクリプトの実行を許可します。
Set-ExecutionPolicy Bypass -Scope Process上記コマンドを実行した後、もう一度スクリプトを実行します。
.\create_shortcut.ps1振り返り:前回の開発環境
前回のストップウォッチ開発では、dev-containerを開発環境として用意していました。
dev-containerは、ホストOSから隔離されたネットワーク環境を持っています。
そのため、どこでも同じように動くクリーンな環境が出来上がります。
しかし、この「隔離」が原因で、コンテナーのGUIをPC本体の画面に映し出すために、Xサーバーの設定が必要となりました。
このように、dev-containerを使わないほうが開発が楽な場合もあると学びになりました…。
まとめ
今回は自作アプリをEXE化することと、それを使ってWindows上でアプリを自動起動させることを学んできました。
本ブログで書かれている開発コードは、私のGithubに公開しているので自由にコードを書き替えて使ってみてくださいね。
