Mawa Town

Mawaという人が作る小さな町でMawaTownです。技術と音楽が好き。

入門記事:Pythonエンジニアとして仕事をする上で知っておく必要があるもの

入門 Python 3

入門 Python 3

メモ

今まで自分用メモとかとしてこのブログを使っていたため、脈絡がないプログラミング記事が多かったのですが、Pythonメインにエンジニアリングを仕事にして数年経過し、ふとPython入門したいなと思っている人がいる気がしたので、書いてみます。今後ちょくちょく増やそうかなって思ってます。

この記事の主な想定読者

  • プログラミングに興味がある方
  • プログラミングを勉強してみたい方
  • Pythonを仕事で使ってみたい方
  • ソフトウェアエンジニアになりたいかも、興味あるかもという方
  • プログラミングを仕事にしたい方

と、言う感じかな・・・なるべく色々な方がコードを書く楽しさを見出せるように頑張ってみます^^

Pythonを使ってエンジニアとして仕事する」とは

Pythonを使ってソフトウェアエンジニアとして、仕事するということは、色々なケースがあると思いますが、多くの場合もう少し厳密に定義すると見通しが良くなるかと思います。

すなわち、Pythonでプログラムを何か書いて動くようにする、その成果物のプログラムを誰かが特定の目的を達成するために使える状態にする」と書くと何をすべきかもう少し明確になるかなと思います。

今回はPythonで書いてますが、勘の良い方はすでにお気づきかと思いますが、実はこれはPythonに限りません、PythonPHP,JavaScriptRuby・・・と色々言語を変えても成り立つわけです、例えばRubyでプログラムを何か書いて動くようにする、その成果物のプログラムを誰かが特定の目的を達成するために使える状態にする」というのがRubyで仕事をする場合の定義のひとつになりえるわけですね。

このPythonでプログラムを何か書いて動くようにする、その成果物のプログラムを誰かが特定の目的を達成するために使える状態にする」ことを仕事としている人をこの記事ではとりあえず"Pythonエンジニア"と定義しておきます。

Pythonエンジニアとして仕事するときのよくあるサイクル

一例ですが、こんな感じです。

お客から「こんなアプリを作って欲しい」と依頼が来る
↓
コードをPythonで書く
↓
目的の動きをするアプリが完成
↓
お客が使えるようにする

という感じです。

Pythonエンジニアとして仕事するときに必要な諸々

ざっとこれくらいできれば仕事するには不足はないでしょう。

  • Linux/Unixのコマンドが扱えること
  • Git/Githubが使えること
  • Pythonの基本文法が理解できていること
  • Djangoがつかえること
  • Webサーバーについて基礎的な理解があること
  • SQLとデータベースの基礎的な理解があること
  • HTMLが多少いじれること
  • herokuかAWSがある程度使えること

これでPythonでプログラムを何か書いて動くようにする、その成果物のプログラムを誰かが特定の目的を達成するために使える状態にする」という仕事の多くの依頼はこなすことができるはずです。

Pythonエンジニアとして仕事するときに必要な諸々とそれぞれの必要な理由

先程定義した"Pythonエンジニア"として仕事を進めるためには、何を結局できるようになったらいいんでしょうか?そこをざっくり書きます。(類似ツールもたくさんある箇所がありますがそうすると逆にわかりにくくなるので一例として紹介しています。)

  • Linux/Unixのコマンドが扱えること

理由:今から下記に述べるツールや概念を動かすにはLinux/Unixのコマンドが使えることが前提になります。これは魔法の呪文のようなものでPythonで書いたプログラム○○動け!」 と唱えるとプログラム○○が動くというイメージで、パソコンの中でpython ○○.pyとある場所に書くとPythonで書いたプログラム○○動け!」 と唱えるのと同じ効果でプログラム○○が動くという仕組みです。このコマンドは英語を略した2文字とか3文字で動くことが多いので、最初は戸惑うかもしれませんが、パソコンと英会話をしているようなノリですぐに身につきますのでご安心あれ^^

  • Git/Githubが使えること

理由:書いたコードを保存したり、チームで共有できるから。実際Github以外にも似たサービスはいっぱいあるのですが、一番メジャーなのは最近だとGithubなので紹介しました。Gitは無料のツールでパソコン内部でコードの保管とか履歴が残せるものです。Githubは同じ機能をWebのマイページに保管できるものです。無料でも使えますし、有料と言っても1000円くらいで色々便利に使えます。 これは、Linux/Unixのコマンド基礎が身についていればすぐ習得できます。

  • Pythonの基本文法が理解できていること

理由:これは言わずもがなですが、念のため載せました。Python教則本は書店にわかりやすいものがいっぱいあるので、好きなものを読めば身につくと思います。文法についてはそんなに時間かからないと思います。賞味2週間〜1ヶ月あれば身につく方多いと思います。

理由:Djnagoはジャンゴと読みます。Pythonの基本文法だけでは、Pythonエンジニアとして仕事をするには、仕事がかなり限定的になります。そこでDjangoを使うエンジニアが多いです。Djangoは、Python業界では世界的シェアがある、信頼性の高い、Webアプリやモバイルアプリの裏側(専門的に言うとサーバーサイド)を作れるツールです。例えば有名所ですと、インスタグラムはDjangoユースケースとして有名です。Djangoがとりあえず安心感のあるツールとして紹介しておきますが、別途同じような機能があるツールとしてはFlaskなどあります。このDjangoが一番挫折しやすい難関の一つだと思います。賞味3ヶ月〜を学習コスト見積もっておいたほうが良いです。

  • Webサーバーについて基礎的な理解があること

理由:前段の定義_「Pythonでプログラムを何か書いて動くようにする、その成果物のプログラムを誰かが特定の目的を達成するために使える状態にする」__の、成果物のプログラムを誰かが特定の目的を達成するために使える状態について、最近では主にスマホで使えるモバイルアプリ、ブラウザで使えるWebアプリという形式になることが多いです。この両方のアプリ開発において、どこかの企業の仕事の効率化のアプリを運用には、大抵顧客情報や、取引情報といった大量のデータをどこかに保管する必要があります。モバイルアプリであれ、Webアプリであれ、現在、大量の情報はWebサイトにページ情報が表示される仕組みと同じ仕組みでスマホやブラウザに特定のコンピュータ(サーバーと呼びます)から引っ張ってくるのがほとんどです(小規模なアプリであればスマホ自身に保存などもありますが、情報が消えないようにするリスク管理を考えると業務用は外部サーバーを使います)。しかし、これについては最近では便利なツールがありますから、概念の基礎理解があればOKですので習得時間は少なめで大丈夫ですからご安心を・・・^^ 具体的なソフト名としてApache(アパッチ)とnginx(エンジンエックス)は覚えておきましょう。どちらかを使うことが多いです。 なおソフトは無料です。

  • SQLとデータベースの基礎的な理解があること

前段のWebサーバーについて基礎的な理解があることで述べました「顧客情報や、取引情報といった大量のデータをどこかに保管」ですが、実態は、エクセルの巨大なものに情報が保管されていることが多いです、この巨大エクセルをデータベースと呼び、例えばMySQL(マイエスキューエル)、PostgreSQL(ポストグレエスキューエル)という名称のデータベースソフトを利用します。こちらも無料です。このデータベースに命令をするのは、実はPython言語ではなく、SQLという言語になります。しかし、ご安心を。最低限モードならSQLは直接書かなくても大丈夫なことが多いです。直接SQLを触らなくても前述のDjnagoが使えればPythonで命令を書くことができるのです。という観点からもDjangoの活用ができることは重要です。

  • HTMLが多少いじれること

Django(Webアプリフレームワーク)〜 画面出力に関して、最終的にはHTMLでの表示になることが多々あり、HTMLを直接使わなくとも、HTMLの情報のやりとりの通信規格について理解しておかないと修理(デバッグ)などができないため、HTMLの知識は必要です。これは直感的にわかりやすいのですぐに楽しく学べると思います。

  • herokuかAWSがある程度使えること

自分のパソコンでPythonコードを書いても納品時は自分のパソコンで動くことは想定していません。(例えばお客さんが遠隔操作するときに、自分のパソコンを常に立ち上げておく・・・なんてしませんよね。お客の取引情報がすべて自分のパソコンで動いていて、電源が落ちるなどのハプニングでもあれば、即座にクレームというのは想像しやすいかなと思います。)この外部のPCに自分の書いたコードを引っ越しさせて、遠隔で動くようにする作業のことは業界でデプロイと呼ばれています。このデプロイをするためのツールで有名なものがheroku(へろく)とAWS(エーダブリューエス(そのまんまですが・・・)、Amazon Web Service。アマゾンが世界中で利用してきた通販の仕組み、システムを間貸ししてくれるサービスというイメージでとりあえず。最近ではAWS事業も相当アマゾンの核心事業になっています)です。herokuは無料で使え、AWSは最初の1年は無料枠がありますので色々試しやすいです。なお、グーグルも同じようなサービス(GCP,Google Cloud Platform)あり、これも人気上昇中です。他にも色々類似サービスありすぎますが、割愛します。Djangoの習得の次にそびえる最後の難関です、賞味2ヶ月以上〜くらいで基礎は身につくと思います。ここまで習得できれば自信がついてくると思います!

あとがき

今日は気合をいれて長文書きました〜 誰かのヒントやモチベーションのきっかけになったらいいな^^


お気軽に押していただければ励みになります^^