C
開発ツール/ビルド API/Lesson 03

ビルド + API — Maven · Gradle · curl · Postman

30分·theory

ビルド + API — Maven · Gradle · curl · Postman

🎯 このレッスンを読み終えたら

このレッスンを読み終えると、以下の3つを自信を持って実践できるようになります。

  • ✅ Maven vs Gradle の選択 + Wrapper を使う理由
  • ✅ curl + Postman + Newman のワークフロー
  • ✅ GitHub Actions での API リグレッションテストの自動化

学習目標をチェックリストとして手元に置き、すべてに答えられるようになったらレッスンを閉じてください。

Maven vs Gradle — Java ビルドの標準

一言で言うと: 依存関係管理・ビルド・テスト・デプロイの自動化ツール

項目MavenGradle
リリース20042007
文法XML (pom.xml)Groovy / Kotlin DSL (build.gradle)
表現力宣言的(低)命令的 + 宣言的(高)
ビルド速度遅い(~45秒)速い(~12秒、インクリメンタルビルド)
キャッシュ弱い強い(ビルドキャッシュ + デーモン)
学習曲線低い中程度
AndroidX標準
韓国大手企業多い増加傾向

同じ依存関係、異なる文法:

xml
<!-- Maven pom.xml -->
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-web</artifactId>
</dependency>
gradle
// Gradle build.gradle
implementation 'org.springframework.boot:spring-boot-starter-web'

> 💡 使い分けの目安: 新規プロジェクト = Gradle。既存のMavenプロジェクト = そのまま。Spring Initializr のデフォルトも Gradle。

💻 📌 ./gradlew vs gradle — バージョン固定がカギ

curl + Postman — APIテスト

curl = ターミナル HTTPクライアント。CI・デバッグ・ドキュメントサンプルの標準。

必須オプション:

  • -X POST — メソッド指定
  • -H "Header: value" — ヘッダー追加
  • -d '{"key":"value"}' — ボディ(POST/PUT)
  • -i — レスポンスヘッダーを含む
  • -v — 詳細表示(リクエスト・レスポンス全体)
  • -o file — ファイルに保存
  • -L — リダイレクトに従う

使用例:

bash
# GET
curl -i https://api.github.com/users/torvalds

# POST + JSON
curl -X POST https://api.example.com/login \
  -H "Content-Type: application/json" \
  -d '{"email":"[email protected]","password":"x"}'

# 認証ヘッダー
curl -H "Authorization: Bearer $TOKEN" https://api.example.com/me

# ファイルアップロード
curl -X POST -F "[email protected]" https://api.example.com/upload

Postman = GUI + コラボレーション機能:

  • Collection — APIグループ(チームと共有)
  • Environment — dev/stage/prod 変数管理
  • Tests — JSでレスポンスを検証(pm.expect(...)
  • Mock Server — APIのモックレスポンス(バックエンドなしのフロントエンド開発)
  • Newman — CLIでコレクションを自動実行(CI統合)

> 💡 curlコードサンプル・CI・素早いデバッグ向け。Postmanチームコラボレーション・複雑なシナリオ向け。両方を使い分けること。

💻 📌 Postman + Newman CI — API リグレッションテストの自動化
💻 📌 ビルド・APIコマンド一覧
# === Maven ===
mvn clean package                   # ビルド (テストを含む)
mvn clean install -DskipTests       # テストをスキップしてローカルリポジトリにインストール
mvn dependency:tree                 # 依存関係ツリー
mvn -pl module-a clean install      # マルチモジュールで特定のものだけ
mvn versions:display-dependency-updates  # 依存関係の更新可能なリスト

# === Gradle ===
./gradlew build                     # ビルド + テスト
./gradlew bootRun                   # Spring Boot実行
./gradlew dependencies               # 依存関係ツリー
./gradlew :module-a:build           # 特定のモジュールだけ
./gradlew build --scan              # ビルドスキャン (可視化)
./gradlew clean build --refresh-dependencies  # キャッシュ無視

# === npm / pnpm ===
npm install                         # package-lock.jsonに基づいてインストール
npm ci                              # 正確にロックファイル通りに (CI推奨)
npm update                          # マイナー・パッチアップデート
npm outdated                        # 古いバージョンリスト
pnpm install                        # npmよりディスク・速度 ↑

# === Python ===
python -m venv .venv                # 仮想環境作成
source .venv/bin/activate           # アクティベート (macOS/Linux)
.venv\Scripts\activate              # Windows
pip install -r requirements.txt
pip install -e .                    # 開発用 (編集可能インストール)
pip freeze > requirements.txt        # 現在の状態を保存

# === curl 実践 ===
# 応答時間測定
curl -o /dev/null -s -w "%{\time_total}\n" URL
# HTTP/2確認
curl --http2 -I https://example.com
# ヘッダーのみ (HEADメソッド)
curl -I https://example.com
# クッキー保存・再利用
curl -c cookies.txt -d "user=x" URL/login
curl -b cookies.txt URL/dashboard

🤖 AIへのリクエスト例

このレッスンの概念を理解すれば、AIに具体的な指示ができます。漠然とした「直して」ではなく、適切な語彙を使ったリクエスト — それがトークン節約の出発点です。

  • 「このpom.xmlをbuild.gradle.ktsに移行して」
  • 「この依存関係グラフで競合と重複を確認して」

これがトークンを減らす理由

概念を知らないと、AIの回答を受け取っても「それは何ですか?」と再度質問することになります。その「再質問」がトークンを消費します。概念を一度しっかり学んでおけば、会話が一度で完結します。

ビルド + API — Maven · Gradle · curl · Postman - 開発ツール