mgx(詳細非公表)

2020年4月 - 現在

趣味
Screenshot 1
Screenshot 2
プロジェクト概要

複数のWebサイトからファイルを自動ダウンロードするツールを開発しています。クリーンアーキテクチャを採用し、domain、infrastructure、interface、use_casesの層に分離した設計を実現しています。ストラテジーパターンを使用して、サイトごとの情報取得戦略とダウンロード戦略を抽象化し、拡張性の高いアーキテクチャを構築しています。FastAPIを使用してAPIサーバーを実装し、バックグラウンドタスクで非同期にダウンロードを実行します。SQLiteを使用してダウンロード情報を管理し、injectorを使用して依存性注入を実現しています。SeleniumやPlaywrightを使用してブラウザ自動化を行い、yt-dlpを使用して動画ダウンロードを実現しています。

アーキテクチャ

クリーンアーキテクチャを採用し、domain(エンティティ)、infrastructure(外部ライブラリとの連携)、interface(CLI/API)、use_cases(ビジネスロジック)の層に分離しています。ストラテジーパターンを使用して、サイトごとの情報取得戦略(website_strategy)とダウンロード戦略(download_strategy)を抽象化し、新しいサイトの追加が容易になる設計にしています。FastAPIを使用してRESTful APIを実装し、バックグラウンドタスクで非同期にダウンロードを実行します。SQLiteを使用してダウンロード情報を永続化し、injectorを使用して依存性注入を実現しています。

技術的挑戦
  • クリーンアーキテクチャの設計と実装 → domain、infrastructure、interface、use_casesの層を適切に分離し、依存関係の方向を制御
  • ストラテジーパターンによる拡張性の実現 → サイトごとの情報取得戦略とダウンロード戦略を抽象化し、新しいサイトの追加を容易に
  • 複数のダウンロード方法の統合 → Selenium、Playwright、yt-dlpなど、異なるダウンロード方法を統一的なインターフェースで扱う設計
  • FastAPIによる非同期処理の実装 → バックグラウンドタスクを使用して、APIリクエストとダウンロード処理を非同期に実行