前書き#
OneDrive へのファイル転送において、非常に遅い速度や接続の切断などの問題が発生することがあります。これらの問題の根本原因は、OneDrive API の制限がトリガーされたためであり、デフォルトの Rclone の組み込み API は多くの人々が同時に使用しているため、これらの問題がより顕著になります。独自のプライベート API を使用すると、これらの状況を大幅に改善することができます。また、3 か月間の Office 365 E5 デベロッパートライアルバージョンでは、通常の Rclone の使用による自動更新の可能性もあります。API を意図的に刷る方法よりも安全で安定しています。さらに、独自の API は他のアカウントや他のアプリケーションにも使用することができます。
OneDrive API の作成#
クライアント ID の取得#
- Microsoft Azure アプリ登録ページにアクセスします。
新しい登録
をクリックします。
- 任意の名前を入力し、アカウントの種類は最後のオプションを選択し、リダイレクト URL に
http://localhost
を入力します。
- 作成が成功すると、クライアント ID が表示されます。これをコピーして保存してください。
クライアントシークレットの取得#
証明書とシークレット
をクリックし、番号順に従ってパスワードを追加します。
- クライアントシークレットが表示されますので、コピーして保存してください。
API の権限設定#
APIのアクセス許可
をクリックし、図のようにFiles.Read
、Files.ReadWrite
、Files.Read.All
、Files.ReadWrite.All
、offline_access
、User.Read
の権限を追加します。
- 最後に、権限が正しく追加されているか確認してください。
トークンの取得#
- ローカルコンピュータにRclone をダウンロードします。
- Windows を例にとりますが、解凍して
rclone.exe
があるフォルダに移動し、エクスプローラのアドレスバーにcmd
と入力して Enter キーを押すと、現在のパスでコマンドプロンプトが開きます。 - 以下のコマンドの
Client_ID
、Client_secret
を置き換えて実行します。
rclone authorize "onedrive" "Client_ID" "Client_secret"
次に、ブラウザが表示され、アカウントにログインして承認を求められます。承認が完了すると、コマンドプロンプトウィンドウに以下の情報が表示されます。
If your browser doesn't open automatically go to the following link: http://127.0.0.1:53682/auth
Log in and authorize rclone for access
Waiting for code...
Got code
Paste the following into your remote machine --->
{"access_token":"xxxxxxxxxxxxxxxxxx","expiry":"2020-02-22T21:18:39.5036298+08:00"}
<---End paste
{"access_token":"xxxxxxxxxxxxxxxxxx","expiry":"2020-02-22T21:18:39.5036298+08:00"}
はトークン全体(括弧を含む)であり、これをコピーして保存してください。
その他の注意事項#
プライベート API の制限#
独自のプライベート API はアップロードの体験を改善することができますが、頻繁に使用するとアップロードが制限される場合があります。
OneDrive API の制限値はどのくらいですか?#
Microsoft は OneDrive API の制限について明確に説明していませんが、公式ドキュメントの原文は次のようになっています。
使用状況に応じて、しきい値を微調整して、ユーザーが最大限のリソースを使用できるようにし、信頼性とパフォーマンスを低下させることなく提供します。
他のタイプの API 制限の説明を見ることで、総数と頻度の 2 つの制限があることが推測されます。総数は 1 日に呼び出すことができる回数を指し、頻度は 1 分間に呼び出すことができる回数を指します。制限のしきい値に達すると、ファイルのアップロードが制限されます。
公式ドキュメントから正確な数値を得ることはできないため、実際のテストで正確な数値を得ることはできるでしょうか?答えは否です。実際のテストでは、何の規則性も見つかりませんでした。したがって、この制限は動的に調整されるものであり、公式ドキュメントの説明と一致しています。
OneDrive API の制限を回避する方法#
短時間で多くのファイルをアップロードしないでください。ファイルのサイズは関係ありません。重要なのはファイルの数です。
Office 365 E5 の自動更新について#
筆者の数年間の開発者トライアルの使用経験によれば、独自のプライベート API を使用すると自動更新される可能性があります。頻度には基準がなく、多ければ良いわけではありません。意図的に API を刷ることは得策ではありません、特に GitHub Actions を使用する場合は、サーバーが Microsoft Azure であるため、同様の方法で API を無意味に刷ることは非常に簡単に検出されます。