Skip to content
Back to skills

Artifacts

ASecurity

ファイル本体をAPIで受け取り、オブジェクトストレージに保存する。保存先をキューへ登録し、ワーカーが保存先からファイルを読み込んで解析する。解析結果はDBへ保存する。

  • 50 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added November 7, 2026
designapi

Works with

  • api

Security analysis

A100/100

Pro scans all 21 files and shows the line behind each finding

Scanned November 7, 2026

npx -y skills add iwasa-kosui/tanteki --skill artifacts --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Artifacts?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Artifacts
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/iwasa-kosui-artifacts-849472bf/badge)](https://www.skillsdirectory.com/skills/iwasa-kosui-artifacts-849472bf)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
# ファイル取込 Design Doc

## 1. 概要

ファイル本体をAPIで受け取り、オブジェクトストレージに保存する。保存先をキューへ登録し、ワーカーが保存先からファイルを読み込んで解析する。解析結果はDBへ保存する。

ファイル本体をキューへ直接載せる方式は、キューのメッセージ上限が1MBであり、最大10MBのファイルを扱えないため採用しない。

## 2. 処理フロー

1. APIがクライアントからファイルを受信する。
2. APIがファイルをオブジェクトストレージへ保存する。
3. 保存に成功した場合、ファイルの保存先情報をキューへ登録する。
4. ワーカーがキューから保存先情報を取得する。
5. ワーカーがオブジェクトストレージからファイルを読み込む。
6. ワーカーがファイルを解析する。
7. ワーカーが解析結果をDBへ保存する。
8. 利用者は非同期処理の完了後に解析結果を確認する。

## 3. API仕様

### リクエスト

- ファイル本体をリクエストで受け取る。
- ファイルサイズ上限は10MBとする。
- 受付時に処理を同期完了させず、非同期処理として扱う。

### 成功時

オブジェクトストレージへの保存およびキュー登録が完了した場合、受付成功を返す。レスポンスには、取込処理を追跡するための取込IDを含める。

### オブジェクトストレージ保存失敗時

- HTTPステータス503を返す。
- キューには登録しない。
- 後続のワーカー処理を発生させない。

### キュー登録失敗時

オブジェクトストレージへの保存後にキュー登録が失敗した場合の回復方法は未決定である。実装では、失敗を検知できるログおよび監視情報を残し、回復方式の決定後に差し替えられる構造にする。ストレージ上にファイルが残るため、孤児ファイルの扱いも回復方式と併せて決定する。

## 4. オブジェクトストレージ

### 保存内容

最低限、以下の情報を管理する。

- 取込ID
- オブジェクトキー
- 元ファイル名
- ファイルサイズ
- Content-Type
- 受付日時

オブジェクトキーには取込IDなどの一意な値を使用し、ファイル名の衝突を避ける。キューにはファイル本体ではなく、取込IDとオブジェクトキーなどの保存先情報のみを登録する。

## 5. キュー

メッセージには以下を含める。

- 取込ID
- オブジェクトストレージのバケットまたはコンテナ情報
- オブジェクトキー
- 必要なメタデータ

キューのメッセージサイズ制限を超えないよう、ファイル本体は含めない。

## 6. ワーカー

ワーカーは次の順序で処理する。

1. キューからメッセージを取得する。
2. 指定されたオブジェクトストレージのオブジェクトを読み込む。
3. ファイルを解析する。
4. 解析結果をDBへ保存する。
5. 成功時にキューメッセージを完了扱いにする。

読み込み、解析、DB保存のいずれかに失敗した場合は、再実行可能な設計とする。解析結果の重複保存を防ぐため、取込IDをキーとした冪等性を確保する。

## 7. DB

取込状態を管理し、少なくとも以下の状態を記録する。

- 受付済み
- 保存済み
- キュー登録済み
- 処理中
- 完了
- 失敗

解析結果は取込IDと関連付けて保存する。利用者が非同期処理の進捗および結果を確認できるよう、状態取得方法は既存API設計に合わせて実装する。

## 8. エラー処理・運用

- オブジェクトストレージ保存失敗は503として返し、キュー登録を行わない。
- キュー登録失敗は検知、記録、監視できるようにする。回復処理は別途決定する。
- ワーカー処理は再試行を考慮する。
- 解析結果保存は冪等にする。
- ストレージに残った未処理ファイルを特定できるよう、取込IDとログを関連付ける。
- 非同期化により、API受付から利用者が結果を確認できるまでの時間が遅くなる。UIまたは結果取得APIでは処理中状態を提示する。

## 9. 実装範囲と進行状況

- チケット: DATA-64
- 関連PR: #203
- 今週の実装対象: API実装
- 担当: 佐藤

今週は、ファイル受信、オブジェクトストレージ保存、保存失敗時の503応答、およびキュー登録までを主な対象とする。キュー登録失敗時の回復方式は未決定事項として残す。

Files in this skill

  • adr-boundary.1.with_skill.md620 B
  • adr-boundary.1.without_skill.md2 KB
  • adr-boundary.2.with_skill.md834 B
  • adr-boundary.2.without_skill.md1.3 KB
  • canonical-reference.1.with_skill.md330 B
  • canonical-reference.1.without_skill.md330 B
  • canonical-reference.2.with_skill.md185 B
  • canonical-reference.2.without_skill.md313 B
  • comparison-rfc.1.with_skill.md1 KB
  • comparison-rfc.1.without_skill.md1.4 KB
  • comparison-rfc.2.with_skill.md1.6 KB
  • comparison-rfc.2.without_skill.md1.1 KB
  • design-tradeoff.1.with_skill.md2.9 KB
  • design-tradeoff.1.without_skill.md4.1 KB
  • design-tradeoff.2.with_skill.md3.1 KB
  • design-tradeoff.2.without_skill.md4.7 KB
  • incident-record.1.with_skill.md595 B
  • incident-record.1.without_skill.md552 B
  • incident-record.2.with_skill.md588 B
  • incident-record.2.without_skill.md640 B

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.