絶望プログラマー(フレームワークによってプログラマーは失業する)
こんにちは。
今日noteの過去記事を見返していたら、誤字を見つけてしまいました。しかもよく使う漢字でした。
久しぶりに叫んでしまいました。
「俺はバカだー」
穴があったら入りたい気分です。
絶望です。
フレームワークとは?
さて、今日はIT業界の代名詞であるフレームワークについて語りたいと思います。もはや説明は不要でしょう。
要は完成間近のジグソーパズルですよ。
もうあと10箇所埋めれば完成で、10ピース分の穴が空いている状態。
ジグソーパズルを一から始めると大変ですよね。1000ピースもあればその中からまずは四つ角、次に枠となるピースを探すことから始まります。
それが、990ピースはまっている状態から始めたらどうですかね?
簡単ですよね。
この990ピースの状態がフレームワークです。
簡単だから誰でもできる。誰でもできるということは参入障壁が低い。
このフレームワークというものがWeb開発の現場でガンガン使われており、経験が浅いプログラマーでもフレームワークがあればWeb開発ができるようになったのが今の世の中です。
これが20年前だとフレームワークなんてものはなくて、プログラマーはみんなスタート地点が一緒。一からパズルをはじめてまずは四つ角のピースを探すといった感じで、最初は基礎を学び、ピースを少しずつはめていくように経験を積んでいったわけです。
ところがフレームワークの台頭により、基礎が分かっていなくてもプログラムが組めるようになりました。Web開発ができちゃうんです。
恐いですね~
テクノロジーの進化とはこういうものです。
フレームワークっていつ頃から出てきたんでしょうか。
たしか2005年頃にRuby on Railsが流行り出して、そのあたりからフレームワークが業界内で一気に広がったような・・。
それまではソフトウェア開発ってのはプログラマーのスキルレベルに依存していたんですけど、フレームワークが出てきてから開発スタイルがガラリと変わりました。
このフレームワークの台頭によりIT業界に様々なメリットとデメリットがもたらされました。
フレームワークがもたらしたメリット
メリットはソフトウェア開発の問題が解決したこと。
フレームワークによってソースコードの書き方がルール化されて、ソースが読みやすくなりましたね。これによってメンテナンス性が高くなり、品質が向上しました。
さらにフレームワークが開発するための基盤部分(完成間近のパズル)を用意してくれるので、開発時間を短縮できるようになりました。
あーそうそう、フレームワークの考え方は自動車業界がとっくに取り込んでいます。
スキルがバラバラのエンジニア(人間)が作れば品質が安定せずに落ちてしまいますが、これを常に一定のスペックが出るロボットでやれば生産性と品質が一気に上がります。
自動車工場がまさにそれで生産台数の増加や効率化のために、あらゆる工程で産業用ロボットが使用されています。
トヨタのTNGAなんてのもフレームワークでして、完全に自社オリジナルで共通の設計思想をベースに様々なタイプの車が生み出されています。プリウスとヴォクシーのフレームワークは同じですからね。
GAFAMやYahoo、トヨタなどのビックカンパニーになると当たり前のようにフレームワークを自社開発しています。ゲーム業界も昔からそうですね。
独自技術を持っている企業は自社で使うシステムを開発する際にオリジナルのフレームワークを作り、その上で開発作業を行ったりします。
そうすることで効率的だし、肝心な部分をフレームワークでブラックボックス化することにより他社に真似され難くなります。
フレームワークがもたらしたデメリット
一方デメリットなんですけど、これが今日の本題であります。
突如として現れたフレームワークにより、確かにシステム開発は効率化されてより短い時間で高品質、高機能のシステムが作られるようになりました。これはIT業界にとって大きなターニングポイントでした。
特にWeb開発でのフレームワーク人気は凄まじく、いつからかプログラミング言語を学ぶというよりもフレームワークを学ぶみたいな感じになってしまいました。
この流れによりプログラミングの学習方法に大きな混乱が生まれました。特に新人教育が難しくなりました。昔は構造化言語であればC、オブジェクト指向であればJavaとシンプルだったのに、フレームワークの台頭でややこしくなったのです。
例えばLaravelです。Laravelは流行りのフレームワークですが、Laravelで使われている言語はPHPです。
PHPがまず最初にあって、PHPでの開発を効率化するためにLaravelが生まれたわけです。
これを新人は入社早々「Laravelを覚えたい」と言ったりします。
違うんです。まずPHPを覚えるんです。PHPが先なんです。
これってけっこうおかしな話でして、例えば英語しか通じないアメリカの企業に入りたかったら英語を覚えますよね。それを英語がまったく話せない状態でアメリカの企業に入ろうとしているのと同じです。めちゃくちゃ非効率です。
なので対策として、うちの新人教育では最初にフレームワークをキャンセルします。
具体的にはフレームワークを使わない素のPHPで簡単なWebシステムを開発して、そのあと今度はフレームワークを使って同じシステムを開発します。そして双方のソースコード、作り方を分析してもらい、違いを学んでもらうのです。
その上で新人にフレームワークのメリデメについてレクチャーを行いその感想を聞くのですが、だいたい二通りの反応が返ってきます。
ひとつは肯定的な意見で「フレームワークを覚えれば良いんですね」という反応で、殆どがこっちです。
それに対してもうひとつの反応は鋭いです。過去にこの反応を示した新人が今5年生なのですが、明らかに大きな成長が見られ同期との差が出ています。
どんな反応をしたと思いますか?
「それは恐いです。まるで人間がフレームワークの奴隷じゃないですか」
「第一、フレームワークの中で何が起きているか分からないですよね? フレームワークそのものにバグがあったら誰が直すんですか?」
「そんなの嫌です。自分で一から作りたいです。フレームワークって気持ち悪いです。自分で制御したいです。フレームワークそのものを作りたいです」
正直、この反応には驚きました。
そしてこの子が言った「フレームワークにバグがあったら」が実際に起きているのです。「struts バグ」でググると出てきます。
さらにこの子はこう付け加えてきました。
「プログラマーのスペックを一定にするということは、プログラマーの突出したスキルを潰してしまうことになるんじゃないですか?」
いやぁ、震えましたね。
まさにその通りで、上級プログラマーやフルスタックエンジニアと言われる人たちが持っているマインドを新人の時点で既に持っていたのです。
フレームワークがもたらした悪
フレームワークにより経験の浅いプログラマーでも高度なシステム開発ができるようになりました。
それはプログラマーの力量に左右されないシステム開発が主流となったことを意味しています。この点だけを見ると、
「おー良かったじゃん、テクノロジーの進化ってすげーじゃん」
となりがちですが、よーく考えてみると・・、
これってフレームワークの上でプログラマーが踊らされているだけじゃないですか?
そもそもフレームワークってどこから出てきたんですかね?
世界のどこかにいる誰かが作ったんですよね。
その誰かってプログラマーじゃないんですか?
はい、
ここが今日の話のポイントでございます。
世界のどこかにいる誰かによって生み出されたフレームワークというのは、いわば唯一無二の存在なわけで、それを作ったプログラマーも唯一無二の存在です。
それに対して、フレームワーク上でそのフレームワークのルールに則ってプログラムを組んでいるプログラマーは何者なんでしょうか?
悪い言い方をすれば、誰でもできる、
つまり代えのきく存在です。
もっと言うと、
いずれその部分ってロボットでもできるようになるんじゃ?
そう、
プログラミングの自動化は、できます。現に実用化されつつあります。
フレームワーク上でコードを書くプログラマー。
フレームワークそのものを作るプログラマー。
一言でプログラマーといっても様々です。
この2つのタイプのプログラマーの間には物凄いスキル差が存在します。
常日頃、私は若手にこう言っています。
「量産型ロボットになるな!フレームワークを作る側になれ」
ザクではダメなんですよ、ガンダムにならないと。
今日はこの辺で。
この記事が参加している募集
この記事が気に入ったらサポートをしてみませんか?