Moi!
こんにちは、ロニーです。
先週末、Python3エンジニア認定基礎試験、を受験してきました。
試験後、即時で合否が出ます。
1000点満点中、900点獲得でした。
合格ラインは700点です。
やった!合格です!
でも4問も外してしまった…悔しい…
エラーと例外に関する分野で3問、外部ライブラリに関する部分で1問、失点しました。
なるほど、その辺が弱いわけだ。
強化しよう。
はじめに
今回の話題はタイトルの通り、
Python3エンジニア認定基礎試験、これは役に立つのか、です。
自分はまだ開発エンジニアじゃないしエンジニアの採用に携わっているわけでもないので、
確かなことは言えません。
なので、100%主観です。
役に立つか、立たないかで言えば、立ちます。
でもどれくらい役に立つか、割合で言ったら4割、40%くらいです。
半分弱、ってところですね。
その理由は、実践的ではないから、です。
だから40%くらい。
試験に関する情報と併せて、なぜ役に立つと思うのか、書いて行こうと思います。
Python3エンジニア認定基礎試験の何が良い?そのメリット。
役に立つと考えた一番の理由は、
「試験勉強を通じて基礎が身につくから」 です。
もちろん座学で学んだことのすべてを実践で使うかといわれたら、
使いません。
もしくは、たーまにしか使わない部分とかもあると思います。
ただ、試験勉強で得たその知識や考え方は確実に仕事によい影響をもたらします。
これはぶっちゃけどんな試験でも同じです。
知識や経験は、それ単体ではそのまま使わなくても、
抽象化した部分で他分野を理解したり、思いついたり、
想像したりするのに活用できるものです。
例えば僕はドラムを叩きますが、
旅に出ていた間は生のドラムを叩くことが出来なかったので、
ストリートでバケツを叩いていました。
バケツを叩く練習なんてしたことなかったですが、
ドラムやパーカッションの基礎を知っていれば、
なんとなくパフォーマンスはできます。
これが応用力です。
もっと分野横断的に、
例えば、
音楽の趣味が料理のアイデアに結びつくとか、
接客の経験が面接に応用できるとか、
チェスの経験が客先との交渉に役立ったりとか、
あらゆる経験は抽象化されることによって応用が利くようになるものです。
なので語学の経験や、
今の現場でのサーバ構築の仕事がPythonの理解に役立っていますし、
逆にPythonの学習で得た知識が仕事現場で役に立っています。
この勉強は確かに身になっていると実感しますね。
Python3エンジニア認定基礎試験用の学習教材とは
Python3エンジニア認定基礎試験向けに、
公式テキストとして指定されている本があります。
それがこれ、『Pythonチュートリアル(第3版)』
(Guido Rossum著、O’REILLY)
これ、
めちゃくちゃ読みにくいです。
原因は3点。
- 翻訳の問題
- 前提理解度の差の問題
- 文化の問題
読みにくい原因その1、翻訳の問題
まず、読んでて、何を言っているのかピンときません。
こればっかりは結構しょうがない気はします。
翻訳者は翻訳する前後のその2つの言語に加えて、
文の内容となるプログラミング自体にも精通していないと、
分かりやすい文にはならないと思います。
まぁよくあることです。
非常に分かりにくいので、ゆっくり丁寧に読みながら、
自分の言葉で言い換えていく必要があります。
幸いなのは解説している話題が「コード」であること。
コードを読めば、だいたい言いたいことはわかるので。
読みにくい原因その2、前提理解度の差の問題
著者がPythonの開発者であるのも、わかりにくい理由かもしれません。
ある物事に関して内部までよく知っていて、
機能の存在や仕組みが頭の中で「当たり前化」している人だと、
なかなか初心者の「よくわからない」という気持ちを理解できないもんです。
ましてや「何がわからないのかわからない」とか。
日本語を普段使っている僕ら日本人が、
日本語の文法や覚え方を外国人に教えるのが難しいのと同じ原理だと思います。
当たり前すぎて伝えるのが難しいやつ。
解説する方は、どこまで掘り下げて説明すべきか、どこを端折るべきか、
その線引きが難しいでしょうね。
読みにくい原因その3、文化の問題
この『Pythonチュートリアル』内では、
例文に、イギリスの古いコメディアン、
「モンティ・パイソン」のネタがよく登場します。
モンティ・パイソンは「コメディ界におけるビートルズ」と称されるほど、
とても有名なコメディアンです。
そのこれまた特に有名なネタが散りばめられているのですが、
日本の若い人だと知ってる人、全然いないんじゃないでしょうか…。
僕も今まで人から聞いたり話したりしたことないです。
そもそも、このコメディのネタのことをイギリスでは「スケッチ」と呼ぶんですが、
そこから知りませんでした僕。
だから解説文で「スケッチ」っていう単語を使われてもすぐには理解が追っつきません。
こういった文化の違いも、わずかですが、
テキストの分かりにくさに影響してる気がします。
あ、ちなみにプログラミング言語としての「Python」の名前はこの「Monty Python」から来ています。
Python3エンジニア認定基礎試験の勉強方法
まず資格の試験勉強全般に通じる基本ですが、
- 基本となるテキストを通読する
- 過去問を解く
- 間違えた問い、分からない問題を調べて、順に潰していく
- 1~3を繰り返す
これが最短です。
テキストを読んでもよく理解できない部分はググったり他の参考書を読んで理解できるまで詰めること。
上記の基本の勉強方法に加えて、定着させるためにはアウトプットが必須なので、
・人に説明する とか、
・ブログやSNSに載せる とか、
・ノートにまとめる とか
をするといいです。
「アウトプット前提」で読んでいくとさらに効果的です。
「要点を最小限にまとめてメモするとしたらど書くか?」
「この関数の使い方を人に聞かれたらどうやって説明すればいいか?」
というように、アウトプットするのを前提で読んでいくと非常に定着します。
このPythonに関しては、正直テキストを読んだだけだと理解も記憶も進まないです。
もしかしたら若ければスイスイ頭に入っていくのかもしれないけれど、
やっぱり基本、手で実際にコーディングする作業を飛ばすことは出来ないと思います。
例えば、ある問題。
引数として与えた数字の範囲の中から素数(prime number)を導き出すコードがあります。
この問題は、コード中の伏せられたある一文が、
「continue文」か「break文」かを問うものです。
一旦、コード内で使われるfor文について簡単に説明しましょうか。
for文とは、その後のブロックで定める処理を繰り返す構文です。
「forループ」とよく呼びます。
(基本構文)
for <ループから取り出した値を格納する変数> in <ループする範囲>:
<処理>
range関数は、引数に範囲の起点と終点を与えることでその間の要素をシーケンス(一連)で出力してくれるものです。
(ここでは詳細省略します…)
continue文というのは、
その最小ブロックのループ処理を打ち切って「先の処理に進む」命令文です。
break文というのは、
その最小ブロックのループ処理を打ち切って「ループの頭に戻る」命令文です。
この2つ、とても似ています。
なので、実際にコードを動かしてみて、
continueだったらこうなる、
breakならこうなる、
何も入れないとこうなる、
というように比較してみるのが一番理解が進みます。
以下がテキスト上の例文から、一部を伏せたものです。
for n in range(2, 10):
for x in range(2, n):
if n % x == 0:
print(n, 'equals', x, '*', n//x)
【A】
else:
print(n, 'is a prime number')
※else文はif文ではなくその外のfor文に掛かっていることに要注意
このコードを文章で表すと下のようになります。
2以上10未満の数字を順に変数nに代入
2以上n未満の数字を変数xに代入
もしn÷xの余りが0だったら、
「nは、x 掛ける (n割るxの商)に等しい」と出力
【A】
それ以外は、
「nは素数である」と出力
という処理です。
さて【A】の位置に入るのはcontinueか、breakか。
…
難しいですよね。
もっとかいつまんで説明すると、
2~9の数字を順番にnとします。
もし2~その数字nまでのいずれかの数字でn自身が割り切れたら、
それは素数ではない。
割り切れるその計算式を表示する。
割り切れなかったら、その数字nは素数である。
上から順にこの処理をすると、if文で分岐しますよね。
割り切れるか、割り切れないかで。
もし割り切れたらそれは素数ではなくなり、計算式を出力するための処理をします。
一方でもし割り切れなかったら、それは素数なので、計算式は書き出しません。
この素数ではない場合の処理と、素数である場合の処理は、
両方は実施しません。
必ずどちらかになります。
もしcontinueを入れると、
素数ではない場合の処理をしたのちにif文を抜けて、その先のelseの先、
つまり素数である場合の処理をしてしまいます。
これだと、
2 is a prime number 「2は素数です」
3 is a prime number 「3は素数です」
4 equals 2 * 2 「4は2×2です」
4 is a prime number 「4は素数です」 (←?!)
となってしまうので間違いとなります。
なので、breakが正解。
実際に手でコードを実行してみることでこれがわかるんですよね。
なので、試験勉強に挑むに当たっては、
テキストのコードは取りあえず一度打ち込んでみましょう。
Python3エンジニア認定基礎試験には過去問がない
さきほど、試験勉強では過去問を使うのが基本と言いましたが、
このPython3エンジニア認定基礎試験はできたばかりの新しい資格なので、
まだ過去問が売られていません! (2021年3月時点)
本番の問いと回答は非公開です。
これはなかなか困ります。
ただ、親切なことに無料の模試が存在します。
PRIME STUDYというWebサイトで3回分の模試ができますので、活用しましょう。
たった3回分しかないのですが複数回受験可能です。
https://study.prime-strategy.co.jp/
2周目以降は正答まで覚えてしまうかもしれませんが、
きちんとコードの仕組みと情報が頭に入っていれば大丈夫でしょう。
満点取れるくらいまで何回も受験すれば、本番は充分合格点狙えるはずです。
このPRIME STUDYは、Prime Strategyというエンジニア採用情報サイトが提供しているものです。
模試の中で、クラスと継承や例外処理を問う問題があるんですが、
KusanagiとかWexalとか謎の単語が出て来まして、
なんだろうこれは と思ったら、
Prime Strategyが提供しているサービスの名前でした。
レンタルサーバ、クラウドCMS、AIエンジンなんかを提供しているんですね。
なるほど。ステマですね。
模試と本番の難易度の差
Python3エンジニア認定基礎試験を受験した感想や試験勉強法の情報が、
ネット上に続々と増えています。
僕が受検を志した昨年の春の頃にはまだ2,3件しか検索に出てこなかったのが、
いまやザクザク。
実際、試験の難易度はどうなのかが気になりますよね。
だって過去問がないんですもん。
いろんなブログでは
「模試よりも本番の方が難しかった」
という声が多かったのでそれは困るなと恐れていたんですが、
僕が受けた試験は、かなり簡単でした。
模試の方がずっと難しいです。
ただしこれ、ある意味、簡単ともいえるし、
難しいともいえると思います。
それはなぜか。
模試の方が簡単な理由:
公式テキストからそのままのコードが出てくるため
テキストを丸暗記すれば合格ラインにいけます。
だからこれは簡単。
ただ、テキストに載ってない問題もチラホラ登場するのと、
頭の中で代入や計算式を追って追って最終的に答えを出す形の問題が多いので、
暗算力・一時記憶力が問われます。
だからちょっと難しい。
本番の方が簡単な理由:
ほぼ一問一答形式で、複雑なコードを読み解く必要がないため
テキストからそのまま出てきた問題はほとんどありませんでした。
なので情報や仕組みを根本からきちんと理解していないと難しく感じると思います。
それでも難しいことは言っていなくて、
長ったらしいコードとか複雑な計算式はありません。
質問が浅いので、「きちんと知ってれば超簡単」なんです。
以上の理由から、人によって簡単とも難しいとも感じるんじゃないでしょうか。
問題は全40問、1問当たり25点配点で、計1000点満点になります。
700点以上の得点で合格です。
テキストのどの範囲から何問が出題されるかはもう決まっているので、
あくまで「資格取得」だけを目的とするならヤマを張ることもできるでしょう。
ちなみに僕はヤマは張らずにテキストの隅々まで勉強した派です。
確実に技術と知識をを身に着けてPython使いこなせるようになりたいので。
結局、Python3エンジニア認定基礎試験は役に立つのか?
「試験勉強をすることで、Pythonを使う上で必要な情報と仕組みが定着する」
これに尽きます。
本番がとても簡単だったことを考えると、
正直この資格を取得したからといって、
Pythonの実践技術があると認められることはないでしょう。
悔しいけれど。
ですので、この資格が実践的には役に立つとは思えません。
就職とか転職とかにですね。
それでも、資格のための勉強は、確実に役に立ちます。
基礎がしっかり定着するので。
想像ですが、このPython3エンジニア認定基礎試験の上位試験である、
「Python3エンジニア認定データ分析試験」
これまで取得して初めて価値のあるものなんじゃないかと思います。
こちらの資格ではPandasのようなサードパーティ製ライブラリだとか、
数学や統計学の基礎だとか、
環境構築に関する知識を問うもののようですので。
より実践的と言えるでしょう。
おまけ
公式テキストのオライリーの、Pythonチュートリアル、これはネットで無料公開されているので買う必要ありません。
しかも読みにくいので、正直に頭から読んでいくと挫折しかねないです。
代わりにおすすめするテキストとしては、
「みんなのPython 第4版」 柴田淳著、SB Creative発行。
通称:みんPy。
中身が充実していて試験に必要な情報はちゃんと押さえてくれていますし、
なにより分かりやすい。
文章が丁寧で、例となるコードも理解しやすいです。
これ一冊読んだ後にネットでPythonチュートリアルを流し読みすれば、
インプットとしては充分でしょう。
はい。
このブログが受験する人の役に立てば幸いです。
では以上。
Moimoi!
コメント