20代のまだまだITを分かったようなわからないようなペーペー文系SEだったころの話です。これまで自社でばかり仕事をしており、さてそろそろ外に出て客先で働いてみようかしらということになりました。
その客先になるであろう場所に行き面談をすることになったのですが、そこで事件が発生します。
相手「これまでどんなフレームワークを使って開発されてきましたか?」
私「ふ・・・フレームワークですか…(え?なにそれ)」
相手「・・・。」
私「・・・。」
同席していた先輩「あ、私がお答えします。あーだこーだうんぬんかんぬん(焦った口調)」
先輩すみません。。。単語がわからず面談で事故ってしまいました。
とはいえ、こんなこともありました。パッケージシステムのカスタマイズの仕事をしていた時、パッケージシステムメーカーが独自のフレームワークを用意してくれていました。私のような開発者はそれを使っていたのです。その仕事が終わった後に次の仕事の面談をした際のことです。
私「○○というパッケージシステム独自の△△というフレームワークを使用しておりました。」
相手「ほ…ほぉ。。。△△ですか。(なんだそれ)」
私「・・・。」
相手「・・・。」
どうしろってんだ。
IT用語としてのフレームワーク
話がそれてしまいましたので本題に戻ります。フレームワークという言葉を知らない男は面談で恥をかいてしまったわけですが、そのフレームワークとは何かを書き記していきます。
面談では客先で使用しているフレームワークの経験者であれば即戦力と認められて仕事が決まりやすくなります。自分がどのフレームワークの経験をしたか把握しておきましょう。
フレームワークとは「システムやプログラミングのひな形・モデル」です。
私はほぼJavaしかやっていないのでJavaの話になってしまうのですが、もしもJavaの入門書を買って勉強したとしても、それをすぐ仕事に活かせるかと言ったらそうではない場合もあります。
まず開発環境の中にフレームワークを入れないといけないからです。「hello world」を出すくらいであれば大した準備は必要ありませんが、例えば基幹システムとかスマホアプリを作るとなると開発環境が必要です。
フレームワークのメリット
ではなぜ開発環境にフレームワークを入れるのかというと、そうするとこのプロジェクトで必要な機能の実現のみに注力できるからです。その理由は、フレームワークというひな形があれば必要な機能の実現以外に余計なことを考えたり手を焼いたりする必要がないのです。
それは何かというと、DBへのアクセス方法、MVCの機能、必要な設定ファイルの作成と読み込みといったどのアプリケーションでも共通して必要なものです。それらを自分の手で1から準備する必要がなく、フレームワークを使ってしまえば準備されたものをそのまま使えるのです。
フレームワークのデメリット
ただし、準備してくれているということはそれなりにルールがあって縛りがあります。1から自分で作れば自由度は無限大にありますが、自分ではない人が作って他人も使用するフレームワークは自由度があまりありません。
どこまで自由度のなさを許容できるかは作りたい機能と作り方によるかと思います。ただメジャーになっているフレームワークはそれなりに汎用性が高いからメジャーになっているんだと思いますから、そこまで気にすることはないかなと思います。
いろいろあるフレームワーク
フレームワークは一つではありません。様々なものがあります。
たとえばまたJavaで書いてしまいますが、SpringFramework、Apache Wicket、Play Frameworkといったものがあります。
冒頭で書いたようなパッケージシステム独自のフレームワークだってあります。ひな形なのですから、それなりに大規模なシステムであれば独自仕様のフレームワークを作ってしまうことだってあるんです。
まとめ
- フレームワークとは「システムやプログラミングのひな形・モデル」
- フレームワークを使用するとプログラミングの煩わしい下準備がほぼ必要なくなる
- フレームワークを使用するとなると自由度は減る
- フレームワークには様々なものがある