クロスプラットフォーム対応 CLI for Microsoft 365 の使い始め
By Mirko Peters ·
おかえりなさい、リスナーの皆さんと読者の皆さん!Microsoft 365 管理センターで、延々と続くメニューを繰り返しクリックして、サイトのプロビジョニングやユーザー プロパティの更新といった反復的な管理作業の山に埋もれてしまったことがあるなら、このガイドはまさにあなたのためのものです…
Automatically translated with AI from the original post. Read the English original
おかえりなさい、リスナーの皆さんと読者の皆さん!Microsoft 365 管理センターで、延々と続くメニューを繰り返しクリックして、サイトのプロビジョニングやユーザー プロパティの更新といった反復的な管理作業の山に埋もれてしまったことがあるなら、このガイドはまさにあなたのためのものです。現代のクラウド管理には、スピード、拡張性、そして正確さが求められます。大規模なエンタープライズ環境の管理に、本物のシステム管理者や開発者がグラフィカル ユーザー インターフェイスだけに頼っていた時代は過ぎました。今日では、コマンドラインの力を活用するのが当たり前になっています。この包括的な詳細解説では、クロスプラットフォーム対応の CLI for Microsoft 365 について見ていきます。これは、時間を取り戻し、ワークフローを自動化したいと考える IT プロ、開発者、コンサルタントにとって、急速に秘密兵器となりつつあるツールです。
このブログ記事は、最新のポッドキャスト エピソード Automate Microsoft 365 with the Cross-Platform CLI の補足資料です。以下で解説する内容が気に入ったら、ぜひそのエピソードを通して聴いて、追加のヒントやコツ、そして雑談もお楽しみください!
クロスプラットフォーム対応 CLI for Microsoft 365 の概要
インストールの手順や認証の手順に入る前に、CLI for Microsoft 365 とは何か、そして管理者のツールボックスに常備すべき理由を確認しておきましょう。CLI for Microsoft 365 は、その核心において、Microsoft 365 テナント内のさまざまな設定やデータを管理できる、汎用性の高いオープンソースのコマンドライン インターフェイスです。その強みは名前そのものに表れています。クロスプラットフォーム対応なのです。メインのワークステーションで Windows を使う場合も、日々の開発で macOS を愛用する場合も、サーバーやコンテナーで軽量な Linux ディストリビューションを動かす場合も、CLI for Microsoft 365 はどの環境でも一貫して動作します。
従来、Microsoft の管理者は複数の異なるツールを使い分ける必要がありました。Azure Active Directory のタスクには Azure PowerShell を使い、SharePoint Online のプロビジョニングには SharePoint PnP PowerShell を使い、その他のサービスには、まったく別の Graph API 呼び出しやカスタム スクリプトを使うこともありました。CLI for Microsoft 365 は、統一された構文を提供することで、こうした隔たりを埋めます。内部では Microsoft Graph API を利用し、複雑な REST リクエストを、直感的で人が読みやすいコマンドにまとめています。さらに、Node.js ベースのオープンソースであるため、新機能、バグ修正、拡張機能を継続的に提供する活発なコミュニティがあります。SharePoint サイト、Microsoft Teams、Azure AD ユーザー、Power Platform 環境のいずれを管理する場合でも、このツールならターミナル内で、すべてを一つの画面にまとめて扱えます。
Windows、macOS、Linux への CLI のインストール
お使いのオペレーティング システムにかかわらず、CLI を使い始めるのは驚くほど簡単です。このツールは Node.js を使って構築されているため、主な前提条件は、システムに最新で安定したバージョンの Node.js がインストールされていることです。互換性と安定性を最大限に確保するために、Node.js の LTS(長期サポート)版をインストールすることをお勧めします。
Windows へのインストール
Windows をお使いの場合、選択肢はいくつかあり、どれも優れています。Windows PowerShell、PowerShell 7、または Windows コマンド プロンプトを使用できます。Node.js をインストールしたら、お好みのターミナルを管理者権限で開き、次のコマンドを実行します。
npm install -g @pnp/cli-microsoft365
-g フラグを指定すると、CLI がシステムにグローバルにインストールされ、ターミナル内のどのディレクトリからでも m365 コマンドを利用できるようになります。インストール プロセスでは、必要なパッケージのダウンロード、必要なバイナリのコンパイル、コマンド パスの登録が行われます。完了したら、m365 と入力して Enter キーを押すだけでインストールを確認できます。コアのヘルプ メニューとバージョン情報が表示されるはずです。
macOS へのインストール
Mac でも操作感は同じです。ターミナルや iTerm2 などの代替ターミナルエミュレーターを利用できます。ターミナルアプリケーションを開き、Node.js がインストールされていることを確認してください。多くの Mac 開発者は、Node 環境の管理に Homebrew を使用しています。次のグローバルインストールコマンドを実行します:
npm install -g @pnp/cli-microsoft365
システムの権限や Node.js の元のインストール方法によっては、権限エラーが発生することがあります。その場合は、Node.js のインストールパスを再設定して権限の問題を回避するか、最後の手段としてコマンドの先頭に sudo を付けることができます(ただし、Node の権限を適切に管理することが常にベストプラクティスです)。インストールが正常に完了したら、m365 --version と入力して、最新リリースが実行されていることを確認してください。
Linux へのインストール
Ubuntu、Fedora、Debian などの Linux ディストリビューションを使用している方にとっても、手順は同じくらいシンプルです。Node.js と npm がパッケージマネージャーまたは Node Version Manager(NVM)でインストールされていることを前提に、次のコマンドを実行します:
sudo npm install -g @pnp/cli-microsoft365
Linux 環境では、CI/CD パイプライン、Docker コンテナー、Azure DevOps エージェント内で Microsoft 365 向け CLI が頻繁に使われます。軽量でリソース消費が少ないため、フル機能のグラフィカル管理ツールを実行するのが現実的でない、または望ましくないヘッドレスの自動化サーバーに最適なパートナーです。
成功に向けた環境の設定
CLI をマシンにインストールできたら、管理作業をできるだけスムーズかつ安全に進められるように、環境を少し調整しましょう。Microsoft 365 向け CLI は標準設定のままでも動作するように設計されていますが、数分かけて環境設定を行っておくと、後のトラブルシューティングに何時間も費やさずに済みます。
まず、出力形式について説明します。既定では、CLI は多くの場合、見やすい JSON 形式でデータを出力します。これは、データを別のスクリプトに渡したり、jq などのツールで解析したり、自動化パイプラインを構築したりする場合には非常に便利です。ただし、ターミナルの前に座って、ユーザーやサイトの一覧をすばやく確認したい場合は、JSON では情報量が多すぎると感じることがあります。config コマンドを使えば、既定の出力形式を変更できます。たとえば、対話形式の作業中に読みやすくするため、出力をテキスト形式に設定できます:
m365 config set --key output --value text
さらに、自動補完機能も活用してください。CLI は PowerShell、Bash、Zsh で自動補完をサポートしています。Tab キーによる補完を設定すると、作業効率が格段に上がります。たとえば m365 sp と入力して Tab キーを押すと、利用可能な SharePoint 関連のコマンドを順に表示できます。お使いのシェルで自動補完を有効にするには、公式ドキュメントに記載されている設定コマンドを実行します。このコマンドにより、必要な補完スクリプトがプロファイルに追加されます。
セキュリティも、環境設定における重要な要素です。CLI はテナントに対して大きな管理権限を行使できるため、設定ファイルやトークンの保存場所に注意する必要があります。このツールは認証トークンをローカルにキャッシュするため、新しいターミナルウィンドウを開くたびにサインインし直す必要はありません。ローカルマシンのディスクが暗号化されていること(Windows では BitLocker、macOS では FileVault)を確認し、共有端末や一時的に使用する端末で作業する場合は、サインアウトするか、セッションのキャッシュを消去する習慣を付けてください。
Microsoft 365 テナントへの認証
CLI のインストールと環境設定が済んだら、次は認証です。このコマンドラインツールを、企業の Microsoft 365 テナントに安全に接続するにはどうすればよいでしょうか。Microsoft 365 向け CLI は、対話形式の管理セッションと、無人で実行される自動化スクリプトの両方に対応するため、複数の認証方法をサポートしています。
対話形式のサインイン
日常的な対話形式での作業では、標準の login コマンドを使って認証するのが、最も簡単で一般的な方法です:
m365 login
このコマンドを実行すると、CLI for Microsoft 365 からWebブラウザーを開き、一意のデバイスコードが表示された特定のURLに移動するよう指示が出ます。これは標準的なOAuthデバイスコードフローです。ブラウザーにコードを入力すると、会社のMicrosoft 365アカウントでのサインインを求められます。組織の条件付きアクセス ポリシーで必要とされる多要素認証(MFA)を完了し、要求されたスコープに基づいて、CLIがユーザーに代わって操作することを許可します。
認証が成功すると、ターミナルにログインが確認され、サインインしているユーザープリンシパル名と接続先のテナントIDが表示されます。接続状態はいつでも次のコマンドで確認できます。
m365 status
このコマンドは、複数のテナントや スクリプト環境を行き来する場合に非常に役立ちます。破壊的な操作や影響の大きいコマンドを実行する前に、正しい環境を対象にしているかを確認できるからです。
サービス プリンシパルと証明書による認証
人の操作を介さずに実行する必要がある自動化パイプラインを構築する場合はどうでしょうか。たとえば GitHub Action、Azure DevOps パイプライン、スケジュール実行される Azure Functions などが該当します。デバイスコードによる対話型ログインはここでは機能しません。このような場合、CLIは Azure AD アプリの登録(サービス プリンシパル)による認証をサポートしています。
クライアントIDとクライアントシークレットを使って認証できます。さらに安全な方法として、Azure AD アプリケーションの証明書を使用することもできます。
m365 login --authType certificate --appId YOUR_APP_ID --thumbprint YOUR_CERT_THUMBPRINT --tenant YOUR_TENANT.onmicrosoft.com
サービス プリンシパルを使えば、最小特権の原則に従えます。CLI用のアプリ登録には、自動化されたタスクを完了するために必要な特定のAPIアクセス許可だけを付与します。たとえば、ユーザープロファイルの読み取りや特定のサイト コレクションのプロビジョニングなどです。グローバル管理者としての包括的な権限を与える必要はありません。
最初の管理コマンドを実行する
いよいよ楽しい部分です。インストールと構成、認証が完了しました。基本的なコマンドをいくつか実行して、CLI for Microsoft 365 の動作を確認し、Webの GUI をクリックして操作するよりどれほど速いかを実感してみましょう。
まずは簡単な操作から始めます。Azure Active Directory / Microsoft Entra ID テナントのユーザー一覧を取得してみましょう。Azure ポータルを開き、Microsoft Entra ID を選択し、「ユーザー」をクリックして一覧の読み込みを待つ代わりに、次のように入力するだけです。
m365 aad user list
ほら、すぐにターミナルにユーザーのデータが表示されます。特定のユーザーを探すためにリストを絞り込みたい場合は、クエリパラメーターを追加するか、出力をパイプで渡せます。たとえば、特定の部署のユーザーを探したい場合も、CLIを使えばすっきりと結果を絞り込めます。
次は SharePoint Online を見てみましょう。新しいプロジェクト チーム用に、モダンなコミュニケーション サイトを作成する必要があるとします。SharePoint 管理センターでこれを行うと、複数回のクリック、フォームへの入力、所有者の設定、待機が必要になります。CLIを使えば、再現可能な1つのコマンドでスクリプト化できます。
m365 spo site add --type CommunicationSite --title "Project Falcon" --url https://yourtenant.sharepoint.com/sites/projectfalcon --owner admin@yourtenant.onmicrosoft.com
この意味を考えてみてください。この1つのコマンドを、Microsoft Teams のプロビジョニング、ライセンスの割り当て、セキュリティ グループへのユーザー追加を行う他のコマンドと一緒にシェル スクリプトにまとめられます。その結果、新しい部署の立ち上げやプロジェクト スペースの作成が、面倒な2時間の手作業から、5秒で完了する自動化スクリプトの実行に変わります。
Microsoft Teams の管理も試せます。組織内のすべてのチームを一覧表示したい場合は、次のコマンドを実行してみてください。
m365 teams team list
この CLI がサポートするモジュールの幅広さには驚かされます。Power Apps、Power Automate のフロー、Exchange Online の設定、Planner のタスクを管理する場合でも、コマンドの構造は直感的で一貫しています。基本形は m365 [service] [resource] [action] です。
結論と次のステップ
本ガイドで見てきたように、Microsoft 365 のクロスプラットフォーム CLI は、単なる管理ツールの一つではありません。クラウド環境との向き合い方を変えるパラダイムシフトです。GUI でのクリック操作から離れてコマンドラインによる自動化を取り入れることで、前例のない効率性、一貫性、拡張性を手に入れられます。トラブルシューティングのために Windows にインストールする場合も、日常の開発用に macOS で使う場合も、CI/CD パイプラインを自動化するために Linux コンテナー内で動かす場合も、CLI は Microsoft 365 テナントを使いこなすための統一された強力なインターフェイスを提供します。
この記事は、まだ入り口に過ぎないことをお忘れなく。このツールを実際のエンタープライズ環境でどう活用するか、高度なスクリプト手法をどう身につけるか、そして管理層があまり語らない自動化戦略についての議論をさらに深く知りたい場合は、関連するポッドキャストのエピソード Automate Microsoft 365 with the Cross-Platform CLI をぜひお聴きください。チャンネル登録とレビューをお願いします。今日から管理業務の自動化を始めましょう。