Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
103 changes: 103 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
# Tsuthin(ツーチン)

EC サイトの商品価格を自動追跡し、価格下落時に通知を行う Android アプリケーションです。

## 概要

Tsuthin は、ユーザーが気になる商品の URL を登録すると、バックグラウンドで定期的に価格をチェックし、値下がりを検知して通知する価格監視アプリです。

## 主な機能

### 📝 商品登録
- 商品 URL を入力して監視リストに追加
- 自動的に商品名と現在価格を取得
- URL の重複チェック機能

### 📊 商品一覧表示
- 登録済み商品のリスト表示
- 商品名、登録時価格、現在価格、URL を表示
- 不要な商品の削除機能

### 🔔 自動価格監視
- バックグラウンドサービスによる定期的な価格チェック
- ウェブスクレイピングで最新価格を取得
- 価格変動の自動検出

### 📢 通知機能
- 登録時の価格より下がった場合に通知
- 価格下落アラート

## 技術仕様

### 開発環境
- **言語**: Kotlin 1.2.30
- **プラットフォーム**: Android
- **最小 SDK**: 26 (Android 8.0)
- **ターゲット SDK**: 28 (Android 9.0)
- **ビルドツール**: Gradle 3.1.3

### 主要ライブラリ
- **Jsoup 1.11.3** - HTML 解析とウェブスクレイピング
- **OkHttp3 3.10.0** - HTTP 通信
- **GSON 2.8.5** - JSON シリアライゼーション/デシリアライゼーション
- **Android Support Library 28.0.0**

## アーキテクチャ

### アクティビティ
- `MainActivity.kt` - 商品 URL の登録画面
- `RecordActivity.kt` - 登録済み商品の一覧表示画面

### データモデル
- `GoodsData.kt` - 商品情報を保持するデータクラス
- `UtilData.kt` - アプリケーション全体のデータ管理

### サービス
- `GoodsService.kt` - バックグラウンドで動作する価格監視サービス

### 非同期処理
- `ActivityAsyncTask.kt` - URL 検証と商品情報取得
- `ServiceAsyncTask.kt` - 価格更新と通知判定

### UI コンポーネント
- `MyArrayAdapter.kt` - リスト表示用カスタムアダプター
- `ViewHolder.kt` - リスト表示の最適化

## データ永続化

SharedPreferences を使用してローカルにデータを保存します。GSON を使って商品情報をJSONにシリアライズし、アプリ終了後もデータが保持されます。

## パーミッション

- `INTERNET` - ウェブスクレイピングによる商品情報取得に必要

## ビルド方法

```bash
# プロジェクトのクローン
git clone https://github.com/your-username/Tsuthin.git

# プロジェクトディレクトリに移動
cd Tsuthin

# ビルド
./gradlew build

# デバイスにインストール
./gradlew installDebug
```

## 開発履歴

- **2019/01/03** - ツーチン完成(コメント等の追加必要)
- **2018/12/27** - 商品情報取得機能、通知機能の非同期サービス実装完了
- **2018/12/24** - コメントの付加、ローカルに取得情報の保管機能完了
- **2018/12/24** - ListView に商品情報を表示する機能を実装

## ライセンス

このプロジェクトのライセンスについては、リポジトリの所有者にお問い合わせください。

## 注意事項

このアプリはウェブスクレイピングを使用しています。対象サイトの利用規約を確認し、適切に使用してください。