OSS探訪GitHubでログイン

TargetTypeでAPI endpointを型として定義し、通信・stub・pluginを統一する

スコアの見方

OSS規模スコアはStars・Watchers・Forks・Contributorsを対数圧縮して重み付けした現在の規模指標(上限なし)です。発掘スコアは現在のOSS規模スコアから発掘時点のOSS規模スコアを引いた値、更新ペースは直近30日Commit数、成長モメンタムは直近の観測期間におけるOSS規模スコア差、OSS健全度は取得できた更新状況・Community Health・Releaseの0〜100評価です。

Stars
15,353
主要言語
Swift
ライセンス
MIT
リポジトリ最終更新
2026/07/14
ページ内ナビ

概要

MoyaはAlamofireの上にAPI抽象化レイヤーを構築するSwiftライブラリです。endpointをenumとTargetTypeで表現し、URL・HTTP method・parameter encoding・sample dataを1か所へ集め、実通信とstubを同じprovider APIから扱えます。

特徴と向いている用途

公式資料に基づく紹介・実機未検証 · 内容確認日:

主な特徴

API endpointをenumとTargetTypeで型として定義する

各endpointをenum caseとして列挙し、baseURL、path、method、task、headers、sampleDataをTargetTypeへ実装します。request定義を画面やserviceごとのad hocなURL組み立てから分離できます。

出典:[3]

MoyaProviderから実通信とstubを同じ呼び出し形で扱う

MoyaProvider<Target>へtargetを渡してrequestし、successではResponse、failureではMoyaErrorを受け取ります。sampleDataとendpoint設定を使うことで、network層のtest stubも同じTargetTypeを基準に組み立てられます。

出典:[3]

向いている用途

複数endpointを持つiOSアプリでnetworking規約を揃えたい場合に向く

APIごとのURL、method、parameter、headerを型でまとめ、Alamofireを直接呼ぶ箇所を減らしたいiOS/tvOS/watchOSアプリに適します。CombineMoya、RxMoya、ReactiveMoyaもpackage productとして選択できます。

出典:[2][4]

導入前の確認

最新GitHub releaseは15.0.3で、現行toolchainとの互換性を採用前に確認する

15.0.3は2022年公開のlatest GitHub releaseです。tagのPackage.swiftはSwift tools 5.3、iOS 10以上を宣言し、Alamofire 5系へ依存します。repository自体には2026年の更新がありますが、release間隔が長いため、現在のSwift/Xcodeでbuild・warning・dependency解決を確認してから導入してください。

出典:[5][4][1]

参考にした公式資料

  1. [1]Moya/Moya — GitHub repository(2026-10-06)
  2. [2]Moya 15.0.3 — Readme(2026-10-06)
  3. [3]Moya 15.0.3 — Basic Usage(2026-10-06)
  4. [4]Moya 15.0.3 — Package.swift(2026-10-06)
  5. [5]Moya 15.0.3 release(2026-10-06)
  6. [6]Moya MIT license(2026-10-06)
編集部からの補足

複数API endpointのURL・method・parameter・headerを型で揃えたいiOSアプリに向きます。latest releaseは15.0.3で公開から時間が経っているため、現在のSwift/XcodeとAlamofire解決をCIで確認してから採用してください。

3ステップで試す

  1. 1

    Moya 15.0.3をSwiftPM dependencyへ追加する

    確認済みのlatest GitHub releaseを固定して追加します。Moya targetはAlamofire 5系へ依存します。

    .package(url: "https://github.com/Moya/Moya.git", exact: "15.0.3")
  2. 2

    TargetTypeでAPI endpointを定義する

    公式Basic Usageに沿ってURL・path・method・task・sampleDataを1つのtyped targetへまとめます。

    import Moya enum MyService { case zen } extension MyService: TargetType { var baseURL: URL { URL(string: "https://api.myservice.com")! } var path: String { "/zen" } var method: Moya.Method { .get } var task: Task { .requestPlain } var headers: [String: String]? { nil } var sampleData: Data { Data("ok".utf8) } }
  3. 3

    MoyaProviderからrequestする

    providerを保持した状態でrequestし、success/failureがMoyaのResultとして返ることを確認します。

    let provider = MoyaProvider<MyService>() provider.request(.zen) { result in print(result) }
公式READMEで確認

成長

成長の推移 · 直近30日

15,353 Stars

推移データを蓄積中です。

開発アクティビティ

直近90日・週次

Commit(直近30日)
0
Open PR
19

開発アクティビティを蓄積中です。

Built with

カテゴリとタグ

GitHubデータ

GitHubのデータGitHubの詳細データを見る

GitHub Topics

  • swift
  • reactiveswift
  • rxswift
  • alamofire
  • networking
  • hacktoberfest
Stars
15,353
Forks
1,993
Watchers
243
Open Issues
159
Contributors
219
所有者種別
Organization
主要言語
Swift
ライセンス
MIT
リポジトリ最終更新
2026/07/14

このOSSの使い方や活用事例をMarkdownで投稿できます。管理者が承認した後に公開されます。

情報の誤りを報告

掲載内容に誤りや古い情報があればお知らせください。

このページを読んで、次に何をすればよいか分かりましたか?
Moyaとは?Swift向けAPI抽象化レイヤー | OSS探訪