Pythonでアプリ作成!新人エンジニア向けデスクトップライブラリ徹底比較(コード付き)
こんにちは。ゆうせいです。
新人エンジニアの皆さん、Pythonの学習は順調ですか?
Pythonというと、Webサーバーの開発(DjangoやFastAPI)や、AI・データ分析(PandasやTensorFlow)といった、いわゆる「裏側」の処理をイメージすることが多いかもしれません。
「でも、自分が作ったプログラムを、他の人にも簡単に使ってもらえるような、クリックできるアプリ(アプリケーション)って作れないのかな?」
そんな風に思ったことはありませんか?
作れます! Pythonには、WindowsやMacで動く、おなじみの「窓(ウィンドウ)」を持つデスクトップアプリケーションを作るためのライブラリ(道具箱)がたくさんあるんです。
今日は、Pythonでデスクトップアプリを作るための、代表的なライブラリたちを、簡単なサンプルコードと共に比較しながら解説していきますね。
そもそも「GUIライブラリ」って何?
本題に入る前に、一つだけ専門用語を覚えておきましょう。
それが「GUI(ジーユーアイ)」です。
GUIとは、Graphical User Interface(グラフィカル・ユーザー・インターフェース)の略です。
難しく聞こえますが、要するに「グラフィック(絵)で操作できる窓口」のこと。今あなたが見ているブラウザや、普段使っているメモ帳ソフトなど、マウスでクリックしたり、ボタンを押したりできる画面全体を指します。
皆さんがターミナル(黒い画面)でコマンドを打つのは「CUI(キャラクター・ユーザー・インターフェース)」です。
デスクトップアプリを作るということは、この「GUI」を作ることに他なりません。そして、そのGUIを簡単に作れるように部品(ボタン、テキストボックス、ウィンドウなど)を提供してくれるのが「GUIライブラリ」です。
比較!どのライブラリを選べばいい?
PythonのGUIライブラリは、実はたくさんの種類があります。
それぞれに「得意なこと」と「苦手なこと」があるので、あなたが「何を作りたいか」によって選ぶべきものが変わってきます。
代表的なライブラリを見ていきましょう!
1. Tkinter (ティキンター)
まずは王様、Tkinterです。
これは、Pythonをインストールした時に「最初から入っている」標準ライブラリです。
- 例えるなら?
- 「標準装備の工具箱」
- メリット
- 追加のインストールが不要! Pythonさえあれば、今すぐ使い始められます。
- 覚えることが比較的少なく、シンプルです。
- Pythonの「標準」なので、情報や入門書がたくさん見つかります。
- デメリット
- 見た目が少し古風です。最近の洗練されたアプリと比べると、デザインがシンプルすぎると感じるかもしれません。
💡 Tkinterの簡単なコード例
import tkinter as tk
def on_button_click():
# ボタンが押されたらコンソール(ターミナル)に表示
print("ボタンが押されました!")
# メインウィンドウを作成
root = tk.Tk()
root.title("Tkinterサンプル")
root.geometry("250x100") # ウィンドウサイズ
# ラベル(文字)を作成
label = tk.Label(root, text="こんにちは、Tkinter!")
label.pack(pady=10) # ウィンドウに配置
# ボタンを作成
button = tk.Button(root, text="押してね", command=on_button_click)
button.pack(pady=5) # ウィンドウに配置
# ウィンドウを表示し続ける
root.mainloop()
2. PyQt (パイキュート) / PySide (パイサイド)
非常に高機能で、プロの世界でも広く使われているライブラリです。
Qt(キュート)という、C++言語で作られた強力なGUIフレームワークをPythonから使えるようにしたものです。
PyQtとPySideは中身はほぼ同じですが、ライセンス(利用規約)が少し違います。最初は、より柔軟なライセンスを持つPySideから入るのが良いかもしれません。
- 例えるなら?
- 「プロ仕様の、なんでも作れる建築ツールセット」
- メリット
- OS標準の美しい見た目(ネイティブな外観)のアプリが作れます。
- ボタンや表だけでなく、複雑なグラフ描画や、細かな設定画面まで、作れないものはないと言われるほど高機能です。
- デメリット
- 非常に高機能な反面、覚えることが多く、学習コスト(習得にかかる時間)は高いです。
- ライセンスに注意が必要です(特にPyQtで商用アプリを作る場合)。
💡 PySide6の簡単なコード例
(まず pip install PySide6 でインストールが必要です)
# pip install PySide6 が必要です
import sys
from PySide6.QtWidgets import QApplication, QWidget, QVBoxLayout, QLabel, QPushButton
def on_button_click():
print("ボタンが押されました!")
# アプリケーション本体
app = QApplication(sys.argv)
# メインウィンドウ
window = QWidget()
window.setWindowTitle("PySide6サンプル")
# 部品を縦に並べるレイアウト
layout = QVBoxLayout()
# ラベル
label = QLabel("こんにちは、PySide6!")
layout.addWidget(label) # レイアウトに追加
# ボタン
button = QPushButton("押してね")
button.clicked.connect(on_button_click) # クリック時の動作を設定
layout.addWidget(button) # レイアウトに追加
window.setLayout(layout) # ウィンドウにレイアウトを設定
window.show() # ウィンドウを表示
# アプリケーションを実行
sys.exit(app.exec())
3. Kivy (キビー)
少し変わり種ですが、非常に面白いライブラリです。
Kivyの最大の特徴は、PC(Windows, Mac, Linux)だけでなく、スマートフォン(iOS, Android)のアプリも、同じコードベースで作れてしまうことです。
- 例えるなら?
- 「マルチデバイス対応のデザイナーズ家具」
- メリット
- 「ワンソース・マルチユース」が可能です。PCアプリもスマホアプリも作りたい人には最適です。
- タッチ操作(スワイプやピンチ)を前提とした設計になっています。
- デメリット
- Kivy独自の見た目になります。OS標準のボタンとは少し違うデザインなので、好みが分かれるかもしれません。
💡 Kivyの簡単なコード例
(まず pip install kivy でインストールが必要です)
# pip install kivy が必要です
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.label import Label
from kivy.uix.button import Button
class KivyApp(App):
def build(self):
# 部品を縦に並べるレイアウト
layout = BoxLayout(orientation='vertical', padding=30, spacing=10)
label = Label(text="こんにちは、Kivy!")
layout.add_widget(label)
button = Button(text="押してね")
button.bind(on_press=self.on_button_click) # ボタンが押された時の動作
layout.add_widget(button)
return layout
def on_button_click(self, instance):
print("ボタンが押されました!")
if __name__ == '__main__':
KivyApp().run()
4. CustomTkinter (カスタムティキンター)
「Tkinterの簡単さは魅力だけど、見た目がどうしても…」という悩みを解決するために登場したのが、CustomTkinterです。
- 例えるなら?
- 「標準工具箱(Tkinter)をおしゃれに改造したツール」
- メリット
- Tkinterとほぼ同じ書き方で、非常にモダンで美しいデザインのアプリが作れます。
- ダークモードとライトモードの切り替えなども簡単に実装できます。
- デメリット
- 比較的新しいライブラリなので、PyQtやTkinter本体と比べると、日本語の情報がまだ少ないかもしれません。
💡 CustomTkinterの簡単なコード例
(まず pip install customtkinter でインストールが必要です)
# pip install customtkinter が必要です
import customtkinter as ctk
def on_button_click():
print("ボタンが押されました!")
# 外観モードを設定 (System: OS設定に合わせる, Dark, Light)
ctk.set_appearance_mode("System")
ctk.set_default_color_theme("blue")
# メインウィンドウ
root = ctk.CTk()
root.title("CustomTkinterサンプル")
root.geometry("250x150")
# ラベル
label = ctk.CTkLabel(root, text="こんにちは、CustomTkinter!")
label.pack(pady=20)
# ボタン
button = ctk.CTkButton(root, text="押してね", command=on_button_click)
button.pack(pady=10)
root.mainloop()
結局、新人はどれから始めるべき?
「たくさんあって迷っちゃう!」という方のために、目的別のおすすめをまとめますね。
| ライブラリ名 | 特徴 (ひと言) | こんな人におすすめ! |
| Tkinter | 標準装備・クラシック | 「まずPythonで何か窓を出したい」「手軽に試したい」 |
| PyQt / PySide | 高機能・プロ仕様 | 「将来的に本格的な業務ツールを綺麗に作りたい」 |
| Kivy | スマホもOK | 「PCもスマホも両方作りたい」「タッチ操作がメイン」 |
| CustomTkinter | 簡単・モダンデザイン | 「Tkinterはダサいけど、簡単なのがいい」 |
今後の学習の指針
いかがでしたか? Pythonが活躍する場所は、皆さんが思っている以上に広いんです。
私の個人的なおすすめは、まず「Tkinter」を触ってみることです。
なぜなら、追加インストールが不要で、すぐに始められるからです。
「ボタンを一つ置いて、それをクリックしたらターミナルに『押された!』と表示する」
今日紹介した簡単なプログラムからで構いません。
自分が書いたロジック(処理)が、目に見える「形」になり、マウスで操作できるようになった時の感動は、プログラミング学習の大きなモチベーションになりますよ。
そこでGUIの基本(ウィンドウ、ボタン、ラベル、配置方法など)を学んでから、「もっと綺麗にしたい!」と思ったらCustomTkinterやPySideに挑戦するのが、一番スムーズなステップアップだと思います。
まずは恐れずに、あなたのPythonプログラムに「顔」を与えてみましょう!