支援対象地域:札幌、仙台、関東、愛知、関西、広島、福岡

  • TOP
  •   
  • コラム
  •   
  • [2022年版]フレームワーク「Dj

はじめに

Python(パイソン)は200種類以上あると言われているプログラミング言語の一つで、1991年にリリースされました。2022年時点で30年以上の歴史を持つので、RubyやSwift、Scalaといった後発の言語にも影響を与えています。小学校にプログラミングの授業が取り入れられるようになってからは、学習素材としてPythonが利用されることもあります。この記事では、Pythonのフレームワークの一つである「Django(ディージャンゴ)」を使ったフリーランス案件の特徴・条件について紹介していきます。

なお内容としては、初心者の方がこれからPythonやDjangoについて学習を始め、Pythonのフリーランスを目指せるように、必要となる基礎知識もまとめています。他言語の利用経験はあるものの、Pythonを習得して独立したいと考えている方、プログラミング言語自体触れたことがなく、Pythonから始めてフリーランスのエンジニアになろうと思っている方はぜひご覧ください。

Pythonを知る

Pythonはシンプルな構文、少ない記述でプログラムを組むことが可能なプログラミング言語の一つで、 初心者でも学びやすいという特徴があります。初心者にもおすすめな言語であるにもかかわらず、統計処理や数値計算に向いた機能が多く用意されているため、ビッグデータの分析やAI、機械学習といった2022年時点で最新と言われるIT技術が必要なシステムに幅広く利用されています。なお分析を得意とする言語には「R言語」もありますが、どちらかというとPythonは機械学習に向いていて、R言語はデータサイエンスに向いていると言われています。例えば、コンビニの仕入れシステム等で売れ行きの予測をするシステムに関してはPythonが向いています。また、Pythonに比べるとR言語はやや複雑であり、速度はPythonの方が早いという違いがあるため、トレンドのビジネスに関わるシステムではPythonがおすすめとなります。逆に「R&D(Research and Development)」と言われる研究や新技術の開発に使うシステムではR言語がおすすめです。

Pythonは、ライブラリやフレームワークが充実しているという特徴もあります。これらがどういったものであるかは「フレームワークの役割」の章で紹介しますが、充実していると開発の効率を上げることができ、言語の習熟度が追いついていなくても複雑なシステムの開発ができる可能性があります。電話を使いたい時に、わざわざ自分で電話を作る必要がないのと同じです。ライブラリやフレームワークが充実しているということは、Python自体の学習にプラスして、それらの学習も別途必要となることを覚えておきましょう。

他の言語同様、Pythonも様々なシステムに利用が可能です。機械学習が可能なロボットの開発や、業務の自動化・効率化システムの開発、Web上のあらゆるデータを収集するスクレイピング 、Webアプリ・デスクトップアプリ・組み込み系アプリの開発、ブロックチェーン技術の開発と、採用される分野が非常に幅広いです。2014年に登場し、その後も活躍を続けるソフトバンクの「ペッパーくん」にもPythonが利用されており、顔認識や感情認識を可能としています。なお2011年には、AndroidやiOSといったスマホで利用されるOS向けのアプリが開発可能な「kivy」というライブラリも登場しており、さらに活用の場を広げ続けています。

以上より、Pythonを習得することで人工知能を活用する「AIエンジニア」、便利なアプリをユーザーに提供する「Webアプリケーションエンジニア」、データ分析を行う「データサイエンティスト」、データを生かす「マーケティング」といった職種に就ける可能性が高い状況です。

なお、Pythonという名称は1970年代前半にイギリスのBBCで放送していた人気のバラエティ番組「空飛ぶモンティ・パイソン(Monty Python’s Flying Circus)」から付けられたと言われています。なお「python」は日本語で「ニシキヘビ」を意味するため、Pythonのロゴマークは、2匹の蛇がプラスマークのようにくっついた形となっています。また、コンピュータの学習を目的に開発された小さなコンピュータ「Raspberry Pi(日本ではラズパイと略される)」は、Pythonとの相性が良いため、ラズパイの「Pi」はPythonの「パイ」なのではという話もあります。

オフサイドルール

Pythonでプログラミングをしやすくしている理由の一つに「オフサイドルール」というものがあります。Pythonを利用するうえで欠かせないルールであるため、今回は初心者の方に向けて簡単に紹介しておきます。特に難しいことはなく、作文で段落のまとまりを表すために、多くの場合は段落の始まりを1マス空けて2マス目から書き始めるかと思いますが、それと同じ方法になります。プログラムにおいて1マス空けることを「インデント(字下げ)」と呼びますが、このルールに従うことで、「{ }」等の記号の記述を省略することが可能です。なお、記号を使わず、かつインデントが正しくないコーディングをしてしまうとエラーとなる点にはご注意ください。オフサイドルールを正しく使うことで、可読性の高いコードとなり、複数人で開発を行う場合も担当者ごとのコーディングのブレが発生しづらくなるというメリットがあるので覚えておきましょう。

初心者がPythonを学ぶのにおすすめのサイト

Pythonの学習が可能なオンラインの学習サイトを紹介します。書籍での学習が苦手、またスクールに通う程の費用は掛けられないという方は、比較的安価での独学が可能となるので、以下学習サイトを参考にしてみてください。

一つ目は「Udemy」で、こちらはレベルに合わせた様々なコースが用意されています。有料ですが、キャンペーンが実施されている際に割引で利用できることがあります。二つ目は「Progate」で、基礎的な内容は無料で受講可能です。上級の実践的な内容を学びたい場合は有料となります。

三つ目は「ドットインストール」で、こちらも無料で一部サービスの利用が可能です。上級レベルの内容の学習や、多くの機能を利用したい場合は有料となります。最後に紹介する「PyQ」は、Pythonに特化した独学プラットフォームとなっており、読む・書く・動かすのサイクルで知識を定着させる仕組みとなっています。月額¥3,040(税込)なので参考書1冊の料金程度で利用できて、自分のレベルや目的に合わせて効率的に学習できるので、おすすめです。

利用されているサービスは?

この章の終わりに、Pythonが実際に利用されている有名なサービスを紹介します。なおPythonは単独で利用されているというよりは、他の言語と組み合わせて利用されることの多い傾向にあ流ということを頭に入れて置いてください。

Webアプリケーションで有名なところでは、Facebook、Instagram、YouTubeがあります。Webサイトでは、Google、Spotify、Dropbox等が挙げられます。なおInstagramのWebアプリケーションに関しては、今回紹介するフレームワーク「Django」が使われています。

また、今でこそGoogleでは独自に開発した「Go言語」が少しずつ定着している状況がありますが、Pythonは今でもYoutubeをはじめとしたGoogleの様々なサービスで利用されています。Amazonのサービスでも、商品の取引関連システムや、機械学習の部分でPythonが利用されています。Netflixではプラットフォームの開発をはじめ、セキュリティ、顧客分析と様々な部分にPythonとそのライブラリを利用しており、Pythonの採用を公表している状況です。Netflixは動画配信サービスですが、条件に見合った動画の特定シーンを抽出する仕組みにも、Pythonの機械学習を利用しているとのことです。

フレームワークの役割

Djangoのような「フレームワーク」というものがどのような役割をしているか紹介します。フレームワークはPythonだけではなくその他の言語にもあるもので、その名の通り「枠」のことを表しています。文章を作成する際にテンプレートを利用することがありますが、それに似たようなもので、大枠があらかじめ決められています。その大枠を利用して、開発するシステムに合わせて少しだけ修正するだけで目的のプログラムが作成できます。工作キットやプラモデルに近いと言っても良いでしょう。

なおフレームワークには、対象のシステム開発に必要な機能がほぼ備わっている「フルスタックフレームワーク」と、エンジニアが自由にカスタマイズすることを前提として作成されている「マイクロフレームワーク」があります。大規模な開発では一つの機能に多くのコストを割くことが難しいため、一般的にフルスタック フレームワークがおすすめであり、小規模な開発にはマイクロフレームワークが向いています。今回取り上げる「Django」は、フルスタック フレームワークの一つです。

また、フレームワークに似た仕組みとして「ライブラリ」というものがあります。この2つは明確な違いがなく、「Django」に関しても参考書やサイトによってはライブラリとして紹介されている場合があります。そのため、そこまで違いを意識する必要はありませんが、敢えて違いを挙げるとしたら「影響する範囲」になります。基本的にライブラリはプログラムのうちの一部機能に影響するものであり、フレームワークはプログラム全体に対して影響する仕組みとなります。車に例えると、トラックという車種を完成させられる枠組みがフレームワークであり、タイヤ、ボディー、ミラーといった一つ一つのパーツがライブラリです。そのため、フレームワークには複数のライブラリが含まれていることがあります。

なお、フレームワークはオープンソースで無償のものが多いですが、中には有償で提供しているものもあります。Pythonで良く利用されるフレームワークではあまり見かけませんが、どれも無償で利用できるというわけではないということは頭に入れておきましょう。

Djangoはどんなフレームワーク?

Pythonは近年、最新技術の開発で注目されることの多い言語ですが、かつてよりWeb関連のシステム開発にも適した言語としても挙げられます。そのWeb開発を手助けしてくれるフレームワークの一つがDjangoです。Djangoがフルスタックフレームワークであることを前述しましたが、実際にデータベースやユーザインターフェース、セキュリティといったWeb開発に必要な要素が揃っています。そのため、後から必要なモジュール等を探して個々に追加する必要がほぼありません。また、それぞれのプログラムが独立しているため、機能を拡張しようとした場合の追加作業も簡単です。これはMTV(Model-Template-View)というモデルを採用しているためです。要件定義後にクライアントから機能追加の要望が出ることは珍しくないので、拡張性に優れている点は大きなメリットとなります。

SQLインジェクション、クロスサイトスクリプティング、クリックジャッキングといったWebシステムで発生しがちなサイバー攻撃に対して対策可能という点も、Djangoのメリットです。パスワードも、暗号化ハッシュ関数を利用して暗号化した上で保存される仕様になっています。

またPython自体のメリットでもありますが、PythonはOSに依存せずに利用できる言語であるため、汎用性の高いフレームワークです。さらに、Djangoでは管理画面(django.contrib.admin)が自動生成されるため、経験が浅いエンジニアであっても画面を見ながら効率的な開発が可能となります。

他にも、PythonのスキルがあればDjangoの学習にさほど時間がかからない、マルチテナント機能によって一元管理ができるため、運用・保守がしやすいといったメリットがあります。

ここまで見る限りDjangoはメリットが非常に多いので、Web開発をする場合でどのフレームワークを使えば良いか迷っているのであれば、まず導入して損することはないフレームワークと言えます。ただしデメリットもあるので念のため紹介しておくと、Djangoに関する日本語の情報が少なめという点が挙げられます。英語での情報は充実しているので、翻訳ツールを利用すれば情報が得られないということはないのですが、解釈を誤ってしまったり、理解に時間がかかったりということがあるので、英語力があった方が有利となります。

Djangoで実現できる機能について

Djangoは管理画面が自動生成されることは前述しましたが、その他にできることを三つ紹介します。一つはユーザーを自動認証してログイン可能な「ユーザー認証機能」です。「django.contrib.auth」機能がDjangoに標準搭載されており、そこへ「django-allauth」を追加することで可能となります。セキュリティ面も考慮されている機能であり、SNSアカウントとの連携も可能です。

二つ目は文書フォーマットの「RSSフィードの作成機能」です。RSSフィードとは、ホームページやブログで更新情報があった際にそれを通知してくれるものです。Pythonでは「feedparser」等のライブラリを利用することで可能となります。

三つ目は「テンプレートエンジン(django Templates)」です。これを利用することで、プログラム(ロジック)部分とHTML(デザイン)部分を分離して、メンテナンスしやすい状態にできます。なおテンプレートエンジンの構成要素は「データモデル」「ソーステンプレート」「成果ドキュメント」の3つとなっています。

人気や需要について

Python、Djangoが扱えるフリーランスエンジニアの需要について見ていきましょう。結論として、Python、Djangoの需要はしばらく続くと言えます。Djangoは日本国内ではまだ少ないものの、世界的には利用されることの多いフレームワークであると同時に、Python自体の需要が高まってきているためです。前述したようにとても便利なフレームワークであるため、PythonでWeb開発を行う際は選ばれる可能性も高いでしょう。また、開発で利用されるということは、システム稼働後の運用・保守も発生します。稼働後のシステムを頻繁に切り替えることは企業にとってデメリットとなることも多く、考えにくいので、Python、Djangoの運用・保守は長期的に案件があると見込めます。

ここまで見るとフリーランスのエンジニアになっても安泰のように思えますが、フレームワークに関しては流行り廃りの早いものでもあります。そのためDjangoのスキルだけでは何十年も先まで安定して案件があるとは言い難い状況です。そのため、Django以外のフレームワークやPython以外の言語の習得、機械学習、AI、ビッグデータ関連の知識習得等も怠らずに進めていきましょう。Django以外にPythonで人気のフレームワークとしては、いずれもWebアプリケーション開発用ですが、bottle、Flask、Plone等が挙げられます。また近年は開発環境としてGCPやMicrosoft Azure、AWSといったクラウドサービスが利用されることも珍しく無くなっているので、プログラミングだけではなく、クラウドサービス等のインフラに関連した知識も習得することをおすすめします。さらにマネジメント関連や開発における上流工程の知識・スキルを持っておくと更に獲得できる案件が多くなります。

[2022年版]Django案件の特徴・条件について

まず、フリーランスエンジニアのDjango案件における平均の月額単価を「レバテックフリーランス」「フリーランススタート」というフリーランス専門の求人サイトで確認したところ、前者では80万円台が一番多く、最低単価40万円台となっていました。後者の「フリーランススタート」では70万円台が一番多く、最低単価30万円台でした。多少の違いはあるものの、平均が70〜80円台になると目安が付けられます。なおこのデータは2022年10月時点のものとなります。また、一概には言えないものの、基本的に実務経験年数が長いほど単価は高くなっています。

応募条件を見てみると、フリーランス案件というだけあり実務未経験での募集は見当たらず、期間は記載されていないものの求められるスキルには「Pythonの開発実務経験」と記載されているものが多く見受けられました。なお、PythonとDjangoのスキルのみで募集している求人は数として多くはなく、例えばJavaScriptやVue.js、Reactといった別のWeb開発スキルが必要であったり、DockerやGit、Github、GitLabの実務経験、AWS環境下での開発経験が必要であったり、SE経験、上流工程の経験が必要であったりと、その他スキルも併せて求められている案件が多い傾向にありました。

企業の数が多いので東京にある企業の案件が多くありましたが、働き方としては常駐型、フルリモート型のどちらもあったので、求人を出している企業の場所にかかわらず契約を結べる可能性があります。募集している職種としては、プログラマーはもちろん、システムエンジニア (SE)、サーバーサイドエンジニア、インフラエンジニア 、プロジェクトマネージャー(PM)、データサイエンティスト、データベースエンジニアと様々です。中でもSEとしての募集が目立った他、PM等のマネジメント経験や、開発における上流工程の経験があった方が、より高単価となっていました。

具体的な案件例を二つ紹介します。一つは転職サイト向けメール配信システムの基本設計~運用保守で、複数人のプロジェクトとなっていました。開発環境はPython、Django、Javaで、OSの環境はWindows、Mac、アジャイル開発、Javaでの開発、顧客折衝経験があると優遇されるという内容でした。所要時間は140~180時間の見込みで、報酬は60〜70万円/月となっていました。

二つ目は、ウェブサービス開発事業、AIを用いたデジタルサイネージ事業を行っている企業でのサーバーサイドエンジニアとしての案件です。こちらはバックエンド(サーバーサイド )としてPython、Djangoを利用しており、フロントエンドにはTypescript、Angular、Reactが、インフラとしてはAWSを利用しているシステムとのことです。フルリモートの案件で、所要時間は140~180時間の見込みで、報酬は100万円/月となっていました。

Python+Djangoでフリーランスを目指すには?

Python+Djangoが扱えるエンジニアとしてフリーランスを目指すのであれば、まず実務経験は必須となります。そのため初めからフリーランスになるのではなく、社員として企業に就職して長くとは言わず数年の経験を積んでから独立を検討することをおすすめします。もしくはクラウドソーシングや知り合いの紹介等で未経験でも対応可能な案件を探すことになるでしょう。また、もし安定して案件を獲得できない、継続案件が獲得できない、どうしても自分で仕事が見つけられないという場合はフリーランス専門のエージェントもあるので、利用を検討してみましょう。

なおフリーランスになるに当たってのデメリットは、うまくいかずすぐ諦めてしまわないためにも、事前に把握しておくことが必要です。デメリットとして考えられるのは、収入が不安定になる可能性があること、事務処理や雑務も全て自分で行わなければいけないこと、企業に属していないことで社会的信用性がなくなる場合があること、自分が働かないと収入も得られないため、学習にかける時間を確保しづらい等です。また、社会保険料が全額負担となったり、確定申告を行って税金の支払い自分で処理したりという必要もあるため、単純な報酬額だけを見て正社員の時より多いと思っても、手取りの金額を比較すると大して変わらない、むしろ低くなったということもありえます。そのため案件を獲得する時は、保険料や税金、また月や年換算した場合に見合った額であるかも考慮しなければなりません。以上を踏まえたうえで、なおもフリーランスとしてやっていきたいと思った場合に転身しましょう。

まとめ

今回見てきたように、PythonとそのフレームワークであるDjangoは、共にたくさんのシステムで利用されており、それだけエンジニアの需要も高い状況です。AIや機械学習、ビッグデータといった分野は、よほど革命的な技術が現れない限りこれからさらに開発が進む分野であるため、それに比例してPython、Djangoが利用できるエンジニアの需要は増えることでしょう。しかし、それだけPython、Djangoを習得する人も増えると見込まれるため、その他複数のライブラリやフレームワーク、別のプログラミング言語の知識、最新技術に関する知識等もあわせて習得しておくことで、フリーランスとして、より幅広い分野の案件を獲得できるようになる可能性があります。まずは今回の記事をきっかけとしてPythonの概要を押さえたうえで、学習サイトを活用してさらに学習を進めていってみてはいかがでしょうか。