自社EC事業効率化のための自動化アプリケーション。
node.jsを使ってAmazonSP-APIを中心とする物販関連のAPIにアクセスし、情報の取得を行いスプレッドシートに出力する。
パート・アルバイトの方でも簡単に使えるようにGoogleSpreadシート上にボタンを作成し、各機能のURLにリクエストを送ると各機能が起動する。
https://ecsuite.work/
*バージョン表示のテキストが表示されるだけでviewは実際には使わない
- Amazon関連
- ASINから商品カタログ情報を抽出
- 日次の売上レポート更新
- 在庫・納品関連レポートの取得
- 週次で商品販売価格、在庫有無の取得
- Amazon SKU ->FNSKU変換
- Keepa関連
- セラーIDからセラーの販売商品一覧を取得
- Shopee関連
- 価格更新データの作成
| Category | Technology Stack |
|---|---|
| Backend | express.js(4.18.2) |
| Infrastructure | さくらのVPS(Ubuntu 20.04), Nginx, Let's Encrypt |
| CI/CD | GitHub Actions |
| Database | MariaDB |
| Environment setup | Docker |
| API | Amazon SP-API, Keepa, Shopee, DeepL |
| etc. | Git, GitHub |
本プロジェクトでは、コードの可読性と管理のしやすさを重視して、各機能ごとにフォルダを分けています。主要なフォルダは src/api と src/lib です。それぞれのフォルダの詳細な構成について説明します。
このフォルダには、外部APIへのリクエストやその結果をGoogleスプレッドシートに書き出すためのJavaScriptファイルが格納されています。各ファイルは明確な役割を持ち、名前付け規則に基づいて整理されています。
get~ファイル: 外部APIからデータを取得するためのリクエストを行います。write~ファイル: 取得したデータを加工し、Googleスプレッドシートに書き込むための処理を行います。
例:
getSearchCatalogItems.jswriteSearchCatalogItems.js
このフォルダには、プロジェクト全体で再利用可能なユーティリティ関数や独自ライブラリが格納されています。これにより、共通処理を一箇所にまとめておき、コードの重複を避けることができます。
GitHub Actionsを使用し、リモートリポジトリのmainブランチが更新されたときに、自動でVPS上のアプリにデプロイし、再度Dockerコンテナを立ち上げるように設定しました。
- プログラミングを始めてすぐにまず動くツールを作りたいという動機でどんどん自分がほしいツールを作っていったため、コードの重複やムダが発生しています。どこかのタイミングでリファクタリングを行い、コードの重複を削減し、効率的な構造にしたいと考えています。