Flutter環境構築後PROXY設定の話

# はじめに
ラップトップPC（Windows OS）へFlutter開発環境の構築しました。ラップトップPCのため、社内（プロキシ有）と自宅（プロキシ無）の2カ所で作業することがあります。2つの場所を往復し遭遇したプロキシ問題についての覚書です。タイトルにFlutterとありますが、たまたまFlutter環境構築の際に遭遇した問題なだけです。

# 正常系
Flutter開発環境の構築後に以下のコマンドで構築状況を確認します。
```cmd:cmd
flutter doctor
```
以下のレスポンスが返ってきました。正常に環境構築できています（Android環境は不要のため、[ ! ] 表示が一部あるのはご愛嬌ということで）。
```response:response
Doctor summary (to see all details, run flutter doctor -v):
[√] Flutter (Channel stable, 3.16.0, on Microsoft Windows [Version 10.0.19044.1706], locale ja-JP)
[√] Windows Version (Installed version of Windows is version 10 or higher)
[!] Android toolchain - develop for Android devices (Android SDK version 33.0.1)
    X cmdline-tools component is missing
      Run `path/to/sdkmanager --install "cmdline-tools;latest"`
      See https://developer.android.com/studio/command-line for more details.
    X Android license status unknown.
      Run `flutter doctor --android-licenses` to accept the SDK licenses.
      See https://flutter.dev/docs/get-started/install/windows#android-setup for more details.
[√] Chrome - develop for the web
[√] Visual Studio - develop Windows apps (Visual Studio Professional 2022 17.8.0)
[√] Android Studio (version 2021.3)
[√] VS Code (version 1.84.2)
[√] Connected device (3 available)
[√] Network resources

! Doctor found issues in 1 category.
```

# システムの環境変数設定
「システム環境変数の編集」の詳細設定タブ環境変数ボタンからシステム環境変数へ下記の3点を追加設定しました。
* HTTP_PROXY
* HTTPS_PROXY
* NO_PROXY

# いざ社内へ
問題なく動きました。

# 異常系との遭遇（自宅）
その後自宅にラップトップを持ち帰って、pub getが正常に実行できない問題に遭遇しました。
確認のためにflutter doctorの実行を試してみます。Network resourcesに [ ! ] 表記がありました。

```response:response
Doctor summary (to see all details, run flutter doctor -v):
[√] Flutter (Channel stable, 3.16.0, on Microsoft Windows [Version 10.0.19044.1706], locale ja-JP)
[√] Windows Version (Installed version of Windows is version 10 or higher)
[!] Android toolchain - develop for Android devices (Android SDK version 33.0.1)
    X cmdline-tools component is missing
      Run `path/to/sdkmanager --install "cmdline-tools;latest"`
      See https://developer.android.com/studio/command-line for more details.
    X Android license status unknown.
      Run `flutter doctor --android-licenses` to accept the SDK licenses.
      See https://flutter.dev/docs/get-started/install/windows#android-setup for more details.
[√] Chrome - develop for the web
[√] Visual Studio - develop Windows apps (Visual Studio Professional 2022 17.8.0)
[√] Android Studio (version 2021.3)
[√] VS Code (version 1.84.2)
[√] Proxy Configuration
[√] Connected device (3 available)
[!] Network resources
    X A network error occurred while checking "https://pub.dev/": セマフォがタイムアウトしました。

    X A network error occurred while checking "https://storage.googleapis.com/": セマフォがタイムアウトしました。

    X A network error occurred while checking "https://maven.google.com/": セマフォがタイムアウトしました。

    X A network error occurred while checking "https://cocoapods.org/": セマフォがタイムアウトしました。

    X A network error occurred while checking "https://github.com/": セマフォがタイムアウトしました。


! Doctor found issues in 2 categories.
```

# 対応策
Proxy Configurationは[✓]なのに、Proxy設定ではまっていました。たしか、PowerShellでflutter doctorを実行するとそれらしいエラーメッセージが表示されたような気がします。。。システムの環境変数でHTTP_PROXY, HTTPS_PROXYの2つを削除すると問題を解消できます。ただし、場所の違いで毎回システムの環境変数を手動で設定することは面倒です。
結局、バッチファイルでシステムの環境変数を変更する方法を選択しました。proxy.batを実行しやすいところへ格納しておき、管理者権限で実行するだけです。
```bat:proxy.bat
@echo off
setlocal
ping proxy-server -n 1 > NUL
if %errorlevel% == 0 (
    setx HTTP_PROXY "http://proxy-server" /M
    setx HTTPS_PROXY "http://proxy-server" /M
) else (
    setx HTTP_PROXY "" /M
    setx HTTPS_PROXY "" /M
)
```

# おわりに
他の方々に聞くと、「ラップトップのパワーが足りず、ほぼデスクトップで作業するとのことで、問題視したことない。」と伺いました。ですよねーと思いながら、今回いいネタにはなるかなと考え、ここに残しました。