58日目 割烹芸人の枠組2
Webアプリケーションについて簡単に説明します。
これまで作ってきたのは、HTML, CSS, Javascripだけで作られた静的サイト(いつどこでアクセスしても毎回同じものが表示される、HTMLファイルで作成されたWebページのこと)です。
しかしながら、割烹エディターで目指しているのは動的サイト(アクセスしたときの状況に応じて異なる内容が表示されるWebページのこと)です。
テンプレートを保存したり、テンプレートから作成できるようにするためには動的サイトを作る必要があります。
それを実現させるにあたって、バックエンド側のプログラミングをする必要があります。
動的サイトの構成は主にフロントエンドとバックエンドに分かれています。それぞれで覚えなければいけないスキルがあります。
・フロントエンド:使用するユーザー側の処理、パソコン上での見た目をコントロールする部分。ユーザーが使いやすいよう、見やすいように色々とする側のこと。
―必要な知識:HTML、CSS、Javascript、jQuery、行動心理学、デザイン、
・バックエンド:使用するユーザーが見えない部分・直接操作できない部分の処理。フロントエンドで使用するデータを集めたり整形したりしてフロントエンドに渡す側のこと。
―必要な知識:開発用プログラミング言語、データベース、サーバー、システム設計、PDCA
バックエンドに大本の仕組みがあって、色々なデータもあり、そこから必要な物を取り出せるけど、普段使用する側ではそんなもの見にくいし見られたくないし見せたくもないから、色々と加工してからフロントエンド側で見せたいものだけ見せる感じですね。
専門の開発会社とかだと、ディレクター、デザイナー、エンジニアみたいに役割を複数に分けている感じ。
・ディレクター:全体の方向性、進行管理する人。システムの設計。方向性が迷子な場合はこの人の責任
・デザイナー:フロントエンド担当。ユーザーの使いやすいように画面設計する人。UIが悪い場合はこの人の責任
・エンジニア:バックエンド担当。Webサービスの提供に必要な仕組みを作る人。Webサービスの機能が多ければ多いほど大変。バグがあった場合は大体この人の責任
これまでの日誌でやってきたのはフロントエンドの部分です。ということで、ここからはバックエンドのお話になります。
バックエンドを開発するにあたってまず、開発言語を選ばないといけません。
フロントエンドはHTMLとCSSとJavascriptが鉄板なのでいいのですけど、いろんな処理を行うバックエンドでは色々なプログラミング言語が使えます。
ここの選択で開発速度や難易度も替わります。
色々な言語がありますが、Web開発に向いた言語は大体決まっているみたいですね。
Ruby、PHP、Pythonがメジャーなようですね。あとはこれに加えてGoやJavaなんかもあるのかな。また最近ではJavaScriptも候補になってきます。
とりあえず三大Webアプリケーションフレームワークが存在するRuby、PHP、Python もしくは JavaScriptを選んでおけば間違いないです。
なんだかポ〇モンみたいですね。ヒ〇カゲ、ゼ〇ガメ、フ〇ギダネ、あとピ〇チュウ。
『つよい げんご よわい げんご
そんなの ひとの かって
ほんとうに つよい エンジニア なら
すきな げんご で かいはつ できるように がんばるべき』
一応簡単に御三家を説明しておきますと、
■Ruby
Rubyは日本人が開発した言語で、日本ではかなり人気みたいですね。Web開発ではRuby on Rails(単にRailsと呼ばれる)が超有名。設計思想は自由に楽しくプログラミング。みんな違ってみんないい、書きたいように書くとのこと。確かエブリスタなんかがRubyだった気がする。
■PHP
PHPは古くからWebサービス開発に使われていて、設計思想としてはWeb開発を簡単にするって感じ。小説家になろうはPHPで作られているみたいですね。
■Python
Pythonは機械学習やAIが流行して来てから有名になっているのかな。分析系のツールが作りやすくてデータサイエンティストの御用達みたいですね。設計思想としては、暗示より明示。誰が書いても同じようなコードになるように、可読性、わかりやすさを求めているとのこと。
なんでこの言語がお勧めなのかというと、使い勝手のいいWebフレームワークが存在しているからです。
■Webフレームワーク
Web アプリケーションフレームワーク(ウェブアプリケーションフレームワーク、英: Web Application Framework)は、動的な ウェブサイト、Webアプリケーション、Webサービスの開発をサポートするために設計されたアプリケーションフレームワークである。 フレームワークの目的は、Web開発で用いられる共通した作業に伴う労力を軽減することである。たとえば、多数のフレームワークがデータベースへのアクセスのためのライブラリや、テンプレートエンジン(→Webテンプレート)、セッション管理を提供し、コードの再利用を促進させるものもある。
とりあえず、Webサービスの開発を簡単にするための枠組みのこと。
一からコードを書くのではなくて、共通に使いまわせる部分は部品として用意してあって、差別化できる部分だけ作ればいいようにしているということですね。特に個人開発だと、人数でごりおせないので必要な部分だけつくればいいというのは素晴らしいですね!
優秀なWebフレームワークがあるからRuby、PHP、Pythonが人気。
■三大フレームワーク
Ruby on Rails / Laravel / Django
■Ruby on Rails
言語:Ruby
Webアプリケーションフレームワークの王道。
Rubyが日本で開発されたこともあって、日本語の情報がいっぱい。
Webアプリケーションを自分で作ろうと思ったら、簡単なアプリしかできなかった問題を解決するために開発された。Webアプリケーションフレームワークという存在を世に広めた立役者。
CookPadなんかもRuby on Railsで作られている。
■Laravel
言語:PHP
Web職人のためのPHPフレームワーク。
PHPは使いやすいWebフレームワークが少ないという欠点があったが、その評判を払拭するようにさっそうと現れた。比較的後の方に開発されたフレームワーク。
Ruby on railsなどの有名なWebフレームワークの良いところを取り入れつつも、扱いやすさを重視したWebフレームワーク作りを目指している。
ちなみに、小説家になろうはPHPのフレームワークである、Zend Frameworkを採用しているみたい。今だとレガシーのZend Framework、モダンのLaravelと呼ばれていているそうですね。Zend Frameworkはあんまり人気のないフレームワークでドキュメントが少ないし、使用者もあんまりいない感じ。
■Django
言語:Python
"Batteries included" の哲学に従い、開発者が "すぐに" やりたいことのほとんどを提供するフレームワーク。
Pythonで作られていて機械学習を導入することも容易にできるため、AIなどを導入したWebサービス開発が増えてきている今は人気のフレームワーク。
InstagramなんかもDjangoで作られている。
他にもフレームワークはいっぱいあるけど、この辺りが人気なようですね。人気ってことはそれだけ情報がいっぱいあるってことで、それだけで勉強のためには有利なのです。
日本で初心者ならRubyを学ぶ人が多いみたいですね。日本語のドキュメントが多いっていうのも魅力的です。
ただ今回の割烹エディターではPython Djangoを使っていきます。
理由は、私がPythonを好きなので。
ということで言語も決まったので、Djangoを使ってバックエンド側を開発していきます。