MetaMask の最新バージョンは、公式 Web サイトで見つけることができます。 MetaMask の使用に関するヘルプについては、ユーザー サポート サイトをご覧ください。
一般的な質問、機能リクエスト、開発者への質問については、コミュニティ フォーラムにアクセスしてください。
MetaMask は、Firefox、Google Chrome、および Chromium ベースのブラウザをサポートします。利用可能なブラウザの最新バージョンを使用することをお勧めします。
最新のニュースについては、X をフォローしてください。
MetaMask 互換アプリケーションの開発方法については、開発者ドキュメントをご覧ください。
MetaMask コードベースに貢献する方法については、貢献者ドキュメントをご覧ください。
MetaMask Extension プロジェクト自体に貢献する方法については、Extension Docs を参照してください。
ローカル マシン上に構築する代わりに、GitHub コードスペースを使用して 5 分以内に開発環境を立ち上げて実行できる新しいオプションがあります。毎月の無料割り当てには制限があり、それを超えると GitHub によって課金が開始されることに注意してください。
注: 実行にかかった時間と使用したストレージの両方に対して料金が請求されます。
上のボタンをクリックして始めてください
新しいブラウザー タブが開き、Visual Studio Code のリモート バージョンが表示されます (読み込みには数分かかります)。
noVNC を使用してブラウザ内で「シンプル ブラウザ」が開きます -- [接続] をクリックします
「Simple Browser」タブの右上にあるボタンをクリックして、独自のタブで noVNC ウィンドウを開きます。
左側の noVNC サイドバーを開き、歯車アイコンをクリックして、スケーリング モードをリモート サイズ変更に変更します。
オプションの手順:
最初の起動時は、スクリプトが完了するまでさらに約 20 秒待ちます
noVNC デスクトップを右クリックして、MetaMask がプリインストールされた Chrome または Firefox を起動します。
いくつかのコードを変更し、 yarn start
を実行して開発モードでビルドします。
1 ~ 2 分後にビルドが完了し、noVNC デスクトップに変更が表示されます。
実行にかかった時間と使用したストレージの両方に対して料金が請求されます
コードスペースは非アクティブ状態が 30 分間続くと一時停止し、非アクティブ状態が 30 日間続くと自動削除されます。
ここでコードスペースを管理できます: https://github.com/codespaces
30 分のタイムアウトになる前に手動で一時停止することもできます。
いくつかのアイドル状態のコードスペースが数日間放置されている場合、すぐにストレージ クォータが不足してしまう可能性があります。もう使用する予定のないものは削除し、長期的には 1 つまたは 2 つだけを保持する必要があります。新しいコードスペースを作成して古いコードスペースを削除する代わりに、古いコードスペースを再利用してブランチを切り替えることも可能です。
MetaMask 内部開発者ではない場合、またはフォークで開発している場合、デフォルトの Infura キーは無料プランになり、1 秒あたりのリクエストは非常に制限されます。独自の Infura キーを使用する場合は、「ローカル マシンでの構築」セクションの.metamaskrc
およびINFURA_PROJECT_ID
手順に従ってください。
Node.js バージョン 20 をインストールする
nvm を使用している場合 (推奨) nvm use
を実行すると、適切なノードのバージョンが自動的に選択されます。
メタマスク拡張プロジェクト内でコマンドcorepack enable
を実行して、Corepack を有効にします。 Corepack は、Node.js にデフォルトで含まれるユーティリティです。プロジェクトの package.json ファイルのpackageManager
プロパティで指定されたバージョンを使用して、Yarn をプロジェクトごとに管理します。 Yarn の最新リリースは、グローバルまたは npm 経由でインストールすることを目的としていないことに注意してください。
ルート内で.metamaskrc.dist
複製し、 cp .metamaskrc{.dist,}
を実行して名前を.metamaskrc
に変更します。
Infura アカウントをお持ちでない場合は、Infura Web サイトで無料でアカウントを作成できます。
INFURA_PROJECT_ID
値を自分の個人用 Infura API キーに置き換えます。
MetaMetrics をデバッグする場合は、 SEGMENT_WRITE_KEY
セグメント書き込みキーの値を追加する必要があります。「MetaMask での開発 - セグメント」を参照してください。
未処理の例外をデバッグする場合は、 SENTRY_DSN
Sentry Dsn の値を追加する必要があります。MetaMask での開発 - Sentry を参照してください。
必要に応じて、 PASSWORD
値を開発ウォレットのパスワードに置き換えて、アプリを開くたびにパスワードを入力する必要がなくなります。
依存関係をインストールするには、 yarn install
実行します。
yarn dist
(Chromium ベースのブラウザの場合) またはyarn dist:mv2
(Firefox の場合) を使用して、プロジェクトを./dist/
フォルダーにビルドします。
必要に応じて、開発ビルドを作成するために、代わりにyarn start
(Chromiumベースのブラウザの場合)またはyarn start:mv2
(Firefoxの場合)を実行できます。
非圧縮ビルドは/dist
にあり、圧縮ビルドはビルド後に/builds
にあります。
ビルド システムの使用方法については、ビルド システムの Readme を参照してください。
次の手順に従って、ローカル ビルドが正しく実行されることを確認します。
Chromeにカスタムビルドを追加する方法
Firefox にカスタム ビルドを追加する方法
コードをコミットする前に、共有コード品質フィットネス機能から迅速なフィードバックを取得するには、Husky を使用して git フックをインストールします。
$ yarn githooks:install
詳細については、テストに関するドキュメントをご覧ください。
VS Code を使用していて、「コマンドが見つかりません」エラーが原因でソース管理サイドバーからコミットできない場合は、Husky ドキュメントの次の手順を試してください。
開発ビルドを開始するには (ログ記録やファイル監視など)、 yarn start
を実行します。
TEST_SRP='
およびPASSWORD='
を.metamaskrc
ファイルに追加することで、プリロードされたウォレットの状態で開発ビルドを開始できます。次に、次のオプションがあります。
yarn start:with-state
を実行して、デフォルトのフィクスチャ・フラグを使用してウォレットを開始します。
yarn start:with-state --help
を実行して、利用可能なフィクスチャ フラグのリストを確認します。
yarn start:with-state --withAccounts=100
のように、 yarn start:with-state --FIXTURE_NAME=VALUE
実行して、カスタム・フィクスチャ・フラグを使用してウォレットを開始します。必要なだけフラグを渡すことができます。残りのフィクスチャはデフォルト値を使用します。
また、 yarn webpack
コマンドまたはyarn webpack --watch
使用して開発ビルドを開始することもできます。これは、はるかに高速な代替ビルド システムを使用しますが、まだ本番環境には対応していません。詳細については、Webpack README を参照してください。
React DevTools を開始するには、ブラウザにインストールされた開発ビルドでyarn devtools:react
実行します。これは別のウィンドウで開きます。ブラウザ拡張機能は必要ありません。
Redux DevTools 拡張機能を開始するには:
パッケージremotedev-server
グローバルにインストールします(例: yarn global add remotedev-server
)。
Redux Devtools 拡張機能をインストールします。
Redux DevTools 拡張機能を開き、デフォルトのサーバー構成 (ホストlocalhost
、ポート8000
、安全な接続チェックボックスがオフ) を使用して、リモート DevTools 設定の「カスタム (ローカル) サーバーを使用する」チェックボックスをオンにします。
次に、ブラウザに開発ビルドをインストールしてコマンドyarn devtools:redux
実行します。これにより、Redux DevTools 拡張機能を使用して MetaMask を検査できるようになります。
開発ビルドを作成し、これらのツールの両方を同時に実行するには、 yarn start:dev
実行します。
このテスト サイトは、さまざまなユーザー フローを実行するために使用できます。
単体テストと、 yarn test
を使用したリンターを実行します。単体テストのみを実行するには、 yarn test:unit
を実行します。
yarn lint
を使用してリンターを単独で実行することも、 yarn lint:fix
を使用して一部の lint の問題を自動的に修正することもできます。また、これら 2 つのコマンドをローカルの変更に対してのみ実行してyarn lint:changed
とyarn lint:changed:fix
それぞれ実行して時間を節約することもできます。
Node.js を使用した Jest デバッグ ガイドについては、docs/tests/jest.md を参照してください。
e2e テスト スイートは、Firefox または Chrome で実行できます。 e2e テストを開始する方法は次のとおりです。
e2e テストを実行する前に、 yarn install
実行して依存関係をダウンロードしていることを確認してください。次に、テスト ビルドが必要になります。 3 つのオプションがあります。
yarn download-builds:test
使用して、Chrome および Firefox のテスト ビルドを./dist/
フォルダーにすばやくダウンロードして解凍します。この方法は標準的なテストに高速で便利です。
カスタム テスト ビルドを作成します。さまざまなビルド タイプに対してテストするには、 yarn build:test
を使用します。このコマンドを使用すると、次のようなさまざまなタイプのテスト ビルドを生成できます。
yarn build:test
yarn build:test:flask
yarn build:test:mmi
ビルドの mmi
yarn build:test:mv2
ライブ変更を使用してテスト ビルドを開始します。yarn yarn start:test
は開発に特に役立ちます。変更時にアプリケーション コードを自動的に再コンパイルするテスト ビルドを開始します。このオプションは、反復的なテストと開発に最適です。このコマンドを使用すると、次のようなさまざまなタイプのテスト ビルドを生成することもできます。
yarn start:test
yarn start:test:flask
yarn start:test:mv2
注: yarn start:test
コマンド (testDev ビルド タイプを開始する) では、ビルド システムとアプリケーションの両方で LavaMoat が無効になっており、開発中に効率化されたテスト エクスペリエンスを提供します。一方、 yarn build:test
により、LavaMoat はビルド システムとアプリケーションの両方でセキュリティを強化し、運用環境をより厳密にミラーリングできます。
テスト ビルドの準備ができたら、e2e テスト用のブラウザを選択します。
Firefox の場合は、 yarn test:e2e:firefox
を実行します。
注: Linux 上で Firefox をスナップ パッケージとして実行している場合は、適切な環境変数を必ず有効にしてください: FIREFOX_SNAP=true yarn test:e2e:firefox
Chrome の場合は、 yarn test:e2e:chrome
を実行します。
これらのスクリプトは、デバッグ用の追加オプションをサポートしています。 --help
使用すると、利用可能なすべてのオプションが表示されます。
単一の e2e テストはyarn test:e2e:single test/e2e/tests/TEST_NAME.spec.js
と以下のオプションを使用して実行できます。
--browser 使用するブラウザを設定します。 「chrome」、「firefox」、「all」を指定するか、デフォルトで「all」で実行するように未設定のままにしておきます。 [文字列] [デフォルト: 'all'] --debug デバッグ モードでテストを実行し、各ドライバーの操作をログに記録します [ブール値] [デフォルト: true] --retries 失敗時にテストを再試行する回数を設定します。 [数値] [デフォルト: 0] --leave-running テストが失敗した後も、テストで使用された他のすべてのもの (ガナッシュ、テスト dapp など) とともにブラウザを実行したままにします [ブール値] [デフォルト: false] -- update-snapshot E2E テスト スナップショットを更新 [エイリアス: -u] [ブール値] [デフォルト: false]
たとえば、デバッグログを使用し、失敗時にブラウザを開いたままにするように設定して、Chrome を使用してaccount-details
テストを実行するには、次のように使用します。yarn yarn test:e2e:single test/e2e/tests/account-menu/account-details.spec.js --browser=chrome --leave-running
新しい機能を開発するとき、私たちは機能フラグをよく使用します。これらの機能を一般公開 (GA) する準備をする際、機能フラグを削除します。既存の機能フラグは.metamaskrc.dist
ファイルにリストされています。特定の機能フラグを有効にして e2e テストを実行するには、まずその機能フラグを有効にしてテスト ビルドを生成する必要があります。これを実現するには 2 つの方法があります。
ローカル構成で機能フラグを有効にするには、まず、 .metamaskrc.dist
からコピーされた.metamaskrc
ファイルがあることを確認する必要があります。次に、ローカルの.metamaskrc
ファイル内で、目的の機能フラグを true に設定できます。これに続いて、機能フラグを有効にしたテスト ビルドは、 yarn build:test
実行することで作成できます。
あるいは、テスト ビルドの作成中に機能フラグを直接有効にするために、コマンド ラインを介してパラメーターを true として渡すこともできます。たとえば、 MULTICHAIN 機能フラグをアクティブにするにはMULTICHAIN=1 yarn build:test
またはMULTICHAIN=1 yarn start:test
を実行します。この方法を使用すると、 .metamaskrc
ファイルを変更せずに機能フラグを迅速に調整できます。
目的の機能フラグを有効にしてテスト ビルドを作成したら、通常どおりテストの実行に進みます。これで、特定の機能フラグがアクティブ化された拡張機能のバージョンに対してテストが実行されます。例: yarn test:e2e:single test/e2e/tests/account-menu/account-details.spec.js --browser=chrome
このアプローチにより、e2e テストが今後の GA 機能のユーザー エクスペリエンスを正確に反映するようになります。
ビルド タイプが異なれば、e2e テスト セットも異なります。これらを実行するには、 package.json
ファイルを調べます。次のものが見つかります:
"test:e2e:chrome:mmi": "SELENIUM_BROWSER=chrome ノード テスト/e2e/run-all.js --mmi", "test:e2e:chrome:snaps": "SELENIUM_BROWSER=chrome ノード テスト/e2e/run- all.js --snaps", "test:e2e:firefox": "SELENIUM_BROWSER=firefox ノード test/e2e/run-all.js",
MMI ビルドで e2e を実行する場合は、2 つの別々のテスト セットがあることを知っておく必要があります。
MMI は MetaMask の e2e テストのサブセットを実行します。これを容易にするために、このビルド タイプに適用されないテストの名前に@no-mmi
タグを追加しました。
MMI は、別の特定の e2e レガシー テスト セットを実行します。これについては、こちらで詳しく説明されています。
依存関係を変更するたびに ( package.json
またはyarn.lock
での追加、削除、または更新)、さまざまなファイルを最新の状態に保つ必要があります。
yarn.lock
:
変更後にyarn
再度実行して、 yarn.lock
適切に更新されていることを確認します。
ロックファイルから重複した依存関係を削除するには、 yarn lint:lockfile:dedupe:fix
を実行します。
package.json
のallow-scripts
設定
yarn allow-scripts auto
実行して、 allow-scripts
構成を自動的に更新します。この構成は、パッケージのインストール/ポストインストール スクリプトの実行を許可するかどうかを決定します。新しいパッケージをそれぞれ確認して、インストール スクリプトを実行する必要があるかどうかを判断し、必要に応じてテストします。
残念ながら、 yarn allow-scripts auto
プラットフォームが異なると一貫性のない動作をします。 macOS および Windows ユーザーには、オプションの依存関係に関連する無関係な変更が表示される場合があります。
LavaMoat ポリシー ファイル
LavaMoat ポリシー ファイルには 2 つのセットがあります。
ポリシー ファイルを再生成するたびに、変更内容を確認して、各パッケージに付与されたアクセスが適切であるかどうかを判断してください。
残念ながら、 yarn lavamoat:auto
プラットフォームが異なると一貫性のない動作をします。 macOS および Windows ユーザーには、オプションの依存関係に関連する無関係な変更が表示される場合があります。
ポリシー ファイルを再生成した後もポリシー エラーが発生し続ける場合は、クリーン インストール後に次の手順を実行してポリシーを再生成してみてください。
いかなる種類の動的インポートまたはグローバルの動的使用も、LavaMoat の静的分析を回避できる可能性があることに注意してください。問題が発生した場合は、LavaMoat のドキュメントを参照するか、助けを求めてください。
これは、ビルド システム自体によって使用される依存関係が変更されるたびに再生成する必要があります。
これらは、Web アプリの実稼働依存関係が変更されるたびに再生成する必要があります。
本番環境の LavaMoat ポリシー ファイル ( lavamoat/browserify/*/policy.json
)。これは、 yarn lavamoat:webapp:auto
使用して再生成されます。使用方法に--help
追加します。
ビルド システム LavaMoat ポリシー ファイル ( lavamoat/build-system/policy.json
)。これは、 yarn lavamoat:build:auto
使用して再生成されます。
rm -rf node_modules/ && yarn && yarn lavamoat:auto
あなたが MetaMask チームのメンバーで、PR がリポジトリ ブランチ上にある場合は、ボット コマンド@metamaskbot update-policies
使用して、MetaMask ボットにポリシーを自動的に更新するように依頼できます。
PR がフォークからのものである場合は、MetaMask チームのメンバーにポリシー ファイルの更新を手伝ってもらうことができます。
手動更新手順:プログラムでは、 yarn lavamoat:auto
を実行してこれらのファイルを更新しますが、詳細には問題がある可能性があります。
属性ファイル
あなたが MetaMask チームのメンバーであり、PR がリポジトリ ブランチ上にある場合は、ボット コマンド@metamaskbot update-attributions
使用して、MetaMask ボットにアトリビューション ファイルを自動的に更新するように依頼できます。
手動更新: yarn attributions:generate
実行します。
2022 年夏の時点でのコントローラー階層と依存関係のビジュアル。
コードベース全体のビジュアル。
MetaMask に新しい翻訳を追加する方法
出版ガイド
TREZORエミュレータの使い方
MetaMask での開発
このリポジトリの開発の視覚化を生成する方法
新しい確認を追加する方法
ブラウザのサポートガイドライン
MetaMask Snap を使用して MetaMask の機能を拡張します。
新しいネットワークを追加して切り替えるようにユーザーに促します。
dapp が MetaMask に接続するときに表示されるロゴを変更します。