Pythonエンジニアが身につけておきたい幾つかの技術
エンジニアとは言っても、様々な分野で働いている方がいます。ひと括りには中々できません。
例えば最も多いであろうWebエンジニアであっても、フロントエンドエンジニア、サーバーサイドエンジニア、インフラエンジニア、と呼ばれる方がいます。
この分け方であっても、企業やチーム・人によって担当領域の線引きが少し違っていたり、複数の分野を担当するエンジニアの方もいます。
勿論、Web以外の分野で働く方もいますし、エンジニアというよりは研究者に近い方達もいます。
各分野で必要な知識は異なりますが、共通して覚えたい知識や、持っていると捗る技術があるのも確かです。
今回はPythonエンジニアを例に、身につけておきたい知識・技術を紹介します。
★★★(ぜひ身につけたい)
★★(可能であれば身につけたい)
★(無理にとは言わない)
Pythonの知識 ★★★
これは全ての技術の土台となります。一番身につけておきたいのは、言うまでもなくこれです。
Pythonエンジニアであればどの分野でも共通して使える知識であり、スキルに直結するので★3つとしました。
単純にPythonの知識と書きましたが、いくつかに分けることができます。
構文、機能、言語仕様
内包表記を使いこなせるようになるレベルが、初心者卒業レベルと言われることがあります。
内包表記をはじめ、デコレータやジェネレータは大変便利ですし、iterやnextといった幾つかの特殊メソッド、それらがどう動作するか、も重要です。
言語の基本的な機能は勿論ですが、上記のような少し踏み込んだ機能についても知っておきたいところです。
標準ライブラリの知識
何かを実装したいとき、そのための便利なプログラムが存在していることが殆どです。
例えば標準ライブラリであれば、osやsysモジュール、高水準なファイル・ディレクトリ操作のshutilモジュール、日付を扱うdatetimeモジュール、等はよく使います。
標準ライブラリにはどのようなモジュールがあり、どういったことができるのか、については軽く知っておき、汎用的なものは使いこなせると便利です。
パイソニックシンキング
Pythonコミュニティが長い歳月をかけて生み出した、Pythonらしい考え方・コードの書き方があります。
早い話が、Pythonにおけるベストプラクティクスです。これを学ばない手はありません。
嬉しいことに、「Effective Python」 のような、ベストプラクティクスを分かりやすく学べる書籍も数多くあります。
数学の知識 ★★
科学分野等のエンジニアでない限りは、数学が必要になることはそう多くありません。プログラマーに数学は必須ではない、というのが今の主流な考え方のようです。
ですが、高校レベルの数学の知識があれば科学分野にも手を出しやすくなりますし、そうなると自分の技術の幅を広げることができます。
今更高校数学のお勉強をするのは…と思う方も多いと思いますが、恐れることはありません。文系エンジニアが数学を学ぶための書籍が沢山あります。
例えば、「Pythonからはじめる数学入門」は、Pythonを使った科学分野の入門書籍としてお勧めです。
Pythonは科学・計算分野で非常に人気のある言語で、numpyのような優れたライブラリも存在し、書籍や情報源も多いです。これは他のメジャーな言語に比べると学びやすいことを意味します。
必要ない方も多くいますが、様々な分野に応用可能で、Pythonエンジニアならば学びやすい環境にある、という点で★2つです。
Webの知識 ★★
Webエンジニアでなくとも、Webの各技術を知っておいても損はありません。
例えばディープラーニングでの画像認識を考えましょう。兎にも角にも、データを集める必要が出てきます。
このような場合、Webから自動でデータを取得できれば簡単になります。となると、クローラーやスクレイピング、といった技術を使うと良さそうです。
クローラーやスクレイピングは、結局のところHTMLから該当する情報を抽出する作業です。そうなると、当然HTMLについて簡単に知る必要が出てきますし、HTTPプロトコルについての知識も欲しくなるでしょう。
実務レベルにおいて、これらを全て一人で行うことは少ないかもしれません。しかし、技術の幅が広がることは確かです。
PythonはWebにおいても人気があるため情報が多く、比較的学びやすい環境にあると言えます。
こちらも様々な分野に応用可能で、割と学びやすい環境、仕事の案件として多い、等の点で★2つです。
C言語の知識 ★
Python生まれPython育ちなエンジニアは、OSやミドルウェアがやっている低水準な詳細を知らない方が多くいます。(違う見方をするとPythonのような高水準言語では、それらを意識しなくて済む、ということでもあるのですが…)
また、一般的なPythonの実装はCPythonと呼ばれるもので、C言語で書いたコードを呼び出すことができたり、実際に処理の多くをC言語で実装しているライブラリもあります。
単純な教養としても、Pythonエンジニアのステップアップとしても、C言語には学ぶ価値があります。
しかし、C言語を学んでよかったと実感できるレベルになるのは時間が掛かり、活かせる場面もそう多くありません。なので、★1つとしました。
Pythonエンジニアに限らないけど、あると便利なもの
英語 ★★
文書を理解するだけならば英語スキルがなくてもある程度は何とかなります。最近ではGoogle翻訳の精度も上がりましたし、決まった書式で書かれていたり、横に書いてあるであろうコードを見れば内容の察しがつく場合もあります。学習コストも高めです。
それでも、英語が理解できるようになれば非常に大きな利点があります。★2つとしました。
アルゴリズム・データ構造 ★
どこかで学んでおきたい知識であり、ある意味教養的な側面もあります。
分野や環境、言語によってはそこまで意識しなくて済むことも多いため、★1つです。
設計についての深い知識 ★
オブジェクト思考の設計・原則やデザインパターンのレベルになってくると、言語によっては別の解決法があったり、思ったよりも役に立たない、という場合があります。
勿論知っておくと便利なのは確かですが、そこまで深い知識が必要になるケースはそうありません。なので、★1つとしました。
株式会社キャパでは、アプリの企画・開発についてご相談を承っています。
アプリを作りたいので、具体的な提案が欲しい。頭の中にあるアイデアを本当に実現できるのか知りたい。予算内に収まるのか?
などのお客様のご相談に、親身に応じます。
アプリ開発:実績のご紹介