エラーが怖い？それならSyntax Errorを「起こす」ことから始めよう

# はじめに
こんにちは！ @RyoSakon001 です。 [Fignny株式会社](https://fignny.co.jp/)でPython, PHP, TypeScriptのエンジニアとして働いています。
エンジニアとして業務を始めたての頃は、エラーにとにかく悩まされがち。そんなあなたにピッタリの情報をお届けできればと思います。

## こんな人に読んでほしい
- 駆け出しエンジニアの方
- 駆け出しWebデザイナーの方
- 育成担当ベテランエンジニアの方

## エラーの大半って、実はコレ
一括りに「エラー」と言っても、色々な種類があります。超〜アバウトに、大別してみます。

1. **Syntax Error**
1. **Undefined**
1. **その他**

その中で、1, 2番がおよそ８割を占めていると思います。そして、実は本当に難しい（可能性がある）のは3番だけで、1, 2番は初心者の方でも簡単に解決できてしまうのです。

## エラーへの恐怖心をなくすには、自分で「わざと」起こしてみること
**「最初は怖いけど、やってみると大したことなかった」** という経験はありませんか？
- ピーマンを食べる
- ジェットコースター
- １人でラーメン屋に入る
- 飛んだことがない雛鳥（おい）

意外に思われるかもしれませんが、エラーって、上記のケースと同じなんです（本番環境は別ですけどね）。そうじゃなきゃ、エラーを読んでいるエンジニアがあんなに平然としているわけがありません。

本記事では、**「わざと起こしてみる」ことを大事にし、「ああ、意外と大したことないな」** と思ってもらうのが狙いです。育成担当のベテランエンジニアの方がいらっしゃいましたら、ぜひこの手法をやってみてください！驚くほど効果があります。

**「エラーとは、起こしてはいけないもの」という認識をもし持っていたら、今日限りで捨ててしまいましょう。**


# 実践
おなじみの[Paiza](https://paiza.io/en/projects/new?language=python3)でやってみます。（もちろんご自身のエディタでやってもOKです。）例としてPythonを使用していますが、Ruby, PHP, JavaScriptなど、どの言語でやってみてもOKです。

## 1. Syntax Errorを起こしてみる
ここからは具体例を挙げていきます。

### 例１： カッコを閉じない
```sample.py
print('Hello'
```
![qiita1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/852882/f598add3-e913-3fd5-592d-fbc3a9936186.png)

### 例２： iff
```sample.py
iff True:
    print('Hello')
```
![qiita2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/852882/0cec7f72-6dd4-3dc3-3167-29fb96fea450.png)


### 例３： impoooot
```sample.py
impoooot datetime
```
![qiita3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/852882/5f34c908-d123-1a08-b7b5-84be535f226e.png)


いかがでしょうか？さすがにどんな方でも、「コレはエラーが出て当然でしょ」とわかる例を挙げてみました。
**Syntax Errorというのは、「明らかに書き方がおかしいよ」という意味** なのです。さすがにこんなにわかりやすい例は滅多にありませんが、要するに **「時間をかけて書き間違いを探せば、どんな人でも解決できる」** ことが特徴です。

**「やった、Syntax Errorだ！」** と思うことができればしめたものです。

## 2. Undefined~ も、簡単に解決できる
これは、言語によって微妙に表現が異なります。

### Python
```sample.py
hoge = 'Hello'

print(hgoe)
```
![qiita4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/852882/56164dec-2b72-ecb0-5798-7109f675ffd7.png)

Pythonでは、 **name 'hgoe' is not defined**と表示されるようです。

### PHP
```sample.php
<?php

$sample = 'Hello';

echo $simple;
```
![qiita5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/852882/30297b0f-9ac4-c0fb-4a8f-6184a5fdd16d.png)


PHPでは、 **Undefined variable $simple**と表示されるようです。

### Ruby
```sample.rb
y = "HogeHoge"
printf(x)
```
![qiita6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/852882/6cf8b78b-5be2-2aba-3a70-ba0356aec4f7.png)

Rubyでは、 **undefined local variable or method 'x'** と表示されるようです。
（variableが「変数」、methodが「メソッド」の意となります。 @scivola 様ありがとうございました。）

つまり、 **Undefinedは「定義されていない変数が使われていますよ」という意味** なのです。
**「なんだ、Undefinedも大したことないな」** と思えてきましたか？

## 3. 「その他」のエラーは？
その他のエラーは色々な種類があるので、本記事では割愛します。簡単なエラーのケースもありますが、まずはググってみて、５分読んでも意味が分からなければ先輩に遠慮なく聞いてしまってよいと思います。

## 番外編： Warningは、一旦放置してよいケースも多い
**前提として、「Error」と「Warning」は、全然違います。**
あまり声を大にして言うべきではないのかもしれませんが、Errorの95%くらいは、絶対に解決しなくてはいけないものであるのに対し、Warningは、「一応うごくんだけど、古い書き方だから注意だけしておくね」みたいな意味なので、必ずしもすぐに解決しなくてもいい場合も多いです。安易に放置してよいものではないですが、**それを「今すぐ」「工数を使って」対処するかどうかは現場の判断** となります。

## 大事なのは、「読むクセをつけること」
個人的な意見ですが、初心者にとって最も大変なのは技術力ではなく、**「心理的な苦手意識＝読みたくない」** だと思っています。本記事の最大のポイントは、**「読むクセがつく」ところ、もっといえば「心理的な苦手意識がなくなること」** にあります。初めはとにかく「どうしようどうしよう」となります。まずは落ち着いて **「Syntax Error」と「Undefined」かどうかをチェックできるようになる**　こと。「その他」のエラーは、先輩エンジニアに気軽に聞いてしまってもよいでしょう。

# おわりに
ここまで読んでくださりありがとうございました。
弊社では一緒に働く仲間を募集しています！
ご興味を持っていただいた方は以下のバナーからぜひお問い合わせください。

<a href="https://www.wantedly.com/companies/company_1847744/projects">
    <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3740903/fd8e4338-5795-d964-8146-e8f978110d83.png">
</a>

## 企業さま向け： プログラマ育成に強みをもつ弊社について
弊社では、[「エンジニア研修事業」](https://www.fignny.co.jp/products/voluntary-engineer/)を行なっております。とは言っても、いわゆる「プログラミングスクール」のような一般向けの教室ではなく、　**企業さま向けにカスタマイズした、内製支援のオーダーメイド要素が強いプランとなっており、どんな企業さまも強力にサポートします。**

研修事業は、決して技術力だけではなく、いかに「受け手に寄り添った手法」を徹底できるかが成否を左右します。未経験を一人前のエンジニアに育成するノウハウは業界随一であり、本記事では、そのノウハウの一端をご紹介しました。興味がある方は、ぜひとも[HP](https://www.fignny.co.jp/products/voluntary-engineer/)をチェックしてみてください！

## 参考リンク
- 弊社HPにぜひお立ち寄りください♪ → https://fignny.co.jp/