「Python中級者のための13のプロジェクトアイデア」ザッと読みメモ
Pythonの勉強が踊り場に差し掛かって停滞気分なので突破する作戦を考えた -- の続き。
codewars に毎日細かく取り組んで足腰を鍛えるのと並行して、少し長いスパンで、何かまとまった"動くもの"の開発もしたい。丁度、テーマ選びの参考になりそうな記事を見つけた。
以下、記事のザッと読みメモです。
- プロジェクト開発の重要性
- 実行環境を選択する
- 動作環境別プロジェクト例、Web編
- 動作環境別プロジェクト例、GUIアプリ編
- 動作環境別プロジェクト例、コマンドラインアプリ編
- Tips for Working on Projects
プロジェクト開発の重要性
- 自信がつく
- 製品として成り立つために必要な周辺技術 - データベースだとかサーバ、他の言語とか - を学べる
- 設計パターンとかオブジェクト指向プログラミングの概念とかより良いコードの書き方などなど、プログラミングの概念についてより深く理解できる。
- プランニングから保守に至るソフトウェア開発のライフサイクルを一通り経験できる
実行環境を選択する
開発にあたっては実行環境を選択する。3大実行環境についてそれぞれ特徴を挙げると次の通り。
1) Web
- ネットさえあれば誰でも使えるようなものを作るんなら Webアプリケーション
- バックエンドとフロントエンドの両方の知識が必要。
バックエンドはPythonだろうけど、フロントエンド側はHTML/CSS/JavaScriptの知識が必要だよ。 - Anvil を使うと、Pythonだけでバックエンド・フロントエンドの両方イケる。
- フレームワーク: django, flaskなどのWebフレームワーク
2) デスクトップアプリ (GUIのアプリ)
- 中級者なら自分専用のデスクトップアプリを作るところから。
- Webアプリと違ってフロントエンドの知識不要。Pythonで全部できる。
- フレームワーク:
- PySimpleGUI
- PyQt5 は強力だけど、中級者には敷居が高い。
- コンパイルして目的のOS用の実行ファイルを作る。
3) コマンドラインから動かすアプリ
- ターミナルからコマンドを叩いて実行するから、使う側にも多少スキルが求められる。
- WebやGUIアプリよりは見劣りするかもしれないけど、できることでは引けは取らないよ。
- ライブラリ:
- テキスト装飾系: colorama, colored:
- コマンドライン処理支援系: Docopt, Argparse, Click
動作環境別プロジェクト例、Web編
- コンテンツアグリゲーター
- 正規表現チェッカー
- 実装イメージ: FreeFormatter, RegexTester
- 技術要件: re, 正規表現の動作を説明するドキュメント(を書く)
- プラスα - regex置換機能の追加
- 短縮URLサービス
- Post-It Note
- 実装イメージ: Pinup, Note.ly
- 技術要件
- django(ユーザ認証), メモのカテゴライズ
- データ格納: MySQLdbモジュール(MySQL), psycopg2モジュール(PostgreSQL)
- プラスα - リマインダー機能
- クイズアプリ
動作環境別プロジェクト例、GUIアプリ編
- MP3プレーヤー
- 実装イメージ: MusicBee, Foobar2000
- 技術要件
- シンプルかつ美しいUI
- オーディオファイル関連ライブラリ:pygame pygame, pymedia, simpleaudio
- データ格納: sqlite3(SQLite)
- タイマー
- 実装イメージ: FreeAlarmClock, TimerForMac
- 技術要件
- アラームタイミングのチェック
- pygame(オーディオ制御), データベース
- ファイルマネージャー
- 実装イメージ: FreeCommander, Explorer++
- 技術要件: PySimpleGUI(I/F), sys, os, shutil
- 家計簿
- 実装イメージ: Buddi, GnuCash
- 技術要件: PySimpleGUI(I/F), pandas(データ分析), matplotlib(グラフ表示), sqlite3(SQLite)
- プラスα - リマインダー機能
動作環境別プロジェクト例、コマンドラインアプリ編
- アドレス帳
- 実装イメージ: Simple Contacts, Pobuca Connect
- 技術要件:
- プラスα: バックグランドで継続チェック実行、通知機能
サイト接続チェッカー
- 実装イメージ: pingコマンド, Site24x7
- 技術要件:
- TCP or ICMP, socketモジュール
- docopt, click, or argparse
- データ格納: ファイルか、sqlite3(SQLite)
ファイル名一括変換ツール
- ディレクトリマップジェネレータ
Tips for Working on Projects
- モチベーションが成功の鍵
- プロジェクトをサブタスクに分けよ
- サブタスク単位でリサーチ
- サブタスク単位でいっこずつ開発
- 行き詰まったら誰かに助けてもらう
- サブタスクをまとめる