Uncategorized

flutter.devが開けない時に試すたった1つのこと【Mac】

nariXcode

Macでflutter.devやzenn.devなどの〇〇.devにアクセスできない問題を解決する方法を紹介します。

この記事の要約

TLDが.devのURLを開くとき、自動でそのURLを127.0.0.1と解釈する設定ファイルがあるため、そのファイル(/etc/resolver/devもしくは /etc/resolvers/dev)を削除するor無効化する。

説明はこのページの後半に書き、まずは解決策を紹介します。
Terminalでのファイル操作に慣れている人は解決策2を、慣れていない人は解決策1をお試しください。こだわりのない人は解決策1で十分だと思います。

解決策1: Finderでファイル名を変える/削除する

難易度: ★☆☆☆☆
不確実性: ★★☆☆☆

Finderを起動し、「フォルダへ移動」する
  1. Finderを開く
  2. command ⌘ + shift ⇧ + Gを同時に押し、「フォルダへ移動」ウィンドウを開く
  3. /etc/resolver/と入力し、return ⏎ を押す
    • 人によっては/etc/resolver/ではなく/etc/resolvers/になっていることがあります
  4. 該当のフォルダが開く
command ⌘ + shift ⇧ + G
ファイル名を変更する/削除する
  1. devという名前のファイルを選択し、return ⏎ キーを押す
  2. _devと入力し、return ⏎ キーを押す
  3. Touch IDで認証するか、Macにログインするときのパスワードを入力する
1. devという名前のファイルを選択し、return ⏎ キーを押す

削除する際は、devという名前のファイルを選択し、command ⌘ + delete ⌫ で削除します。Touch IDやパスワードを求められた際は上記と同じ手順で認証します。

設定完了!flutter.devを開いてみる

解決策2: Terminalでファイル名を変える/削除する

難易度: ★★★☆☆
不確実性: ★☆☆☆☆

Terminalを開く
  1. command ⌘ + space キーでSpotlightを起動
  2. “terminal”と入力
  3. Terminalアプリに選択肢が合っている状態でreturn ⏎ を押す
該当するファイルがあるか確認する

Terminalを開くと、以下のような画面が表示されるはずです。
(色やデザインは人の設定によって変わります)

このような画面が開けたら、以下のコマンドを入力します。
(意味がわからない方はコピペ推奨)

ls -l /etc/resolver/

その結果、以下のようにdevというファイル名が表示されたら、このdevファイルが原因と見て間違いないでしょう

-rw-r--r--  1 root  wheel  59 Apr  9  2020 dev
-rw-r--r--  1 root  wheel  59 Apr  9  2020 test

もし、ls: /etc/resolver/: No such file or directoryというエラーが出た場合は、resolverの箇所をresolversと変えてみてください。(以後のコマンドも同様です)

ls -l /etc/resolvers/
devファイルを無効化する/削除する

この設定ファイルを無効化するには、devファイルの名前を_devと変えるコマンドを実行します。

sudo mv /etc/resolver/dev /etc/resolver/_dev

Password:とパスワード入力を求められるので、Macにログインするときのパスワードを入力してください。

もう要らないと思う方は、devファイルを削除してもよいです。

sudo rm -f /etc/resolver/dev
設定完了!flutter.devを開いてみる

devファイルには何が書いてあるの?

_devファイル(旧devファイル)に何が書かれているか、出力してみましょう。

cat /etc/resolver/_dev
# Lovingly generated by Pow
nameserver 127.0.0.1
port 20560

この原理を説明する前に、URLやTLD(Top Level Domain)について簡単に説明します。

まず、URLと言って皆さんが思い浮かべるであろうもの(例: https://www.youtube.com)はいくつかの構成要素に分かれています。

  • スキーム: https
  • ホスト: www.youtube.com
  • ポート: 80
    • ポート番号が省略されているときは80が既定値
    • 省略されているだけなので、https://www.youtube.com:80でも同じサイトにアクセスできます

そのホストの中で、.comや.net、.orgなどのファイルの拡張子みたいなものがついていますね。そのホストの最後につく.〇〇〇のことを正式にはトップレベルドメイン(Top Level Domain: TLD)と言います。

  • https://www.apple.com
  • https://www.speedtest.net
  • https://www.freecodecamp.org

ここまでが前置きで、ここから/etc/resolver/フォルダーの説明に移ります。

/etc/resolver/フォルダーに存在するファイル名のTLDのURLにアクセスするときは、そのファイルの中で指定された「ホスト名(nameserver)」と「ポート番号(port)」へ半ば勝手にアクセス先が変わります。
つまり、/etc/resolver/フォルダーにdevファイルが存在すると、〇〇.devにアクセスする際に127.0.0.1:20560へアクセスしてしまい、エラーが表示されたのでした。

127.0.0.1とは自分のパソコンでサーバーを立てた時のIPアドレスとなります。
どんなサイトやサーバーにも「ネット空間における住所」のようなものがあり、それがIPアドレスです。

上述の”ホスト”には、対応するIPアドレスが必ずあります。
127.0.0.1と対応するホストはlocalhostです。

「なぜ127.0.0.1にアクセスするとエラーが出るか」というと、あなたのコンピュータでサーバーが立ち上がっていないからです。
自分のPC上でサーバーを立ち上げる方法はいくつもありますが、簡単に試したい方は以下の記事を参考にしてみてください。

あわせて読みたい
flutter.devが開けない時に試すたった1つのこと【Mac】
flutter.devが開けない時に試すたった1つのこと【Mac】

因みに、lovingly generated by powの”pow”とはRuby on Railsでローカルサーバーを立てる際に使われるツールのようです。
人によってはpumaというものが使われているらしく、pumaが使われた人は/etc/resolvers/フォルダーが作られるとのことでした。

実に余計なおせっかい🧐🧐

ABOUT ME
記事URLをコピーしました