teratailで質問する前に確認しておくこと

個人的にpythonを勉強し始めて細かいことで詰まったりするので、質問できるところを探していたら[teratail](https://teratail.com/)を見つけました。
つらつら眺めていると自分でも回答できそうなことがあったので、判る範囲で回答していましたが結構やりたいこと以前で詰まっている方が多く感じたので、まず質問する前に確認すれば時間が節約できるだろうってことを纏めておきたいと思います。
自分自身あやふやな理解も多いので確認しながら回答することで、正しい知識が深まるというメリットがあります。
※都度思いつくたびに追加していきます。長くなりそうなので、いったん途中ですが公開します。


1. [一般論](https://qiita.com/nandymak/items/b6d536b24d2747118e53#1-%E4%B8%80%E8%88%AC%E8%AB%96)
1.1 公式の「質問するときのヒント」を読む
1.2 一般的なお話
1.3 調べたことをわかりやすく書く

2. bash編
3. MySQL編
4. python編

## 1. 一般論
### 1.1 公式の「質問するときのヒント」を読む。
まずは公式ページにある「質問するときのヒント」を読みましょう。
https://teratail.com/help/question-tips
> teratailは技術に興味のある人達が集まって、質問と回答を通してお互いに知識や情報を交換・共有する場所です。

「これこれするのはどうすれば良いですか？初心者にも判るように一から教えてください」のような質問があります。
内容にもよりますが**「丸投げの質問」**と言うことで放置されるか、悪い評価が付いて罵倒されることが多いです。

* 判らないなりに調べて実際のコードを書いて見る
<br>自分の学びのためにもエラーを出して質問しながら解決できるようになりましょう。
* エラーは勝手に判断せずに貼る
<br>「タイムアウトしました」「同じ状態です」では回答者は判りませんので、エラーメッセージそのものを貼り付けましょう。多すぎると感じたら自分で判断して必要と思われる部分を貼ってください。足りなければアドバイスがあります。
* 勝手な憶測で書かない、事実を書く
<br>「Pathは通しました、通っているはずです」「他の質問と同じことをしました」など思い込みで間違いが回答者に伝わらないことも多いです。

### 1.2 一般的なお話
#### 読みやすい質問をする<br>
回答者はあなたのことを全く知らない人です。
曖昧な記述では回答者も想像で答えざるを得ないので、結局解決が遅くなります。
#### コードはmarkdown記法で記述する<br>
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223848/b28b2bcb-92fd-f999-5371-6777e44e78b3.png)
プログラムコードを提示するときは、「![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223848/a22c3c31-ab8e-e470-1b8c-cd7c1b9636ed.png)」ボタンを押して「![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223848/c7fcdbab-e89b-e141-eec1-c8f1e18da647.png)」と「![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223848/1d6c836a-9519-b9db-d923-e21c644d40e7.png)」の間に記述してください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223848/493df600-c731-2314-292b-cd7c2acf6784.png)
プレビュー画面を確認して、コードが正しく表示されているかを確認してください。
※特にpythonはインデントが崩れると意味をなさい無いので注意してください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223848/43fc9ef3-da84-8861-47e4-85fd22adbd33.png)
#### 簡単な英語のメッセージは辞書などで調べてから質問する<br>
Google翻訳など簡単に翻訳できる環境があるので、まずはエラー(と思う)メッセージを自分なりに翻訳してみましょう。

```bash
$ conda install anaconda-clean
Collecting package metadata (current_repodata.json): done
Solving environment: done

# All requested packages already installed.

-bash: anaconda-clean: command not found
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223848/ba3b8d65-0cfd-97a8-98fd-ac5c9ae5471c.png)
ああ、コマンドが無いんだな。って判りますよね。
後は何故無いのかを調べるなり、その時点で質問するなりしてください。



#### 環境を明示する<br>
OSはバージョンやパッチレベルも分かれば書く<br>

##### Windowsの場合
 
```
$ winver
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223848/995dcc26-941f-82ab-aafe-056fc106229f.png)

または以下のコマンドで表示させてください(コピペが楽)。

```
>systeminfo | findstr /B /C:"OS 名" /C:"OS バージョン"
OS 名:                  Microsoft Windows 10 Enterprise
OS バージョン:          10.0.17134 N/A ビルド 17134
```
英語バージョンの時は以下としてください。

```
>systeminfo | findstr /B /C:"OS Name" /C:"OS Version"
```



##### MacOSの場合

画面の左上にある Apple メニュー  から「この Mac について」を選択します。macOS の名前 (macOS Mojave など) に続いてバージョン番号が表示されます。一部の製品や機能を使うには、ビルド番号も把握しておく必要があります。バージョン番号をクリックすると、ビルド番号が表示されます。

または

```
$ sw_vers
ProductName:	Mac OS X
ProductVersion:	10.14.6
BuildVersion:	18G95
```
##### CentOSの場合

```bash
$ cat /etc/redhat-release
CentOS release 6.4 (Final)
```
#### ソフトウェアのバージョンを明示する<br>
調べ方はソフトウェアによって異なるので個別に調べてください。

```bash
$ hogehoge --version
```
```bash
$ hogehoge.exe -V
```
### 1.3 調べたことをわかりやすく書く

* 実行したことを端折らずに書いてください。
* Markdown記法を使って記述してください。
* 参考にしたサイトのURLも記述してください。
* Teratailにはエスパーはいません(多分)、状況が伝わるように書いてください。


## 2. bash編
### Q:コマンド「mysql」を打ったらエラーになりました。
```terminal
$ mysql　-uroot
-bash: mysql: command not found
```
#### A1:Pathが通っていません
```bash
$ which mysql
$
```
何も表示されないときはコマンドにPATHが通っていません。コマンドがどこにあるか判らない状態です。
今、PATHは以下の通りに設定されいます。

```terminal
$ echo $PATH
/Users/nandymak/.nodebrew/current/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/go/bin
```

mysqlがどこにあるかを知っているときはPATHを追加するか、FullPathで指定します。

```terminal
$ /usr/local/opt/mysql@5.6/bin/mysql -uroot
```
毎回面倒なのでPATHを通します。

```terminal
$ echo 'export PATH="/usr/local/opt/mysql@5.6/bin:$PATH"' >> ~/.bash_profile
```



関連情報：
- [Bashでコマンドの存在チェックはwhichよりhashの方が良いかも→いやtypeが最強](https://qiita.com/kawaz/items/1b61ee2dd4d1acc7cc94)
- [bashでパスが通っているのにコマンドが見つからない（または、パスの順序と違うコマンドが実行される）場合の原因と対応](https://stupiddog.jp/note/archives/951)
#### A2:インストールされてていません
そもそもインストールに失敗している。

以下、工事中です。