コミュニティプラグイン
コミュニティにインストールして使う Plugin アプリケーションの作成・設定・運用方法を解説します。
Plugin(コミュニティプラグイン)は、mixi2 のコミュニティにインストールして動作する拡張型アプリケーションです。Bot の機能に加え、コミュニティ固有のイベント受信や API 操作が行えます。
Bot との違い
| 項目 | Bot | Plugin |
|---|---|---|
| 提供対象 | ユーザー | ユーザー + コミュニティ |
| 受信できるイベント | リプライ・メンション・DM | リプライ・メンション・DM・コミュニティ内のポスト・メンバー参加/退出・インストール/アンインストール |
| 使える API | 基本 API | 基本 API + コミュニティ操作 API |
| インストール | 不要 | コミュニティ管理者がインストール(最大 10 コミュニティ) |
Plugin は Bot のすべての機能を持ちつつ、コミュニティ固有の機能も利用できるアプリケーションです。コミュニティに対してポストしたい、コミュニティメンバーに DM を送りたい、コミュニティのタイムラインを取得したいといった用途には Plugin を選択してください。
前提条件
- 開発者登録が完了していること
- アプリケーションの概念を理解していること
Plugin アプリケーションを作成する
「アプリケーションを作成」フォームで、インストールタイプに Plugin を選択します。Plugin を選択すると「インストール範囲」の設定が表示されるので、適切なインストール範囲を選択してください。

インストール範囲
| 選択肢 | 説明 |
|---|---|
| 全てのコミュニティでインストール可能 | 任意のコミュニティ管理者がインストールできます |
| 自分が管理人のコミュニティのみインストール可能 | 開発者自身が管理するコミュニティのみにインストールできます |
Requirement を設定する
Requirement は Plugin 固有の概念で、Plugin がコミュニティに要求するパーミッションと受信したいイベントのセットです。
Requirement の設定は「Requirement」設定画面から行います。必要なパーミッションとイベントを選択してください。
パーミッション
コミュニティに対する操作権限です。使用する API に対応したパーミッションを宣言する必要があります。
| パーミッション | 説明 | 対応 API |
|---|---|---|
Community.Post.Read | コミュニティのタイムラインを閲覧できます | GetCommunityTimeline |
Community.Post.Create | コミュニティへポストを投稿できます | CreatePost(community_id 指定時) |
Community.Post.Restrict | コミュニティのポストを非表示にできます | RestrictCommunityPost |
Community.MemberList.Read | コミュニティのメンバー一覧を取得できます | GetCommunityMemberList |
Community.Post.Stamp.Create | コミュニティのポストにスタンプを付与できます | AddStampToPost |
Community.Member.DirectMessage.Create | コミュニティのメンバーに DM を送信できます | SendDirectMessageToCommunityMember |
イベント
受信したいイベントを宣言します。宣言していないイベントは配信されません。
| イベント | 説明 |
|---|---|
Reaction.Post.Replied | 作成したポストにリプライが付いたとき |
Reaction.Post.Mentioned | メンション付きのポストが作成されたとき |
Reaction.DirectMessage.Received | DM を受け取ったとき |
Community.Post.Created | インストール済みコミュニティにポストが作成されたとき |
Community.Member.Joined | インストール済みコミュニティにメンバーが参加・退出したとき |
Plugin のインストール・アンインストールイベント(CommunityPluginManagedEvent)は Requirement への宣言なしに、Plugin アプリケーション全てに自動で配信されます。詳しくは イベント を参照してください。
バージョン管理と後方互換性
Requirement を保存するたびに新しいバージョンが作成されます。
新しいバージョンを作成しても、すでに Plugin をインストール済みのコミュニティは、コミュニティ管理者がアップデートを行うまで古いバージョンの権限のままで動作します。Requirement を変更する際は後方互換性を維持してください。
インストール済みのコミュニティとそのコミュニティが利用しているバージョンは GetCommunitiesUsingApplication で確認できます。
コミュニティへのインストール
Plugin のインストールはコミュニティ管理者が行います。Plugin のプロフィールページに表示されるインストール動線から、自身が管理するコミュニティを選択してインストールします。
開発者がコミュニティの管理者を務めている場合は、自身でインストールできます。

インストール動線はモバイルアプリ(iOS / Android)でのみ表示されます。Web ブラウザ版では表示されません。
開発時の動作確認には、自身が管理するコミュニティにインストールして確認するのが有効です。
Plugin 固有の API
サンプルコードは API の使い方 と同じクライアント・認証の初期化が完了している前提で記述しています。
インストール済みコミュニティの一覧を取得する(GetCommunitiesUsingApplication)
Plugin がインストールされているコミュニティの一覧と、各コミュニティが使用しているバージョンを取得します。
resp, err := client.GetCommunitiesUsingApplication(authCtx, &application_apiv1.GetCommunitiesUsingApplicationRequest{})ページングが必要な場合は、レスポンスの next_cursor を次のリクエストの cursor に指定してください。
コミュニティのタイムラインを取得する(GetCommunityTimeline)
インストール済みコミュニティのタイムライン(ポスト一覧)を取得します。Community.Post.Read パーミッションが必要です。
resp, err := client.GetCommunityTimeline(authCtx, &application_apiv1.GetCommunityTimelineRequest{
CommunityId: "YOUR_COMMUNITY_ID",
// UntilCursor: &cursor, // 古いページを取得する場合
})| フィールド | 型 | 説明 |
|---|---|---|
community_id | string | タイムラインを取得するコミュニティ ID |
until_cursor | optional string | 指定したポストより古いポストを返します |
since_cursor | optional string | 指定したポストより新しいポストを返します |
コミュニティのメンバー一覧を取得する(GetCommunityMemberList)
インストール済みコミュニティのメンバー一覧を取得します。Community.MemberList.Read パーミッションが必要です。
resp, err := client.GetCommunityMemberList(authCtx, &application_apiv1.GetCommunityMemberListRequest{
CommunityId: "YOUR_COMMUNITY_ID",
// PaginationCursor: &cursor, // 次ページを取得する場合
})次ページを取得する場合は、レスポンスの next_pagination_cursor を pagination_cursor に指定してください。
コミュニティのポストを非表示にする(RestrictCommunityPost)
指定したポストをコミュニティのタイムラインから非表示にします。ポストは削除されません。Community.Post.Restrict パーミッションが必要です。
_, err := client.RestrictCommunityPost(authCtx, &application_apiv1.RestrictCommunityPostRequest{
PostId: "YOUR_POST_ID",
})コミュニティメンバーに DM を送信する(SendDirectMessageToCommunityMember)
インストール済みコミュニティのメンバーにダイレクトメッセージを送信します。Community.Member.DirectMessage.Create パーミッションが必要です。text または media_ids のいずれかは必須です。
resp, err := client.SendDirectMessageToCommunityMember(authCtx, &application_apiv1.SendDirectMessageToCommunityMemberRequest{
ReceiverId: "YOUR_USER_ID",
CommunityId: "YOUR_COMMUNITY_ID",
Text: proto.String("メッセージ本文"),
})コミュニティスタンプを取得する(GetStamps)
インストール済みコミュニティ固有のスタンプを取得します。community_ids に対象コミュニティの ID を指定します。指定コミュニティには Plugin がインストールされている必要があります。
resp, err := client.GetStamps(authCtx, &application_apiv1.GetStampsRequest{
CommunityIds: []string{"YOUR_COMMUNITY_ID"},
})取得したコミュニティスタンプは AddStampToPost でポストに付与できます(Community.Post.Stamp.Create パーミッションが必要です)。詳しくは API の使い方 - スタンプの付与 を参照してください。
レート制限
Plugin 固有の API を含む全 RPC は、1 分あたり 20 リクエストの制限が適用されます。制限に達した場合の対処方法は レート制限 を参照してください。
次のステップ
- イベント - イベントの種類と構造
- Webhook でイベントを受信する - Webhook 方式の実装
- gRPC ストリームでイベントを受信する - gRPC 方式の実装
- SDK ガイド - SDK の基本(認証、イベントハンドラ)
- API の使い方 - Bot 共通の API(ポスト作成、DM 送信など)
- API リファレンス - API の完全な仕様