YOLO Vision 2026:

SAM 2: Segment Anything Model 2#

SAMの進化

SAM 2はオリジナルの SAM をベースに、動画セグメンテーション機能を追加しています。テキストおよび画像のエグゼンプラープロンプトによるプロンプト駆動型概念セグメンテーション(Promptable Concept Segmentation)については、SAM 3 を参照してください。

Inference with Segment Anything 2 In Colab

Metaの Segment Anything Model (SAM) の後継である SAM 2 は、画像と動画の両方における包括的なオブジェクトセグメンテーション向けに設計された最先端のツールです。リアルタイム処理とゼロショット汎化をサポートする統合型のプロンプト駆動型モデルアーキテクチャにより、複雑な視覚データの処理に優れています。

Ultralytics Platform 上の SAM 2

SAM 2.1 モデルは Ultralytics Platformスマートアノテーション機能 を駆動し、クリックベースのセグメンテーションによる高速なデータセットラベリングを可能にします。詳細は アノテーションガイド を参照してください。

SAM 2 Example Results

主な特徴#



Watch: How to Run Inference with Meta's SAM2 using Ultralytics | Step-by-Step Guide 🎉

統合モデルアーキテクチャ#

SAM 2 は画像とビデオのセグメンテーション機能を単一のモデルに統合しています。この統合によりデプロイが簡素化され、異なるメディアタイプ間で一貫したパフォーマンスが可能になります。柔軟なプロンプトベースのインターフェースを活用し、ユーザーはポイント、バウンディングボックス、マスクなどのさまざまなプロンプトタイプを通じて対象のオブジェクトを指定できます。

リアルタイムパフォーマンス#

このモデルはリアルタイムの推論速度を実現し、1秒あたり約44フレームを処理します。これにより、SAM 2 はビデオ編集や拡張現実など、即座のフィードバックを必要とするアプリケーションに適しています。

ゼロショット汎化#

SAM 2 はこれまでに遭遇したことのないオブジェクトをセグメント化でき、強力なゼロショット汎化を示します。これは、事前定義されたカテゴリがすべての可能なオブジェクトをカバーできない多様または進化するビジュアルドメインにおいて特に役立ちます。

インタラクティブな修正#

ユーザーは追加のプロンプトを提供することでセグメンテーション結果を反復的に修正でき、出力に対する正確な制御が可能になります。このインタラクティブ性は、ビデオアノテーションや医療画像などのアプリケーションで結果を微調整する上で不可欠です。

視覚的課題に対する高度な処理#

SAM 2 には、オブジェクトのオクルージョンや再出現など、一般的なビデオセグメンテーションの課題を管理するメカニズムが含まれています。洗練されたメモリーメカニズムを使用してフレーム間でオブジェクトを追跡し、オブジェクトが一時的に遮られたり、シーンに出入りしたりしても一貫性を確保します。

SAM 2 のアーキテクチャと機能の詳細については、SAM 2 調査論文 をご覧ください。

パフォーマンスと技術的詳細#

SAM 2 はこの分野で新しいベンチマークを確立し、さまざまな指標で従来のモデルを上回っています。

メトリクスSAM 2従来の SOTA
インタラクティブビデオセグメンテーションベスト-
必要な人間のインタラクション3分の1に削減ベースライン
画像セグメンテーション 精度向上SAM
推論速度6倍高速SAM

モデルアーキテクチャ#

コアコンポーネント#

  • 画像および動画エンコーダー: transformer ベースのアーキテクチャを活用して、画像と動画フレームの両方から高レベルの特徴量を抽出します。このコンポーネントは、各タイムステップにおける視覚的コンテンツの理解を担当します。
  • プロンプトエンコーダー: ユーザーが提供したプロンプト(ポイント、ボックス、マスク)を処理してセグメンテーションタスクをガイドします。これにより、SAM 2 はユーザー入力に適応し、シーン内の特定のオブジェクトをターゲットにすることができます。
  • メモリ機構: メモリエンコーダー、メモリバンク、およびアテンションモジュールが含まれます。これらのコンポーネントは、過去のフレームからの情報を総合的に保存および利用し、モデルが時間の経過とともに一貫した オブジェクトトラッキング を維持できるようにします。
  • マスクデコーダー: エンコードされた画像の特徴とプロンプトに基づいて、最終的なセグメンテーションマスクを生成します。ビデオでは、フレーム間の正確な追跡を確実にするためにメモリーコンテキストも使用します。

SAM 2 Architecture Diagram

メモリーメカニズムとオクルージョン処理#

メモリーメカニズムにより、SAM 2 はビデオデータ内の時間的依存関係とオクルージョンを処理できます。オブジェクトが移動して相互作用するにつれて、SAM 2 はその特徴をメモリーバンクに記録します。オブジェクトがオクルージョンされたとき、モデルはこのメモリーに依存して、再出現した際の位置と外観を予測できます。オクルージョンヘッドは、オブジェクトが見えないシナリオを特別に処理し、オブジェクトがオクルージョンされる確率を予測します。

マルチマスク曖昧性解決#

曖昧性のある状況(例:重なり合うオブジェクト)では、SAM 2 は複数のマスク予測を生成できます。この機能は、単一のマスクではシーンのニュアンスを十分に表現できない複雑なシーンを正確に表現するために不可欠です。

SA-V データセット#

SAM 2 のトレーニングのために開発された SA-V データセットは、利用可能な最大かつ最も多様なビデオセグメンテーションデータセットの1つです。これには以下が含まれます:

  • 51,000以上のビデオ: 47か国で撮影され、幅広い現実世界のシナリオを提供します。
  • 600,000以上のマスクアノテーション: オブジェクト全体とパーツをカバーする、「マスクレット」と呼ばれる詳細な時空間マスクアノテーション。
  • データセットの規模: 従来の最大のデータセットと比較して4.5倍のビデオと53倍のアノテーションを備えており、前例のない多様性と複雑さを提供します。

ベンチマーク#

ビデオオブジェクトセグメンテーション#

SAM 2 は、主要なビデオセグメンテーションベンチマークにおいて優れたパフォーマンスを示しています:

データセットJ&FJF
DAVIS 201782.579.885.2
YouTube-VOS81.278.983.5

インタラクティブセグメンテーション#

インタラクティブセグメンテーションタスクにおいて、SAM 2 は高い効率性と精度を示します:

データセットNoC@90AUC
DAVIS Interactive1.540.872

インストール#

SAM 2 をインストールするには、次のコマンドを使用します。すべての SAM 2 モデルは初回使用時に自動的にダウンロードされます。

pip install ultralytics

SAM 2 の使い方: 画像およびビデオセグメンテーションにおける汎用性#

次の表に、利用可能な SAM 2 モデル、事前学習済み重み、サポートされているタスク、および InferenceValidationTrainingExport などの異なる動作モードとの互換性の詳細を示します。

モデルタイプ事前学習済みウェイトサポートされるタスクトレーニングバリデーション推論エクスポート
SAM 2 tinysam2_t.ptInstance Segmentation
SAM 2 smallsam2_s.ptInstance Segmentation
SAM 2 basesam2_b.ptInstance Segmentation
SAM 2 largesam2_l.ptInstance Segmentation
SAM 2.1 tinysam2.1_t.ptInstance Segmentation
SAM 2.1 smallsam2.1_s.ptInstance Segmentation
SAM 2.1 basesam2.1_b.ptInstance Segmentation
SAM 2.1 largesam2.1_l.ptInstance Segmentation

SAM 2 予測の例#

SAM 2 は、リアルタイムのビデオ編集、医療画像、自律システムなど、幅広いタスクで活用できます。静的および動的なビジュアルデータの両方をセグメント化する能力により、研究者や開発者にとって汎用性の高いツールとなっています。

プロンプトによるセグメント化#

プロンプトによるセグメント化

プロンプトを使用して、画像またはビデオ内の特定のオブジェクトをセグメント化します。

from ultralytics import SAM

# Load a model
model = SAM("sam2.1_b.pt")

# Display model information (optional)
model.info()

# Run inference with bboxes prompt
results = model("path/to/image.jpg", bboxes=[100, 100, 200, 200])

# Run inference with single point
results = model(points=[900, 370], labels=[1])

# Run inference with multiple points
results = model(points=[[400, 370], [900, 370]], labels=[1, 1])

# Run inference with multiple points prompt per object
results = model(points=[[[400, 370], [900, 370]]], labels=[[1, 1]])

# Run inference with negative points prompt
results = model(points=[[[400, 370], [900, 370]]], labels=[[1, 0]])

すべてをセグメント化#

すべてをセグメント化

特定のプロンプトなしで、画像またはビデオのコンテンツ全体をセグメント化します。

from ultralytics import SAM

# Load a model
model = SAM("sam2.1_b.pt")

# Display model information (optional)
model.info()

# Run inference
model("path/to/video.mp4")

ビデオのセグメント化とオブジェクトの追跡#

ビデオのセグメント化

特定のプロンプトを使用してビデオコンテンツ全体をセグメント化し、オブジェクトを追跡します。

from ultralytics.models.sam import SAM2VideoPredictor

# Create SAM2VideoPredictor
overrides = {"conf": 0.25, "task": "segment", "mode": "predict", "imgsz": 1024, "model": "sam2_b.pt"}
predictor = SAM2VideoPredictor(overrides=overrides)

# Run inference with single point
results = predictor(source="test.mp4", points=[920, 470], labels=[1])

# Run inference with multiple points
results = predictor(source="test.mp4", points=[[920, 470], [909, 138]], labels=[1, 1])

# Run inference with multiple points prompt per object
results = predictor(source="test.mp4", points=[[[920, 470], [909, 138]]], labels=[[1, 1]])

# Run inference with negative points prompt
results = predictor(source="test.mp4", points=[[[920, 470], [909, 138]]], labels=[[1, 0]])
  • この例は、プロンプト(bbox/ポイント/マスク)が提供されていない場合に、画像またはビデオのコンテンツ全体をセグメント化するために SAM 2 をどのように使用できるかを示しています。

動的インタラクティブセグメント化と追跡#

SAM2DynamicInteractivePredictor は、複数のフレームとの動的なインタラクションと継続的学習機能を可能にする、SAM 2 の高度なトレーニング不要の拡張機能です。この予測器は、一連の画像にわたる追跡パフォーマンスを向上させるためのリアルタイムのプロンプト更新とメモリー管理をサポートしています。元の SAM 2 と比較して、SAM2DynamicInteractivePredictor は推論フローを再構築し、追加のトレーニングを必要とせずに事前にトレーニングされた SAM 2 モデルを最大限に活用できるようにします。

SAM 2 Example Results

主な特徴#

次の3つの大きな機能強化が提供されます:

  1. 動的インタラクティブ: ビデオ処理中のいつでも、後続のフレームでマージ/追跡されていない新しいインスタンス用の新しいプロンプトを追加できます
  2. 継続的学習: 既存のインスタンスに新しいプロンプトを追加して、時間の経過とともにモデルのパフォーマンスを向上させます
  3. 独立したマルチ画像サポート: メモリー共有とクロスイメージオブジェクトトラッキングを使用して、複数の独立した画像(ビデオシーケンスからのものである必要はありません)を処理します

コア機能#

  • プロンプトの柔軟性: バウンディングボックス、ポイント、およびマスクをプロンプトとして受け入れます
  • メモリーバンク管理: フレーム間でオブジェクトの状態を保存するための動的なメモリーバンクを維持します
  • マルチオブジェクトトラッキング: 個別のオブジェクトIDを使用して複数のオブジェクトを同時に追跡することをサポートします
  • リアルタイム更新: 過去のフレームを再処理することなく、推論中に新しいプロンプトを追加できます
  • 独立した画像処理: 画像間のオブジェクトの一貫性を保つため、共有メモリコンテキストを使用して単体の画像を処理します
動的なオブジェクトの追加
from ultralytics.models.sam import SAM2DynamicInteractivePredictor

# Create SAM2DynamicInteractivePredictor
overrides = {"conf": 0.01, "task": "segment", "mode": "predict", "imgsz": 1024, "model": "sam2_t.pt", "save": False}
predictor = SAM2DynamicInteractivePredictor(overrides=overrides, max_obj_num=10)

# Define a category by box prompt
predictor(source="image1.jpg", bboxes=[[100, 100, 200, 200]], obj_ids=[0], update_memory=True)

# Detect this particular object in a new image
results = predictor(source="image2.jpg")

# Add new category with a new object ID
results = predictor(
    source="image4.jpg",
    bboxes=[[300, 300, 400, 400]],  # New object
    obj_ids=[1],  # New object ID
    update_memory=True,  # Add to memory
)
# Perform inference
results = predictor(source="image5.jpg")

# Add refinement prompts to the same category to boost performance
# This helps when object appearance changes significantly
results = predictor(
    source="image6.jpg",
    points=[[150, 150]],  # Refinement point
    labels=[1],  # Positive point
    obj_ids=[1],  # Same object ID
    update_memory=True,  # Update memory with new information
)
# Perform inference on new image
results = predictor(source="image7.jpg")
注意

SAM2DynamicInteractivePredictor は SAM2 モデルと連携するように設計されており、SAM2 がサポートするすべての ボックス/ポイント/マスクプロンプト を用いたカテゴリの追加および精緻化をネイティブでサポートします。動画アノテーションやインタラクティブな編集タスクなど、オブジェクトが出現したり時間の経過とともに変化したりするシナリオで特に役立ちます。

引数#

名前デフォルト値データ型説明
max_obj_num3intカテゴリのプリセット最大数
update_memoryFalsebool新しいプロンプトでメモリを更新するかどうか
obj_idsNoneList[int]プロンプトに対応するオブジェクトIDのリスト

ユースケース#

SAM2DynamicInteractivePredictor は以下に最適です:

  • シーケンス中に新しいオブジェクトが出現するビデオアノテーションワークフロー
  • リアルタイムのオブジェクト追加と洗練が必要なインタラクティブな動画編集
  • 動的なオブジェクト追跡のニーズがある監視アプリケーション
  • 時系列に沿って解剖学的構造を追跡するための医療画像処理
  • 適応的なオブジェクト検出と追跡を必要とする自律型システム
  • 独立した画像間で一貫したオブジェクトセグメンテーションを行うためのマルチ画像データセット
  • 異なるシーン間でオブジェクトを追跡する必要がある画像コレクション分析
  • 多様な画像コンテキストからのメモリを活用するクロスドメインセグメンテーション
  • 最小限の手動介入で効率的なデータセット作成を行うための半自動アノテーション

SAMとYOLOの比較#

ここでは、最小の SAM2-t バリアントを含む Meta の SAM 2 モデルと、YOLO26n-seg などの Ultralytics セグメンテーションモデルを比較します:

モデルサイズ
(MB)
パラメータ
(M)
速度 (CPU)
(ms/im)
Meta SAM-b37593.741703
Meta SAM2-b16280.828867
Meta SAM2-t78.138.923430
MobileSAM40.710.123802
YOLOv8 backboneを使用したFastSAM-s23.911.858.0
Ultralytics YOLOv8n-seg7.1 (11.0倍小さい)3.4 (11.4倍少ない)24.8 (945倍高速)
Ultralytics YOLO11n-seg6.2 (12.6倍小さい)2.9 (13.4倍少ない)24.3 (964倍高速)
Ultralytics YOLO26n-seg6.7 (11.7倍小さい)2.7 (14.4倍少ない)25.2 (930倍高速)

この比較は、SAMバリアントとYOLOセグメンテーションモデル間のモデルサイズと速度における大きな違いを示しています。SAMは独自の自動セグメンテーション機能を提供しますが、YOLOモデル、特にYOLOv8n-seg、YOLO11n-seg、およびYOLO26n-segは、大幅に小さく、高速で、計算効率に優れています。

SAMの速度はPyTorchで測定され、YOLOの速度はONNX Runtimeで測定されています。テストは、torch==2.10.0ultralytics==8.4.31onnxruntime==1.24.4 を使用して、16GBのRAMを搭載した2025年製のApple M4 Air上で実行されました。このテストを再現するには:

from ultralytics import ASSETS, SAM, YOLO, FastSAM

# Profile SAM2-t, SAM2-b, SAM-b, MobileSAM
for file in ["sam_b.pt", "sam2_b.pt", "sam2_t.pt", "mobile_sam.pt"]:
    model = SAM(file)
    model.info()
    model(ASSETS)

# Profile FastSAM-s
model = FastSAM("FastSAM-s.pt")
model.info()
model(ASSETS)

# Profile YOLO models (ONNX)
for file_name in ["yolov8n-seg.pt", "yolo11n-seg.pt", "yolo26n-seg.pt"]:
    model = YOLO(file_name)
    model.info()
    onnx_path = model.export(format="onnx", dynamic=True)
    model = YOLO(onnx_path)
    model(ASSETS)

自動アノテーション: 効率的なデータセット作成#

自動アノテーションはSAM 2の強力な機能であり、事前学習済みモデルを活用して、セグメンテーションデータセットを迅速かつ正確に生成できます。この機能は、膨大な手動労力をかけずに大規模で高品質なデータセットを作成するのに特に役立ちます。

SAM 2を使用した自動アノテーションの方法#



Watch: Auto Annotation with Meta's Segment Anything 2 Model using Ultralytics | Data Labeling

SAM 2を使用してデータセットを自動アノテーションするには、次の例に従ってください:

自動アノテーションの例
from ultralytics.data.annotator import auto_annotate

auto_annotate(data="path/to/images", det_model="yolo26x.pt", sam_model="sam2_b.pt")
引数タイプデフォルト説明
datastr必須アノテーションまたはセグメンテーション対象の画像が含まれるディレクトリへのパス。
det_modelstr'yolo26x.pt'初期の物体検出を行うためのYOLO検出モデルのパス。
sam_modelstr'sam_b.pt'セグメンテーション用のSAMモデルパス(SAM、SAM 2、MobileSAM、SAM 3のウェイトをサポート)。
devicestr''計算デバイス(例: 'cuda:0'、'cpu'、または空文字で自動デバイス検出)。
conffloat0.25弱い検出結果をフィルタリングするためのYOLO検出信頼度閾値です。
ioufloat0.45重複するボックスをフィルタリングするためのNon-Maximum Suppression(NMS)用IoU閾値です。
imgszint640画像のリサイズに使用する入力サイズ(32の倍数である必要があります)。
max_detint300メモリ効率のために、画像1枚あたりの最大検出数です。
classeslist[int]None検出するクラスインデックスのリスト(例:人物と自転車の場合は [0, 1])。
output_dirstrNoneアノテーションの保存ディレクトリ(デフォルト:<data>_auto_annotate_labels の兄弟ディレクトリ)。

この関数は高品質なセグメンテーションデータセットの迅速な作成を容易にし、プロジェクトを加速させたい研究者や開発者に最適です。

制限事項#

長所がある一方で、SAM 2には特定の制限もあります:

  • 追跡の安定性: 長時間のシーケンスや大きな視点の変化の際、SAM 2はオブジェクトの追跡を見失うことがあります。
  • オブジェクトの混同: 特に混雑したシーンにおいて、モデルが似たようなオブジェクトを混同することがあります。
  • 複数オブジェクト処理の効率: オブジェクト間の通信がないため、複数のオブジェクトを同時に処理する際にセグメンテーションの効率が低下します。
  • 詳細 精度: 細かな詳細を見落とす可能性があり、特に高速で移動するオブジェクトにおいて顕著です。追加のプロンプトはこの問題を部分的に解決できますが、時間的な滑らかさは保証されません。

引用と謝辞#

SAM 2が研究や開発において重要な役割を果たしている場合は、次のリファレンスを使用して引用してください:

引用
@article{ravi2024sam2,
  title={SAM 2: Segment Anything in Images and Videos},
  author={Ravi, Nikhila and Gabeur, Valentin and Hu, Yuan-Ting and Hu, Ronghang and Ryali, Chaitanya and Ma, Tengyu and Khedr, Haitham and R{\"a}dle, Roman and Rolland, Chloe and Gustafson, Laura and Mintun, Eric and Pan, Junting and Alwala, Kalyan Vasudev and Carion, Nicolas and Wu, Chao-Yuan and Girshick, Ross and Doll{\'a}r, Piotr and Feichtenhofer, Christoph},
  journal={arXiv preprint},
  year={2024}
}

この画期的なモデルとデータセットでAIコミュニティに貢献してくれたMeta AIに心から感謝いたします。

よくある質問 (FAQ)#

SAM 2とは何ですか?また、オリジナルのSegment Anything Model (SAM)からどのように改善されていますか?#

Metaの Segment Anything Model (SAM) の後継である SAM 2 は、画像と動画の両方における包括的なオブジェクトセグメンテーション向けに設計された最先端のツールです。リアルタイム処理とゼロショット汎化をサポートする統合型のプロンプト駆動型モデルアーキテクチャにより、複雑な視覚データの処理に優れています。SAM 2 は、オリジナルの SAM に比べて次のような複数の改良点を提供します:

  • 統合されたモデルアーキテクチャ: 画像と動画のセグメンテーション機能を単一のモデルに統合しています。
  • リアルタイムパフォーマンス: 1秒あたり約44フレームを処理するため、即座のフィードバックを必要とするアプリケーションに適しています。
  • ゼロショット汎化: これまでに遭遇したことのないオブジェクトをセグメント化でき、多様な視覚ドメインで役立ちます。
  • インタラクティブな洗練: 追加のプロンプトを提供することで、ユーザーがセグメンテーション結果を反復的に洗練させることができます。
  • 視覚的課題への高度な対応: オブジェクトのオクルージョンや再出現といった、一般的なビデオセグメンテーションの課題を管理します。

SAM 2 のアーキテクチャと機能の詳細については、SAM 2 調査論文 をご覧ください。

リアルタイムビデオセグメンテーションにSAM 2を使用するにはどうすればよいですか?#

SAM 2は、プロンプト可能なインターフェースとリアルタイム推論機能を活用して、リアルタイムビデオセグメンテーションに使用できます。以下は基本的な例です:

プロンプトによるセグメント化

プロンプトを使用して、画像またはビデオ内の特定のオブジェクトをセグメント化します。

from ultralytics import SAM

# Load a model
model = SAM("sam2_b.pt")

# Display model information (optional)
model.info()

# Segment with bounding box prompt
results = model("path/to/image.jpg", bboxes=[100, 100, 200, 200])

# Segment with point prompt
results = model("path/to/image.jpg", points=[150, 150], labels=[1])

より包括的な使用方法については、How to Use SAM 2 セクションを参照してください。

SAM 2のトレーニングにはどのデータセットが使用されており、それらはパフォーマンスをどのように向上させていますか?#

SAM 2は、利用可能な最大かつ最も多様なビデオセグメンテーションデータセットの1つであるSA-Vデータセットでトレーニングされています。SA-Vデータセットには以下が含まれます:

  • 51,000以上のビデオ: 47か国で撮影され、幅広い現実世界のシナリオを提供します。
  • 600,000以上のマスクアノテーション: オブジェクト全体とパーツをカバーする、「マスクレット」と呼ばれる詳細な時空間マスクアノテーション。
  • データセットの規模: 従来の最大のデータセットと比較して4.5倍の動画と53倍のアノテーションを備えており、これまでにない多様性と複雑さを提供します。

この広範なデータセットにより、SAM 2 は主要な動画セグメンテーションベンチマーク全体で優れたパフォーマンスを達成し、ゼロショット汎化機能が向上しています。詳細については、SA-V Dataset セクションを参照してください。

SAM 2は、ビデオセグメンテーションにおけるオクルージョンやオブジェクトの再出現をどのように処理しますか?#

SAM 2には、ビデオデータの時間的依存関係とオクルージョンを管理するための高度なメモリメカニズムが含まれています。メモリメカニズムは以下で構成されています:

  • メモリエンコーダとメモリバンク: 過去のフレームの特徴を保存します。
  • メモリ注意モジュール: 保存された情報を使用して、時間経過に沿った一貫したオブジェクト追跡を維持します。
  • オクルージョンヘッド: オブジェクトが見えないシナリオを特別に処理し、オブジェクトがオクルージョンされる確率を予測します。

このメカニズムにより、オブジェクトが一時的に隠れたり、シーンから退出して再登場したりした場合でも、連続性が確保されます。詳細については、Memory Mechanism and Occlusion Handling セクションを参照してください。

SAM 2は、YOLO26などの他のセグメンテーションモデルとどのように比較されますか?#

Metaの SAM2-t や SAM2-b などの SAM 2 モデルは強力なゼロショットセグメンテーション機能を提供しますが、YOLO モデルと比較して大幅に大きく、処理速度が遅くなります。たとえば、YOLO26n-seg は CPU 上において、SAM2-b と比較して約 24分の1のサイズ であり、1145倍以上高速 です。SAM 2 は多用途、プロンプトベース、およびゼロショットのセグメンテーションシナリオに優れていますが、YOLO26 は NMS 不要のエンドツーエンド推論による速度、効率、およびリアルタイムアプリケーション向けに最適化されており、リソースが制限された環境でのデプロイに適しています。

コメント