はじめに
2025年10月31日、LINE Developersで重要な仕様変更が発表されました。
2026年1月8日以降に作成される日本向けの新規LINEミニアプリチャネルにおいて、「チャネル同意の簡略化」機能の利用が必須となります。
この記事では、仕様変更の内容と、開発者として必要な対応について解説します。
「チャネル同意の簡略化」とは
「チャネル同意の簡略化」は、LINE Developers Consoleの「ウェブアプリ設定」タブで設定できる機能です。
この機能をオンにすると、下記のようにミニアプリをすぐに利用できるようになります。
一方で、機能で同意がスキップされる権限はユーザーID(openidスコープ)のみに限定され、ユーザーのプロフィール情報取得やメッセージ送信に必要な権限(profileスコープやchat_message.writeスコープなど)は取得できないため、改めて権限の取得同意を得る必要があります。
ユーザーは簡略化に対する同意を初回のみ行うだけで、別のLINEミニアプリに初めてアクセスする際は「チャネル同意画面」をスキップして、すぐにサービスの利用を開始できるようになります。
対象となるLINEミニアプリチャネル
今回の仕様変更の対象は以下の条件を満たすチャネルです。
- 2026年1月8日以降に作成されたチャネル
- 「チャネル基本設定」タブの「サービスを提供する地域」が「日本」 のチャネル
既存のLINEミニアプリチャネルには影響ありません。
2026年1月7日以前に作成されたチャネルは、従来どおりの挙動となります。
仕様変更の背景
LINEヤフー社公式の発表によると、この変更の目的は以下のとおりです。
ユーザーがLINEミニアプリをよりスムーズに利用できるようにすることで、ユーザー体験を向上させ、LINEミニアプリの利用を促進することを目的としています。
つまり、LINEミニアプリ起動時のステップを減らし、ユーザーの離脱を防ぐことが狙いだと思われます。
現在の挙動(変更前)
まず、現在の「チャネル同意の簡略化」がオフの場合の挙動を確認しましょう。
初めてのLINEミニアプリにアクセスした場合
初めて使うLINEミニアプリにアクセスすると、必ず「チャネル同意画面」が表示されます。
LINEミニアプリAにアクセス → チャネル同意画面 → LINEミニアプリA起動
別のLINEミニアプリにアクセスした場合
別のLINEミニアプリ(例:LINEミニアプリB)を初めて使う場合でも、同様に「チャネル同意画面」が表示されます。
LINEミニアプリBにアクセス → チャネル同意画面 → LINEミニアプリB起動
つまり、ユーザーは新しいLINEミニアプリを使うたびに、毎回同意画面を経由する必要がありました。
仕様変更後の挙動
2026年1月8日以降に作成されたチャネルでは、「チャネル同意の簡略化」が必須となり、以下のような挙動に変わります。
初めてのLINEミニアプリにアクセスした場合
初めて「チャネル同意の簡略化」が有効なLINEミニアプリにアクセスすると、従来の「チャネル同意画面」ではなく、「簡略化同意画面」が表示されます。
LINEミニアプリAにアクセス → 簡略化同意画面 → LINEミニアプリA起動
2回目以降のLINEミニアプリにアクセスした場合
一度「簡略化同意画面」で同意したユーザーが、別のLINEミニアプリ(例:LINEミニアプリB)にアクセスすると、「簡略化同意画面」がスキップされます。
LINEミニアプリBにアクセス → 読み込み画面のみ → LINEミニアプリB起動
これにより、ユーザーは2つ目以降のLINEミニアプリをよりスムーズに利用できるようになります。
仕様変更のメリット・デメリット
メリット
1. 離脱率の低下
LINEミニアプリ起動までのステップが1つ減ることで、起動時の離脱率を大きく下げることが期待できます。これは直接的にコンバージョンの向上につながります。
2. LINE全体でのシンプルな導線維持
LINEは老若男女、幅広い層が利用しています。LINE全体としてシンプルな導線を維持することで、ユーザーのLINE離れを防ぎ、LTV(顧客生涯価値)の向上を目指していると思われます。
デメリット
1. 「友だち追加オプション」がそのままでは使えない
「チャネル同意の簡略化」が有効な場合、従来の「チャネル同意画面」が表示されなくなるため、「友だち追加オプション」による友だち追加の誘導ができなくなります。
そのため、LINEミニアプリの利用を通じて友だちを増やしたい場合は、別途対応が必要です。
2. openid以外の権限スコープを使う場合も対応が必要
emailやprofileなどの権限スコープを使用する場合も、「友だち追加オプション」と同様の対応が必要となります。
仕様変更への対応方法
「友だち追加オプション」や、openid以外のスコープを使いたい場合の対応方法を解説します。
方法1: liff.permission.query() と liff.permission.requestAll() を使う
liff.permission.query()メソッドとliff.permission.requestAll()メソッドを使うことで、アクセス許可要求画面を任意のタイミングで表示できます。
// 権限の状態を確認し、必要に応じてアクセス許可要求画面を表示
liff.permission.query("profile").then((permissionStatus) => {
if (permissionStatus.state === "prompt") {
liff.permission.requestAll();
}
});
この方法を使えば、アプリの適切なタイミング(例:ユーザー登録時など)で権限の許可を求めることができます。
方法2: openidスコープ以外の権限を必要とするメソッドを使う
liff.getProfile()など、openidスコープ以外の権限を必要とするメソッドを呼び出すと、自動的にアクセス許可要求画面が表示されます。
| スコープ | メソッド |
|---|---|
email |
liff.getIDToken()、liff.getDecodedIDToken()
|
profile |
liff.getProfile()、liff.getFriendship()
|
chat_message.write |
liff.sendMessages() |
実装例:プロフィール情報の取得
async function initializeLiff() {
try {
await liff.init({ liffId: "YOUR_LIFF_ID" });
if (liff.isLoggedIn()) {
// プロフィール情報を取得(権限がない場合は自動で許可画面が表示される)
const profile = await liff.getProfile();
console.log("ユーザー名:", profile.displayName);
console.log("ユーザーID:", profile.userId);
}
} catch (error) {
console.error("LIFF初期化エラー:", error);
}
}
見落としがちな対応:「×」ボタン押下時のエラーハンドリング
仕様変更に伴い、「アクセス許可要求画面」の画面サイズが変わり(Full→Compact)、「×」ボタンが押しやすくなるため、 対応が重要になります。
なお、この対応は仕様変更前(現在)と挙動は変わらないのですが、仕様変更により「x」ボタンが押しやすくなってしまったため、より誤って押してしまうケースが増えるため対応の重要性が高まりました。
なぜ対応が必要なのか
「アクセス許可要求画面」には「×」ボタンがあり、ユーザーは権限の許可を拒否できます。
liff.getProfile()などのメソッドが成功することを前提に実装していると、ユーザーが権限を拒否した場合にアプリが正常に動作しなくなる可能性があります。
実装例:エラーハンドリング
async function getProfileWithErrorHandling() {
try {
// 権限の状態を確認
const permissionStatus = await liff.permission.query("profile");
if (permissionStatus.state === "granted") {
// 権限が許可されている場合
const profile = await liff.getProfile();
return profile;
} else if (permissionStatus.state === "prompt") {
// 権限が未設定の場合、許可を要求
await liff.permission.requestAll();
// 再度権限を確認
const newStatus = await liff.permission.query("profile");
if (newStatus.state === "granted") {
const profile = await liff.getProfile();
return profile;
} else {
// 権限が拒否された場合
throw new Error("PERMISSION_DENIED");
}
} else {
// 権限が拒否されている場合
throw new Error("PERMISSION_DENIED");
}
} catch (error) {
if (error.message === "PERMISSION_DENIED") {
// 権限拒否時の処理
// エラー画面を表示し、再読み込みを促す
showPermissionDeniedScreen();
} else {
// その他のエラー
console.error("エラーが発生しました:", error);
}
return null;
}
}
LINEミニアプリ「matoca」での実装例
私が所属するブレイブテクノロジー が 開発・運営している順番待ちサービス「matoca」 のLINEミニアプリでは、以下のフローで対応しています。
- 権限拒否を検知: ユーザーが「×」ボタンを押した場合のエラーをキャッチ
- エラー画面を表示: 権限が必要である旨を説明
- 「再読み込み」ボタンを表示: ユーザーに再度権限許可の機会を提供
- 再度「アクセス許可要求画面」を表示: 再読み込み後に改めて権限を要求
この対応により、ユーザーが誤って権限を拒否した場合でも、アプリを利用できるようになります。
まとめ
この仕様変更は、2026年1月8日以降に作成される新規チャネルから適用されます ので、年内に対応して年末年始休暇を安心して迎えられるようにしましょう。
押さえておくべきポイント
- 適用開始日: 2026年1月8日以降に作成される新規チャネルから適用
- メリット: ユーザーの離脱率低下、UX向上
-
対応が必要なケース: 「友だち追加オプション」や
openid以外のスコープを使用する場合 -
対応方法:
liff.permission.query()、liff.permission.requestAll()、liff.getProfile()などを活用 - 忘れがちな対応: 「×」ボタン押下時のエラーハンドリング
新規開発時のチェックリスト
-
openid以外の権限スコープを使用するか確認 - 「友だち追加オプション」を使用するか確認
-
liff.permission.query()、liff.permission.requestAll()、liff.getProfile()などを利用した実装変更 - 権限拒否時のエラーハンドリング実装
- エラー画面からの復帰フローの実装
参考リンク
- 【更新】日本の新規LINEミニアプリチャネルにおいて、2026年1月8日に「チャネル同意の簡略化」機能の利用が必須になります
- チャネル同意の簡略化 | LINE Developers
- 「チャネル同意の簡略化」設定のオン/オフ時の動作の違い
- liff.permission.query() | LINE Developers
- liff.permission.requestAll() | LINE Developers
- liff.getProfile()
最後までお読みいただきありがとうございました。
この記事が、LINEミニアプリ開発者の皆様のお役に立てば幸いです。









