Kinsta APIは、サイトのセキュリティを監視したり、環境情報を取得したりするだけでなく、開発ワークフロー全体の合理化に一役買ってくれます。

Kinsta APIには、ローカル環境のセットアップや最初のデプロイメントから、稼働後のメンテナンスまで、開発プロセス全体を通じて使用できるエンドポイントが多数用意されています。環境の作成、サイトの複製など、必要なタスクのほぼすべてをAPIを通じて実行可能です。

今回は、Kinsta APIのエンドポイントを使用して、サイトを開発する方法をご紹介します。APIを開発ワークフローに統合する方法を学び、開発プロセスをよりスムーズで効率的なものにしましょう。まずは、Kinsta APIについて簡単にご説明します。

Kinsta APIの概要

Kinsta APIRESTful API)を使用すると、Kinstaのプラットフォーム上のサイトや環境とプログラムでやり取りすることができます。WordPressサイトの作成や既存サイトの複製、バックアップの管理など、さまざまなタスクを実行するために使用できるエンドポイントがあります。

その性質と機能により、Kinsta APIは開発プロジェクトに以下のような利点をもたらします。

  • 自動化:一般的なタスクやワークフローを自動化することで、作業時間と手間を削減し、より重要なタスクに時間を割くことができる。
  • 統合:既存のツールやシステムに統合可能。例えば、継続的インテグレーションと継続的デプロイメント(CI/CD)には、Kinsta APIとサードパーティツールの併用が効果的。
  • 柔軟性:サイトと環境をきめ細かく制御することができ、ほとんど制限なく特定の用途に応じて設定をカスタマイズできる。

Kinsta APIで実行可能なタスクの詳細はこちらをご覧ください。以下、具体例を取り上げながら、APIの利点をご紹介していきます。

開発ワークフローにKinsta APIを取り入れるメリット

MyKinsta
MyKinsta

Kinstaの専用コントロールパネル「MyKinsta」には、シンプルで使いやすいUIに簡単に使える機能が多数組み込まれています。しかし、ほとんどの機能はKinsta APIを通じても実行することができ、これには以下のような利点があります。

  1. プロビジョニングの高速化:WordPressサイトと環境の作成をプログラムで実行し、スクリプトにもよるが多くの場合設定にかかる手間を削減できる。
  2. 共同作業の合理化:サイトの複製やステージング環境の作成を迅速に行うことができ、異なるバージョンのサイトで複数の開発者が同時に作業を行う際に便利。
  3. デプロイの自動化:CI/CDパイプラインと統合することで、ステージング環境と本番環境の両方でデプロイプロセスを自動化できる。
  4. 一貫した設定:複数のサイトや環境にまたがって設定を行うことができるため、エラーを減らし、ワークフローの一貫性を高めることができる。

Kinsta APIの利点を押さえたところで、さっそく使用方法を見ていきます。開発に役立つエンドポイントを取り上げ、ワークフローに取り入れる方法をご紹介します。

開発に役立つKinsta APIのエンドポイント

Kinsta APIには、多くのエンドポイントがありますが、特に以下のエンドポイントはサイト開発で活躍します。

開発ワークフローで必要になる主なタスクを網羅するのは上記エンドポイントですが、他にもデータベース、デプロイメント、キャッシュ、コンテンツデリバリネットワーク(CDN)を扱うエンドポイントも存在します。

WordPressサイト開発にKinsta APIを使用する

WordPressを開発する方法は多数ありますが、たとえば代行業者のワークフローを想定すると、以下のようなステップが考えられます。

  1. ローカルの開発環境をセットアップしGitリポジトリを初期化して、立ち上げたサイトで作業する。
  2. テストおよびクライアントへの共有のためMyKinstaでステージング環境を作成する(データベースの作成とドメインの設定を含む)。
  3. ステージング環境からのIPアドレスの制限、バックアップの初期化、PHPバージョンの変更、WordPressテーマやプラグインのインストールなど、技術的な設定を行う。
  4. CDNの作成やキャッシュの実装など、デプロイ前に必要な作業を実行。
  5. ステージング環境から本番環境に変更を反映する。

以下、各手順を掘り下げていきます。

1. ローカル開発環境のセットアップ

ローカル環境はサイト開発の基盤となるため堅牢であることが重要です。セットアップ方法は様々ですが、今回はDevKinstaを使用します。

DevKinstaのスプラッシュスクリーン
DevKinstaのスプラッシュスクリーン

Kinstaのホスティングプランを利用している場合、ローカル環境のセットアップがよりシンプルになります。DevKinstaには、他のツールにはない以下のような機能があります。

また開発者に配慮し、例えばXdebugをワンクリックで有効化したり、設定画面からphp.iniやNginxの設定ファイルを編集したりすることもできます。

DevKinstaでNginx設定ファイルを編集
DevKinstaでNginx設定ファイルを編集

今回はKinsta APIに焦点を当てるため、DevKinstaのセットアップと使用方法は割愛します。DevKinstaでローカル環境を設定する方法はこちらをご覧ください。

2. ローカルとステージング開発環境の管理

(DevKinstaで)ローカル開発環境とある程度までサイトを作成したら、ステージング環境をセットアップします。ここでは、DevKinstaとKinsta APIの機能の両方を使用します。

ステージング環境の作成

まずは、Kinsta APIを使用してステージング環境を作成します。MyKinstaへのリンクを通じて、DevKinsta内で実行することもできます。

DevKinstaでサイト環境を作成
DevKinstaでサイト環境を作成

しかし先に触れた通り、Kinsta APIにはあらゆる用途に役立つエンドポイントがあり、空のサイトとコンテンツを含むサイト、または異なる環境を作成することができます。ここでは既存のデータや設定がなく、壊れる心配のない空のサイトを作成することをお勧めします。

まず適切なエンドポイントを使用して、MyKinstaでWordPressサイトをセットアップします。

const resp = await fetch(
  `https://api.kinsta.com/v2/sites/plain`,
  {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
      Authorization: 'Bearer <YOUR_TOKEN_HERE>'
    },
    body: JSON.stringify({
      company: '54fb80af-576c-4fdc-ba4f-b596c83f15a1',
      display_name: 'First plain site',
      region: 'us-central1'
    })
  }
);

const data = await resp.json();

サイトをセットアップすると、企業IDを渡すことでサイトの一覧を取得することができます。

…
  "company": {
    "sites": [
      {
        "id": "54fb80af-576c-4fdc-ba4f-b596c83f15a1",
        "name": "firstsite",
        "display_name": "First site",
        "status": "live",
        "siteLabels": [
          {
            "id": "54fb80af-576c-4fdc-ba4f-b596c83f15a1",
            "name": "Do not remove"
…

これが完了したら、対象のサイトIDを使用してステージング環境を作成します。

const siteId = 'YOUR_site_id_PARAMETER';
const resp = await fetch(
  `https://api.kinsta.com/v2/sites/${siteId}/environments/plain`,
  {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
      Authorization: 'Bearer <YOUR_TOKEN_HERE>'
    },
    body: JSON.stringify({
      display_name: 'staging',
      is_premium: false
    })
  }
);

const data = await resp.json();

また、ステージング環境用のデータベースを作成することをお勧めします。すぐにローカルのデータベースで上書きされますが、プレースホルダーを初期化しておきます。

…
  {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
      Authorization: 'Bearer <YOUR_TOKEN_HERE>'
    },
    body: JSON.stringify({
      company_id: '54fb80af-576c-4fdc-ba4f-b596c83f15a1',
      location: 'us-central1',
      resource_type: 'db1',
      display_name: 'test-db',
      db_name: 'test-db',
      db_password: 'example-password',
      db_user: 'example-user',
      type: 'postgresql',
      version: '15'
    })
  }
);
…

設定によっては、MyKinstaへのドメインの追加が必要になる場合もありますが、一度ステージング環境をセットアップすると、ローカルの変更をステージング環境に反映することができます。

ローカル環境からステージング環境への変更の同期

変更をステージング環境に反映するための正確な手順は設定とツールによって異なります。以下は一般的な手順です。

  1. ローカルのWordPressサイトに変更を加える
  2. 変更をGitにコミットする
  3. リモート(GitHubやGitLabなど)に変更をプッシュする
  4. DevKinstaまたはKinsta APIを使用して、ステージング環境を最新の変更で更新する

バージョン管理については今回は掘り下げませんが、DevKinstaには、Kinstaのホスティングプラットフォームに変更を簡単に反映する機能が組み込まれています。

DevKinstaのサイト情報画面で変更をKinstaに反映
DevKinstaのサイト情報画面で変更をKinstaに反映

これにより、ホスティングサーバー全体から環境を選択可能です。一度これを行うと、データベースの反映も行うことができます。

DevKinstaからファイル、データベース、またはその両方を反映
DevKinstaからファイル、データベース、またはその両方を反映

MyKinstaのステージング環境を作成すると、APIが有用になります。例えば、スクリプトを作成し最初のバックアップを実行することができます。

  {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
      Authorization: 'Bearer <YOUR_TOKEN_HERE>'
    },
    body: JSON.stringify({
      tag: 'my-awesome-backup'
    })
  }
);

必要に応じて、この段階でテーマやプラグインをインストールすることも可能です。以上でDevKinstaでの操作は終了です。続いて、Kinsta APIを使用してサイトをデプロイします。

3. ステージング環境から本番環境への変更の反映

変更を本番環境に反映する前に、Kinsta APIを使って以下のタスクを実行します。

ステージング環境でサイト全体のテストを実行し、クライアントの承認を得たら、続いてはデプロイです。Kinstaでは、以下2つのデプロイ方法があります。

  1. MyKinstaでステージング環境から本番環境に変更をデプロイ
  2. Kinsta APIを介してプログラムで変更をデプロイ

当然ながら、今回はKinsta APIがテーマであるため、2つ目の方法を使用した自動かつより合理的なワークフローをご紹介します。

APIを使用して変更をデプロイ

Kinsta APIを使って環境を移動する方法はいくつかあり、ステージング環境の変更内容を本番環境に反映したり、複製したりすることができます。

const siteId = 'YOUR_site_id_PARAMETER';
const resp = await fetch(
  `https://api.kinsta.com/v2/sites/${siteId}/environments`,
  {
    method: 'PUT',
    headers: {
      'Content-Type': 'application/json',
      Authorization: 'Bearer <YOUR_TOKEN_HERE>'
    },
    body: JSON.stringify({
      source_env_id: '54fb80af-576c-4fdc-ba4f-b596c83f15a1',
      target_env_id: '54fb80af-576c-4fdc-ba4f-b596c83f15a1',
      push_db: true,
      push_files: true,
      run_search_and_replace: true
    })
  }
);

const data = await resp.json();

いずれにしても、万が一の状況に備えて、実行するすべての環境をバックアップしておきましょう。

Kinsta APIのベストプラクティスとヒント

Kinsta APIを使用すれば、サイトや環境をプログラムで変更することができます。しかし裏を返せば、何かしらの問題が発生した場合は、自分で修正を行わなければならないため慎重に使用してください。

開発ワークフローにKinsta APIを取り入れる際のヒントとベストプラクティスをご紹介します。

  • API認証情報を保護する─APIトークンを誰かと共有したり、リモートのGitプッシュに含めないこと。環境変数などを使用して認証情報を保存して、アクセスしてください。Kinsta APIには、認証エンドポイントもあります。
  • 最小限のアクセス権を付与する─MyKinstaアカウントおよびAPIへのアクセスを適切に管理すること。アクセスを必要とするメンバーにのみアクセス権を付与してください。またアクセス許可は定期的に見直し、適宜変更を加えましょう。
  • エラー処理を実施する─APIリクエストを行う際には、エラーと例外処理を慎重に行うこと。ログエンドポイントは、問題を素早く特定し修正するのに有用です。
  • APIを最新の状態に保つ─Kinsta APIの変更と更新は継続的に行われていますが、利用者自身でも確認することが大切です。変更や更新等の情報は、最近の機能で随時ご紹介しますが、既存のドキュメントに目を通して変更などを確認することもお勧めします。

これらのヒントは、チーム内でのさらなる共同作業やプロセスの自動化において特に重要になります。

開発ワークフローの自動化

Kinsta APIを使用する最大のメリットの1つは、開発ワークフローの繰り返し行うタスクを自動化できる点にあります。スクリプトを書いたり、他のツールと統合したりすることでプロセスを合理化し、作業時間を短縮することができます。

Kinsta APIをCI/CDパイプラインを統合すると、ステージング環境から本番環境への変更の反映を自動化でき、ワークフローを最大限効率化することができます(ただし、これは複雑かつプロセスがプロジェクトごとに異なることも)。例えば、適切なスクリプトを書くワークフローは、以下のようになります。

  1. Git内の特定のブランチ(releaseブランチなど)に変更がプッシュされた際のトリガーを実装する
  2. APIを使用して本番環境の手動バックアップを作成する
  3. 関連するエンドポイントを使用して、本番環境をステージング環境に置き換える
  4. 必要なデプロイ後のタスク(キャッシュのクリアやデータベースの移行など)を実行する

このように、Kinsta APIを活用することで、ワークフローのほぼすべての側面を自動化し、一貫性と信頼性に優れたデプロイメントを実現することができます。他にも、以下のようなことが実行可能です。

  • 重要な反映を行う前にバックアップを作成する─おそらくデプロイメントのワークフローの大部分を占め、プロセスの各段階のスナップショットを取得できる。
  • サイトパフォーマンスを監視し、通知を受け取る─MyKinstaのAPMツールは、重要な指標の変化を監視する。Kinsta APIを使用すると、特定の指標を監視するためのエンドポイントを使用すると、MyKinstaで通知を設定することができる。
  • サイトのユーザーを頻繁に見直す─サイトIDに基づいてユーザーの一覧を取得するシンプルなエンドポイントを活用し、重要なステップが実行される際に表示されるように設定すると、サイトの保護につながる。

Kinsta APIは、プログラムであらゆるタスクを管理することができる強力なツールです。また、スムーズな開発ワークフローを確立するために、これらの指標や設定を表示する独自のダッシュボードを構築することもできます。

まとめ

開発ワークフローを効率化するには、Kinsta APIを利用しない手はありません。サイト、環境、バックアップなどを管理するための様々なエンドポイントを使用して繰り返しのタスクを自動化し、共同作業を合理化して、効率的に変更をデプロイしましょう。

さらに、Kinsta APIを開発プロセスに統合することで、プロジェクトごとにプロセスをカスタマイズ可能です。これにより、質の高いウェブサイトをこれまで以上に迅速に構築することができます。

Kinsta APIについてご質問がありましたら、以下のコメント欄でお知らせください。

Jeremy Holcombe Kinsta

Kinstaのコンテンツ&マーケティングエディター、WordPress開発者、コンテンツライター。WordPress以外の趣味は、ビーチでのんびりすること、ゴルフ、映画。高身長が特徴。