文系のプログラミング素人がPython3エンジニア認定基礎試験を取得した話

# はじめに
### 概要
- 文系のプログラミング初心者である私がPython3エンジニア認定基礎試験を取得するまでの話です。
  - この記事の記載はすべて受験時点のものになります。
- プログラミング初心者の方がPythonの勉強を始める際の参考になればと思います。

### 私の経歴
- 文系学部卒でネットワークメインのセールスエンジニア歴２年ほどです。
- 普段は中小企業向けにネットワーク機器の提案・設計を行っています。
- いちおうエンジニアの端くれではありますが、業務で求められるスキルはネットワーク、セキュリティが中心です。

- 業務でプログラミングを使用することは全くなく、学生時代に勉強したこともないド素人です。
- ちなみにネットワークの知識も入社後に勉強したものなのでITに関するバックグラウンドは全くないです。

### 受験の動機
- 事務作業を自動化するスキルを身につけたかった
- データ分析に興味がある


# 勉強法
### pythonそのものの勉強
- なにせプログラミングに関する知識が皆無なので色々手を出しました。
- 色々ネットで調べたうえで書籍中心に学習しました。

- 順序としては、
   - ①プログラミングとは？
   - ②Python入門
   - ③Python基礎固め
   - ④公式テキスト
   - ⑤模擬試験
- となります。

##### ①プログラミングとは？
- まずはプログラミングとは？ということを学ぶために新書を一冊読みました
  - [教養としてのプログラミング講座(清水 亮)](https://www.amazon.co.jp/%E6%95%99%E9%A4%8A%E3%81%A8%E3%81%97%E3%81%A6%E3%81%AE%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E8%AC%9B%E5%BA%A7-%E4%B8%AD%E5%85%AC%E6%96%B0%E6%9B%B8%E3%83%A9%E3%82%AF%E3%83%AC-%E6%B8%85%E6%B0%B4-%E4%BA%AE/dp/4121504895)

- あくまで新書ですし、非常に読みやすい本なので最初に読んでおいてよかったです。
- プログラミングとは？という全体像を漠然とでも知っておけば、勉強しているときに「今自分が何を勉強しているのか」を見失わずに済むと思います。

##### ②Python入門 
- 次に初心者向けのPythonの本としてこの本を選びました。
  - [Pythonスタートブック(辻 真吾)](https://www.amazon.co.jp/Python%E3%82%B9%E3%82%BF%E3%83%BC%E3%83%88%E3%83%96%E3%83%83%E3%82%AF-%E5%A2%97%E8%A3%9C%E6%94%B9%E8%A8%82%E7%89%88-%E8%BE%BB-%E7%9C%9F%E5%90%BE/dp/4774196436)

- 初心者向けのPython本はたくさん出版されているのでここについては自分が読みやすい、わかりやすいと思った本を選べばよいと思います。
- Pythonスタートブックは全くの初心者向けに書かれており、開発環境の構築からPythonの初歩的な概要をざっくり学べるので私のような初心者にちょうど良かったです。

- ただし、あくまで入門の本なので具体的にPythonでどんなことができるのかはあまり見えてきませんでした。
- なので、モチベ面では我慢する必要がありました。

##### ③Python基礎固め
- Pythonの初歩的な概要をざっくり理解したとところでみんなのPythonに取り掛かりました。
  - [みんなのPython(柴田 淳)](https://www.amazon.co.jp/%E3%81%BF%E3%82%93%E3%81%AA%E3%81%AEPython-%E7%AC%AC4%E7%89%88-%E6%9F%B4%E7%94%B0-%E6%B7%B3-ebook/dp/B01NCOIC2P)

- みんなのPythonも初心者向けの本ですが、内容が充実しているため２冊目として基礎固めを行うのにちょうどよいと思います。（プログラミング初心者の方が１冊目に選ぶと難しく感じると思います。）

- 第４版ではデータ分析なども追加され、Pythonで何ができるのか、少しづつ理解することができました。
- Pythonスタートブックをやっていたため、知っている部分は流しつつ勉強できたので重要なことの理解がしやすかったです。

- 以上のことをPythonの勉強としてやりました。

#### オンラインの講座ってどうなの？
- オンラインの講座も考えたのですが、これまでの勉強は基本的に本でやってきたので、慣れた方法がいいなぁと思って本での独学を選びました。
幸いPythonの本は数も多く、評判のいい本が多数出版されていたので、環境としても学びやすいと思います。

- ということなので、申し訳ありませんが本ととオンライン講座どっちがいいののかについてはわかりません。

### 試験対策
- 試験対策としてはPythonチュートリアルでの学習と模擬試験を行いました。

#### ④Pythonチュートリアル
- PythonチュートリアルはPythonエンジニア認定基礎試験の公式テキストですので、試験を受ける上では重要です。
  - [Pythonチュートリアル](https://www.amazon.co.jp/Python%E3%83%81%E3%83%A5%E3%83%BC%E3%83%88%E3%83%AA%E3%82%A2%E3%83%AB-%E7%AC%AC3%E7%89%88-Guido-van-Rossum/dp/4873117534)

- ただし、Pythonチュートリアルは正直初心者にはわかりにくかったです。
他の言語との比較を用いて説明されるのでPythonしか知らない私にとっては苦痛でした。
- 私は一度読んでからコードを一通り写経しましたが、写経ではなく自分で考えながらコードを試して理解を深めていくべきと思います。

#### ⑤模擬試験
- DIVE INTO EXAMで模擬試験を受験することができます。
- 会員登録は必要ですが、なんと無料です。
  - [DIVE INTO EXAM](https://exam.diveintocode.jp/exam)

- 私はこの模試を安定して満点がとれるようになるまでやりこみました。
- ある程度やると問題を覚えてしまいますが、なぜその答えになるのかをコードを動かしながら理解していくことが重要だと感じました。


# 感想
### 試験結果
- 825/1000で合格でした。
- もう少しいい点がとれるかと思っていましたが、そんなに甘くはありませんでした。

### 感想
- 試験は思ったより難しく感じました。
- その理由は私にPythonの実務経験がなく、コードを書いた量・経験が圧倒的に少なかったからだと思います。

- きちんと理解していないと問題をすこし変えられるだけでわからなくなってしまいます。
- なので自分で考えながらコードを試していくことが重要だと思います。
- そういった点では自分の仕事・プライベートでPythonを使ってみるとよい勉強になると感じました。

### 今後
- Pythonの基礎は理解できたので、今後は事務作業の自動化とデータ分析の２つを目指して勉強していく予定です。
- Python以外だとAWSも勉強したいと思っているので同時並行になるかもしれませんが。

- 基本情報を取得していないので基本情報受けるときに午後でPython選んでみようかなぁと思っています。