0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【学習】SwaggerとGithub PagesのSwaggerの違い(Spring Boot + Swaggerの場合)

Posted at

はじめに

今回お話するのは「業務において知ったこと。」になります。
具体的には、「ローカル環境化でのSwagger」と「Github Pages Deployed Swagger」の違いを把握することができたので、こちらについて簡単な形にはなりますが、まとめさせていただきます。

※実際のSwaggerの設定方法については現段階で把握できていないので、説明はなしとさせていただきます。

対象者

  • かけだしエンジニア
  • ローカルと開発環境について理解が追い付いていない人
  • Swaggerとは?の人

まずはSwaggerについて

Swaggerについての内容は下記記事を参考に

プラスαで下記内容もご参考までに

Swaggerとは

  • APIの設計図&説明書を作るための仕組み(正式には「OpenAPI Specification」)
  • APIの仕様(URL・パラメータ・戻り値)を一目でわかる形で記述できる
  • 「Swagger UI」を使うと、その仕様書を見やすくWeb表示&ブラウザ上で試せるようになる

Swaggerを使用するメリット

  • 見える化:APIのエンドポイントや使い方が一覧でわかる
  • 試せる:ブラウザから直接APIリクエストを送って結果を確認できる(Postman不要な場合も)
  • ドキュメント自動生成:ソースコードやアノテーションから仕様書を自動作成できる(例:Spring Boot, Rails)
  • チーム共有が楽:同じ画面で開発者・テスター・デザイナーが仕様を確認できる
  • 更新が容易:コード変更と連動させればドキュメントの更新漏れを防げる

他の便利な代替・補完ツール

Redoc。Stoplight Studio 。Postman。Insomnia。RapidAPI

本題:「ローカル環境化でのSwagger」と「Github Pages Deployed Swagger」の違い

経緯

  • Githubからリポジトリをクローン。環境構築を完了。Java(Springフレームワーク)
  • READMEの「Swagger(8080番号?)」と「Github Pages Deployed Swagger URL」の項目があり、Githubの方は閲覧可能だが、Swaggerの方は閲覧不可
  • docker coupose up -dのコマンドを実行した段階でローカルのSwaggerも閲覧できると思っていたけど、閲覧できない。。。なぜ???
     ↓
  • ローカルSwaggerの閲覧(つまり開発段階の状態を確認したいなら)./gradlew bootRunのコマンドを実行しないといけない
    ※Gradle(Javaのビルド&実行ツール) でSpring Bootアプリを起動するコマンド

README記載の2つのSwaggerは何???

要点まとめ

  1. Swagger(ローカルや開発環境で起動する Swagger UI)
    各自の開発マシンやローカルサーバー上で Swagger UI を動かし、http://localhost:xxxxx/swagger のような URL で API ドキュメントを確認できる。
    開発中の API をすぐに可視化・テストできるツール
  2. GitHub Pages にデプロイされた Swagger(静的ホスティング)
    Swagger UI を GitHub Pages に配置すると、静的サイトとしてリポジトリから誰でもアクセス可能な URL(例:https://xn--wck1eucs30q.github.io/%E3%83%AA%E3%83%9D%E5%90%8D/swagger/)になる。
    Git リポジトリに含まれる Swagger の定義(YAML や JSON)と UI ファイルを使って、Web 上にホスティングする構成
     

なぜ “2つの Swagger” が必要なのか?

  • 開発(Swagger)
    コード変更と同時に Swagger UI をローカルで表示し、動作確認。
    高速で、外部に公開せず安全に作業できる。
  • 共有・公開用(GitHub Pages)
    他の開発者や関係者と API ドキュメントを簡単に共有できる。
    GitHub 上でホスティングするため、サーバー構築不要で安価に公開できる。
     

URL が微妙に異なる理由

 ↓

つまり、
・Swagger UI 自体は同じもの。
・「どこに置いてあるか」で見た目は変わらない。
・違いは “ローカルで開発用” と “ウェブ上で公開用” の使い分けにある、といえる。

さいごに

Laravelを使用した研修段階では、docker compose upと、場合によって?php artisan serveといったコマンドでローカルSwaggerの閲覧ができていました。
今回は初めてJava,Springの開発環境で事前にローカルSwaggerの確認手順を把握できていなくロスタイムが発生;;
言語のちがい(開発環境の違い?)でこういった違いがある事を知る事ができてよかったです。

おまけ(メモ)

  1. Dockerを止めたらローカルのSwaggerが見られなくなる?
    Docker 上に Swagger UIを立ち上げて見ている状態=Docker コンテナが動いているから見られている。
    Docker を stop すると、そのコンテナは止まり、Swagger UI を提供するサーバーが動かなくなるため、ブラウザでも表示不可に。
     
  2. GitHub Pages の Swagger は Docker に関係なく見られるか?
    関係なくみることができる。
    GitHub Pages は「静的ウェブサイトをホスティングするサービス」で、Swagger UI に必要な HTML/CSS/JS ファイルと、Swagger の仕様書(YAMLやJSON)をリポジトリに置いておき、GitHub が自動で公開してくれる
     
  3. GitHub Pages の Swagger は「即時反映」される?
    ローカルとは違って「即時反映」ではない。
    ローカル環境で Swagger UI を立ち上げていた場合、ファイルを変更すれば、そのサーバーを再起動しなくてもすぐに反映されることが多い(ホットリロードなど)。
    しかし GitHub Pages はリモート上のホスティングで、変更を反映させるには次のステップが必要になる
    • ローカルで変更内容を保存 → Git にコミット
    • GitHub に push
    • (必要なら)プルリクエスト → main(あるいは公開ブランチ)に merge
    • GitHub Pages が更新され、新しい静的ファイルが公開される

 
おまけまとめ

  • Docker を止めたらローカル Swagger は見られなくなる
  • GitHub Pages の Swagger は Docker 不要でリモート公開される
  • 即時反映されるのはローカルのみ。GitHub Pages はコミット → プッシュ → マージ → 自動デプロイが必要
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?