📱 QRコード生成アプリ開発レポート

📱 QRコード生成アプリ開発レポート

本レポートでは、PythonとStreamlitを用いて開発された「QRコード生成Webアプリケーション」の技術構成、開発プロセス、および機能について解説します。

1. プロジェクト概要

ユーザーが入力したテキストからQRコードを即座に生成し、カスタマイズ(色、サイズ、余白)してダウンロードできるWebアプリケーションです。直感的なUIと高速な動作を重視して設計されています。

公開URL: https://toma4423-code-of-q-web-app-kygncj.streamlit.app/

2. 採用技術スタック

本プロジェクトでは、以下の技術を採用しています。

Python 3.12+
Streamlit
uv
Ruff

コア技術

  • Python: バックエンドロジックの記述に使用。
  • Streamlit: フロントエンドおよびアプリケーションサーバーとして使用。Pythonのみで迅速にインタラクティブなWebアプリを構築できるため採用。
  • Pillow (PIL): 画像処理ライブラリ。生成されたQRコードの画像操作やフォーマット変換に使用。
  • qrcode: QRコード生成の標準的なライブラリ。バージョン管理や誤り訂正レベルの制御が可能。

開発・運用ツール(モダン化)

従来のpip + requirements.txt構成から、より高速で堅牢なツールチェーンへ移行しました。

  • uv: Rust製の超高速Pythonパッケージマネージャー。依存関係の解決と仮想環境の構築を高速化し、pyproject.tomlベースの管理を実現。
  • Ruff: Rust製の高速Linter兼Formatter。コードの品質維持とスタイル統一を自動化。

3. 主な機能と実装詳細

🎨 高度なカスタマイズ

サイドバーのコントロールを使用して、リアルタイムにQRコードを調整できます。

  • サイズ・余白調整: スライダーUIによる直感的な操作。
  • カラーピッカー: 前景色(QRコード部分)と背景色を自由に設定可能。

💾 マルチフォーマット出力

用途に合わせて以下の形式でダウンロード可能です。

  • PNG/JPEG: 一般的な画像利用向け。
  • SVG: 拡大縮小しても劣化しないベクター形式。Webや印刷物向け。

4. 開発ワークフローの改善

開発効率とコード品質を向上させるため、以下のワークフローを確立しました。

セットアップの自動化

setup.sh / setup.bat を更新し、uv sync コマンド一発で環境構築が完了するようにしました。

# 依存関係の同期と環境構築
uv sync

品質保証(QA)

run_tests.sh により、テストとLintを統合的に実行可能です。

  • 静的解析: uv run ruff check --fix . でコードの問題を自動修正。
  • 単体テスト: unittest フレームワークを使用し、QRコード生成ロジックの整合性を検証。特にqrcodeライブラリのバージョンアップ(v7.x -> v8.x)に伴う仕様変更(画像オブジェクトの構造変化など)に対応しました。

5. まとめ

本プロジェクトは、Streamlitによる迅速なUI構築と、uv/RuffというモダンなPythonツールチェーンを組み合わせることで、開発速度と保守性の両立を実現しました。ユーザーにとって使いやすく、開発者にとってメンテナンスしやすいアプリケーションとなっています。

Comments

No comments yet. Why don’t you start the discussion?

    コメントを残す

    メールアドレスが公開されることはありません。 が付いている欄は必須項目です