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の基本(ウィンドウ、ボタン、ラベル、配置方法など)を学んでから、「もっと綺麗にしたい!」と思ったらCustomTkinterPySideに挑戦するのが、一番スムーズなステップアップだと思います。

まずは恐れずに、あなたのPythonプログラムに「顔」を与えてみましょう!

セイ・コンサルティング・グループの新人エンジニア研修のメニューへのリンク

投稿者プロフィール

山崎講師
山崎講師代表取締役
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。