Skip to content
Back to skills

Artifacts

ASecurity

ファイル本体をオブジェクトストレージに保存し、保存先をキューへ登録する非同期取込方式を採用する。ワーカーはキューから保存先を取得し、オブジェクトストレージ上のファイルを読み込んで解析し、結果をDBへ保存する。

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

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-27af21f0/badge)](https://www.skillsdirectory.com/skills/iwasa-kosui-artifacts-27af21f0)

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. 概要

ファイル本体をオブジェクトストレージに保存し、保存先をキューへ登録する非同期取込方式を採用する。ワーカーはキューから保存先を取得し、オブジェクトストレージ上のファイルを読み込んで解析し、結果をDBへ保存する。

## 2. 背景と制約

- ファイル本体をキューに載せる方式は不採用とする。
  - キューのメッセージ上限は1MB。
  - 取込対象ファイルは最大10MBであり、制限を超える可能性がある。
- 非同期処理のため、利用者が解析結果を確認できるまでの時間は従来より遅くなる。

## 3. 処理フロー

### API

1. APIがファイルを受け取る。
2. ファイルをオブジェクトストレージへ保存する。
3. 保存に成功した場合、保存先を示す情報をキューへ登録する。
4. リクエストには受付済みを示すレスポンスを返す。

保存に失敗した場合は、以下のように処理する。

- HTTP 503を返す。
- キューには登録しない。
- クライアントが再試行できるよう、エラーを記録する。

### ワーカー

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

## 4. メッセージ設計

キューにはファイル本体ではなく、少なくとも次の情報を含むメッセージを登録する。

```json
{
  "job_id": "取込ジョブを一意に識別するID",
  "object_key": "オブジェクトストレージ上の保存先",
  "created_at": "受付日時"
}
```

`object_key` は利用者入力をそのままパスとして使用せず、サーバー側で生成した一意なキーを使用する。ワーカーが解析結果とジョブを対応付けられるよう、`job_id` を必須とする。

## 5. API仕様の方針

- 保存成功かつキュー登録成功の場合、非同期受付済みとしてジョブIDを返す。
- オブジェクトストレージへの保存失敗時は503を返す。
- 保存成功後にキュー登録が失敗した場合の回復方法は未決定であり、実装前に仕様を確定する。
- 非同期処理中の状態確認方法(ジョブ状態取得APIなど)は、既存のAPI設計に合わせて決定する。

## 6. エラー処理と運用上の注意

### 保存失敗

保存処理の失敗を検知したら、キュー登録を行わず503を返す。不要な一時オブジェクトが残る場合は、削除またはライフサイクル設定を検討する。

### キュー登録失敗

オブジェクトストレージへの保存後にキュー登録が失敗すると、ファイルは保存済みだが処理されない状態になり得る。回復方法は未決定のため、少なくとも以下を記録できるようにする。

- `job_id`
- オブジェクトストレージのキー
- キュー登録の失敗内容
- リトライ回数と最終失敗時刻

回復方式の候補には、登録リトライ、未処理ジョブの定期スキャン、再送可能な中間状態のDB管理などがあるが、採用案は別途決定する。

### ワーカー処理失敗

解析またはDB保存に失敗した場合は、メッセージを再処理可能な状態にする。再試行回数、恒久失敗時の隔離先、重複処理を防ぐための冪等性については、利用するキューと既存基盤の仕様に合わせて設計する。

## 7. 実装方針

- API実装では、保存処理とキュー登録処理を明確に分離する。
- 保存先キーとジョブIDを生成し、ログおよび後続処理で一貫して利用する。
- 外部サービスのタイムアウト、失敗、再試行回数を監視可能にする。
- ワーカーはキューのメッセージからファイルを取得し、ファイル本体をメッセージとして扱わない。
- 解析結果のDB保存は、同一ジョブの再処理を考慮して冪等にする。
- 結果提示の遅延を利用者へ伝えられるよう、受付状態と処理状態を区別する。

## 8. 未決事項

1. APIがオブジェクトストレージへの保存後にキュー登録へ失敗した場合の回復方法。
2. キュー登録失敗時にAPIへ返すHTTPステータスと利用者向けメッセージ。
3. ジョブ状態の保持先と状態確認APIの仕様。
4. ワーカーの再試行回数、デッドレター処理、重複実行時の扱い。
5. 保存済みだが未処理となったオブジェクトの削除・再送・保持期間。

## 9. 進行状況

- 今週の対象: API実装
- 担当: 佐藤

作業追跡情報は、チケットまたは進捗管理文書で管理する。

Files in this skill

  • adr-boundary.1.with_skill.md664 B
  • adr-boundary.1.without_skill.md1.1 KB
  • adr-boundary.2.with_skill.md534 B
  • adr-boundary.2.without_skill.md1.5 KB
  • canonical-reference.1.with_skill.md257 B
  • canonical-reference.1.without_skill.md318 B
  • canonical-reference.2.with_skill.md318 B
  • canonical-reference.2.without_skill.md296 B
  • comparison-rfc.1.with_skill.md1.3 KB
  • comparison-rfc.1.without_skill.md1.3 KB
  • comparison-rfc.2.with_skill.md929 B
  • comparison-rfc.2.without_skill.md1.2 KB
  • design-tradeoff.1.with_skill.md1.3 KB
  • design-tradeoff.1.without_skill.md4.9 KB
  • design-tradeoff.2.with_skill.md1.4 KB
  • design-tradeoff.2.without_skill.md2.9 KB
  • incident-record.1.with_skill.md517 B
  • incident-record.1.without_skill.md661 B
  • incident-record.2.with_skill.md546 B
  • incident-record.2.without_skill.md689 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.