フリーランスエンジニアのベナオです。
初めて僕のブログを読んでいただいている方のために自己紹介をすると、IT系バックエンドエンジニアから独立してフリーランスとしてIT系の情報発信や開発、オンラインスクールのメンターをやっていたり、エンジニア交流イベントを運営していたりする人です。
中でもWebアプリケーションを1ヶ月で作成できるようになるオンラインPython学習というサービスの運営を通じて、Web開発に使われるフレームワーク(以下FW)について調べたり情報発信することが最近増えました。
これからWeb開発を始めようという方には、どのプログラミング言語にそれぞれどのようなFWが用意されているかを最初に押さえて、自分のエンジニア像に合ったスキル選択をすることをオススメしております。
なぜならIT系への就職・転職した際に、開発現場でPHPやPython、Rubyなどのプログラミング言語をそのままの形で使うことはほぼなく、それぞれの言語に用意されたWeb開発を効率的に進めるためのFWとセットで運用することがほとんどだからです。
例えば一般的なところで言えば、PHPであればlaravel、PythonであればFlask・Django、Rubyであればrailsがそれぞれ用意されていますよね。
しかしこれからエンジニアを目指そうという方にとってはどんな人であっても、さあどのFWから手をつけようかという問題には非常に悩まされることと思います。
それは既存のエンジニアが思い思いにTwitterで持論を展開し、自分の使っているFWがいかに素晴らしいかを語り合うばかりで、この種類のWebアプリの開発にはこのFWが適しているだとか、このような機能の実装をするなら逆にこのFWは合わない、というような健全な比較に基づいた話は特にしてくれない傾向にあるからだと思っています。
なので今回は僕のDjangoへの愛はグッとこらえてその主張を控えめにし(ところどころはみ出してしまうかもしれませんが)、それぞれのFWのもつメリット・デメリットを明らかにして実際の案件数などのデータを踏まえながら、これからWeb開発をはじめる方が迷わずに自分に合った選択がしやすいようにまとめたいと思います。
1. データで見るWeb開発フレームワークのシェアと推移
今回の記事を書くきっかけにもなったデータが以下になります。
Stack Overflowというプログラミングの質問ができるサイトの公開しているデータです。3大Web開発FWについての月毎の質問数の推移をグラフにしたものです。
説明の必要が特にないほどに明らかですが、2011年の時点で圧倒的な首位を誇っていたRuby-on-Railsが2020年時点ではdjangoとlaravelに大きくシェアを奪われるという結果となっています。
このデータはあくまで質問数を元にしているので実際のFW採用案件数とは異なりますが、各FWの普及度が反映されていることは間違いないでしょう。
2011年時点からrailsのシェアが下降している要因を調べているうちに浮上してきたのは、Twitterのバックエンドのシステムが、2011年の時点でRuby-on-RailsからJavaVMに移行しているという事実です。
理由はTwitterの膨大化したアクセスを、railsで構築されたシステムよりもJavaのそれの方が速やかに処理できるということでした。
railsでは数百台のサーバーに順にリクエストを投げるようなコードになるところを、Javaなら非同期にリクエストを一斉送信し、帰ってきたレスポンス(データの返信)をまとめ上げるような処理が実現できるとのこと。
大規模システムの開発という役割が終わったRuby-on-Railsの世界的なシェアは、この時点から下降し始めることになります。
2. Web開発フレームワークの日本のIT転職市場におけるシェア
上記で示したStack Overflowのデータは英語圏のものですが、実際の日本のIT転職市場ではどうなっているのでしょうか?
IT系の求人が豊富に掲載されているビジネス系SNS、Wantedlyの案件を見ながら分析してみました。
Djangoと検索して出てくる案件が409件、比較として同じWeb開発フレームワークのLaravelで検索すると859件、おおよそ1:2の比率になることがわかりました。(ちなみにrailsで検索すると919件ヒットします)
Laravelと比較して半分なら十分多いと言えるのではないでしょうか?
1章の英語圏でのデータと一致しないことに疑問は残りますが、日本国内のPython案件は国外に比べて少ないという傾向は感じているのでそこが関係しているのかなと予想しています。
特にDjangoの日本語教材はここ1、2年で改善されつつあるとはいえ非常に少なく、僕も最初に勉強する時は一苦労しました。
しかし今ではnoteなどでもDjangoが学べる教材を良く見るようになりましたし、参考書も徐々に増えてきたように思います。
そしてLaravelの半数の案件があるということは十分、日本のエンジニアにとってDjangoは選択肢に入ってきていると言えるのではないでしょうか?
日本にPythonの案件が入って来にくい(もしくは参入が遅れている)とはいえ、世界的にはPythonエンジニア数は増加傾向にあります。
こちらのグラフはまたStack Overflowで分析したものです。説明の必要がないほどに、Pythonの普及度が他の言語と比べて右肩上がりで上昇していることがお分かりになるかと思います。
なのでこれからDjangoがWeb開発シーンにおいて、LaravelやRailsと肩を並べる日は遠からず来るでしょう。
3. PythonのDjangoはデータを扱う人向けのFW
とは言っても現時点ではLaravelの半分しか普及していないDjangoを今から勉強するの? という方もいるかもしれません。その点についてお話ししましょう。
まずRubyやPHPに無いメリットとして、Pythonには機械学習を筆頭とした機能を含む豊富なライブラリが用意されています。
機械学習に関与するライブラリでいえばTensorflow・Pytoch・scikit-learnなどがあります。Tensorflow、scikit-learnはGoogleが、PytorchはFacebookが開発に関わっています。
このこともあってPythonは、YoutubeやInstagramと言ったレコメンド(おすすめ)機能が入ったSNSの開発に使われています。
レコメンド機能は、ユーザー1人1人の趣向をそのデータからプログラムが機械学習によって読み取ることで実現されています。
例えばYoutubeであればあるユーザーが視聴している動画、高評価を押している動画、どんなコメントをしているか、と言った数多のデータが数値化、統計処理されてユーザーのおおよその趣向が予測されるわけです。
このことから今後のSNSのシステム開発でも、Pythonは筆頭候補に上がるだろうと予想できます。
逆にいえばレコメンドのような、データ解析を伴う複雑な機能を搭載しないようなシンプルなWebアプリケーションの開発をするようなケースでは、DjangoよりもLaravelやRailsの方が簡潔にコーディングできる場合もあるでしょう。
なので重要なのは、自分はデータ分析の関与する複雑なWebアプリケーションの開発をするエンジニアになりたいのか、それともホームページやブログといったシンプルなサイトを作るエンジニアになりたいのか、ということを考えた上でそれに合わせてWeb開発のフレームワークや言語を選ぶことですね。
あとはLaravelであればWordPressでも使われているPHPのフレームワークなので知識を応用してプラグインを作れるかなとか、Railsはシェアが下降傾向にあるとはいえ現状の日本企業ではよく使われているのだからまずこれを学んでエンジニアになるんだ、というように自分のなりたいエンジニア像に合わせて決めてもらえれば良いと思います。
ここまで読んでいただいた方で、Pythonエンジニアに興味があるという方はココナラさんで電話相談を受け付けてますのでお気軽にどうぞ!
オンラインで100人のエンジニア志望の方の相談を受けた現役エンジニアである私が、お客様の現状と要望をヒアリングした上で最適な勉強法やアプローチをご提案させていただきます!
それではここまで読んでいただきありがとうございました。