8
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

XServer APIを使ってみた

8
Last updated at Posted at 2026-04-16

去年にXServerをAIエージェントで操作する記事を書きましたが、ついに公式でサポートしていただきました🎉

はじめに

ついに!あの国内シェアNo.1のレンタルサーバー「エックスサーバー」から、待望の公式APIがリリースされました🎉

普段の業務や個人開発のインフラとして長年エックスサーバーを愛用しているソフトウェアエンジニアとして、これは今年一番の胸熱アップデートです。これまでコントロールパネル(Xserverアカウント/サーバーパネル)から手作業で行っていたデータベース作成、メールアドレス追加、ドメイン設定などの作業が、すべてプログラムから制御できるようになりました。

嬉しすぎて速攻でAPIを触り倒し、気づいたらOpenAPI仕様書最強のオレオレ独自管理画面を作ってしまったので、使い方と開発の知見を共有します!


1. XServer APIで何ができるのか?

公式のマニュアル(APIリファレンス)によると、現在以下の操作がAPI経由で可能です。

  • サーバー情報の取得(ディスク使用量、プランなど)
  • ドメインの操作(追加・削除・一覧取得)
  • データベース(MySQL)の操作(追加・削除・ユーザー権限設定)
  • メールアカウントの操作(作成・転送設定・パスワード変更)

認証方法はシンプルで、Xserverの管理画面から発行した「APIキー」をHTTPヘッダー(Authorization: Bearer <API_KEY>)に付与してリクエストを送るだけです。


2. 課題:公式APIをもっと「モダン」に叩きたい

公式APIは素晴らしいのですが、APIリファレンスがWebページ(HTML)のみで提供されているため、少しだけもどかしい部分がありました。

「これ、OpenAPI(Swagger)の定義ファイルがあれば、型安全なAPIクライアントを自動生成できるのにな……」

DenoやNode.js(TypeScript)、Python、PHP(Laravel)など、様々な言語を横断して開発している身としては、型定義がない状態でのAPI連携はタイポのリスクがあり、開発体験(DX)が少し下がってしまいます。

「無いなら、自分で作ればいいじゃないか」


3. 作ったもの①:OpenAPI for XServer API (xapi)

というわけで、公式リファレンスを読み込み、 ちゃんふぁなchanfanaで XServer APIの OpenAPI 3.0仕様書(YAML/JSON) を独自に定義してOSSとして公開しました!

image.png

これの何が嬉しいのか?

このリポジトリの定義ファイルを使えば、openapi-generatorOrval等のツールを使って、好きな言語の型付きAPIクライアントを1秒で自動生成できます。

# 例: TypeScript用のクライアントを生成する場合
npx @openapitools/openapi-generator-cli generate \
  -i https://xapi.ix.workers.dev/openapi.json \
  -g typescript-fetch \
  -o ./generated-client

これにより、エディタ上で強力な入力補完(オートコンプリート)を効かせながら、爆速でXserverと連携するCLIツールやWebアプリを開発できるようになります。


4. 作ったもの②:XServer 独自管理画面 (xconsole)

APIクライアントができたので、その実践投入として 「XServer オレオレ管理画面(xconsole)」 を開発しました。

オレオレ管理画面 https://github30.github.io/xconsole

💻 GitHub Repository:
https://github.com/GitHub30/xconsole

アーキテクチャ

内部が複雑にならないよう、シンプルなデータフローで構築しています。

xconsoleの主な特徴

  1. 超高速なUIレスポンス: 公式のパネルも使いやすいですが、SPA(Single Page Application)として構築することで、ページ遷移なしでサクサクとデータベースやメールアドレスを管理できます。
  2. 複数サーバーの横断管理: 複数のXserverアカウントやサーバーIDを切り替えて操作できるダッシュボード設計にしています。
  3. 開発者ライクな操作感: sshコマンドを叩かなくてもWeb上でSSH接続ができます。AWS CloudShellやGoogle Cloud Shellと同じ機能です。
  4. その他便利機能: WebMailやWebFTPやCloudShellなどを独自開発。ワンクリックで画面遷移ができるサイドメニュー。どのサイトがアクセスが多いか一目瞭然のドメイン一覧画面。ダークモードと多言語対応

image.png
image.png
アクセスログとエラーログを統合し一つの画面で検索しやすくグラフィカルなモダン焼きな感じです。


5. 実際にAPIを叩いてみる(TypeScript例)

実際に xapi から生成したクライアントを使って、サーバーのディスク使用量を取得する簡単なコード例です。型が効いているので、レスポンスのプロパティを間違える心配がありません。

import { Configuration, ServerApi } from './generated-client';

async function fetchXserverInfo() {
  // 1. APIキーをセットして設定を初期化
  const config = new Configuration({
    accessToken: process.env.XSERVER_API_KEY,
  });

  // 2. クライアントのインスタンス化
  const api = new ServerApi(config);

  try {
    const serverId = 'your-server-id';
    // 3. APIリクエスト(型安全!)
    const response = await api.getServerInfo(serverId);
    
    console.log(`サーバー名: ${response.data.serverName}`);
    console.log(`ディスク使用量: ${response.data.diskUsage} MB`);
    
  } catch (error) {
    console.error("APIリクエストに失敗しました", error);
  }
}

fetchXserverInfo();

これだけで、自作のアプリケーションからXserverの心臓部にアクセスできます。最高ですね。


終わりに

XServer APIの登場により、これまで手動で行っていたインフラ準備が完全にコード化・自動化できるようになりました。今後はこのAPIを活用して、CLIツールからのサーバーデプロイ自動化など、さらに夢が広がりそうです。

今回作成した OpenAPI定義 (xapi) と 独自管理画面 (xconsole) はGitHubで公開しています。
もし「便利そう!」「Xserver最高!」と思っていただけたら、QiitaのLGTMと、GitHubリポジトリへの ⭐️Star をいただけると、今後の開発の励みになります!

最後まで読んでいただき、ありがとうございました!明日の開発も頑張りましょう!

8
8
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
8
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?