🍬

DevcontainerでMisskeyをはじめよう

に公開

Devcontainer

https://github.com/misskey-dev/misskey

MisskeyはDevcontainerに対応しているので、GitHub Codespacesで簡単に開発用のMisskeyを建てることができるのですが、実際に使ってみた記事がほとんどなかったので使いながら書いていこうと思います。

https://github.com/features/codespaces

Codespaces

GitHub Codespacesを始めるのはものすごく簡単で、GitHubにログインした状態で「Code」ボタンをクリックして、Codespacesタブを選択した後にCodespacesに表示されている+ボタンを押すだけです。
+ボタンをクリックするとデフォルト設定ですぐ起動するため、もしオプションの設定を行いたい場合は・・・ボタンから「New With options...」を選択しましょう。

GitHub

また、下記リンクから直接Codespaceを開くこともできます。

  1. https://codespaces.new/misskey-dev/misskey
  2. https://codespaces.new/misskey-dev/misskey/tree/develop
  3. https://codespaces.new/misskey-dev/misskey/pull/16972

https://codespaces.new/https://github.com/codespaces/new/にリダイレクトします。
1はデフォルトのブランチを参照するリンクで、2はdevelopブランチを参照するリンクです。
3はプルリクエストに紐づいたCodespaceを開くことができる特殊なリンクです。

また、これらのリンクには以下のようなクエリパラメータを付与することができます。

パラメータ 説明
hide_repo_select=true リポジトリ選択を省略した画面を表示するためのフラグ。
ref=develop Codespaceを作成する対象のGitの参照位置(ブランチ名)を指定する。
repo=77326607, repo=misskey-dev/misskey Codespaceを作成する対象リポジトリIDまたはリポジトリ名を指定する。
quickstart=1, resume=1 オプション選択を省略した画面を表示するためのフラグ。
devcontainer_path=.devcontainer/devcontainer.json 使用するdevcontainer.json の場所を明示的に指定する。
geo=SoutheastAsia 地理的エリアを指定してCodespaceを作成する。
machine=basicLinux32gb Codespaceで割り当てるマシンの構成(スペック)を指定する。
skip_quickstart=true 不明(quickstart=1, resume=1関連?)。

repo(リポジトリ名)やrefは先に紹介したパスでもクエリパラメータでもどちらでもいいみたいです。

postCreateCommand

Codespaceを開いた後は様々な処理が行われるので、全ての処理が完了するまで待ちましょう。

Codespace

特にpostCreateCommandはこのような画面が延々と続いてしまい、ちゃんと処理が行われているのかよく分からない状態になりますが、シェルスクリプトの処理が終わるまで待つ必要があります。

https://github.com/misskey-dev/misskey/blob/develop/.devcontainer/init.sh

正常に作業が終わったらターミナルのBash画面に切り替えて、以下のコマンドを入力するだけでMisskeyが起動します。

pnpm start

Troubleshooting

もし正常に起動できない場合はこれらの作業を試してみましょう。

1. もう一度init.shを実行する

Codespaceを開いた後は様々な処理が行われるため、一部コマンドが正常に実行できていないことがあります。
そのため下記コマンドでシェルスクリプトをもう一度試してみましょう。

/bin/bash .devcontainer/init.sh

2. URLをCodespaceのものに修正し、PortをPublicにする

クライアントにエラーも何も表示されていない場合はfetchがうまくいっていない可能性があるので、URLをCodespaceのものに修正してPortをPublicにしましょう。

Port

3. Devcontainerの設定ファイルを新しくする。

ちょうど最近Devcontainerの設定ファイルが更新され起動できなくなっていた問題が解消されましたが、今後も何らかのパッケージを追加した後に依存関係を解消できず起動できなくなるかもしれないので、ターミナルやクライアントに表示されたエラーメッセージを確認して.devcontainerディレクトリにあるファイルを見直してみると起動できるようになるかもしれません。

https://github.com/misskey-dev/misskey/pull/16793

Codespaceではdevcontainer_path=.devcontainer/devcontainer.jsonみたいな感じで使用するDevcontainerの設定ファイルを変更することができるので、リポジトリをフォークしてdevcontainer.jsonを編集する時は直接編集するのではなく、ファイルをコピーして使用する設定ファイルを切り替えて挙動を確認するといいでしょう。

Welcome to Misskey!

Misskeyを起動できました。よかったですね。

Misskey

今回はGitHubアカウントがあれば誰でも簡単に試すことができるGitHub Codespacesで紹介してみましたが、OnaDevPodCoderCodeSandbox、VSCodeやCLIでもDevcontainerを使うことはできますので、今回の記事が参考になれば幸いです。

Ref

https://docs.github.com/en/codespaces/developing-in-a-codespace/using-github-codespaces-in-visual-studio-code
https://docs.github.com/en/codespaces/developing-in-a-codespace/using-github-codespaces-with-github-cli
https://docs.github.com/en/codespaces/setting-up-your-project-for-codespaces/setting-up-your-repository/facilitating-quick-creation-and-resumption-of-codespaces

https://github.com/devcontainers/images/tree/main/src/javascript-node
https://github.com/devcontainers/features/tree/main/src/node
https://github.com/devcontainers/templates/tree/main/src/javascript-node-postgres

Discussion