モバイルアプリのスワイプ — ジェスチャの種類と実装

著者: IT Sectr 公開日: 2026-08-03 読了時間: 7 分

スワイプは、画面上で指を滑らせるジェスチャで、モバイルインターフェースにおける主要な操作方法の一つになりました。単に写真をめくることからメールの削除まで、スワイプは多くのボタンを置き換え、操作をより自然にしました。Apple Human Interface Guidelines (2024)によると、スワイプジェスチャはタップに次いで2番目に頻繁に使用され、モバイルアプリケーションにおけるすべてのインタラクションの22%を占めています。

要点

  • スワイプ — 指を画面に沿って特定の方向に動かすジェスチャ
  • 方向 — 水平(左/右)と垂直(上/下)のスワイプ
  • 主なシナリオ — 削除、ナビゲーション、タブ切り替え、プル・トゥ・リフレッシュ
  • ジェスチャの持続時間 — 100〜500ミリ秒、それを超えるとドラッグとして認識
  • 実装 — iOSのUIGestureRecognizer、AndroidのGestureDetector、ウェブのタッチイベント

モバイルインターフェースにおけるスワイプとは

スワイプは、ユーザーが指を画面上で特定の方向に滑らせてアクションを開始するジェスチャです。タップ(短いタッチ)とは異なり、スワイプはジェスチャ全体を通じて動きと画面との接触を伴います。

スワイプの歴史は2007年の初代iPhoneから始まりました。「slide to unlock」ジェスチャはモバイルインターフェースの象徴となりました。現在、スワイプは何千ものアプリケーションでナビゲーション、コンテンツ管理、情報整理に使用されています。

UX Planet (2025)によると、ジェスチャ操作(スワイプを含む)を備えたアプリケーションは、ユーザーエンゲージメントが18%向上しています。スワイプはボタンを押すよりも自然な操作として認識されており、オブジェクトの物理的な動きを模倣しています。

スワイプ認識パラメータ

主なパラメータとして、ジェスチャがスワイプかどうかを判断するものには、最小距離(通常30〜50ピクセル)、直線からの最大偏差(15〜20度以下)、最大接触時間(500ミリ秒まで)があります。指が画面に長時間留まると、そのジェスチャはドラッグまたは長押しとして分類されます。

方向別スワイプの種類

移動方向によって、スワイプは4つの主要なタイプに分類されます:左、右、上、下。各タイプには独自の目的と使用コンテキストがあります。

スワイプの種類アクション使用例
削除、アーカイブ、非表示Mailでメール削除、Tinderで非表示
確認、表示Tinderでいいね、「既読」マーク
更新、閉じるプル・トゥ・リフレッシュ、スワイプしてパネルを閉じる
戻る、開くiOSで戻るための下スワイプ、通知センター

水平スワイプ(左/右)は、個々のアイテムの管理(削除、アーカイブ、めくり)に最もよく使用されます。垂直スワイプ(上/下)は、画面間の移動やコンテンツの更新に使用されます。Material Design Guidelines (2024)によると、水平スワイプは右利きの人にとってより快適です。右手では親指を左に動かす方が自然だからです。

マルチフィンガースワイプ

2本および3本指のスワイプは高度な操作に使用されます。2本指 — iPadでのデスクトップ切り替え、元に戻す(3本指スワイプ)。3本指 — 一部のデバイスでのスクリーンショット。ただし、マルチフィンガージェスチャは直感的ではなく、ユーザーの学習が必要です。

iOSでのスワイプ実装

iOSでは、ジェスチャ処理はUIGestureRecognizerに基づいています。これは、タッチイベントのシーケンスを分析し、特定のジェスチャに一致するかどうかを判断する抽象クラスです。

swift
import UIKit

class ViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        let swipeLeft = UISwipeGestureRecognizer(
            target: self,
            action: #selector(handleSwipe)
        )
        swipeLeft.direction = .left
        view.addGestureRecognizer(swipeLeft)
    }

    @objc func handleSwipe(sender: UISwipeGestureRecognizer) {
        print("左にスワイプ")
    }
}

UISwipeGestureRecognizerは、方向とタッチ数(numberOfTouchesRequired)の設定をサポートしています。デフォルトでは、1本の指と右方向が必要です。他の方向を認識するには、方向を明示的に指定する必要があります:.left、.up、.down。

より高レベルのAPI — UICollectionViewLayoutはスワイプアクションをサポートしています。iOS 11以降、テーブルとコレクションはUISwipeActionsConfigurationによる組み込みのスワイプアクションをサポートしており、手動のジェスチャ処理なしで削除やアーカイブボタンを追加できます。

Androidでのスワイプ実装

Androidでは、スワイプ処理はGestureDetectorを介して構築されます。これはMotionEventsを分析し、対応するコールバックメソッドを呼び出すクラスです。

kotlin
class SwipeActivity : AppCompatActivity() {
    private val swipeThreshold = 100

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        val gestureDetector = GestureDetector(this, object : GestureDetector.SimpleOnGestureListener() {
            override fun onFling(
                e1: MotionEvent, e2: MotionEvent,
                velocityX: Float, velocityY: Float
            ): Boolean {
                val dx = e2.x - e1.x
                if (dx > swipeThreshold) {
                    println("右にスワイプ")
                }
                return true
            }
        })
    }
}

GestureDetectorのonFlingメソッドは、ユーザーが画面上で指を素早くスワイプしたときに呼び出されます。開始座標と終了座標(e1、e2)、および移動速度(velocityX、velocityY)を受け取ります。方向を決定するために、X軸またはY軸に沿った座標の差を比較します。

AndroidXライブラリは、より便利なAPIを提供しています:プル・トゥ・リフレッシュ用のViewCompat.setSwipeRefreshLayout、リスト内のスワイプアクション用のRecyclerViewとItemTouchHelper。ItemTouchHelperは、アイコン、背景色、アニメーションなどの視覚的フィードバックを伴うスワイプ機能を追加できます。

ウェブアプリケーションでのスワイプ

ウェブ開発では、スワイプの処理にTouch Events API(touchstart、touchmove、touchend)と、Hammer.jsやSwiper.jsなどのラッパーライブラリが使用されます。

js
let startX = 0;
let startY = 0;
const threshold = 50;

element.addEventListener("touchstart", (e) => {
    startX = e.touches[0].clientX;
    startY = e.touches[0].clientY;
});

element.addEventListener("touchend", (e) => {
    const dx = e.changedTouches[0].clientX - startX;
    const dy = e.changedTouches[0].clientY - startY;
    if (Math.abs(dx) > threshold) {
        console.log(dx > 0 ? "右にスワイプ" : "左にスワイプ");
    }
});

Touch Events APIは、ブラウザでジェスチャを処理するネイティブな方法です。touchstartイベントは開始座標を記録し、touchmoveは動きを追跡し、touchendは結果を判定します。しきい値(threshold)は偶発的なタッチを除外します。

Can I Use (2026)によると、Touch Events APIはブラウザの98%でサポートされています。複雑なジェスチャシナリオ(複数スワイプ、方向認識)には、低レベルの処理を抽象化し、明確なAPIを提供するHammer.jsライブラリの使用が推奨されます。

スワイプを使ったUXパターン

スワイプを使った成功したUXパターンは、モバイルインターフェースの長年の進化を経て形成されました。これらを使用することで、ユーザーは追加の学習なしでジェスチャの動作を理解できます。

「スワイプ・トゥ・デリート」パターンが最も一般的です。リストアイテムを左にスワイプすると削除ボタンが表示されます。iOS(SwipeActionsConfiguration)とAndroid(ItemTouchHelper)で標準化されています。ユーザーは左スワイプでアイテムが削除またはアーカイブされることを期待しています。

「スワイプ・トゥ・ゴー・バック」パターン — 画面の左端からスワイプして前の画面に戻ります。iPhone X以降、iOSで標準になりました。Androidでも、同様のナビゲーションがシステムジェスチャを通じて機能します。独自のアプリケーションでこのシステムジェスチャと競合しないことが重要です。

「プル・トゥ・リフレッシュ」パターン — 下にスワイプしてコンテンツを更新します。Loren BrichterがTweetie(2008)のために発明し、現在は何百万ものアプリケーションで使用されています。両プラットフォームの標準コンポーネントに実装されています。

  • フィードバック — 要素は指とともに動き、スワイプ完了前に結果を示す必要があります
  • ジェスチャの競合 — 同じ要素で水平スワイプとスクロールを同時にサポートしないでください
  • 発見可能性 — 最初のスワイプアクションには視覚的なヒントを伴わせる必要があります
  • キャンセル — ユーザーは指を元の位置に戻すことでスワイプをキャンセルできる必要があります

よくある質問

スワイプとドラッグの違いは何ですか?

スワイプは、指を素早く動かしてから離す動作です。ドラッグは、一定の接触を保ちながらゆっくりと動かす動作です。主な違いは速度にあります。スワイプでは速度のしきい値が重要ですが、ドラッグでは移動座標のみが重要です。

スワイプ認識の最小距離はどれくらいですか?

iOSとAndroidは約30〜50ピクセルのしきい値を使用します。ウェブアプリケーションでは40〜60ピクセルのしきい値が推奨されます。値が小さいとスクロール中に誤反応が発生し、大きすぎると広い動きが必要になります。

スワイプとスクロールの競合を防ぐには?

方向によってジェスチャの優先順位を決定します。水平スワイプは垂直スクロールをブロックし、垂直スワイプは水平スクロールをブロックします。iOSでは、UIScrollViewDelegateメソッドgestureRecognizerShouldBeginを使用して優先順位を管理します。

ユーザーにスワイプを教える必要がありますか?

標準的なスワイプ(削除、戻る)には学習は不要です。ユーザーはこれらをすでに知っています。独自のジェスチャ(3本指スワイプ、非標準の方向)には、視覚的なデモンストレーションを伴うオンボーディングが必要です。

運動能力が制限されたユーザーがスワイプを使えるようにするには?

常にスワイプアクションをボタンで補完してください。震えのあるユーザーのために、しきい値を70〜100ピクセル、タイムアウトを800ミリ秒に増やしてください。VoiceOver/TalkBackを使用して利用可能なスワイプアクションを読み上げます。

まとめ

  • スワイプ — 画面上で指を滑らせるジェスチャ、タップに次いで2番目に人気
  • 方向別の種類 — 左(削除)、右(確認)、上(更新)、下(戻る)
  • iOSでの実装 — UISwipeGestureRecognizer、リスト用のUISwipeActionsConfiguration
  • Androidでの実装 — GestureDetector.onFling、RecyclerView用のItemTouchHelper
  • ウェブでの実装 — Touch Events APIまたはHammer.js、Swiper.jsライブラリ
  • UXパターン — スワイプ・トゥ・デリート、スワイプ・トゥ・ゴー・バック、プル・トゥ・リフレッシュ — 実績のあるソリューション

ターンキー方式のモバイルアプリケーションを開発します

IT Sectrは2017年からスタートアップや企業向けにiOS・Androidアプリケーションを開発しています。私たちがご相談に乗り、最適なソリューションをご提案します。

プロジェクトについて相談

こちらもお読みください