Microsoft 365
はじめに
Microsoft 365プラグインスイートは、MoodleをMicrosoft 365のサービスに接続し、教師および学生に、より充実したコラボレーション、アイデンティティおよびコンテンツの体験を提供します。
このスイートがMoodleコアに加えて提供するもの
Moodleコアには、基本的なMicrosoft 365ログイン(OAuth 2)およびシンプルなOneDriveリポジトリが含まれています。プラグインスイートは、これを大幅に拡張します。
- Microsoft Entra IDからMoodleへのユーザの自動プロビジョニングおよび同期
- 既存のMoodleユーザとEntra IDアカウントの自動および手動のマッチング
- MoodleコースとMicrosoft Teamsの統合:チームの自動作成、メンバシップの同期、Teams Classes LTIのサポート
- TeamsとMoodleの間の双方向のコース登録同期
- Microsoft 365グループのメンバシップに基づくコーホートメンバシップ
- Outlookとのカレンダー同期
- OneNoteによる課題の提出およびフィードバック
- School Data Sync(SDS)との統合
- Moodleのコンテンツエディタから直接のTeams会議の作成
プラグイン
コアプラグイン
| プラグイン | コンポーネント | 説明 |
|---|---|---|
| Microsoft 365ローカルプラグイン | local_office365 | 他のすべてのコアプラグインへの依存関係を宣言することだけを目的としたシェルプラグインです。このプラグインをインストールすると、他のすべてのコアプラグインの正しいバージョンが揃います。 |
| OpenID Connect認証 | auth_oidc | 標準に準拠したOpenID Connect認証プラグインです。Microsoft Entra IDだけでなく、OIDC互換のあらゆるアイデンティティプロバイダで動作します。Microsoft Entra IDおよびlocal_o365と併用すると、Teams SSOやGraph APIのプロファイルフィールドマッピングなどの追加機能を利用できるようになります。 |
| Microsoft 365統合 | local_o365 | コアのバックエンドプラグインです。Microsoft Graph APIとの通信を処理し、ユーザ同期、コース/Teams同期、カレンダー同期、コーホート同期、SDS統合およびMicrosoft 365管理ツールを動作させます。 |
| Microsoftブロック | block_microsoft | アカウント接続、カレンダー同期のプレファレンス、TeamsおよびOneNoteへのリンクを提供する、ユーザ向けのブロックです。 |
| OneDrive for Businessリポジトリ | repository_office365 | ユーザが、個人のOneDrive for BusinessおよびMoodleコースのSharePointドキュメントライブラリのファイルを閲覧、ダウンロードおよびアップロードできるようにします。 |
| Microsoft 365 Teamsテーマ | theme_boost_o365teams | MoodleがMicrosoft Teamsのタブ内で開かれたときの表示に最適化された、Boostベースのテーマです。 |
| Teams会議 | tiny_teamsmeeting | Microsoft Teamsのオンライン会議を作成し、そのリンクをMoodleのコンテンツに挿入するツールバーボタンを追加するTinyMCEエディタプラグインです。 |
オプションプラグイン
これら3つのプラグインは、課題にOneNoteのサポートを追加します。
| プラグイン | コンポーネント | 説明 |
|---|---|---|
| OneNoteサポートプラグイン | local_onenote | 下記の2つの課題プラグインの共有コードライブラリです。独自のユーザインタフェースはありません。 |
| OneNote課題提出 | assignsubmission_onenote | 学生がOneNoteノートブックとして課題を提出できるようにします。 |
| OneNote課題フィードバック | assignfeedback_onenote | 教師がOneNoteノートブック内で課題のフィードバックを提供できるようにします。 |
機能
認証およびシングルサインオン
auth_oidcプラグインは、標準に準拠したOpenID Connect認証プラグインです。Moodleのログインページにアイデンティティプロバイダのサインインボタンを追加します。ユーザがこのボタンをクリックし、設定されたアイデンティティプロバイダで認証すると、ログインした状態でMoodleに戻ります(認可コードフロー)。Microsoft Entra IDだけでなく、OIDC互換のあらゆるアイデンティティプロバイダで動作します。

任意のOIDCアイデンティティプロバイダと併用した場合、このプラグインは次の機能を提供します。
- 認可コードフローによるシングルサインオン
- 初回ログイン時のMoodleアカウントの自動作成
- 標準のIDトークンのクレームからのユーザプロファイルフィールドのマッピング
- ログインページのプロバイダ名およびアイコンの設定
- Moodleのログインページをスキップするオプションの強制リダイレクト
- サイレントログインモード(アイデンティティプロバイダがセッションベースのサイレント認証をサポートしている場合)
- ユーザ名のパターンによるユーザ制限
- シングルサインオフ(アイデンティティプロバイダがログアウトエンドポイントをサポートしている場合)
Microsoft Entra IDおよびlocal_o365プラグインと組み合わせて設定すると、次の追加機能を利用できるようになります。
- Teams SSO:ユーザのアクティブなTeamsセッションを使用した、Microsoft Teams内のMoodleタブからのサイレントログイン
- フィールドマッピングに使用できる、Microsoft Graph APIからの追加のプロファイルフィールド(IDトークンに含まれるもの以外)
- フィールドマッピングに使用できる、SDSの教師/学生プロファイルフィールド(SDS同期が設定されている場合)
Entra IDからのユーザ同期
ユーザ同期機能(local_o365の一部)は、MoodleのユーザアカウントをMicrosoft Entra IDと一致した状態に保ちます。スケジュールタスクとして実行され、次のことができます。
- まだMoodleアカウントを持っていないEntra IDユーザのMoodleアカウントを作成する
- Entra IDで変更されたときに、Moodleのユーザ詳細(プロファイル画像およびOutlookのタイムゾーンを含む)を更新する
- Entra IDでユーザが無効化または削除されたときに、Moodleアカウントを利用停止または削除する
- 既存のMoodleアカウントをEntra IDユーザと照合してリンクする(ユーザ名またはメールアドレスによる)
コースおよびTeamsの統合
MoodleコースをMicrosoft Teamsに接続できます。有効にすると、設定された各コースに対してグループおよびチームが作成され、Moodleの登録と同期された状態に保たれます。教師はチームの所有者になり、学生はチームのメンバになります。
教育機関向けライセンスを持つテナントでは、クラスチームが作成されます。これによりTeams Classes LTI機能が有効になり、チームを外部ツール(mod_lti活動)としてMoodleのコースページに直接埋め込むことができます。

双方向の同期
デフォルトでは、登録はMoodleからTeamsに反映されます。この統合は、次の方向もサポートしています。
- Teams → Moodle:チームの所有者/メンバの変更がMoodleの登録を更新します。
- 双方向:どちらかのシステムでの変更がもう一方に反映されます。
Teamsからのコースリクエスト
コースリクエストのケイパビリティを持つユーザは、(Microsoftブロックからアクセスできる)「Teamsからコースをリクエストする」ページを使用して、選択したチームの所有者およびメンバがあらかじめ設定された新しいMoodleコースをリクエストできます。
Microsoft 365グループとのコーホート同期
Moodleのシステムコーホートのメンバシップを、Microsoft 365グループのメンバシップに基づいて自動的に決定できます。管理者はMoodleのコーホートをMicrosoft 365グループにマッピングし、スケジュールタスクがコーホートを一致した状態に保ちます。
カレンダー同期
ユーザは、Moodleのイベント(サイトイベント、コースイベント、課題の提出期限および個人のカレンダーエントリ)をOutlookのカレンダーに同期でき、その逆も可能です。
OneDrive for Business
repository_office365プラグインを使用すると、ユーザはMoodleのファイルピッカから、個人のOneDrive for BusinessおよびコースのSharePointドキュメントライブラリにアクセスできます。ファイルをMoodleにインポートすることも、OneDriveにアップロードすることもできます。
OneNoteの課題統合
学生はOneNoteノートブックとして課題を提出でき、教師はノートブック内でフィードバックを提供できます。これには、3つのオプションのOneNoteプラグインが必要です。
コンテンツエディタでのTeams会議
tiny_teamsmeetingプラグインは、TinyMCEエディタのツールバーに「Teams会議」ボタンを追加します。ユーザはエディタ内から新しいTeamsオンライン会議を作成し、そのリンクをコースページ、フォーラム投稿、課題の説明など、Moodleのあらゆるコンテンツに挿入できます。

School Data Sync(SDS)
Microsoft School Data Syncで定義されたクラスからMoodleコースを作成し、SDSの名簿から登録を同期できます。双方向の同期も利用できるため、Moodleの登録の変更をSDSに反映させることもできます。
マルチテナントのサポート
Microsoft 365テナントを追加できます。これにより、パートナー組織のユーザが自分のMicrosoft 365アカウントを使用してログインし、統合機能にアクセスできるようになります。
Microsoftブロック

block_microsoftプラグインは、次のリンクを含むユーザ向けのメニューを提供します。
- Microsoft 365アカウントのリンクの接続/管理
- カレンダー同期のプレファレンス
- OneNoteノートブック
- Teams
- Microsoft 365/Moodleコントロールパネル
必要条件
- Microsoft 365のサブスクリプション。
- Azureのサブスクリプション(Microsoft Entra IDにアプリケーションを登録するため)。
- Moodle 4.1以降。
セットアップ
プラグインのインストール
プラグインは次の場所から入手できます。
- MoodleプラグインディレクトリのMicrosoft 365プラグインセット:local_office365をインストールすると、すべてのコアプラグインがインストールされます。
- GitHub
一般的なインストール手順については、プラグインのインストールを参照してください。
インストール後、プラグイン設定を保存するよう求められます。この時点では何も設定せずに保存してください。設定は以下の手順で完了します。
Azureアプリケーションの登録
この統合はMicrosoft Graph APIを使用するため、Azureテナントに登録されたアプリケーションが必要です。
オプションA:PowerShellスクリプト(推奨)
- サイト管理 > プラグイン > ローカルプラグイン > Microsoft 365統合に移動し、「セットアップ」タブを開きます。
- 「PowerShellスクリプトをダウンロードする」をクリックします。
- Moodleインストール内の
local/o365/scripts/README.md(またはGitHub上のもの)の手順に従います。
オプションB:手動登録
アプリケーションを登録する
- Microsoft Azure管理ポータルにサインインします。
- App Registrationsに移動し、New registrationをクリックします。
- 名前(例:「Moodle Integration」)を入力します。
- 組織に適したSupported account typesを選択します。
- Redirect URIで、タイプWebを選択し、サイト管理 > プラグイン > 認証 > OpenID Connect > その他のオプションに表示されるリダイレクトURIを入力します。これは
https://your.moodle.url/auth/oidc/の形式です。末尾のスラッシュは必須です。 - Registerをクリックします。
- 概要ページに表示されるApplication (client) IDを控えておきます。後で必要になります。
アプリケーションを設定する
インプリシットグラントを有効にする:
- 左側のメニューでAuthenticationに移動します。
- Implicit grant and hybrid flowsで、Access tokensおよびID tokensの両方にチェックを入れます。
- 変更を保存します。
クライアントシークレットを作成する:
- Certificates & secretsに移動し、New client secretをクリックします。
- 説明を入力して有効期間を選択し、Addをクリックします。
- Valueの下に表示される値をすぐにコピーします。この値は一度しか表示されません。
APIの公開(Teams同期の場合のみ必要):
- Expose an APIに移動し、Application ID URIの横にあるAddをクリックします。
- URIを
api://your.moodle.url/{ApplicationID}に設定します(your.moodle.urlをMoodleのwwwrootに、{ApplicationID}をアプリケーションIDに置き換えます)。 - Add a scopeをクリックし、次のように入力します。
- Scope name:
access_as_user - Who can consent?:Admins and users
- Admin consent display name:Teams can access the user's profile
- Admin consent description:Allows Teams to call the app's web APIs as the current user
- User consent display name:Teams can access the user profile and make requests on the user's behalf
- User consent description:Enable Teams to call this app's APIs with the same rights as the user
- State:Enabled
- Scope name:
- Add scopeをクリックして保存します。
- Authorized client applicationsで、次の各クライアントIDを追加し、上記のスコープを選択します。
1fec8e78-bce4-4aaf-ab1b-5451cc387264(Teamsモバイル/デスクトップ)5e3ce6c0-2b1f-4285-8d4b-75ee78787346(Teams web)
APIのアクセス許可を追加する:
- API permissionsに移動し、Add a permission > Microsoft Graphをクリックします。
- 下の表に記載されているアクセス許可を追加します。
- Grant admin consent for [your organisation]をクリックします。
APIのアクセス許可
次のアクセス許可により、すべての機能が利用できるようになります。PowerShellスクリプトは、これらを自動的に追加します。上級の管理者は、使用しない機能のアクセス許可を省略してもかまいません。
| タイプ | アクセス許可 | 表示名 | 目的 |
|---|---|---|---|
| アプリケーション | AppCatalog.Read.All | Read all app catalogs | 接続されたチームにインストールするために、アップロードされたMoodle Teamsアプリを見つけます。 |
| AppRoleAssignment.ReadWrite.All | Manage app permission grants and app role assignments | ユーザ同期中に、ユーザをAzureアプリに割り当てます。 | |
| Calendars.ReadWrite | Read and write calendars in all mailboxes | カレンダーイベントの同期。 | |
| Channel.ReadBasic.All | Read the names and descriptions of all channels | Moodleタブをインストールするために、一般チャネルを見つけます。 | |
| Directory.ReadWrite.All | Read and write directory data | 統合の設定、ユーザ同期およびコース同期。 | |
| Directory.Read.All | Read directory data | 統合の設定、ユーザ同期およびコース同期。 | |
| EduRoster.ReadWrite.All | Read and write the organization's roster | 教育機関テナントでのSDS同期およびコース同期。 | |
| Files.ReadWrite.All | Read and write files in all site collections | OneDriveのファイルへのアクセスおよびアップロード。 | |
| Group.ReadWrite.All | Read and write all groups | コース/Teamsの統合。 | |
| MailboxSettings.Read | Read all user mailbox settings | ユーザのOutlookのデフォルトタイムゾーンを同期します。 | |
| Member.Read.Hidden | Read all hidden memberships | SDS同期で学校のクラスのメンバを読み取ります。 | |
| Notes.ReadWrite.All | Read and write all OneNote notebooks | OneNoteの課題統合。 | |
| Sites.Read.All | Read items in all site collections | OneDrive for BusinessのURLを検出します。 | |
| Team.Create | Create teams | Moodleコースのチームを作成します。 | |
| TeamMember.ReadWrite.All | Add and remove members from all teams | Moodleのコース登録をチームのメンバシップに同期します。 | |
| TeamsAppInstallation.ReadWriteForTeam.All | Manage Teams apps for all teams | 接続されたチームにMoodleアプリをインストールします。 | |
| TeamSettings.ReadWrite.All | Read and change all teams' settings | コース/Teamsの統合。 | |
| TeamsTab.Create | Create tabs in Microsoft Teams | 接続されたチームにMoodleタブを作成します。 | |
| User.Read.All | Read all users' full profiles | SSOおよびユーザ情報の同期。 | |
| 委任 | Calendars.ReadWrite | Have full access to user calendars | カレンダーイベントの同期。 |
| Files.ReadWrite.All | Have full access to all files user can access | OneDriveのファイルへのアクセスおよびアップロード。 | |
| Group.ReadWrite.All | Read and write all groups | コースグループの統合。 | |
| Notes.ReadWrite.All | Read and write all OneNote notebooks that user can access | OneNoteの課題統合。 | |
| User.Read.All | Read all users' full profiles | SSOおよびユーザ情報の同期。 | |
| Domain.Read.All | Read domains | マルチテナントの設定。 | |
| openid | Sign users in | Teams SSO。 | |
| offline_access | Maintain access to data you have given it access to | Teams SSO。 | |
| View users' email address | Teams SSO。 | ||
| profile | View users' basic profile | Teams SSO。 |
auth_oidcを設定する
- サイト管理 > プラグイン > 認証に移動し、OpenID Connectプラグインを有効にします。
- サイト管理 > プラグイン > 認証 > OpenID Connect > IdPおよび認証に移動します。
- エンドポイントを確認します。ほとんどの設定では、デフォルトのままで動作します。
- 「認可エンドポイント」:https://login.microsoftonline.com/common/oauth2/authorize
- 「トークンエンドポイント」:https://login.microsoftonline.com/common/oauth2/token
commonをテナント名またはGUIDに置き換えると、カスタマイズされたMicrosoftログインページが表示されます。マルチテナントの機能を使用している場合は、commonのままにしてください。
- 「その他のオプション」タブに移動し、「リダイレクトURI」を控えておきます。このURIの要件は次のとおりです。
- HTTPSを使用する必要があります。
- (IPアドレスではなく)完全修飾ドメイン名である必要があります。
- ユーザがアクセスできる必要があります(インターネットに公開されている必要はありません)。
- AzureのApplication IDを「アプリケーションID」フィールドに入力します。
- AzureのクライアントシークレットのValueを「キー」フィールドに入力します。
- 変更を保存します。
local_o365を設定する
- サイト管理 > プラグイン > ローカルプラグイン > Microsoft 365統合に移動し、「セットアップ」タブを開きます。
- 各ステップを順番に進めます。
- 「接続方法」:「アプリケーションアクセス」(唯一サポートされている方法)を選択します。
- 「管理者の同意」:「管理者の同意を提供する」をクリックし、Microsoft 365管理者としてサインインして、アプリケーションのアクセス許可を付与します。
- 「Microsoft Entraテナント」:テナントのドメイン(例:
contoso.onmicrosoft.com)を入力するか、「検出する」をクリックします。 - 「OneDrive for Business URL」:OneDriveのドメイン(例:
contoso-my.sharepoint.com。ドメインのみで、プロトコルやスラッシュは含めません)を入力するか、「検出する」をクリックします。 - 「セットアップを検証する」:「更新」をクリックして、必要なすべてのアクセス許可が揃っていることを確認します。続行する前に、報告された問題を解決してください。
ユーザのMicrosoft 365への接続
Microsoft 365の機能を使用するには、MoodleユーザがMicrosoft 365アカウントに接続されている必要があります。これには2つの方法があります。
Microsoft 365ログインに切り替える(認証方法が変わります)
ユーザは、Microsoft 365の認証情報を使用してMoodleにログインします。以前のログイン方法は使用できなくなります。
- Moodleアカウントを持っていない新規ユーザ:ログインページのアイデンティティプロバイダのリンクをクリックすると、Moodleアカウントが自動的に作成されます。
- 既存ユーザ:
- Microsoftブロックが(たとえばダッシュボード上に)表示されていることを確認します。
- そのユーザとしてログインし、ブロック内の「Microsoft 365に接続する」をクリックします。
- コントロールパネルで「Microsoft 365ログイン」をクリックし、表示される指示に従います。
- フローを完了すると、このユーザのMicrosoft 365ログインが有効になります。
ログイン方法を変更せずにリンクする
ユーザは既存のMoodleログインを維持したまま、Microsoft 365の機能にもアクセスできるようになります。
- Microsoftブロックが表示されていることを確認します。
- そのユーザとしてログインし、ブロック内の「Microsoft 365に接続する」をクリックします。
- 「接続ステータス」ボックスの「接続するにはここをクリックしてください」をクリックします。
- リンクするMicrosoft 365アカウントでサインインします。
- 戻ると、「接続ステータス」に「アクティブ」と表示されます。ユーザのログイン方法は変わりません。
OpenID Connect認証
auth_oidcプラグインは、Microsoft Entra IDに限定されません。OpenID Connect標準を実装している任意のアイデンティティプロバイダ(たとえば、Google、Azure AD B2C、Keycloak、その他のOIDC準拠のIdP)に対してMoodleユーザを認証できます。
上記のセットアップのセクションの手順は、特にMicrosoft Entra IDの設定を対象としています。その他のアイデンティティプロバイダの場合は、IdPから取得した適切な認可エンドポイント、トークンエンドポイント、アプリケーションIDおよびクライアントシークレットに置き換え、Azure固有の手順はスキップしてください。
設定
すべての設定は、サイト管理 > プラグイン > 認証 > OpenID Connectにあります。
- 「強制リダイレクト」:Moodleのログインページをスキップし、直接アイデンティティプロバイダに移動します。
?noredirect=1で回避できます。 - 「サイレントログインモード」:アイデンティティプロバイダの既存のアクティブなセッションを使用して、サイレントログインを試みます。
- 「ドメインヒント」:Microsoftログインページに
domain_hintパラメータを渡して、特定のテナントを提示します。これはMicrosoft固有のパラメータであり、その他のアイデンティティプロバイダでは効果がありません。 - 「ユーザ制限」:ユーザ名に対する1つ以上の正規表現パターンに一致するユーザにログインを制限します。
- 「シングルサインオフ」/「ログアウトエンドポイント」:Moodleユーザがログアウトしたときに、設定されたエンドポイントへのログアウトリクエストを発行します。オプションの
post_logout_redirect_uriパラメータをサポートしています。ログアウトエンドポイントを公開している任意のIdPで動作します。Microsoft Entra IDを使用する場合は、このURLをAzureアプリのリダイレクトURIのリストにも追加する必要があります。 - 「プロバイダ名」:Moodleのログインページのアイデンティティプロバイダのリンクに使用されるラベルです。
- 「カスタムアイコン」:定義済みのアイコンを選択するか、独自のアイコンをアップロードします(推奨サイズ:35×35 px)。
- 「デバッグメッセージを記録する」:トラブルシューティングのために認証エラーを記録します(サイト管理 > レポート > ログで「サイトエラー」で絞り込みます)。
ログインフロー
このプラグインは認可コードフローを使用します。
- ユーザが、Moodleのログインページのアイデンティティプロバイダのリンクをクリックします。
- ブラウザが、認証のためにアイデンティティプロバイダにリダイレクトします。
- 成功すると、ブラウザがMoodleにリダイレクトされ、ユーザがログインします。
ユーザ制限
- 1行に1つの正規表現パターンを入力します。
- いずれか1つのパターンに一致すれば、ユーザは許可されます。
/は\/としてエスケープします。- パターンが入力されていない場合は、認証できるすべてのユーザが受け入れられます。
Microsoft 365統合の設定
以下のすべての設定は、サイト管理 > プラグイン > ローカルプラグイン > Microsoft 365統合にあります。以下の各サブセクションには、プラグインのナビゲーション内の具体的なページを記載しています。
ユーザ同期
「ユーザ同期」ページ(サイト管理 > プラグイン > ローカルプラグイン > Microsoft 365統合 > ユーザ同期)。
Microsoft Entra IDとユーザを同期するスケジュールタスクは、デフォルトで1日に1回実行されます。頻度はスケジュールタスクで調整します。
オプション:
- 「Microsoft Entra IDのユーザのアカウントをMoodleに作成する」:Moodleアカウントを持っていないEntra IDユーザの新しいMoodleアカウントを作成します。新しいアカウントはOpenID Connect認証を使用します。
- 「Microsoft Entra IDのユーザのMoodle内のすべてのアカウントを更新する」:既存のアカウントの詳細を最新の状態に保ちます。
- 「Microsoft Entra IDから削除されたときに、以前に同期したMoodle内のアカウントを利用停止する」:リンクされたEntra IDアカウントが削除されたときに、Moodleアカウントを利用停止します。
- 「Microsoft Entra IDから削除されたときに、以前に同期したMoodle内のアカウントを削除する」:Moodleアカウントを完全に削除します。慎重に使用してください。
- 「Microsoft Entra IDのユーザの利用停止されたアカウントを再度有効にする」:リンクされたEntra IDアカウントがアクティブな場合、Moodleアカウントの利用停止を解除します。
- 「無効状態を同期する」:無効になっているEntra IDアカウントのMoodleアカウントを利用停止します。
- 「既存のMoodleユーザをMicrosoft Entra IDの同名のアカウントと照合する」:ユーザ名によって既存のMoodleアカウントをEntra IDアカウントに接続します(大文字と小文字は区別されず、ドメインのサフィックスは無視されます)。たとえば、「BoB.SmiTh」は「bob.smith@contoso.onmicrosoft.com」に一致します。
- 「照合されたユーザをMicrosoft 365(OpenID Connect)認証に切り替える」:照合が有効になっている場合に、照合されたユーザのログイン方法もOpenID Connectに切り替えます。
- 「同期中にユーザをアプリケーションに割り当てる」:照合されたEntra IDユーザがAzureアプリケーションに割り当てられるようにします。
- 「cronジョブでMicrosoft 365のプロファイル画像をMoodleに同期する」:同期を実行するたびに、Entra IDからMoodleのプロファイル画像を更新します。
- 「ログイン時にMicrosoft 365のプロファイル画像をMoodleに同期する」:ログイン時にプロファイル画像を更新します。
- 「cronジョブでOutlookのタイムゾーンをMoodleに同期する」:同期を実行するたびに、ユーザのOutlookのタイムゾーンのプレファレンスを同期します。
- 「ログイン時にOutlookのタイムゾーンをMoodleに同期する」:ログイン時にタイムゾーンを同期します。
- 「実行ごとに完全同期を実行する」:差分同期ではなく、完全な再同期を強制します。
- 「同期中にMicrosoft Entra IDのユーザ名をMoodleのユーザ名ではなくMoodleのメールアドレスと照合する」:照合にメールアドレスを使用します。
- 「ゲストユーザを同期する」:ゲストユーザ(ホスティングテナントにゲストとして追加された他のテナントのユーザ)がSSOログインを使用できるようにします。
ユーザ作成の制限
アカウントの作成を、必須のフィールド/値のペアに一致するEntra IDユーザに限定します。たとえば、フィールドに「Department」、値に「IT」を設定すると、IT部門のユーザのみが同期されます。
ユーザフィールドマッピング
プロファイルフィールドのマッピングは、サイト管理 > プラグイン > 認証 > OpenID Connect > データマッピングに移動しました。利用できるソースフィールドは、設定によって異なります。
- 基本的なトークンフィールド:常に利用できます。
- Graph APIフィールド:local_o365が設定されている場合に利用できます。
- SDSフィールド:SDS同期が設定されている場合に利用できます。
各フィールドについて、更新するタイミング(ログインごと/アカウント作成時/更新しない)、および管理者以外によるローカルでの編集に対してロックするかどうかを設定します。
コースおよびTeamsの同期
「コース同期」ページ(サイト管理 > プラグイン > ローカルプラグイン > Microsoft 365統合 > コース同期)。
仕組み
MoodleコースをMicrosoft Teamsに同期するスケジュールタスク(\local_o365\task\coursesync)は、有効になっている各コースを処理し、次のことを行います。
- Microsoft 365グループが存在しない場合は作成します。
- グループをチームに昇格させます(教育機関テナントではクラスチーム、それ以外では標準のチーム)。
- Microsoft 365アカウントに接続されている、登録済みのMoodleユーザを同期します。
- チーム所有者ケイパビリティ(
local/o365:teamowner。デフォルトでは教師が持っています)を持つユーザ → チームの所有者として追加されます。 - チームメンバケイパビリティ(
local/o365:teammember。デフォルトでは学生が持っています)を持つユーザ → チームのメンバとして追加されます。 - どちらのケイパビリティも持たないユーザは同期されません。
- チーム所有者ケイパビリティ(
- Moodle Teamsアプリをインストールし、一般チャネルにMoodleタブを作成します(アプリが設定されている場合。下記のTeams Moodleアプリを参照してください)。
その後のMoodleでの登録の変更も、すべて即座に同期されます。
同期されるのは、Microsoft 365の接続レコードを持つMoodleユーザのみです。このようなレコードは、次の場合に作成されます。
- ユーザ同期タスクによってユーザが作成または照合された場合。
- ユーザがauth_oidc経由でログインした場合。
- ユーザがMicrosoftブロックから手動で接続した場合。
- 管理者が「接続」ツールまたは「ユーザマッチング」ツールで接続を作成した場合。
同期の方向
「コースユーザ同期の動作」設定で方向を制御します。
- 「MoodleからTeamsへ」(デフォルト):Moodleの登録がチームのメンバシップを決定します。
- 「TeamsからMoodleへ」:チームの所有者/メンバの変更がMoodleの登録を決定します。Microsoft 365に接続されていないMoodleユーザは影響を受けません。
- 「TeamsおよびMoodleの両方を更新する」:どちらかのシステムでの変更がもう一方に反映されます。
コース同期の設定
- 「コース同期」:
- 「無効」:同期しません。
- 「カスタマイズ」:個々のコースを選択します。オプションで、新しいコースに対してデフォルトで有効にすることや、許可されたユーザによるコースレベルでの制御を許可することができます。
- 「すべての機能が有効」:すべてのコースを同期します。
- 「非表示のコースを同期する」:デフォルトでは、コピー中またはリストア中のコースを同期しないように、非表示のコースは無視されます。非表示のコースに対してもチームの作成を強制するには、これを有効にします。
- 「接続されたMoodleコースが削除されたときにMicrosoft 365グループを削除する」:Moodleコースが削除されたときに、チームも削除します。
- 「コース同期が無効にされたときにMicrosoft 365グループを削除する」:コースの同期がオフにされたときに、チームを削除します。
- 「タスク実行ごとに同期するコース数」:他のタスクをブロックしないように、cron実行ごとに処理するコース数を制限します。デフォルトは20です。
- 「チーム/グループの命名」:チーム/グループ名に使用する接頭辞、接尾辞およびコースのフィールド(長いコース名/コース省略名/Moodleが生成したID/IDナンバ)を設定します。
- 「コース更新時にTeams名を更新する」:Moodleのコース名が変更されたときに、チーム名を同期した状態に保ちます。
Teams Classes LTI
教育機関向けライセンスを持つテナントでは、コースのチームはクラスチームになります。これによりTeams Classes LTI機能が有効になり、mod_ltiを使用して、チームを外部ツールとしてMoodleのコースページに直接埋め込むことができます。
コーホート同期
「高度」ページ(サイト管理 > プラグイン > ローカルプラグイン > Microsoft 365統合 > 高度)の「コーホート同期」セクション。
セットアップ
高度 > コーホート同期にあるリンクに移動して、Microsoft 365グループとMoodleのシステムコーホートの間のマッピングを管理します。
仕組み
コーホート同期スケジュールタスク(\local_o365\task\cohortsync)は、次のルールを適用します。
次のすべてに該当する場合、ユーザはコーホートに追加されます。
- コーホートがMicrosoft 365グループにマッピングされている。
- ユーザが、接続されたMicrosoft 365アカウントを持っている。
- 接続されたアカウントが、グループのメンバまたは所有者である。
次のすべてに該当する場合、ユーザはコーホートから削除されます。
- コーホートがMicrosoft 365グループにマッピングされている。
- ユーザが、接続されたMicrosoft 365アカウントを持っている。
- 接続されたアカウントが、グループのメンバでも所有者でもない。
接続されたMicrosoft 365アカウントを持たないユーザは、影響を受けることはありません。
制限事項:
- 同期は一方向のみです(Microsoft 365グループ → Moodleのコーホートのみ)。
- システムレベルのコーホートのみがサポートされています(コースカテゴリのコーホートはサポートされていません)。
- 動的配布グループはサポートされていません(Graph APIの制限)。
School Data Sync(SDS)
「SDS同期」ページ(サイト管理 > プラグイン > ローカルプラグイン > Microsoft 365統合 > SDS同期)。
設定
- 「コースを作成する」:同期する学校を選択します。学校ごとにコースカテゴリが、クラスごとにコースが作成されます。
- 「Teams作成を有効にする」:新しく作成されたMoodleコースを、対応するSDSのクラスチームに自動的に接続します(チームがSDSによって自動作成される場合にのみ有効です)。
- 「ユーザを登録する」:SDSのクラスの教師およびメンバを、対応するMoodleコースに登録します。
- 「SDSクラスとの高度な登録同期」:双方向の同期を有効にします。SDSのロールの変更がMoodleに反映され、Moodleの登録/ロールの変更がSDSに反映されます。
- 「教師ロール」/「メンバロール」:SDSのクラスの所有者およびメンバにそれぞれ割り当てられるMoodleのロールです。
- 「学校からプロファイルデータを同期する」:SDSの学校を選択して、その学校の教師/学生のプロファイルフィールドをauth_oidcのフィールドマッピングで利用できるようにします。
スケジュールタスク
- SDSと同期するタスク(
\local_o365\feature\sds\task\sync)は、コースの作成およびプロファイルフィールドの同期を処理します。 - MoodleからSDSへの同期(登録/ロールの変更)はイベント駆動型で、ほぼリアルタイムに行われます(Microsoft側で最大約1分の遅延を見込んでください)。
Teams設定
「Teams設定」タブ。
前提条件
Teams統合を有効にする前に、次の点を確認してください。
- OpenID Connect認証が有効になっており、設定されている。
- 「フレーム内埋め込みを許可する」が有効になっている:サイト管理 > セキュリティ > HTTPセキュリティ。
- 「ウェブサービスを有効にする」が有効になっている:サイト管理 > 拡張機能。
- 「Moodle Microsoft 365 Webservices」が有効になっている:サイト管理 > プラグイン > ウェブサービス > 外部サービス。
- 「認証済みユーザ」ロールが「ウェブサービストークンを作成する」(
moodle/webservice:createtoken)ケイパビリティを持っている:サイト管理 > ユーザ > パーミッション > ロールを定義する。
追加のリダイレクトURI
Azureアプリを(PowerShellスクリプトを使用せずに)手動で登録した場合は、アプリのAuthentication > Redirect URIsに次のURIを追加します。
https://your.moodle.url/local/o365/sso_end.php
MoodleアプリをTeamsに追加する
- 「Teams設定」タブで「マニフェストファイルをダウンロードする」をクリックして、Moodle Teamsアプリのマニフェスト(.zip)をダウンロードします。
- Microsoftのアップロード手順に従って、ファイルをテナントのTeamsアプリカタログにアップロードします。
- アップロードが完了すると、テナント内のすべてのチームでアプリを利用できるようになります。
Teams Moodleアプリ
マニフェストをダウンロードすると、Microsoft 365統合の設定に「Teams Moodleアプリ」タブが表示されます。「MoodleアプリID」を設定します(アプリがアップロードされると、Teamsアプリカタログから自動的に検出されます)。
設定すると、コース同期によって作成されるすべての新しいチームで、次のことが自動的に行われます。
- Moodleアプリがインストールされます。
- 接続されたMoodleコースを指すMoodleタブが、一般チャネルに作成されます。
Teamsからのコースリクエスト
「高度」ページ(サイト管理 > プラグイン > ローカルプラグイン > Microsoft 365統合 > 高度)の「コースリクエスト」セクション。
コースリクエストのケイパビリティ(moodle/course:request)を持つユーザは、Microsoftブロックから「Teamsからコースをリクエストする」にアクセスできます。これにより、選択したTeamsのチームの所有者およびメンバがあらかじめ設定された新しいMoodleコースをリクエストできます。
セットアップ:「高度」ページの「コースリクエスト」セクションで、チームの所有者およびチームのメンバのロールマッピングを設定します。
仕組み:
- ユーザは、自分が所有または所属しているチームのうち、まだMoodleコースに接続されていないチームを選択します。
- リクエストが承認されると、アドホックタスクによって、チームの所有者およびメンバ(接続されたMicrosoft 365アカウントを持つユーザ)が新しいコースに登録されます。
- 新しいコースは自動的にチームに接続されるため、継続的なコース同期が適用されます。
OneDrive for Businessリポジトリ
ファイルのダウンロードおよびリンク
- Moodle内の任意の場所でファイルピッカを開き、「OneDrive for Business」をクリックします。
- フォルダを選択します。
- 「マイファイル」:個人のOneDrive for Businessです。
- 「コース」:アクセス権のあるMoodleコースのSharePointドキュメントライブラリです。
- ファイルに移動してクリックします。
- オプションで、表示ファイル名または作成者を設定します(Moodle側のみで、OneDriveには反映されません)。
- 「このファイルを選択する」をクリックします。
ファイルのアップロード
- ファイルピッカでOneDriveのドキュメントライブラリを開きます。
- 「新しいファイルをアップロードする」をクリックします。
- ローカルファイルを選択し、「このファイルをアップロードする」をクリックします。
Teams会議TinyMCEプラグイン
tiny_teamsmeetingプラグインは、TinyMCEのツールバーに「Teams会議」ボタンを追加し、ユーザがTeamsのオンライン会議を作成して、そのリンクをMoodleのあらゆるコンテンツに挿入できるようにします。
前提条件
ユーザがMicrosoft 365アカウントに接続されている必要があります(ユーザのMicrosoft 365への接続を参照してください)。
使い方
- Moodleの任意のコンテクスト(コースページ、フォーラム投稿、課題の説明など)でTinyMCEエディタを開きます。
- ツールバーの「Teams会議」ボタンをクリックします。
- Teams会議の作成インタフェースを含むダイアログが開きます。
- ダイアログで会議を作成します。作成されると、会議のURLがダイアログに表示されます。
- オプションで、「新しいウィンドウで会議を開く」にチェックを入れます。
- 「リンクを追加する」をクリックして、会議のリンクをエディタに挿入します。

設定
設定はサイト管理 > プラグイン > テキストエディタ > TinyMCEエディタ > Teams会議にあります。
- 「会議アプリURL」:会議作成アプリのURLです。デフォルトでは、Microsoftがホストするアプリを指しています。カスタムバージョンをホストしている場合にのみ変更してください。
パーミッション
このボタンは、tiny/teamsmeeting:addケイパビリティを持つユーザにのみ表示されます。デフォルトでは、このケイパビリティは、そのコンテクストでコンテンツ編集のケイパビリティを持つロール(例:教師、マネージャ)に付与されています。
高度な設定
サイト管理 > プラグイン > ローカルプラグイン > Microsoft 365統合の「高度」タブ。
管理者ツール
- 「テナント」:複数組織のログインをサポートするために、Microsoft 365テナントを追加します。
- 「ヘルスチェック」:統合の設定について自動診断を実行します。
- 「接続」:個々のユーザ ↔ Microsoft 365アカウントのリンクを表示および管理します。管理者は、任意のユーザを手動で接続または切断できます。
- 「ユーザマッチング」:CSVのアップロードによって、MoodleユーザとMicrosoft 365ユーザを一括でリンクします。各行の内容:Moodleのユーザ名、Microsoft 365のユーザ名、1(M365ログインを有効にする)または0。cron実行中にバッチで処理されます。
- 「チーム接続を管理する」:すべてのMoodleコースおよび接続されているチームを表示します。「接続」または「更新」を使用して、特定のコースの同期を即座に開始します。
- 「メンテナンスツール」:
- 「コースのグループ内のユーザを再同期する」:すべてのコースグループのメンバシップの完全な再同期を強制します。
- 「削除されたMicrosoft 365グループを再作成する」:Microsoft 365管理で手動で削除されたコースグループを再作成します。
- 「デバッグデータパッケージを生成する」:環境および設定の詳細を含むサポートパッケージを生成します。APIキーは含まれませんが、設定の詳細は明らかになるため、信頼できる相手とのみ共有してください。
- 「OpenID Connectトークンをクリーンアップする」:ログインの失敗の原因となる可能性のある不要なトークンを削除します。進行中のログインが中断される可能性があるため、トラフィックの少ない時間帯に実行してください。
- 「ユーザ同期のデルタトークンをクリーンアップする」:保存されているデルタトークンを消去して、次回のユーザ同期の実行時に完全な再同期を強制します。
その他の設定
- 「リセット時のチーム名の接頭辞」/「リセット時のグループ名の接頭辞」:Moodleコースがリセットされたときに、接続されているチーム/グループの名前を更新して、接続状態が変わった可能性があることを示します。
- 「中国向けMicrosoft 365」:21Vianet(中国)が運営するMicrosoft 365を使用している場合に有効にします。
- 「デバッグメッセージを記録する」:トラブルシューティングのためにエラーを記録します。サイト管理 > レポート > ログで「サイトエラー」で絞り込んで表示します。
- 「Microsoft 365に切り替える不完全一致のユーザ名の最小長」:自動照合に使用するユーザ名の最小の長さです。短い汎用アカウント(例:「admin」)が誤って照合されるのを防ぎます。
- 「プロファイル画像の更新間隔」:プロファイル画像の同期を実行する最小の間隔です。
- 「カスタムテーマ」:Teamsのタブ内からMoodleにアクセスしたときに使用するテーマを選択します。
既知の制限事項
- Moodleサイトがインターネットに公開されていない場合(例:イントラネット上にある場合)、TeamsのMoodleタブは、Teamsのデスクトップアプリおよびモバイルアプリでは機能しません。Teamsのウェブアプリ(ブラウザ)では機能します。
- これまでにMoodleにログインしたことがないMicrosoft 365ユーザは、初めてTeams SSOでサインインしようとしたときに、サイレントでサインインすることはできません。ログインを完了するためにボタンをクリックするよう求められます。
- コーホート同期は、動的配布グループをサポートしていません。
- コーホート同期は、システムレベルのコーホートにのみ適用されます。
- 双方向のコース同期では、チームの所有者/メンバのロール設定で設定されたロールのみが管理されます。コース内のその他のロールは影響を受けません。
- 「Teamsからコースをリクエストする」ページの読み込み時間は、ユーザが所属しているチームの数によって異なります。ページの初期化時に、対象となるすべてのチームが読み込まれるためです。
サポート
- バグや機能のリクエストの報告:GitHub Issues
- コミュニティでのディスカッション:Moodle office tool integrations forum