無料で相談する無料相談

実機テストのストレスを解消!LIFF Inspectorとngrokを使った高効率デバッグ術

10 min read執筆: ミニアプリラボ編集部
実機テストのストレスを解消!LIFF Inspectorとngrokを使った高効率デバッグ術

LINEミニアプリ(LIFF)の開発において、PCブラウザ上では正常に動作するにもかかわらず、実際のスマートフォンのLINEアプリ内でテストすると予期せぬエラーが発生し、原因究明に多大な時間を奪われた経験はないでしょうか。本記事では、面倒な実機での動作確認を大幅に効率化するため、LIFF Inspectorとngrokを活用してローカル環境での開発スピードを爆発的に向上させるデバッグ手法を詳しく解説します。

Diagram illustrating the local development environment using ngrok and LIFF Inspector to debug a mobile device running a LINE Mini App

なぜLIFFの実機デバッグは難しいのか?

LIFF(LINE Front-end Framework)アプリの開発では、多くの開発者が最初に「PCのブラウザでは動くのに実機(LINE内蔵ブラウザ)では動かない」という壁にぶつかります。これは、PCブラウザとスマートフォン上のLINEアプリ内ブラウザとで、実行環境やCookieの扱い、画面幅の計算方法などが微妙に異なるためです。

特に問題となるのは、実機でエラーが起きた際に「エラーのログ(Console)が見えない」という点です。PCのGoogle Chromeなどであれば開発者ツール(DevTools)を開いてすぐに原因を特定できますが、実機のLINEアプリ上で立ち上がるブラウザには開発者ツールが標準搭載されていません。そのため、これまでは画面上に強引にログを出力するライブラリを組み込んだり、アラート(alert())を何度も表示させて変数の状態を確認したりといった、泥臭い手法に頼らざるを得ませんでした。このような状態では開発効率が著しく低下してしまいます。

ngrokでローカル環境を安全に外部公開する

LIFFアプリをLINEプラットフォーム上で動作させるためには、LINE Developersコンソールの「Endpoint URL」にHTTPS通信が可能なURLを登録する必要があります。しかし、開発中のコードを毎回サーバーにデプロイして確認するのは非常に手間がかかります。

そこで活躍するのが「ngrok」です。ngrokは、手元のPCのローカルホスト(例: http://localhost:3000)に対して、外部からアクセス可能な一時的なHTTPSのURLを発行してくれるツールです。

ngrokの導入と起動

まずはngrokをインストールし、開発用サーバーを公開してみましょう。

# ngrokのインストール(macOS / Homebrewの場合)
brew install ngrok/ngrok/ngrok
 
# ローカルサーバー(ポート3000)を外部公開
ngrok http 3000

コマンドを実行すると、ターミナル上に https://xxxx-xxx.ngrok.app のようなURLが表示されます。このURLをLINE Developersコンソールの「Endpoint URL」に設定するだけで、手元のソースコードの変更を即座に実機のLINEアプリ上で確認できるようになります。

なお、無料プランのngrokを使用している場合、コマンドを再起動するたびにURLが変わってしまいます。その都度LINE Developersコンソールの設定を変更するのは手間になるため、有料プランで固定ドメインを取得するか、CLIツール等を利用してAPI経由でEndpoint URLを自動更新する仕組みを構築することをおすすめします。

Conceptual diagram showing how ngrok tunnels traffic from the LINE platform securely to the local development server on a PC

LIFF Inspectorによる革命的なデバッグ体験

ngrokで実機確認の手間を省くことができたら、次は「実機で見えないログをどう確認するか」という課題に取り組みます。ここで非常に強力な武器となるのが、公式が提供しているデバッグツール「LIFF Inspector」です。

LIFF Inspectorを利用すると、PC側のChrome DevToolsを使って、スマートフォン上のLINEアプリで実行されているLIFFアプリのコンソールログ、ネットワークリクエスト、DOM要素などをリアルタイムに監視・操作できるようになります。現在提供されているLIFF SDK(v2系)に対応しており、導入も非常にシンプルです。

LIFF Inspectorの導入手順

プロジェクトにLIFF Inspectorのパッケージをインストールします。

npm install @line/liff-inspector --save-dev

次に、LIFFの初期化処理(liff.init)を行う直前に、LIFF Inspectorを組み込みます。開発環境(ローカル実行時)のみ有効化する設定例は以下のようになります。

import liff from "@line/liff";
import LIFFInspectorPlugin from "@line/liff-inspector";
 
const initializeLiff = async () => {
  try {
    // 開発環境のみLIFF Inspectorを有効化
    if (process.env.NODE_ENV === "development") {
      liff.use(new LIFFInspectorPlugin());
    }
 
    await liff.init({
      liffId: process.env.NEXT_PUBLIC_LIFF_ID as string,
    });
    console.log("LIFF Initialization success");
  } catch (error) {
    console.error("LIFF Initialization failed", error);
  }
};

公式ドキュメントによれば、LIFF Inspectorプラグインは必ず liff.init() の前に liff.use() で登録する必要があります。この順序を間違えると正常に動作しないため注意が必要です。

LIFF Inspector × ngrokの具体的な連携手順

すべての準備が整ったら、実際に連携させてデバッグを開始します。以下の手順を踏むことで、魔法のように実機の状態がPCに表示されます。

  1. ローカルサーバーとngrokの起動 フロントエンドのローカル開発サーバー(例: npm run dev)を立ち上げ、前述の通りngrokで外部公開します。
  2. LINE DevelopersへのURL登録 ngrokで発行されたHTTPSのURLを、LINE Developersコンソールに登録します。
  3. LIFF Inspectorサーバーの起動 PCのターミナルで新しいタブを開き、以下のコマンドを実行してインスペクター用のサーバーを立ち上げます。
    npx liff-inspector
  4. DevToolsへの接続 npx liff-inspector を実行すると、ターミナルに chrome-devtools://devtools/bundled/inspector.html?... から始まる専用のURLが出力されます。このURLをPCのGoogle Chromeのアドレスバーに貼り付けて開きます。
  5. 実機でLIFFアプリを開く スマートフォンのLINEアプリから、対象のLIFFアプリを開きます。すると、PCで開いているDevToolsのコンソール画面に、実機上で発生しているログ(console.log など)がリアルタイムに流れてくることが確認できます。

実機テストの「よくあるハマりどころ」と対策

実機デバッグが快適になったとしても、LINEミニアプリ特有の挙動には気をつけるべきポイントがいくつか存在します。

キャッシュの強力な保持

LINE内蔵ブラウザは、キャッシュを比較的強く保持する傾向があります。ngrok経由でコードを修正し、リロードしても画面が更新されない場合は、キャッシュが原因である可能性が高いです。対策としては、ファイル名にハッシュ値を付与するビルド設定にするか、LINEアプリの設定から「トークルーム内の一時的なデータを削除」を実行することで解消できます。

iOSとAndroidのレンダリング差異

LINEヤフー株式会社が提供するLINEアプリにおいて、iOS版とAndroid版では内蔵されているブラウザのエンジン(iOSはWebKit、AndroidはBlink/WebView)が異なります。そのため、CSSの解釈やスクロールの挙動に微妙な差異が生じることがあります。LIFF Inspectorを使えば実機ごとにDOMやCSSの適用状態を直接PCから操作できるため、OSごとの微調整が非常に容易になります。

LIFF APIの動作制限

一部のLIFF APIは、OSやLINEアプリのバージョン、または外部ブラウザかLINE内蔵ブラウザかによって動作が異なります。すべてのエラーがコードの不備によるものとは断言は避け、環境依存による制限である可能性も考えられます。必ず公式ドキュメントのAPIリファレンスと対応表を併せて確認するようにしてください。

まとめ

LINEミニアプリ(LIFF)の開発において、ngrokによるローカル環境の外部公開と、LIFF Inspectorを活用した実機デバッグの組み合わせは、開発体験を劇的に改善する強力なソリューションです。これまで実機での原因究明に費やしていた時間を大幅に削減し、より魅力的な機能の開発に集中できるようになります。設定自体は数分で完了するため、まだ導入していない開発者の皆様はぜひ本記事を参考に構築してみてください。

LINEミニアプリの開発
読みながら相談できます
無料相談 →