0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Flutter + Laravel + ngrok

Last updated at Posted at 2023-07-10

【ngrokとは】

ローカルホストに展開されたWebサーバーやデータベース、APIを一時的なURLを通じてインターネットに公開するためのツールです。
これはトンネリングソフトウェアと呼ばれ、インターネット上の他のマシンから自身のローカルで実行されているアプリやサーバーに外部からアクセスすることが可能になります。
リアルタイムのデバッグやテスト、デモンストレーションなどにとても便利です。

一部の基本機能を無料で提供していますが、追加機能を利用するためには有料プランにアップグレードする必要があります。

ngrok公式サイトはこちら
https://ngrok.com/

【開発環境】

Flutter 3.7.7
Dart 2.19.4
Laravel 8.70.2
ngrok 3.3.1

今回はFlutterとLaravelでのAPI通信に使用しました。
スマホアプリを開発していると、API通信でローカルサーバーまでのネットワーク経路を作る必要があると思います。
私自身、仕事でローカルサーバーにアクセスをして開発をしていたのですが、困った事が発生した為、同僚に相談をしたところngrokを紹介して頂きました。
初めて使ってみて凄く便利でしたしサクッとできるので紹介したいと思います。

ngrokの導入手順はここでは紹介しません。

【API通信方法】

  1. ngrokを外部公開する
  2. Flutterでngrokで発行されたURLを指定する
  3. Laravelで通信が来ているか確認する

1.ngrokを外部公開する

①コマンドラインを開きます。

WindowsではCommand PromptやPowerShellを、MacではTerminalを開きます。

②ngrokを実行します。

ローカルネットワーク上のアプリを公開するには、そのアプリケーションが稼働しているポートを指定する必要があります。例えば、アプリケーションがlocalhostのポート8080で稼働しているとすれば、以下のコマンドを実行します:

./ngrok http 8080

ngrokを実行すると、以下のような出力が表示されます:

Session Status                online
Account                       your_email@example.com (Plan: Free)
Version                       3.3.1
Region                        Japan (jp)
Web Interface                 http://127.0.0.1:4040
Forwarding                    https://your-random-subdomain.ngrok-free.app -> http://localhost:8080

API通信で利用するURLは Forwarding のhttps://xxxxxxxxx.app までになります。

2.Flutterでngrokで発行されたURLを指定する

http.get(Uri.parse(https://xxxxxxxxx.app/laravel/api);

一点注意が必要です。
ngrokは一時的に外部へ公開しているだけなので、ngrokが稼働している間だけ有効となります。
ngrokを再起動すると新たなURLが生成されるのでForwarding のURLが変更されます。
ですので、その都度Flutterで指定したURLを変更しないとAPI通信ができません。
もし、通信できないなどの時はURLも疑ってみてください。

3.Laravelで通信が来ているか確認する

public/index.php
if (file_exists(__DIR__.'/../storage/framework/maintenance.php')) {
    require __DIR__.'/../storage/framework/maintenance.php';
}

上記のコードの部分にブレークポイントをはる。
FlutterでAPIを叩いて、ブレークが止まれば通信が来ているので成功です。

【最後に】

ngrokはローカルネットワーク上のアプリケーションを公開することができますが、セキュリティには十分注意する必要があります。しかし、今回紹介をしていませんがngrokは簡単に導入する事がき、時間や費用の削減ができる事、発行したURLは停止しない限り時間無制限でアクセスできる事も魅力の一つだと思います。お時間あれば一度使用してみてください。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?