LinuxにFlutterをインストール:依存関係の地獄(Dependency Hell)で挫折しないために

Development tutorial - IT technology blog
Development tutorial - IT technology blog

Flutter Doctorが赤い「X」だらけという絶望?

WindowsからLinuxに乗り換えたばかりの人や、アプリ開発を始めたばかりの人にとって、flutter doctorを実行してエラーだらけの画面を見るのは非常に落胆する経験です。私自身、起動しないAndroid Emulatorと格闘して週末を丸二日潰したことがあります。Android Studioをインストールしているのにもかかわらず、Android license status unknownというエラーが出続けることもありました。

Linuxでの環境構築は、時に「依存関係の地獄(dependency hell)」を解くパズルのようです。何かをインストールすれば別の何かが足りないと怒られ、環境変数PATHを通せばJavaのバージョンが違うと言われる。でも安心してください。私の失敗を繰り返さないための、標準的なセットアップ手順をまとめました。

なぜLinuxでのFlutterインストールはつまずきやすいのか?

実際、Linuxはモバイル開発において非常に軽量で安定しています。しかし、初心者がつまずくのには主に3つの理由があります:

  • 権限管理 (Permissions): Linuxはハードウェアセキュリティが非常に厳格です。ユーザーをkvmグループに追加しないと、ハードウェアアクセラレーションが効かず、Emulatorの動作が極端に遅くなります。
  • 32ビットライブラリの不足: Android SDK内の古いツールの多くは、依然として32ビットライブラリを必要とします。 Ubuntuの新しいバージョン(22.04以降)では、システム最適化のためにこれらのパッケージが省略されていることが一般的です。
  • 隠しファイルの構成: WindowsのようなGUIがないため、.bashrc.zshrcを手動で編集する必要があります。スペースが一つ多かったり、スラッシュが間違っていたりするだけで、flutterコマンドは「not found」となります。

どのインストール方法が一番「楽」か?

現在、主に3つの方法がありますが、それぞれに「罠」があります:

  1. Snapを使用する: sudo snap install flutterを実行するだけです。しかし、Snapはサンドボックス(隔離環境)で動作するため、Android StudioやChromeを認識できずデバッグできないことがあり、非常にストレスが溜まります。
  2. 管理ツール (fvm/asdf) を使う: 複数のFlutterバージョンを切り替える必要があるプロ向けです。初心者の場合、余計に複雑になるだけです。
  3. tar.xzファイルから手動でインストールする: これがおすすめの方法です。SDKの場所を完全にコントロールでき、アップデートも簡単で、システムディレクトリへの書き込み権限エラーに悩まされることもありません。

スムーズに開発を始めるための「標準」セットアップ手順

1. 「道具」の準備 (Dependencies)

SDKをダウンロードする前に、ベースとなるライブラリをインストールしておきましょう。ターミナルを開いて以下のコマンドを実行してください:

sudo apt-get update
sudo apt-get install -y curl git unzip xz-utils libglu1-mesa clang cmake ninja-build pkg-config libgtk-3-dev liblzma-dev libstdc++6

これらのパッケージが不足していると、デスクトップアプリのコンパイルやスムーズなグラフィック処理ができません。

2. Flutter SDK ofインストールとPATHの設定

ホームディレクトリに~/developmentフォルダを作成してSDKを配置しましょう。/usr/bin/optには絶対にインストールしないでください。SDKをアップグレードするたびにsudoが必要になり、セキュリティ上の懸念があるだけでなく、ファイル権限エラーの原因にもなります。

mkdir ~/development
tar xf ~/Downloads/flutter_linux_3.x.x-stable.tar.xz -C ~/development

次に重要なステップ、Flutterを環境変数に追加します。Zsh(最近のUbuntuのデフォルト)を使用している場合は、~/.zshrcを開きます:

nano ~/.zshrc
# ファイルの末尾にこの行を追加
export PATH="$PATH:$HOME/development/flutter/bin"

source ~/.zshrcを実行して、設定を即座に反映させるのを忘れないでください。

3. JavaとAndroid Toolchainの解決

Android license status unknownエラーは、多くの場合**Command-line Tools**が不足していることが原因です。Android Studioを開き、**SDK Manager > SDK Tools**で`Android SDK Command-line Tools (latest)`にチェックを入れてインストールしてください。これは初心者の90%が挫折する最も一般的なポイントです。

Javaについては、FlutterはOpenJDK 17と最も相性が良いです。Java 21は新しすぎて、古いプロジェクトをビルドする際にGradleがクラッシュすることがあります。

sudo apt install openjdk-17-jdk
flutter doctor --android-licenses

完了するまで、ひたすらyを入力してください。ここでエラーが出る場合は、前述のCommand-line Toolsを再度確認してください。

4. Emulatorを爆速にする「魔法」KVMの有効化

Emulatorを起動して/dev/kvm device: permission deniedと表示される場合は、仮想化へのアクセス権限を付与する必要があります。以下のコマンドを実行し、新しい権限を反映させるために**必ずログアウト(再ログイン)**してください:

sudo usermod -aG kvm $USER
sudo chown $USER /dev/kvm

KVMを有効にすると、Emulatorは通常のソフトウェアエミュレーションモードよりも5〜10倍スムーズに動作します。

低スペックPCでの開発体験を向上させる

8GBのRAMでAndroid StudioとEmulatorの両方を動かすのは、まさに修行です。動作を軽くするためには以下の工夫が有効です:

  • VS Codeを優先する: Android Studioよりもはるかに軽量です。FlutterとDartの拡張機能をインストールするだけで十分開発できます。
  • 実機でデバッグする: USBケーブルで接続し、スマホの「USBデバッグ」を有効にします。RAMを消費せず、実際の操作感を確認できます。
  • Scrcpyを使う: USB経由でスマホの画面をPCにミラーリングするツールです。Linux上でスマホの画面を操作でき、EmulatorのためにRAMを1MBも消費せずに済みます。

flutter doctorを実行してNo issues found!が表示されたとき、それが創造の旅の始まりです。この記事が、あなたがコードを書くという最も重要な作業に集中するための、貴重な時間を節約する助けになれば幸いです。

Share: