見出し画像

[驚愕!]初心者エンジニアがフレームワークを勉強していはいけない理由

こんにちは、古里です。

今回は、フレームワークばかり勉強してはいけない理由ということでお話していきます。最初に伝えておきたいのは、

フレームワークが大事でないということではない。」

ということです。私は「フレームワークなんてゴミだ!」なんて言うつもりはないのです。フレームワークはむしろ案件を取る上で必要不可欠なスキルです。ただ、フレームワークばかり学習している人があまりにも多いことに警鐘を鳴らしているのです。基礎技術とフレームワークそれぞれに対する学習の比重を保ってほしいという気持ちをこめて記事を書きました。

この記事を読んで学べること
・フレームワークとは。
・エンジニアにおけるフレームワークとは。
・ウェブフレームワークのメリット・デメリット

そもそもフレームワークってなに?

フレームワークって一体なんのことでしょうか?すでにフレームワークを使っている人はもちろん言葉でこれを説明できますよね?できないということはかなり危険な状態ですよ。

フレームワークとは、もともとビジネスの世界の言葉でした。特定の形式に沿って物事を考えることにより、もれなく、かぶりなくビジネスロジックを組んだり、ロジカルシンキングするためのものです。具体的にいくつか書いておきましょう。

・ロジックツリー
・3C分析
・AIDMA
・PDCA

もしかしたら、知っているものがあるかもしれません。ではなぜ、フレームワークがあるのかというと「再現性」を持たせるためにあるのです。もう少し具体的に見ていきましょう。

マーケティングフレームワークである「AIDMA」について考えます。(エンジニアの話ではありませんが知っていて損はないでしょう。)この際のマーケティングフレームワークとは「地元の小さなパン屋さんがたくさん売るための販売戦略」とでもしておきましょう。

- A(Attention)

まずはAttention、つまり注目を集める。ここの数が多くないと結局商品がお客様の目にも触れてくれない。ここを増やすためには、広告を打ったり、ビラを配ったりなどがあります。パン屋さんのビラを作りましょう。

- I(Interest)

さて、そうして商品を広告した後は、何人かの人が興味を持ってくれます。だがしかし、まだ買ってくれない。ここから先に欲しいと思わせるための施策が必要となります。具体的には、パンの希少性をアピールしたり、パンを独自の製法で作った。などと言います。

- D(Desire)

次に、興味を持った人には、「欲しい」と思わせる必要がります。それがこの工程です。パンの試食コーナーでも設置して実際に食べてもらいます。そうするとパンが本当に美味しければ、買ってくれますよね?

- M(memory)

次に、お客さんには商品を記憶してもらう必要があります。試食しても、次の日には忘れてしまわれては困りますよね。お客さんは、自分の頭にないものを買いません。そしてやっと、とある日に「あそこのパン屋さんに行きたい」と思いパンを購入するのです。今回、ここは味のいいパン屋だということにしましょう。

- A(action)

購入フェーズ。つまり、お客さんがパンを買ってくれる。

以上がフレームワークというものです。マーケティング初心者の私でも簡単にパン屋さん販売マーケティングの思考を再現することができました。きっとこの文章を読んでいるあなたもできます。簡単ですよね?便利ですよね?

エンジニアにおけるフレームワークとは?

フレームワークとは、パン屋さんの例のように何かをする際にだれがやっても同じようにうまくいくものを言います。さて、前置きがかなり長くなりましたが、エンジニアの話をしましょう。あなたがプログラムを組んで作りたいものは何ですか?

はい。(私はあなたの心が読めるので答えがわかります)

あなたは今、Webサービスorスマホアプリを思い浮かべたのではないでしょうか?というよりこれ以外の答えって逆にあります?(日本のWifi環境を整備したいとかだったらすみません)

つまり、何が言いたいかというと世の中のサービスの大半はウェブアプリかスマホアプリだと言うことです。ならば誰でも簡単にウェブアプリが作れるようなフレームワークを作ろう!という動きが始まり、できたものがこちらになります。

・Ruby on rails (Ruby)
・Laravel(PHP)
・CakePHP(PHP)
・Servlet/jsp(Java)
・Django(Python)
・Express(Node.js)

きっと、あなたもどれか勉強したことがあるのではないでしょうか?
エンジニアの世界でフレームワークというと多くの場合はウェブフレームワークのことを指していることが多いと思います。Railsが「ウェブ」フレームワークって知ってました??

・ウェブフレームワークとは
ウェブフレームワークとは、ウェブサイトを構築する際に必要になるものを簡単に作れるようにしてくれたものです。

例えば、会員ページを作ろうと思ったら、ログイン機能が必要ですし、楽天のようなECサイトを作ろうと思ったらデータベースとの連携も必要ですよね。さらには、プログラムの行数が10000行とかになってしまうと機能追加や保守がやりにくくなるため、MVCという形でコードを管理していくようになっています。さらにさらには、CSRFSQLインジェクションの脆弱性を持たないように、セキュリティ対策まで行ってくれるものもあります。

こんなこと知っていましたか?
なんか難しい単語が出てきましたね。

そうなんです。フレームワークへの理解が足りないままフレームワークを勉強している人があまりにも多いのです。今から自分は何を作ろうとしているのだろうか?今、自分は何を作っているのだろうか?これすらも曖昧なままただ、チュートリアルをしている人たちが多すぎると感じております。

もっともっと細かな話をしましょう。

例えばログイン認証を作るときの話をします。
多くの読者は、「ログイン」という機能を「IDとパスワードを入力すれば、それが一致してログインできるようになる」程度の理解しか持っていないでしょう。これではダメなのです。

ログイン認証する際、実はパスワードはそのままの文字ではデータベースに保存していません。万が一、パスワードを保存したデータベースが乗っ取られた場合多くの被害が出てしまいます。そのため、パスワードは「ハッシュ化」という一方向性の暗号処理というものを行います。さらには、cookieというものを使ってログイン状態を保持しているのです。あなたが普段から使っている「http://example.com」では、「HTTP通信」というものを行なっています。「HTTP自体はステートレスなプロトコルであるため、ログイン状態のようなステートフルな状態を保存するためにはcookieを用いている」というのが正確な言い方です。

今の文書を読んで多くの人は「」という状態なのではないでしょうか?

まさに、これがフレームワークのメリットでもあり、デメリットでもあるのです。メリットとしては、まさに今フレームワークを学んでいるほとんどの人のように今のような難解な仕組みを知らなくてもなんとなくウェブサイトが作れてしまうことです。一方、デメリットはまさに今のみなさんのように何も知らないまま過ごしてしまうことなのです。これが危険なのですよ!!

フレームワークを使っている人の多くは、その利便性すら理解していません。これでは、量産型エンジニアになってしまいます。

量産型エンジニアの話はこちらの記事に書いてますので、ご覧ください。

こうなって欲しくないからこそ一流のウェブエンジニアを目指すあなたには、フレームワークだけじゃなく「ウェブが動く仕組み」を学習してほしいと思っています。ここら辺の知識は、下に貼ってある本で学習できます。ぜひ勉強して欲しいと思います。(別にここの受け売りではないです。)フレームワークばかりを勉強するのではなく、ウェブやネットワーク、コーディング設計思想のような「ITの基礎概念」を抑えて欲しいと思います。

月30万円稼ぐエンジニアを目指すのであれば、こんなことは知らなくてもいいでしょう。でも、月50,60,70万と高単価な案件を取りたいと思うなら今すぐ「ウェブが動く仕組み」を勉強してください。

以上、フレームワークばかりを勉強してはいけない理由でした!


いいなと思ったら応援しよう!