MakeCode ArcadeにはGitHub連携にて作ったプログラムの履歴管理を行う事が出来ます。
しかしこのGitHub連携、いくつかプロジェクトで使ってみたのですがコミット出来なかったりレポジトリが壊れたりが頻発したので現在僕は利用を控えています。
この問題がどのように起こるのかを調べてみたので紹介しようと思います。
GitHub連携の仕方について
まずはGitHub連携の仕方について紹介します。
そもそもこの使い方に問題があるかもしれないです。
※GitHubのアカウントはあらかじめ登録が必要です
プロジェクト用のリポジトリを作る(新規プロジェクト)
プロジェクト用のリポジトリの作り方には2種類あります。
1つ目はプロジェクトが存在していない状況での作り方の紹介です。
MakeCode Arcadeのホームの最初の「マイプロジェクト」に直近のプロジェクトが表示されています。
GitHub連携のプロジェクトを作成する場合にはこのマイプロジェクトの左にある「新しいプロジェクト」ではなく右側にある「読み込む」ボタンをクリックします。
表示された「読み込む」画面で「あなたのGitHubリポジトリ…」ボタンをクリックします。
表示された「GitHubリポジトリをクローンするか作成します」画面で「新規作成…」をクリックします。
表示された「GitHubリポジトリを作成」画面にリポジトリ名、リポジトリの説明、公開種別を指定して「つづける」ボタンをクリックします。
GitHubリポジトリ作成と連携が成功するとファイル保存ボタンが無くなり、GitHub連携用のボタンのみ表示されます。
このボタンからGitHubへのコミットやGitHubの履歴から読み出す事ができるようになります。
プロジェクト用のリポジトリを作る(既存プロジェクト)
次に既にプロジェクトを作っていて、それをGitHub連携したい場合の方法です。
既存プロジェクトを開いている状態で保存ボタンの右にあるGitHub連携用ボタンをクリックします。
表示された「GitHubリポジトリを作成」画面にリポジトリの説明と公開種別を指定して「つづける」ボタンをクリックします。(リポジトリ名にはプロジェクト名がそのまま入ります)
既存プロジェクトのGitHubリポジトリ作成と連携が成功するとファイル保存ボタンが無くなり、GitHub連携用のボタンのみ表示されます。
このボタンからGitHubへのコミットやGitHubの履歴から読み出す事ができるようになります。
GitHub連携で発生する問題
現在確認できているGitHub連携で発生する問題は以下3点です。
プロジェクト名は英数と一部の記号のみ
GitHub連携ではプロジェクト名がそのままGitHubのリポジトリ名になります。
この仕様からプロジェクト名が制限されてしまいます。
そのため、プログラムを編集する画面でプロジェクト名を制限以外の文字を使って変更してコミットしようとすると「おっと、問題が発生しました。もう一度やり直してください。」のエラーが表示されます。(このメッセージではやり直せばできそうなので詳細なエラーメッセージが欲しいとこです)
さらに厄介な事はこの状況になるとリポジトリが壊れてしまうようでプロジェクト名を元に戻しても履歴を復元しても改善が見込めませんでした。(他にバックアップを取っていないと詰みます)
変数名も英数と一部の記号のみ
変数名もプロジェクト名と同じです。
変数名を制限以外の文字を使って変更してコミットしようとすると「おっと、問題が発生しました。もう一度やり直してください。」のエラーが表示されます。
プロジェクト名は注意しがちですが変数名は結構はまるかもしれません。
そしてこの変数名変更によるエラーが発生した場合、プロジェクト名変更の問題同様、リポジトリが壊れるようで復旧不可になります。
イメージ名も英数と一部の記号のみ
ここまでくると予想はつきますね。
最近追加された「アセット」機能で管理しているイメージなどの名前も例外なく制限があります。
イメージ名を制限以外の文字を使って変更してコミットしようとすると「おっと、問題が発生しました。もう一度やり直してください。」のエラーが表示されます。
これもまたイメージ名変更によるエラーが発生した場合、プロジェクト名変更の問題同様、リポジトリが壊れるようで復旧不可になります。
潜在する問題も
ここまで紹介した3点の問題については再現性があり、問題の特定が可能だったものです。
実際にはこれ以外にもリポジトリが壊れる問題が発生しており、再現性が無いため特定が出来ていない潜在的な問題があると思います。(実際に原因不明でリポジトリを削除した事が何度かあります)
まとめ
以上の事から僕はGitHub連携はまだすべてを信用して使える状況ではないと判断し、ローカルへの保存で対応するようにしました。
正直、GitHub連携による履歴管理は強力で今後使っていきたいのですが、少なくともリポジトリが壊れる状況が無くなるまでは控えようと思います。
コメント