これからプログラミングを学びたい人は、Python(パイソン)というプログラミング言語が存在することは知っているのではないでしょうか。
しかし、実際にPythonで何ができるのか、学習するのは難しいのか、稼げるのかという点になると、なかなか網羅した情報がありませんね。
また、Django(ジャンゴ)についてはいかがですか?初めて聞きました、という人も多いはず。
そこで、この記事では、Pythonと、Pythonを用いて作られているDjangoの、何ができるのか、学習容易度、稼げるか否かを網羅して徹底解説します。
この記事を読めば、あなたがプログラミングを学び、エンジニアとして生きていこうとする際の参考になりますよ。
Pythonについて知ろう!
それではまずはPythonからです。
Pythonはプログラミング言語の一つです。
Pythonは現代のIT業界において広く使われており、シェアが急速に伸びている勢いのある言語です。
Pythonの特徴
まずはPythonの特徴を列挙しましょう。
書きやすさ・分かりやすさ
Pythonは、極めて書きやすく、他人の書いたプログラムでも比較的理解が容易な言語です。
というのは、文法が簡単だから。
また、そもそもの設計思想として、なるべくシンプルにやりたいことを実現できるようにする、という思想があります。
ですのでPythonは書きやすくなっています。
書きやすいということは同時に読みやすいということです。
また、Pythonのプログラムは、書く人によるクセが混入しにくい特性を持っています。
文法がシンプルな言語は得てして書く人のクセが混入しやすいのですが、Pythonの文法だと混入しにくい文法になっています。
したがって、他人の書いたプログラムでも比較的理解が容易です。
エンジニアの仕事はチームでやるもの、他人の書いたプログラムの理解は仕事の必須項目です。
また、学習のあいだは、たくさん他人のプログラムを読むでしょう。
したがって、書きやすく読みやすいのは学習にもプラスです。
– 補足「JavaやPHPとの比較」
Pythonの書きやすさの一例として、「配列の最後の要素を取得する」コードの例を挙げます。
まずJavaだと次のようになります。
a = array[array.length – 1];
次にPHPだと次のようになります。
$a = $array[array_key_last($array)];
いずれも、案外分かりにくくて、タイピング量が多くなっています。
ところがPythonだと
a = array[-1]
これで済みます。
これがPythonの書きやすさの一例です。
効率性
書きやすいということは、迅速に開発が進行するということでもあります。
また、Pythonは機能分割がしやすくなっています。
多人数がプロジェクトに関わっていても、各々が担当する機能で修正を加える箇所があまり被りません。
このことも、効率よく開発を進められる要因となっています。
柔軟性
それだけシンプルな文法を備えていながら、実はPythonの柔軟性は驚くべきものです。
機能追加が容易にできます。
Pythonの使用用途
それでは、実際にPythonが何に使われているのか見ていきましょう。
Web
Webというと、スマホやパソコンで使っていますね。
このWebを作るのに、Pythonも使います。
Djangoは、Webを作るためのPythonのフレームワーク(枠組み)の一つです。
Pythonは、Webに欠かせないデータベースとの連携が容易です。
また、実際に表示させる画面を作るのも容易にする仕組みが、Djangoや、Flask(フラスク)などのPythonによるWebフレームワークには備わっています。
AI
Pythonはその柔軟性から、大量のデータを扱うのが大得意です。
AIは、大量のデータを元に作られます。
したがって、AIの開発はPythonの独擅場となっています。
仕事効率化
現在DXが進められています。
簡単に言うと業務の進行を電子化しましょうというものです。
このDXにもPythonが用いられることが多いようです。
例えば、PythonはExcelとの連携が容易です。
Excelで大きな手間のかかる処理でも、Pythonを用いて自動化すればかなり業務の進行が効率化できます。
Pythonの学習容易度
それでは、Pythonの学習容易度はどうなのでしょうか。
一言で言えば容易です。
それは主に文法のシンプルさにあります。
プログラミング初学者であっても、Pythonを学び始めてから初めてプログラムを実行するまでさほど時間はかからないはずです。
先ほど挙げたWeb、AI、仕事効率化、それぞれに適した拡張機能があります。
基本を学んだら、学びたい拡張機能を学んでいくと良いでしょう。
しかも、Pythonはネット上に日本語による解説記事や解説動画が山のようにあります。
マイナーな言語を選択すると記事が英語だけ、となりがちなプログラミングの世界で、日本語で平易に解説してくれる記事の存在は貴重です。
このことからも、Pythonの学習は容易だと言えます。
Pythonの将来性
Pythonの将来はかなり有望です。
というのは、WebもAIもなくなることがないからです。
それどころか、ますます発展します。
DXにしても、始まったばかりです。
国の帳簿電子保存の義務化が2024年1月なので、それに向けてDXの開発案件はますます増えるはずです。
今まで他の言語を用いて作っていたシステムをPythonを用いて作り直すという案件も多数あります。
Djangoについて知ろう!
それでは次にDjangoについて解説します。
Djangoとは、Pythonを用いて構築された、Pythonを使ってWebシステムを構築するための「フレームワーク」(=枠組み)です。
PythonのWebフレームワークでは、開発で使われることが最も多いフレームワークです。
Djangoの特徴
まずはDjangoの特徴を書いていきます。
Djangoは「バックエンド」
Djangoは「バックエンド」を作るために存在します。
(「バックエンド」とは何かはこの後解説します)
そのため、
・DBとのやりとり
・URLの自動振り分け
・サーバー内での振る舞い
などが簡潔に書けるように設計されています。
実際に画面に表示させる部分はJavaScriptとHTML/cssを使います。
ここにも仕掛けが施してあって、効率よく画面のプログラムが書けるようになっています。
Djangoでのプログラミングは、ゼロから作り上げていくというよりも、既にある型枠に振る舞いを追加していく、といったイメージの方が近いですね。
自分でゼロから書く必要がないので、手早くWebシステムを構築できます。
– 補足「バックエンドとは?」
「バックエンド」とは、Webシステムのサーバーサイド全般を指します。
Webシステムにアクセスするのは手元のブラウザを介してですが、ブラウザはサーバーと通信して、サーバーからの指示通りに画面を表示します。
別に「バックエンド」はWebだけに限った話ではなくて、スマホアプリ、ゲームなども手元の画面描画と「バックエンド」は分離しています。スマホアプリやゲームなどにもDjangoは使われています。
– DRFとは?
さて、現代のDjango開発では、Djangoをさらに捻ったDRF(Django REST Framework)が使用されることが多くなっています。
DRFとは、Djangoの機能をAPI通信に特化したものです。
APIとは、プログラムの部品間の通信のことです。
手元のブラウザがAPIを介してサーバーと通信して、APIの返事に従って画面を描画します。
とりあえず、Django開発の現場ではDRFに遭遇することが多いんだな、と覚えておいてください。
Djangoを使っているサービスの例
インスタグラム
実はインスタグラムのバックエンドはDjangoで作られています!
というと、驚きますか?
インスタグラムと言えば知らない人はいない有名なSNSです。
インスタグラムのAIの優秀さには定評があります。
そんなインスタグラムはDjangoで作られているのですね。
NASA
変わったところでは、NASAの公式サイトはDjangoで作られています。
NASAくらいになるとセキュリティ対策は重要です。
そのセキュリティ対策も、Djangoなら高度な対策を比較的簡単に施せます。
おそらくはそのようなところから、Djangoが採用されたのではないでしょうか。
Djangoの学習容易度
Djangoの学習は、残念ながら少し難易度が高めです。
Djangoの学習は、少し難易度が高めです。
というのも、「型枠に流し込むように作る」という特性上、その型枠の理解が大変重要になってくるからです。
慣れればプラモデルを組み立てるようにしてシステムを構築できる反面、どんな部品があるのか分からないとプラモデルは組み立てられません。
と言っても、「フレームワーク」とは全てそのようなものです。
どんな「フレームワーク」でも学習の難易度は高めなので、Djangoもその例に漏れないに過ぎない、という言い方もできるでしょう。
Djangoの将来性
Djangoの将来性ですが、これはあと数年は必ずあると言えます。
今あるWebサービスがなくなることはないからです。
しかしその先と言うと、まだ何とも言えません。
近年、学習難易度の高さから、主に小さなシステムを中心にDjangoを避ける動きが出てきているのは事実です。
しかし、Pythonには他にも、FlaskやFastAPIといったWebフレームワークが用意されています。
同じPythonには変わりがないので応用が効きます。
Djangoを学習しておいても損はしませんよ。
Python、Djangoの案件の単価相場
それでは、PythonとDjangoの案件の単価相場について説明します。
Webバックエンドエンジニア
主にDjangoを使うWebバックエンドエンジニアの単価相場は60万~100万となっています。
Webエンジニアとしての経験年数にある程度比例します。
データサイエンティスト
Pythonを使うデータサイエンティストの単価相場は80万~となっています。
上限を書きませんでした。
それは、上限がないからです。
データサイエンティストはAIに関することの全てを担います。
業務の範囲は非常に幅広くなっています。
また、人によって生産高が全く違います。
ですので、人によっては莫大な報酬をもらえます。実質的に上限はありません。
筆者がとある案件にデータサイエンティストとして応募したとき、ライバルの応募者は「最低でも100万」と言っていました。
Python、Djangoの開発現場の体験談
ここまで、Python、Djangoと単価を解説してきました。
それでは、実際の開発現場はどんな感じなのでしょうか。
ここでは、筆者が体験した現場からいくつか紹介します。
リファクタリング作業体験談
およそ3500行の初心者が書いたPythonのプログラムを書き直す(=リファクタリング)という仕事でした。
4日かけて、1350行にまでスリムにしました。
報酬は20万円でした。
進捗の報告はありましたが、リファクタリングの方針なども含めて、全て筆者の自己裁量でした。比較的楽な案件でした。
AIシステムバックエンド開発の体験談
筆者はAIとWebシステムをつなぐ部分を一手に開発していました。
技術選定の段階から参画したコアメンバーです。
1日6時間の稼働でした。
毎日朝会がありました。
データサイエンティストとの朝会と、Web側の朝会に出席していました。
他に、設計のための会議や、勉強会がありました。
その会社の基幹プロジェクトでしたので、会社員みたいな動きをしていました。
単価は高かったですが、動きが社員と同等になるので、負荷はそれなりにありました。
テストスイート開発の体験談
Pythonを使うテストツールの開発です。
技術選定から参画しました。
実働のチームメンバーは筆者一人。建設業で言う一人親方です。一人で全て決めて(相談はしますが)、一人で実装・テストしました。
こちらも1日6時間の稼働です。会議は週1回のみです。
時間のやりくりの自由が効いて、比較的負荷は低い現場でした。
このように、開発現場と言っても様々です。
開発現場に入る際は、よく検討してからにしましょう。
作成者:金さん