【Python入門】フレームワークとは一体どのようなものなのか?プログラミングスクールを検討されている方やRubyに興味をお持ちの方なら一度は「フレームワーク」聞いたことがあるでしょう。フレームワーク、日本語に訳すと「骨組み」ですがプログラミングにおける「骨組み」ちょっとイメージ湧きませんよね。今回は、直感的に「フレームワーク」をイメージできるよう噛かみ砕くだいて解説させて頂きます。No.1のCodeCampが運営するプログラミング未経験の方のための学習メディアですCodeCampとは?(受講生体験記)「エンジニアは女性のキャリアとして魅力的」未経験からの転職体験記リモートワーク×多拠点居住の新しい生き方を実現する。代表的なPythonのフレームワークPythonフレームワークの求人状況まとめ【Python入門】フレームワークとは一体どのようなものなのか?フレームワークとはいきなりですが、「フレームワーク」ちょっと身近なものに例えてみますと、ケーキに例えると・・・ホールケーキのスポンジ部分だけ。デコレーションや中身は自分次第マンションに例えると・・・スケルトン状態。電源や給排水はあるが、間取りや内装は自分次第スーツに例えると・・・オーダースーツ。「スーツ」というデザインはあるが素材や装飾、サイズは自分次第という具合に、『目的達成のために必要な基本的な部分だけ』を用意されている状態をイメージすると「フレームワーク」分かりやすいと思います。ケーキやスーツと違ってプログラミングにおけるフレームワークは「拡張可能」という非常に夢のあるツール。目的としたものが有名。フレームワークは、Web以外にも「機械学習」や「ゲーム」「デスクトップアプリ」「ブロックチェーン」「科学計算」など目的別に存在。Pythonに限ってはWebアプリ以外に「機械学習」や「ゲーム」、「デスクトップアプリ」用のフレームワークが用意されていますね。そのフレームワークの中身ですが、まずファイル群を見てみるとイメージ湧きやすいかもしれません。4107のファイルを有します。フレームワークの全容および全機能を理解することは、ちょっと難しそうですね。ほかのフレームワークでも同じです。Djangoは大規模なフレームワークで全容がつかみにくいですが、逆に最小のフレームワークを見てみるとイメージできるかもしれませんね。Pythonにおける最小規模のフレームワークに「Bottle」があります。Webサーバーとして機能し、Pythonプログラムとブラウザの橋渡しをしてくれます。Pythonのフレームワークの多くはWebサーバーの機能を有しているんですね。その他には、MVCモデルを採用していたり、テンプレートが用意されていたり、デバッグ機能があったりなど。1からWebアプリを作成するよりもフレームワークを使う方が、早く開発できる、というわけです。ちなみにフレームワーク無しでWebアプリを作成した記事も紹介されていますが、その開発ステップは長いです。有名なフレームワークの年表すこしフレームワークについて分かってきたところで、フレームワークの歴史を確認してみます。Rails、そしてフレームワークが有名になりましたね。以下にフレームワークを使ったプロジェクト例をご紹介します。YouTube(動画系)DropBox(データ系)Instagram(画像系)上記で紹介した例は世界規模のWebアプリケーションになりますが、もっと小規模のブログやショッピングサイトなどもあります。ここで抑えておきたいこととしては、フレームワークで開発した場合「プロジェクトをスケールアップできる」ということでしょう。将来どうなるかわからないプロジェクトをコンパクトにリリースでき、その後、ユーザーが増えサービスが拡張しても、機能や処理能力を適度に対応していけるということ。これはリリース前の設計負担を減らし、安心して開発に専念できるということですね。次にフレームワークのメリットデメリットをまとめてみます。一貫した情報(チュートリアル)を入手しにくいフレームワークによっては情報が少ないフレームワークの構成理解に加えて、モジュールやライブラリの理解も必要。インストールしてみると分かるのですが、フレームワーク以外のソフトが必要だったり、独特のコマンド処理をしたりで、プログラミング初心者にとっては難易度が高いと思います。設定するとインストール済みの状態から開発を進めたりできますね。フレームワークの基本構成を理解しておかないと、成果物までのプロセスをまったくイメージできません。●●、何が違うの?」と思う方も多いと思います。以下に「フレームワーク」と「モジュール、ライブラリ」との違いをご紹介させて頂きます。これらの言葉の厳密な線引きはありませんので参考情報としてご理解願います。必要な機能のコードはすべて記述する必要あり。標準で組み込まれたプログラム。一つのモジュールで複数の機能(関数)を有する。●ライブラリpip管理のプログラム群。Matplotlib(グラフ描画)などが有名。モジュールに比べて実用的な機能を搭載し、ライブラリの中身も複数のフォルダとファイルが存在。「エンジン」という風に表現されていますね。