🐣

Flutter開発におけるコマンドロードマップ

2022/03/28に公開

はじめに

Flutter でアプリ開発する際によく使うコマンド。
いったい何者なのか〜よく使うものの紹介まで。
(随時更新予定)

まず PATH を通すとは何か?

特定のプログラムを「プログラム名だけで実行できるようにする」こと。

内部で何が起こっているか

  1. コマンドを入力する
  2. シェルがコマンド検索パス一覧からコマンドを探す
  3. コマンドが発見できれば、実行。なければ、command not found: xxx

もうちょっと具体的に説明すると、PATH を通すとは、コマンド検索パス一覧にパスを追加すること。

さあ、次はシェルコマンド検索パス一覧が出てきたぞ..

シェルってなに?

OSとアプリケーションの間に立ってユーザからの要求をシステムに伝えるためのユーザインターフェースで、要はコマンドを入力することで動くプログラムのことをシェルといいます。
(参考記事より抜粋)

よしわかった。以下の 2 文は同じ意味なんだね。

  • シェルがコマンド検索パス一覧から入力コマンドを探す
  • 内部でコマンド検索パス一覧を探すプログラムが動き、入力コマンドがあるか探す

シェルについての参考記事

https://mykii.blog/what-is-shell-bash-and-zsh/#:~:text=OSとアプリケーションの間,をシェルといいます。

ここで言うコマンド検索パス一覧の確認方法

コマンド検索パス一覧って何者だ?と。
以下のコマンドで確認できます。

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)

こちらの記事を参考にしています。
https://qiita.com/soarflat/items/09be6ab9cd91d366bf71
https://qiita.com/sta/items/63e1048025d1830d12fd

PATH を通すとは何か?の結論

ここまでの説明を読めばなんとなくイメージができるようになったと思います。
シェルが検索すべき PATH の一覧に、 新たな PATH を加えることですね。
シェルが探し当てれるように。

参考記事では、このことを以下のようにスッキリ一言にまとめてくれています。

  • 特定のプログラムを「プログラム名だけで実行できるようにする」こと。
  • シェルがコマンド実行ファイルを探しに行くパスのこと。

PATH を通すとは何か?がわかったところで PATH の通し方をマスターしましょう!

PATH の通し方

さあ、以下の記事を参考にすれば余裕でしょ?
https://qiita.com/nbkn/items/01a11392921119fa0153

ぬ?設定ファイル.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キーで編集完了!という流れが多い気がします。

参考
https://eng-entrance.com/linux-vi-is#vim
http://yamabito.main.jp/linux/vi_commands.htm

PATH を通した後は

  • ターミナルを開きなおす
  • source ~/.zshrc
    のどちらかで変更が反映されます。

よし、PATH が通せるようになった。
もう 1 ステップ進もう!

よく使うコマンドのショートカットを作成する

flutter を触っていて、
flutter clean,flutter pub getくらいなら楽勝で覚えられる。
しかし、
build_runnerなどを使用して、コードの自動生成を行う時に用いるコマンド

https://pub.dev/packages/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 プロジェクト内で、自分の作ったコマンドを叩いてみてください。
ああ、気持ち良い。

参考
https://www.choge-blog.com/ライフハック/macterminalshortcutcommandcreate/
https://qiita.com/bonny_d/items/c5f0b0c2d2fdac8734f6

最後

いかがでしたか。

  • PATH を通すとは何か
  • PATH の通し方
  • ショートカットコマンドの作り方
    この3つを完全に理解できましたか?
    この 3 つはプログラミングをやっていくなら、半永久的に役に立つ基本知識です。
    早めにマスターしましょう!

(よく使用するコマンドなども追加予定です)

Twitter では Flutter を中心とする技術関連の情報を発信しています!
https://twitter.com/marksaito4

お仕事の依頼は以下のメールアドレスまでご連絡をよろしくお願いします。
mark.saito@jp-gx.com

Discussion