Flutter開発におけるコマンドロードマップ
はじめに
Flutter でアプリ開発する際によく使うコマンド。
いったい何者なのか〜よく使うものの紹介まで。
(随時更新予定)
まず PATH を通すとは何か?
特定のプログラムを「プログラム名だけで実行できるようにする」こと。
内部で何が起こっているか
- コマンドを入力する
- シェルがコマンド検索パス一覧からコマンドを探す
- コマンドが発見できれば、実行。なければ、
command not found: xxx
もうちょっと具体的に説明すると、PATH を通すとは、コマンド検索パス一覧
にパスを追加すること。
さあ、次はシェル
とコマンド検索パス一覧
が出てきたぞ..
シェルってなに?
OSとアプリケーションの間に立ってユーザからの要求をシステムに伝えるためのユーザインターフェースで、要はコマンドを入力することで動くプログラムのことをシェルといいます。
(参考記事より抜粋)
よしわかった。以下の 2 文は同じ意味なんだね。
- シェルがコマンド検索パス一覧から入力コマンドを探す
- 内部で
コマンド検索パス一覧
を探すプログラムが動き、入力コマンドがあるか探す
シェルについての参考記事
ここで言うコマンド検索パス一覧の確認方法
コマンド検索パス一覧
って何者だ?と。
以下のコマンドで確認できます。
echo $PATH
僕の場合は以下のようになりました。
<user名>
の部分にあなたのユーザー名が入ります。
/Users/<user名>/.rbenv/shims:/Users/<user名>/.rbenv/bin:/Users/<user名>/opt/anaconda3/bin:/Users/<user名>/opt/anaconda3/condabin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/share/dotnet:~/.dotnet/tools:/Library/Apple/usr/bin:/Library/Frameworks/Mono.framework/Versions/Current/Commands:/usr/local/Cellar/libpq/13.1/bin:/Users/<user名>/Desktop/flutter/bin:/Users/<user名>/.pub-cache/bin:/Users/<user名>/Desktop/flutter/.pub-cache/bin:/Users/<user名>/Library/Android/sdk/platform-tools
つまり、以下の PATH リストが僕が通した(もともと通っていた)PATH 達です。
- /Users/<user 名>/.rbenv/shims
- /Users/<user 名>/.rbenv/bin
- /Users/<user 名>/opt/anaconda3/bin
- /Users/<user 名>/opt/anaconda3/condabin
- /usr/local/bin
- /usr/bin:/bin
- /usr/sbin:/sbin
- /usr/local/share/dotnet:~/.dotnet/tools
- /Library/Apple/usr/bin:/Library/Frameworks/Mono.framework/Versions/Current/Commands:/usr/local/Cellar/libpq/13.1/bin
- /Users/<user 名>/Desktop/flutter/bin
- /Users/<user 名>/.pub-cache/bin
- /Users/<user 名>/Desktop/flutter/.pub-cache/bin
- /Users/<user 名>/Library/Android/sdk/platform-tools
僕が flutter コマンド(flutter clean
など)を実行できるのは、
/Users/<user名>/Desktop/flutter/bin
上記のパスに flutter の実行ファイルがあるからです。
ちなみに android のデバッグ時によく使用するadb
コマンドも、
/Users/<user名>/Library/Android/sdk/platform-tools
このパスがリストに入っていないと使用できません。(command not found: adb
)
こちらの記事を参考にしています。
PATH を通すとは何か?の結論
ここまでの説明を読めばなんとなくイメージができるようになったと思います。
シェルが検索すべき PATH の一覧に、 新たな PATH を加えることですね。
シェルが探し当てれるように。
参考記事では、このことを以下のようにスッキリ一言にまとめてくれています。
- 特定のプログラムを「プログラム名だけで実行できるようにする」こと。
- シェルがコマンド実行ファイルを探しに行くパスのこと。
PATH を通すとは何か?がわかったところで PATH の通し方をマスターしましょう!
PATH の通し方
さあ、以下の記事を参考にすれば余裕でしょ?
ぬ?設定ファイル.bash_profile
とはなんぞ。。
もうちょっと前提を勉強してからですね。
使用しているシェルの確認
まずは自分の MAC で使用しているシェルを確認しましょう。
MAC にはさまざまな種類のシェルが存在しています。
よく見かけるのは、以下の 2 種類ですね!
- bash
- zsh
ところで自分が使用しているシェルは?
以下のコマンドで確認できます。
echo $SHELL
すると、
/bin/zsh
僕はzsh
を使用しているとわかりました。
PATH を保持する場所
使っているシェルに応じて、PATH を保存する場所も変化します。
- bash =>
.bash_profile
- zsh =>
.zshrc
なので、僕の場合は.zshrc
に PATH を通せばよいというわけです。
.zshrc ファイルの編集
.zshrc ファイルの編集は、以下のコマンドで可能です。
vi ~/.zshrc
flutter コマンドのパスを通したい場合は、以下をファイル内に追加すれば OK です。
export PATH="$PATH:$HOME/Desktop/flutter/bin"
vi ってなに?という方のために軽く以下で説明します。
vi コマンドとは
vi コマンドとは、ファイル編集コマンドです。
最初はちょっと扱いづらいですが、使うコマンドは限られてくると思います。
i (文字入力)
:wq (ファイル保存)
-
escボタン (文字入力モードの解除)
i
でインサートモードにして、文字を編集したら、esc
ボタンで文字入力モードを終了し、:wq
+Enter
キーで編集完了!という流れが多い気がします。
参考
PATH を通した後は
- ターミナルを開きなおす
-
source ~/.zshrc
のどちらかで変更が反映されます。
よし、PATH が通せるようになった。
もう 1 ステップ進もう!
よく使うコマンドのショートカットを作成する
flutter を触っていて、
flutter clean
,flutter pub get
くらいなら楽勝で覚えられる。
しかし、
build_runner
などを使用して、コードの自動生成を行う時に用いるコマンド
flutter pub run build_runner build --delete-conflicting-outputs
これを覚えるのは大変です。
これは毎回どこかにメモっておいたり、ググったり..
こんな時に、コマンドのショートカットの作成が便利です。
コマンドのショートカットの作成方法
手順は以下の通りです。
.zshrc
編集開始
vi ~/.zshrc
i
を押して、インサートモードに切り替えてください。
ショートかっとを作成したいコマンドを追加
以下のようにショートカットを作成できます。
alias コマンド名='コマンド'
コマンド名は自由に決められます。
僕は今回、
- コマンド名
fbr
(flutter build runner の頭文字を取ってみました ^^;) - コマンド
flutter pub run build_runner build --delete-conflicting-outputs
でショートカットを作成します。
alias fbr='flutter pub run build_runner build --delete-conflicting-outputs'
作成後は,esc
ボタン => :wq
=> Enter
ボタンで編集完了!
変更を反映させるために、
source ~/.zshrc
で完了です。
Flutter プロジェクト内で、自分の作ったコマンドを叩いてみてください。
ああ、気持ち良い。
参考
最後
いかがでしたか。
- PATH を通すとは何か
- PATH の通し方
- ショートカットコマンドの作り方
この3つを完全に理解できましたか?
この 3 つはプログラミングをやっていくなら、半永久的に役に立つ基本知識です。
早めにマスターしましょう!
(よく使用するコマンドなども追加予定です)
Twitter では Flutter を中心とする技術関連の情報を発信しています!
お仕事の依頼は以下のメールアドレスまでご連絡をよろしくお願いします。
mark.saito@jp-gx.com
Discussion