DevcontainerでMisskeyをはじめよう
Devcontainer
MisskeyはDevcontainerに対応しているので、GitHub Codespacesで簡単に開発用のMisskeyを建てることができるのですが、実際に使ってみた記事がほとんどなかったので使いながら書いていこうと思います。
Codespaces
GitHub Codespacesを始めるのはものすごく簡単で、GitHubにログインした状態で「Code」ボタンをクリックして、Codespacesタブを選択した後にCodespacesに表示されている+ボタンを押すだけです。
+ボタンをクリックするとデフォルト設定ですぐ起動するため、もしオプションの設定を行いたい場合は・・・ボタンから「New With options...」を選択しましょう。

また、下記リンクから直接Codespaceを開くこともできます。
- https://codespaces.new/misskey-dev/misskey
- https://codespaces.new/misskey-dev/misskey/tree/develop
- 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を開いた後は様々な処理が行われるので、全ての処理が完了するまで待ちましょう。

特にpostCreateCommandはこのような画面が延々と続いてしまい、ちゃんと処理が行われているのかよく分からない状態になりますが、シェルスクリプトの処理が終わるまで待つ必要があります。
正常に作業が終わったらターミナルのBash画面に切り替えて、以下のコマンドを入力するだけでMisskeyが起動します。
pnpm start
Troubleshooting
もし正常に起動できない場合はこれらの作業を試してみましょう。
1. もう一度init.shを実行する
Codespaceを開いた後は様々な処理が行われるため、一部コマンドが正常に実行できていないことがあります。
そのため下記コマンドでシェルスクリプトをもう一度試してみましょう。
/bin/bash .devcontainer/init.sh
2. URLをCodespaceのものに修正し、PortをPublicにする
クライアントにエラーも何も表示されていない場合はfetchがうまくいっていない可能性があるので、URLをCodespaceのものに修正してPortをPublicにしましょう。

3. Devcontainerの設定ファイルを新しくする。
ちょうど最近Devcontainerの設定ファイルが更新され起動できなくなっていた問題が解消されましたが、今後も何らかのパッケージを追加した後に依存関係を解消できず起動できなくなるかもしれないので、ターミナルやクライアントに表示されたエラーメッセージを確認して.devcontainerディレクトリにあるファイルを見直してみると起動できるようになるかもしれません。
Codespaceではdevcontainer_path=.devcontainer/devcontainer.jsonみたいな感じで使用するDevcontainerの設定ファイルを変更することができるので、リポジトリをフォークしてdevcontainer.jsonを編集する時は直接編集するのではなく、ファイルをコピーして使用する設定ファイルを切り替えて挙動を確認するといいでしょう。
Welcome to Misskey!
Misskeyを起動できました。よかったですね。

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