コードを接続(/projects/connect/code)では、aiKitのプロジェクトを、すでにお使いのGitリポジトリ(GitHub上のLaravelアプリなど)と、実行場所(ご自身のサーバーまたはaiKitホスティング)につなぎます。その後は、プロジェクトのホスティングタブで、普段の言葉で変更を依頼できます。aiKitのAIはコードのコピーを編集し、プロジェクトのチェックを実行し、差分とプレビューを表示します。チームの誰かが承認した後にのみデプロイされます。すべてのデプロイは番号付きのリリースとして記録され、ワンクリックでロールバックできます。リポジトリが引き続き正となり、サーバーは今までどおりデプロイを行います。
コードを接続 →プロジェクト名を入力してから、リポジトリのアドレス(GitHubの緑色のCodeボタンから取得)と、サイトが動いているブランチ(通常はmain)を貼り付けます。aiKitがリポジトリにアクセスする方法を選びます。GitHubトークン:このリポジトリ専用に、GitHubでContentsを読み取りと書き込みに設定して作成するきめ細かいトークンです。https://のアドレスと一緒に使います。デプロイキー:このリポジトリ専用に作成するキーのペアです。公開鍵を、リポジトリのSettings、Deploy keysに追加し、Allow write accessにチェックを入れます。git@のアドレスと一緒に使います。公開リポジトリ:読み取り専用のため、承認された変更を保存できません。確認のためにのみ使用してください。
トークンまたはキーは、ご自身で貼り付けます。aiKitのエンジンに暗号化して保存され、二度と表示されず、誰にも見えません。ページに表示されるのは指紋だけです。「リポジトリを接続」を押すと、コードがエンジンにコピーされ、プロジェクトの種類(Laravel、JavaScript、静的ファイル)が読み取られます。リポジトリ内の内容は変更されません。
すでにお持ちのプロジェクトも接続できます。ホスティングタブで、オーナーには「コードを接続」が表示されます。
ご自身のサーバー:サイトは今の場所のまま変わりません。サーバーのアドレス、SSHポート(通常は22)、aiKitが使うログイン(セットアップ手順で作成されるaikit)、サイトのフォルダー(Laravel Forgeのサイトなら/home/forge/your-site.com)、サイトが既に使っているデプロイコマンド(通常はbash scripts/deploy.sh)、そしてデプロイ後に応答する必要のあるページを、1行に1つずつ完全なアドレスで入力します。セットアップ手順1で作成したログインの秘密鍵を貼り付けます。保存して接続を確認してください。
aiKitがサーバーに初めて接続すると、サーバーの指紋を表示し、「これはあなたのサーバーですか?」と尋ねます。セットアップ手順6でサーバーが表示した内容と比べてください。両方が一致したときだけ「一致します」を押してください。同じアドレスで別のサーバーが見つかった場合は、以降接続が拒否されます。確認が完了すると、ページにサーバーが現在実行しているバージョンが表示されます。
aiKitホスティング:aiKitがコードをビルドして配信します。最初は無料のアドレスを使えます。サイトやフロントエンドに最適です。
「サーバーのセットアップ」には、8つのコピー&ペーストできる手順が表示されます。お客様の値はすでに入力済みで、それぞれにコピーボタンがあります。手順1と8はお使いのパソコンで、手順2〜7はsudo権限を持つユーザーとしてサーバー上で実行します。
作成されるもの:パスワードもシェルもないログインです(手順2)。その唯一のキーは小さなゲートスクリプトに制限されています(手順3と5)。このスクリプトは2つのコマンドだけを受け付けます。statusは、どのバージョンが動いているか、サイトがメンテナンスモードかどうかを表示します。deployは、特定のコミット1つをデプロイします。デプロイは、サイト専用ユーザーが1つのsudo規則を通して実行し、GitHub上のブランチが正確にそのコミットを指していることを確認してから、既存のデプロイスクリプトをそのまま実行します。手順4では、フォルダーの権限を設定し、ログインがサイトのフォルダーにのみアクセスできるようにします。同じホームフォルダー内の他のサイトや、.envにはアクセスできません。手順7では、これらすべてをテストし、各行で何が表示されるべきかを示します。手順8では、パソコンからログインをテストしてから、そのキーをaiKitに貼り付けます。
サーバーが他社のサイトもホストしている場合、このログインはこの1つのサイトだけをデプロイでき、他には何もできない、という点が重要です。サイトのコードは、お客様がGitHubから直接デプロイするときと同じく、サイト専用ユーザーとして実行されます。そのため、すべての変更は確認され、危険なファイルは保護されます。
上部に4つのタイルがあります。リポジトリ:リポジトリ、ブランチ、最新のコミット、プロジェクトの種類。実行場所:ご自身のサーバー(ログインと最後に応答した時刻付き)またはaiKitホスティング。公開中のリリース:サイトで動いているリリース、作成者、作成日時。ページ:最後のチェックで応答が必要なページのうち、何ページが応答したか。「今すぐチェック」を押すと再度アクセスし、応答しなかったページはその下に、返された内容とともに一覧表示されます。
タイルの下には、変更を依頼(または現在進行中の変更)、リリース、変更履歴、保護されたファイル、そしてオーナーには接続が表示されます。
変更したい内容を入力します。ページ名と、見たい結果を書いてください。そして「変更を実行」を押します。カードは「変更 #1」に変わり、最新のコードの取得、AIが読み取って編集するファイル、そして各チェックの進行状況がリアルタイムで表示されます。AIはファイルを編集するだけで、コマンドは実行しません。プロジェクトごとに同時に進行できる変更は1つで、各依頼はプロジェクトのAI利用上限に含まれます。
完了すると、次の内容が表示されます。依頼内容と依頼者。AIが行ったと述べる内容。各チェックには、合格を示す✓または不合格を示す✗と、その出力が付きます。チェック済みのページには「プレビュー」ボタンが表示されます。ファイルは「追加」「変更」「削除」で示され、該当する場合は「保護」バッジが付きます。そして差分はファイルごとに表示され、追加された行は緑、削除された行は赤で示されます。この差分が、そのままコミットされてデプロイされる内容です。
「承認して公開」(オーナーと作成者)を押すと、誰が依頼し誰が承認したかを記した メッセージ付きで変更がブランチにコミットされ、プッシュされます(強制プッシュは行いません。その間に誰かがプッシュしていた場合は変更が「古い」と表示され、何も公開されません)。続いて公開し、ページを確認します。「破棄」を押すと確認後に変更が取り消されます。何も公開されません。レビュアーはすべてを閲覧できますが、どちらのボタンも押せません。
チェックの合格後の動作は「接続」「チェックとレビュー」の下の設定です。既定は「承認を待つ」です。「自動で公開」を選ぶと、すべてのチェックが合格し保護されたファイルが変更されていない場合にのみ、変更が自動で公開されます。それ以外は引き続き承認を待ちます。
Laravelプロジェクトのチェック項目は次のとおりです。変更された各PHPファイルが構文解析できること(php -l)、各Bladeビューがコンパイルできること(php artisan view:cache)、フロントエンドがビルドできること(npm run build)、そしてアプリがテスト実行でお試し用のSQLiteデータベースを使って起動し、リポジトリからマイグレーションとシードを適用したうえで、テスト実行で「ページ」に登録された各ページが200を返すことです。これらはaiKitのエンジン上で実行され、お使いのサーバーでも本番データベースに対しても実行されません。プロジェクトの.envファイルはコピーも読み取りも行われず、テスト実行には使い捨ての設定が使われます。
失敗したチェックがあると「承認」はできません。オーナーだけは、公開サイトに影響しない理由で失敗したチェックについて、チェックが失敗していても「公開する」にチェックを入れることができます。
「プレビュー」は、テスト実行で変更されたアプリを新しいタブで開きます。テストデータとフォームは無効になっています。最後に使用されてから15分後に停止し、変更が承認または破棄されると終了します。
AIは保護されたファイルには手を加えません。リストには最初から、本番サイトで実行済みのマイグレーション(各公開で実行されるため、本番リリース内のすべてのマイグレーション)、新しいマイグレーション(次回の公開時に本番データベースを変更してしまうため)、公開スクリプト、依存関係ファイル(composer.json、composer.lock、package.json、package-lock.json)が含まれています。各項目には理由が表示されます。オーナーはファイルやフォルダーを理由とともに追加したり(config/** は config 配下のすべてを意味します)、項目を削除したりでき、「保護されたファイルを保存」を押します。
保護されたファイルを意図的に変更するには、オーナーが「このリクエストで保護されたファイルを許可」にチェックを入れます。その後、変更では触れた保護ファイルが表示され、「保護されたファイルへの変更を公開することを承認します」にチェックを入れた上で、オーナーだけが承認できます。何もチェックしない作成者には、保護されたファイルへのアクセス権はありません。
.envファイル、秘密鍵、auth.jsonはより厳格な区分に入ります。読み取りも変更も差分への含有もされることはなく、誰もこれを無効にはできません。
aiKitが初めてお使いのサーバーに接続すると、サーバーが実行している内容が「リリース1(aiKit導入前)」として記録されるため、aiKitの最初の公開もロールバックできます。その後の公開はすべて番号付きのリリースとなり、「変更」(承認された変更。名前をクリックするとその変更が開きます)、「再公開」、「ロールバック」のいずれかになります。各リリースには、コミット、実行者、状態(公開中、以前のもの、公開中だがページに問題あり、公開失敗)、応答したページ数、公開ログが表示されます。aiKitは直近の5件を保存します。
「最新のコードを公開」を押すと、確認後にブランチ上で現在最も新しいものが公開されます。たとえば、誰かが修正を直接プッシュした場合などに使います。
過去のリリースで「これにロールバック」を押すと、そのリリースのファイルと完全に一致する新しいコミットが作成され、プッシュされ、通常の方法で公開された後、ページが確認されます。履歴は書き換えられないため、ロールバック自体もロールバックできます。
各リクエストについて、番号、リクエスト内容、依頼者、承認または破棄した人、日時、現在の状態が表示されます。行をクリックすると、そのチェックと差分を含む変更が開きます。アドレスには ?change=<id> が付くため、そのリンクをチームと共有できます。
もっと手早く、具体的に知りたいときは よくある質問をご覧ください。