ブルームテクノロジー

テクノロジー

明日から始める!カレーで理解するフレームワークの選び方

明日から始める!カレーで理解するフレームワークの選び方

システム統括課 ブログ担当です。

突然ですが、皆様は「フレームワーク」を使っていますか?

バリバリ開発をご経験されている方でしたら、ほとんどの方は使っていらっしゃるかと存じますが、最近学習し始めた方にとってはそうではないかも知れません。

「フレームワークって、つまり何……?」

プログラミングの学習を進めていくとフレームワークという単語を耳にするかと思いますが解説だけ読んでいてもイメージがつかみにくいかと思います。

実際に使ってみるととても便利で今やプログラムの開発ではほぼ必須となっているものになりますので、本記事では、初心者の方や、プログラムを触らない方にも分かりやすくフレームワークを利用するメリットをご紹介します。

例えば、料理。
道具や食材を揃えたりそれらを加工し味を整えるということは、プログラミング……すなわちフレームワークに通ずるものがあります!

「フレームワーク道とは、カレーライスのことと見つけたり――」

そこで、普段プログラムに触れない方やフレームワークの解説記事を読んでもしっくり来なかった方にもフレームワークを理解頂くため、プログラミングを「カレーライス」の調理に例えてみることにしました。

  • カレーライスを調理(システム開発)すること
  • 調理したカレーのレシピを共有(システム保守)すること

今回は、これら2つの工程を例にフレームワークを利用するメリットを紹介していきます!

メリット① 開発時間を短縮できる

まずは、開発を行う際のメリットです。
「カレーライス」を作るとなると、ざっくりですが下記の3工程があると思います。

  • ご飯を炊く
  • 食材を切る、炒める、煮る
  • ルウと一緒に煮込む

また、これらの工程を行うには下記の調理器具が必要です。

  • ご飯を炊くための炊飯道具
  • 食材を切るための包丁
  • 炒めるためのフライパン
  • 煮るための鍋
  • コンロなど加熱器具

プログラムをまっさらな状態で作成する場合だと、これらの調理器具を準備するところからスタートします。調理器具の準備をするところから作業が始まると肝心の調理を行うまでに多くの工数が余計にかかってしまいます。

それでは、カレーライスを作る場所がキッチンであればどうでしょうか。
キッチンであれば、様々な調理器具が揃っていて、カレーライスを作るのに必要なものはあらかじめ準備されているかと思います。

また、カレーライス以外にもカレーうどんやカツカレーを作ってほしいと言われた場合に、何もない状態であれば、またはじめからうどんやカツを作るための準備をしないといけませんが、キッチンであればその必要もありませんよね。

このようにあらかじめある程度の調理(開発)に必要なツールがあらかじめ用意されている仕組みがフレームワークになります。

メリット② 読みやすいプログラムを作りやすい!

次に保守の面でのメリットになります。

プログラムは作成して終わりの場合もありますが、多くのケースではその後のメンテナンスや新機能の開発など、プログラム作成後にも必要な作業があります。また初めにプログラムを作った担当者が毎回こちらの改修に携われるとも限りません。その為プログラムを理解している人が複数人いる状態が望ましいです。

カレーライスであればレシピに対して下記のような変更が途中で発生するかと思います。

  • 野菜を切る時のサイズを変更したい
  • 辛さを変更したい
  • カツカレーを作りたい(新機能)

これらの要望があった際に、元々カレーライスのレシピを作成した人以外でもカレーライスを作れて、レシピの変更に対応できるようにできることが目標になります。

このような保守作業をしていくうえでフレームワークの良い点として、コード(レシピ)を誰が書いても同じ品質になりやすくなる、というのがあります。これは上記したように、調理道具がそろっているので簡潔に作業を記述できる点と、フレームワークの中でコード(レシピ)を書くときのルールが指定されている為です。

このルールに沿ってプログラムを作成するので、上級者でも初心者でも同じようなコード(レシピ)が出来上がるようになっています。

そのため、上級者が書いたコードを初心者が読めない、初心者が書いたコードの意図が分からない、などの引継ぎの際のネックになってしまうといったケースが発生しにくくなります。

このようにフレームワークを利用するとコードの品質が均一化されるので、読みやすいコードとなり、保守・運用がしやすい状態を維持することができます。

一方デメリットも……

ここまでフレームワークを使用するメリットを紹介しましたが、一方でフレームワークはあらゆる状況において万能な存在というわけではなく、デメリットも存在します。

代表的なものを下記に記します。

① 不必要な機能がついてしまう
作りたいものがカップラーメンなのに、キッチンが有名レストランのように広い場所だとお湯を注ぎにいくのも少し大変ですよね。ミニマムなシステムであればフレームワークではない方が良いこともあります。

② 作成するものに一定の制限がある

チャーハンを作るときに米がパラパラにならないので火力を上げたいといった場合があってもコンロの火力は上限が決まっていますよね。フレームワークは書き方の指定や使えるツールが指定されているので、ルール外のものを作成しようとする際に制限がかかってしまいます。

③ フレームワークのルールを学習しないといけない

こちらがフレームワークを使う上で一番の難関になるかと思います。プログラミング言語とは別にフレームワークの特有のルールを覚える必要があるのでシステムを作る前にフレームワークを学習するコストがかかります。

……とこのように、良いことばかりではないことをご説明致しました。

それでも私がフレームワークを推奨する理由を1つ挙げるとするならば、やはり「実業務の上ではデメリット以上にその恩恵を受けることの方が多い」からだと言えるでしょう。

どのフレームワークを使えば良いのか

「プログラム言語 フレームワーク」で検索した場合、恐らく様々なフレームワークの情報が出てきて、しかもそれぞれのフレームワークに異なる長所・短所があるのでどれを使えばいいのか特に初学者に皆様におかれましては判断に悩むことと思います。(私も初めて調査した時はそうでした……)

実際の現場でフレームワーク選定をする場合は、殆どの場合メンバーの開発力や既存の開発環境、作成する成果物の機能を踏まえながらフレームワークを選定していくことになります。個人でとりあえずフレームワークに慣れてみたい、という方であれば下記の選び方をご参考ください。

① 学習コストが低いもの

まず挫折しないために学習コストが低い=フレームワークの規約が緩いものから学習してフレームワークに慣れることをお勧めします。

昨今のフレームワークはそれぞれに特徴があるものの基本的な構造は同じなのでまずは触って慣れることをお勧めします。※筆者も一番最初に触ったフレームワークは規約が緩いとされているものでした。

② 技術系のサイトで投稿記事(ナレッジ)が多いもの

こちらも選ぶうえで参考になる項目かと思います。学習を進めていくうえでどうしてもわからないことや場合によってはバグに遭遇することもあると思います。

その際に役に立つのが技術系のサイトになります。単純に記事が多ければよいというものではありませんが、数が多ければその分解決する確率は上がります。

③ 現在流行しているもの(トレンドのフレームワーク)

フレームワークにも流行り廃りがあるので昔はよく使われていたが、最近の開発ではあまり使われていないフレームワークというものも存在します。そのため使用するプログラミング言語の現在の主流のフレームワークを選ぶというのも一つの手です。

なおブルームテクノロジーではPHPでの開発時にLaravelというフレームワークを利用しています。

Laravelはここ数年間PHPでの主流フレームワークとなっておりPHPのフレームワークといえばLaravelといっても過言ではないフレームワークになります。上記でも悩む場合はとりあえず触ってみるのが習熟の近道だと思います。是非Laravelの導入をご検討ください。

まとめ

今回はWEBフレームワークについてご紹介しました。

フレームワークを利用すると「開発工数を短縮できる」「読みやすいプログラムを作りやすい」というメリットがあり、開発・保守どちらに対しても恩恵を得ることができます。
様々な種類のフレームワークがありますが、個人で初めて触る場合は「学習コスト」「ナレッジの量」「流行」などを意識して探してみることをお勧めします。

フレームワークとは何かを他の記事とは違った視点で説明してみましたので、こちらの記事が少しでも参考になれば良いなと思います。

是非、フレームワークを使ってみてください!