一般社団法人Pythonエンジニア育成推進協会(以下、当協会)の顧問理事の寺田学です。私は試験の問題策定とコミュニティ連携を行う立場です。当協会では2022年1月17日に発表したとおり、かねてより要望が多かった上位レベルの試験として、Python3エンジニア認定実践試験を当年公開する予定で進めています。そこで今回は、この実践試験についてお話しします。
要望が多かった上位レベル試験を2022年公開予定
これまで提供してきたPython3エンジニア認定基礎試験およびPython3エンジニア認定データ分析試験はいずれも初心者向けとして提供しており、Pythonのエンジニアという仕事をする上で、基本となる部分を理解しているかを問う内容になっています。一方で、より上位レベルの試験が欲しいという要望が数多く上がっており、これまで当協会ではどういった試験を提供するのがふさわしいか検討を重ねてきましたが、最終的にPythonの開発現場での実践的な部分を問う内容にすることにしました。今後は2022年春から夏にかけてベータ試験を実施し、夏から秋ごろに本格的な試験をスタートする予定で準備を進めていくことになります。
Pythonエンジニアをする上で知っておいてほしい知識を問う試験
「実践」のレベルをどの程度に設定するかは非常に難しく、これについては当協会でも多くの議論を重ねてきました。最終的に、この試験では実際の現場で使われているような知識をある程度理解しているか、自分で調べられる力を持っているか、標準・サードパーティ製のライブラリの存在やその使い方を含めて知っているか、開発の考え方をそれなりに理解しているかといった、Pythonエンジニアとして開発するにあたって知っておいてほしい知識を問うものとすることにしました。そのため、初心者のように文法を知らない状態では難しく、ある程度の実践を重ねてきた人が合格できるレベル感となっています。とはいえ、実践レベルの方にとっても知らない記法や使い方はあると思いますので、試験前に主教材を一読する必要はあるでしょう。主教材については次の項目でお話しします。
試験範囲書籍「Python実践レシピ」は2022年1月19日発売
試験の範囲となる書籍「Python実践レシピ(当協会監修)」は2022年1月19日より、技術評論社から販売されています。この本では実践的なレシピ集としていろいろなライブラリも紹介しています。
この本のもとになったのは「Pythonライブラリ厳選レシピ」ですが、今回の改定で著者の変更に加え、内容も大幅に改定しており、試験の対象者にはこのぐらいのことは知っておいてほしいというレベル感でまとめています。具体的な内容としては、開発の手前の文法の話として基礎文法やエラー処理、例外処理、ジェネレーターなどの言語仕様的な話はもちろん、オブジェクト指向で使われるクラスの仕様や標準・サードパーティ製のライブラリの中からよく使われているものなど、少し突っ込んだ内容がこの書籍で紹介されています。ある程度知っていることを前提として書かれているため、初心者にとっては難しい内容ではありますが、実践レベルにある人にとっては当然知っていてほしいという内容ばかりなので、スラスラ読めるか、調べながら読めるようなレベル感で書かれています。とはいえ、実際の実務に応用できるか、頭に入るかは、自分でコードを書かないと「?」になるとは思いますので、そういった面では比較的勉強は大変かもしれません。
試験範囲について
試験の対象範囲については公式サイトでも記載しますが、ここでもご紹介します。
章 | タイトル | 問題数 | 問題割合 | 備考 |
---|---|---|---|---|
1章 | Pythonの環境 | 1 | 2.5% | |
2章 | コーディング規約 | 2 | 5.0% | |
3章 | Pythonの言語仕様 | 7 | 17.5% | |
4章 | Pythonのクラス | 3 | 7.5% | |
5章 | タイプヒント | 2 | 5.0% | 5.2 mypy は除く |
6章 | テキストの処理 | 4 | 10.0% | |
7章 | 数値の処理 | 0 | 0.0% | 出題なし |
8章 | 日付と時刻の処理 | 2 | 5.0% | 8.4 dateutilは除く |
9章 | データ型とアルゴリズム | 5 | 12.5% | 9.3 bisectは除く 9.5 pprint は除く |
10章 | 汎用OS・ランタイムサービス | 2 | 5.0% | |
11章 | ファイルとディレクトリへのアクセス | 2 | 5.0% | |
12章 | データ圧縮とアーカイブと永続化 | 0 | 0.0% | 出題なし |
13章 | 特定のデータフォーマットを扱う | 2 | 5.0% | 13.3 configparser は除く 13.4 PyYAML は除く 13.5 openpyxl は除く 13.6 Pillow は除く |
14章 | インターネット上のデータを扱う | 2 | 5.0% | 14.3 Requests は除く 14.5 email は除く |
15章 | HTML/XMLを扱う | 0 | 0.0% | 出題なし |
16章 | テスト | 3 | 7.5% | 16.4 pytest は除く 16.5 pydoc は除く |
17章 | デバッグ | 2 | 5.0% | 17.3 traceback は除く |
18章 | 暗号関連 | 1 | 2.5% | 18.3 cryptography は除く |
19章 | 並行処理、並列処理 | 0 | 0.0% | 出題なし |
試験範囲から外した部分について
この本に書かれている内容の中で難しい部分は、並行処理、並列処理です。Pythonの言語仕様だけでasync対応ができるようになっています。ただ、本には載っていて読んでほしい部分ではありますが、ここまで到達するのは相当大変だと思いますので、試験範囲からは外しています。また、便利なものではあるけれど、全員がすることではないものも試験範囲からは抜いています。例えばサードパーティ製ライブラリの設問はほとんどありません。その理由としては、サードパーティ製ライブラリの場合はその用途が限られたものになる可能性が高いため、その部分を突っ込んで知っているか知らないかというより、標準ライブラリをどれだけ知っていて、使いこなせるかといった方が大切だからです。そのため、ライブラリに関しては、なるべく標準ライブラリにフォーカスした範囲にしています。
省略した部分はあるとはいえ、言語仕様から使い方まで行くと、それなりの学習時間にはなります。全部を覚えている必要はありませんし、試験範囲から外れるものはありますが、書けた方がより良いものがありますので、ぜひ一度はすべてを読んでみてください。
初心者が実践レベルに到達するためには物を作り、改善を繰り返す
これまで初心者向けに教育をしてきた経験の中で感じたのは、本だけ、教育だけで学習した場合、言葉は知っていても用法や使い方に行きつけず、なかなか実践的なことが身につかないケースが多いということです。やはり、これを補うには経験することが一番早いと思っています。
やってみないことにはPythonの良いところや悪いところはなかなか理解できませんし、多少なりともメンテや改造をしていかなければ、自分が作ったものに対しての振り返りができません。使い捨てコードだからどんな形でも動けばいいと言われれば確かにその通りですが、仕様の追加・変更によってわかることもあります。公式ドキュメントや書籍の役割は、より良いコーディング方法やより適したライブラリを知るためのヒントを与えることであり、そこで得た知識を使うことで、作ったものをより良くしていくことができます。
だからこそ、初心者の方は、まずはコマンドラインツールでも、Webアプリでも、機械学習でも、スクレイピングでも、とにかく何でもいいので、何かひとつ作り上げてみましょう。そして、作った後は改善を繰り返して設計を見直し、それにあったより良いやり方やライブラリを見つけ、学んでいきましょう。
一人での学習に行き詰まったら仲間や師匠を作ろう
一人で勉強することの難しさといえば、やっていることが正しいかどうかがわからないことにあります。私自身もそう思う事はありますし、今でも自身がやっていることが完璧だとは思ってはいません。結局のところ、作ったコードを見せ合い、レビューし、ディスカッションし、互いに切磋琢磨していくような相手がいなければ、なかなか本格的に実践レベルに到達できるようにはなりません。
そのため私がよくおすすめするのは、コミュニティの勉強会への参加です。最初はコードを見てもらうのが恥ずかしいと思うかもしれません。ですが、これはみんなが通る道なので、コミュニティでコードを見てもらえるような関係を作れたなら、ぜひ恥ずかしがらずに積極的に見てもらってください。それを繰り返していくと、プロダクションのレベルでこういうことをやっているという話や、多様な意見を聞けるようになります。そのうち自分なりの判断基準も得られるようになるので、そういうところに参加するのがおすすめです。
どんな仕事でも同じですが、誰かに弟子入りしたり、仲間とディスカッションしたり、問題点を指摘してもらえるような関係性を築くことができれば、自身にとっても学びになりますし、そのうち自分なりのやり方を見つけられる可能性があります。実践的なコードになっているかは仲間がいないとどうしても評価しにくくなります。作ったコードに自信があるのならオープンソースとしてコミットするという方法ももちろんありますが、それはそれですごくハードルが高いですよね。なので、一緒に学べるようなコミュニティや友達、師匠がいると良いのではないでしょうか。
さいごに
中には本を読んだだけでこの試験に受かる方もいるかもしれませんが、そういった方は相当深く理解をしている方だと思いますし、それだけ実践経験がない方が受かるのは難しい試験だと考えています。また、勉強し、資格を取れたからと言って、実践できるレベルに到達できるかといえばなかなかそうはいきません。ただ、経験は仕事をそれなりに継続することで積めるものであり、実践経験がない人が経験を積むのはとても難しい問題で、経験をどう積んでいくかもまた難しく、ジレンマを抱える部分だと思います。
まずは動くものを作ることを大切にし、より良くする、より効率の良いものにする、Pythonらしく書くという経験を積んでいきましょう。今回紹介した本にはそのポイントやサンプルコード、よくある使い方も載せていますので、ぜひ参考にしてもらえると良いなと思っています。
[PR]提供:Pythonエンジニア育成推進協会