Python 3 エンジニア認定基礎試験の受験記とPython教材

最近Pythonの勉強をしています。
そんな中この試験の存在を知り受験しました。
この記事では、受験記＋今までPythonの勉強に使った教材のご紹介をしたいと思います。

なおPython 3 エンジニア認定基礎試験に関しては、こちらの記事を参考にさせて頂きました。
[Python 3 エンジニア認定基礎試験の勉強法と受験した感想](https://qiita.com/pio2/items/e98480483f7f759710ca)

## Pythonとは？
デスクトップアプリやWebアプリ、データ分析・機械学習などの幅広い分野で利用されています。
ライブラリやフレームワークが充実しており、CやC++など他言語との連携も容易なため、応用範囲の広いプログラミング言語です。
また文法がシンプルなため、学習しやすいという特徴もあります。

## 対象
* プログラミング言語についてある程度知っている方
* プログラミング言語自体が初めての方や、最短でこの試験に合格したいという方には、[Python3エンジニア認定基礎試験の効率的な勉強方法!](https://ccie-go.com/python-exam-study/)という記事が参考になると思います。

## 私のスペック
現在は専らRを使ってデータ分析関連の業務を行っています。
Webスクレイピングや自然言語処理、DeepLearningなどをやる場合には、Pythonの方が環境が充実しているため、最近勉強しています。


## [Python 3 エンジニア認定基礎試験](https://www.pythonic-exam.com/exam/basic)とは？
一般社団法人Pythonエンジニア育成推進協会が主催している試験です。

* 試験形式：CBT（コンピュータで行う試験）
* 問題数：40問（すべて選択式）
* 合格ライン：正答率70%（28問正答で合格）
* 試験時間：60分（途中退室可）
* 受験料：１万円（税別） ※学生は半額
* 受験には[オデッセイ コミュニケーションズ](http://cbt.odyssey-com.co.jp/pythonic-exam.html)への登録が必要です。


## Pythonの環境構築
まずはPythonを動かせる環境を入手しましょう。
プログラミングの勉強は、やはり実際に手を動かしてコードを書くことが一番だと思います（この試験に合格するだけなら暗記でもいけるかもしれませんが。。）。

こだわりがなけば、とりあえず[Anaconda](https://www.anaconda.com/)をインストールするのが一番楽だと思います。
また、[paiza.IO](https://paiza.io/ja)のようにオンラインでプログラムを実行できるサービスもあります。


## 教材
### 認定教材
* [Pythonチュートリアル 第3版](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)
書籍版も読みましたが、私は以下の理由からWeb版の[Python チュートリアル](https://docs.python.jp/3/tutorial/)の方で充分かなと思いました。
  * 書籍版とWeb版で内容がほぼ同じ
  * ライブラリや文法のリファレンスへのリンクが付いているため、個人的にはWeb版の方が便利だった  


* [模擬試験](https://diver.diveintocode.jp/exam#exam-list)（Dive into Code）
メールアドレスを登録すれば利用できます。
模擬試験でわからなかった部分をチュートリアルなどで調べるという形で利用しました。
本試験とほぼ同じレベルの問題が出題されます。
計４回ほど受けて、最終的には全問正解できるようになりました。


### 認定教材以外
#### Web
* [Python3入門編](https://paiza.jp/works/python3/primer)
paizaが運営しているオンライン学習サービスです。
このPython3入門編については、今のところ全チャプターが無料で受講できます（2018/10現在）。
チャプターごとに簡単な演習問題があります。
また、同じくpaizaの[プログラミングスキルチェック](https://paiza.jp/challenges)ではより具体的な演習課題が用意されていますので、ゲーム感覚で挑戦できます。


* [【連載】Pythonで学ぶ 基礎からのプログラミング入門 | マイナビニュース](https://news.mynavi.jp/series/python)
オブジェクト指向の章が充実しています。
各章末に演習問題が付いています。


#### 書籍
* [詳細! Python 3 入門ノート](https://www.amazon.co.jp/%E8%A9%B3%E7%B4%B0-Python-%E5%85%A5%E9%96%80%E3%83%8E%E3%83%BC%E3%83%88-%E5%A4%A7%E9%87%8D-%E7%BE%8E%E5%B9%B8/dp/4800711673/ref=pd_sbs_14_9?_encoding=UTF8&pd_rd_i=4800711673&pd_rd_r=42efbf8c-cbce-11e8-88de-0d15af0d7bc2&pd_rd_w=yOfgW&pd_rd_wg=EAoQn&pf_rd_i=desktop-dp-sims&pf_rd_m=AN1VRQENFRJN5&pf_rd_p=cda7018a-662b-401f-9c16-bd4ec317039e&pf_rd_r=WWG5TR98AMG5Q1FAWGST&pf_rd_s=desktop-dp-sims&pf_rd_t=40701&psc=1&refRID=WWG5TR98AMG5Q1FAWGST)
「変数って何」というところから丁寧に解説されているため、プログラミング言語初心者の方にも良いと思います。
Anacondaを使った環境構築方法もはじめの方に載っています。


* [Pythonの文法を覚えた人がもっと理解を深めるための本](https://www.amazon.co.jp/Python%E3%81%AE%E6%96%87%E6%B3%95%E3%82%92%E8%A6%9A%E3%81%88%E3%81%9F%E4%BA%BA%E3%81%8C%E3%82%82%E3%81%A3%E3%81%A8%E7%90%86%E8%A7%A3%E3%82%92%E6%B7%B1%E3%82%81%E3%82%8B%E3%81%9F%E3%82%81%E3%81%AE%E6%9C%AC-%E5%A4%A9%E7%94%B0%E5%A3%AB%E9%83%8E-ebook/dp/B078SBH9Y7)
サンプルコードを交えた言語仕様の解説がコンパクトにまとまっています。


* [Dive Into Python 3 日本語版](https://www.amazon.co.jp/Dive-Into-Python-3-%E6%97%A5%E6%9C%AC%E8%AA%9E%E7%89%88-ebook/dp/B009Z30HPG/ref=cm_cr_arp_d_product_top?ie=UTF8)
冗長な部分はありますが、正規表現など、基本文法を学んだ「次」のことについても解説しています。
ただし語り口が独特なため人を選ぶかもしれません。


## 試験当日とその後
試験会場は初めての場所でしたので、１時間ほど早めに行き、場所を確認したあと喫茶店で最終確認をしました。

試験は見直しを入れて30分くらいで終了しました。

試験が終わると、その場で合否と得点がわかります。
結果は無事合格でした。
合格証書は後日（2～3週間後）送られてきます。


## 基本文法を学んだら
次にPythonを使って具体的に何かをしてみましょう。
まだ全部は理解できていないものもありますが、読んだ本を以下に挙げます。


* **機械学習を勉強したい**
[Pythonではじめる機械学習――scikit-learnで学ぶ特徴量エンジニアリングと機械学習の基礎](https://www.oreilly.co.jp/books/9784873117980/)
scikit-learnという機械学習ライブラリを使った機械学習のテクニックを解説しています。
理論面は別途学ぶ必要はありますが、実装面から機械学習を勉強するのにお薦めです。


* **Pythonを使って仕事を楽にしたい**
[退屈なことはPythonにやらせよう――ノンプログラマーにもできる自動化処理プログラミング](https://www.oreilly.co.jp/books/9784873117782/)
テキストファイルから特定の文字列パターン（電話番号など）を取り出したり、WordやExcelの操作などをPythonを使って行っています。
本の中でも言及していますが、Pythonの言語仕様を解説する本ではなく、仕事上の具体的な課題を解決するソリューションの作成に焦点を当てています。


* **ゲームを作りたい**
[ゲームを作りながら楽しく学べるPythonプログラミング](https://www.amazon.co.jp/%E3%82%B2%E3%83%BC%E3%83%A0%E3%82%92%E4%BD%9C%E3%82%8A%E3%81%AA%E3%81%8C%E3%82%89%E6%A5%BD%E3%81%97%E3%81%8F%E5%AD%A6%E3%81%B9%E3%82%8BPython%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0-Future-Coders%EF%BC%88NextPublishing%EF%BC%89-%E7%94%B0%E4%B8%AD-%E8%B3%A2%E4%B8%80%E9%83%8E-ebook/dp/B06XRQS8PN)
PyGameというライブラリを使って、マインスイーパーや落ち物パズルの作り方が載っています。
楽しみながら学ぶことで理解が深まると思います。


## おわりに
参考記事にもあるように、確かにプログラミング言語経験者にとっては簡単すぎるとは感じました。
ただ自分は目標があった方が捗るタイプなので、Pythonを勉強するモチベーションの一つとして受験してよかったと思います（合格すれば会社から受験料分を支給されるというのもありました）。

以前書いた[記事](https://qiita.com/jkshr/items/7b4495cd80b40ae1173b)ではPythonを使っていますが、正直この時はPythonのことはよくわかっていませんでした。
それにもかかわらず、読みやすくシンプルなコードが書けるというのはPythonの強みの一つだと思います。

興味を持たれた方は、ぜひPythonに入門してみてはいかがでしょうか。

また基礎試験に続き、来年から[データ分析試験](https://www.pythonic-exam.com/exam/analyist)も始まる予定です。
こちらもデータ分析・機械学習を始めるきっかけとしてみてはいかがでしょうか。