#Python

157 件の記事

PySide6 実践講座 #8 配布の仕上げ — アイコン・バージョン情報、署名、GitHub Actions
読了 5分

PySide6 実践講座 #8 配布の仕上げ — アイコン・バージョン情報、署名、GitHub Actions

シリーズ最終回として、アプリを人に渡せる状態に仕上げます。PyInstaller の spec ファイルでアイコン・名前・リソースを管理する方法、バージョンを一か所で定義してアプリとビルドに供給する方法、署名のないアプリがダウンロード直後にブロックされる理由と macOS 公証・Windows 署名の地形、GitHub Actions のマトリックスで 3 つの OS のビルドを自動化するワークフロー、そしてシリーズ全体の振り返りまで扱います。

PySide6 実践講座 #7 テスト — pytest-qt と層別テスト戦略
読了 5分

PySide6 実践講座 #7 テスト — pytest-qt と層別テスト戦略

GUI アプリはテストしにくいという通念を、層構造で解体します。Qt なしで動く core のテストが最も多くあるべき理由、一時 DB ファイルでリポジトリを検証する方法、qtbot が QApplication とイベントループを代わりに管理してくれる pytest-qt の動作、モデルの契約(rowCount・data・setData)を検証するテスト、シグナル待機(waitSignal)とウィジェット操作のテスト、そして CI で画面なしに Qt のテストを回す方法まで扱います。

PySide6 実践講座 #6 設定画面 — QSettings、ダークテーマ、データバックアップ
読了 4分

PySide6 実践講座 #6 設定画面 — QSettings、ダークテーマ、データバックアップ

ハードコードされていた値をユーザーに渡します。プラットフォームごとの標準の場所に設定を保存してくれる QSettings の使い方と型の罠、設定画面と実際の動作(リマインダー時刻、閉じるボタンの動作)の接続、スタイルシートの差し替えで実装するダーク・ライトテーマとシステムテーマの検知、そしてユーザーデータを尊重する最後のピースである CSV エクスポートと DB バックアップまで扱います。

PySide6 実践講座 #5 トレイ常駐とリマインダー — 閉じても死なないアプリ
読了 5分

PySide6 実践講座 #5 トレイ常駐とリマインダー — 閉じても死なないアプリ

習慣トラッカーを本物の道具にする条件、常駐を実装します。QSystemTrayIcon でシステムトレイにアイコンとメニューを出す方法、ウィンドウを閉じる操作を終了ではなく非表示に変える closeEvent の処理とその UX 論争、QTimer で毎日決まった時刻にリマインダー通知を送る方法、トレイ通知の限界と OS ごとの違い、そしてアプリが 2 つ立ち上がってしまうのを防ぐ単一インスタンス処理まで扱います。

PySide6 実践講座 #4 統計画面 — QPainter で草むらヒートマップを描く
読了 4分

PySide6 実践講座 #4 統計画面 — QPainter で草むらヒートマップを描く

既製ウィジェットのない画面を自分で描きます。達成率計算や連続記録といった統計ロジックを Qt のない core 層に置いてテスト可能にする方法、paintEvent と QPainter で GitHub の草スタイルのヒートマップウィジェットを描く方法、座標計算とサイズ対応(sizeHint)、マウス位置のセルを特定してツールチップを出すヒットテスト、そして再描画は update() の呼び出しで依頼するというカスタムウィジェットのルールまで扱います。

PySide6 実践講座 #3 今日画面 — カスタムモデルとチェックのトグル
読了 5分

PySide6 実践講座 #3 今日画面 — カスタムモデルとチェックのトグル

アプリ最初の本物の画面を作ります。リストウィジェットに直接アイテムを入れる方式が実戦ですぐ限界に達する理由、QAbstractListModel を継承してリポジトリをビューにつなぐカスタムモデル、ロール(role)でデータの複数の顔を公開する方法、チェック状態のトグルがモデルを経て DB まで流れる経路、dataChanged シグナルでビューを正確に更新する方法、習慣追加ダイアログまで扱います。

PySide6 実践講座 #2 SQLite データ層 — リポジトリパターンとマイグレーション
読了 5分

PySide6 実践講座 #2 SQLite データ層 — リポジトリパターンとマイグレーション

アプリの記憶を担うデータ層を作ります。デスクトップアプリで SQLite がデフォルトである理由、OS ごとに違うアプリデータフォルダを正しく見つける方法、習慣とチェック記録のスキーマ設計、SQL を一か所に閉じ込めるリポジトリパターン、そしてアプリの更新後もユーザーデータが壊れないようにする user_version ベースの超シンプルなマイグレーションまで扱います。

PySide6 実践講座 #1 プロジェクト設計 — 習慣トラッカーを作りながら学ぶアプリ構造
読了 5分

PySide6 実践講座 #1 プロジェクト設計 — 習慣トラッカーを作りながら学ぶアプリ構造

PySide6 入門を終えた人が、実際のアプリひとつを完成まで持っていく実践シリーズの第 1 回です。何を作るのか(ローカルの習慣トラッカー)となぜこの題材なのか、機能要件を画面単位に分解する方法、UI・コア・データの 3 層にコードを分ける構造とその理由、uv ベースのプロジェクトセットアップ、そしてこの先 8 回を支えるメインウィンドウの骨組みまで作ります。

NumPy 入門 — 配列が Python のリストより速い理由と基本の使い方
読了 6分

NumPy 入門 — 配列が Python のリストより速い理由と基本の使い方

データ処理の基盤ライブラリ NumPy を原理から整理します。Python のリストが遅くならざるをえないメモリ構造と ndarray がそれを解決する仕組み、ループをなくすベクトル化演算、形の違う配列同士が計算できるブロードキャストのルール、スライスがコピーではなくビューであるがゆえの罠、axis の概念で読む集計、そして NumPy を使わないほうがよいケースまで扱います。

PyO3 で Python 拡張モジュールを作る — maturin のビルドから wheel 配布まで
読了 5分

PyO3 で Python 拡張モジュールを作る — maturin のビルドから wheel 配布まで

Polars、Ruff、pydantic が証明した経路「Python のボトルネック関数だけ Rust に」を実際に歩きます。maturin new で始めるプロジェクト構造、#[pyfunction] と #[pymodule] で Rust 関数を Python に公開する方法、maturin develop の開発サイクル、型変換(str・list・dict)の規則、free-threaded Python 時代との相性、そして wheel のビルドと PyPI への配布まで扱います。

Python 3.14 の新機能整理 — t-string、遅延アノテーション、フリースレッディング公式サポート
読了 6分

Python 3.14 の新機能整理 — t-string、遅延アノテーション、フリースレッディング公式サポート

2025 年 10 月にリリースされた Python 3.14 の実務目線での変化を整理します。f-string に似ているがテンプレートオブジェクトを作る t-string、デフォルト動作になったアノテーションの遅延評価、実験扱いを卒業したフリースレッディング(GIL 除去)ビルドの意味、標準ライブラリに入ったマルチインタープリターと Zstandard 圧縮、括弧なしの except 構文、リモートデバッグインターフェースまで、アップグレード前に知っておくべきことを扱います。

Python Web アプリの本番デプロイ — gunicorn、uvicorn、systemd、Docker
読了 6分

Python Web アプリの本番デプロイ — gunicorn、uvicorn、systemd、Docker

開発サーバーをそのまま本番に使ってはいけない理由から、本番デプロイの標準構成を整理します。WSGI と ASGI の区別、gunicorn と uvicorn ワーカーの組み合わせ、ワーカー数を決める基準、systemd サービスでプロセスを管理する方法、nginx リバースプロキシが担う仕事、Docker イメージでデプロイするときの基本形、ログとヘルスチェック、graceful shutdown までチェックリストとして扱います。