スタイル・エッジLABO技術ブログ

士業集客支援/コンサルティングのスタイル・エッジグループ スタイル・エッジLABOのエンジニアによるブログです。

フレームワークについて

はじめに

はじめまして!スタイル・エッジLABOのYHです。
今年の4月に新卒として入社し、早いもので半年が過ぎました。
時間の流れの速さに震える日々を過ごしております…。

私は6月にプロジェクトに配属されてから現在まで、所謂「開発系」の業務に携わってきました。
LABOではPHPフレームワークを利用した開発を行っており、
9月まで配属されていたプロジェクト内ではFuelPHPを利用していました。
はじめこそ四苦八苦していたフレームワークを用いたコーディングも少しずつ慣れてきて、
FuelPHPと仲良くなれたかも!😊」と思っていた矢先、
10月から新たにジョインしたプロジェクトではLaravelの利用がスタート…!
まだまだ戦っている最中ではありますが、FuelPHPとLaravelの違いについて少しまとめてみました。

エンジニア歴半年ではありますが、初心者だからこそ気づいた違いもある(はず!)ということで、
温かい目でお読みください🙋‍♀️
f:id:styleedge_tech:20211118085117p:plain

0.フレームワークとは

違いを列挙する前に、そもそもフレームワークとは何かということについて整理してみます。
Wikipediaにはフレームワークについて以下の記載がありました。

ソフトウェアフレームワーク(英: software framework)とは、プログラミングにおいて、アプリケーションソフトウェア等の実装に必要となる一般的な機能や定型コードを、ライブラリとしてあらかじめ用意したものである。

(https://ja.wikipedia.org/wiki/%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2%E3%83%95%E3%83%AC%E3%83%BC%E3%83%A0%E3%83%AF%E3%83%BC%E3%82%AF)

プログラミングにおける土台・雛形を用意してくれているのがフレームワークであり、
開発に必要な機能があらかじめ実装されているため工数を減らせるという利点があります。
フレームワークも各言語によって様々な種類があり、どのフレームワークにも得意・不得意な点があります。
何を実装したいか、どのように開発していきたいかによって選定する必要があり、
FuelPHPとLaravelはPHP言語のフレームワークの一種、ということになります。

実装するにあたってフレームワーク
「これがないとプログラミングは不可能!」 というものではありません。
フレームワークがなくてもプログラム自体は書くことはできますし、
独自機能による制限がない分、自由度は高くなると思います。
しかし、個人開発ではなくチームで開発するとなると、
各人が好きなように設計しコーディングしたものを製品として運用するのは
セキュリティ的にも脆弱性が高くなり、なにより保守できなくなってしまいます。
そこでフレームワークを用いて、同じ土台である程度の規約や設定に則ることで、
個々の経験やスキルの差をある程度吸収しつつ、一定の品質のプロダクト開発を実現するというのが
チーム開発においてフレームワークを導入する利点だと思います。

1.学習コスト

FuelPHPでコーディングをしているとき、一番困ったのが
「探しても知見が出てこない(探すのが困難)」ということでした。
調べが甘いのかな?と思い、検索ワードをあれやこれや変えてみても解決方法が見当たらず、
最終的には全然違うフレームワークでのコーディング方法が出てきて行き詰まることもしばしば😥
プロジェクト内外の先輩方にかなり助けてもらっていなんとか解決してきたのですが
コーディング初心者からすると情報がないという状況はかなり辛かったです…。
その点Laravelは公式ドキュメントが充実しており、非公式ですが日本語にも翻訳されています。
ユーザの個々の知見に頼らずとも公式ドキュメントに利用方法や解決策が詳細に記載されているので、
かなり助かっています。
また具体的な実装方法や、エラーの際の詳細な解決方法などといった
公式ドキュメントでカバーしきれない部分はユーザが投稿した情報をネットで多く手に入れることができます。
以上を踏まえて、Laravelの方がFuelPHPよりも学習コストが低く、
プログラミング初心者でも挑戦しやすいと感じました。
f:id:styleedge_tech:20211118085332p:plain

2.コーディングの柔軟性・拡張性

FuelPHPは「規約より設定」を重視して作られていることからも、かなり柔軟性の高いフレームワークです。
またcoreの拡張が容易だったりコーディング規約も比較的緩いことから、
ある程度は自由にコーディングすることができます。
(入社して少し経ったころ、先輩社員から
FuelPHPは生のPHPを書いている感覚と似ている」と教えていただきました。
当時は「そうですかね…?🤔」くらいの感想だったのですが、確かにLaravelと比較すると、
「独自の機能を持った生のPHP」という扱いができると思います。)

一方Laravelは、独自のメソッドが充実しており、開発時においてはそれらを活用することで
自前開発をする必要性を抑えることが出来ます。
フルスタックフレームワークとしての完成度が高いため、
初心者にとっては始めやすく、上級者にとっても開発時の煩雑さを減らせるので、
バランスの良いフレームワークなのではないかな?と思います。

3.フレームワーク独自機能の量

FuelPHPではフレームワークとしての機能にないため、自前で実装を行うことも時々あったのですが、
実装に時間がかかってしまう場面が多々あり、プログラミング初心者の私は
かなり悪戦苦闘しながら開発を進めていました。
(そのたびに先輩方に助けていただきました…!😳
この「自分の技術を互いに共有し合う」文化は、私がLABOで一番好きな特徴です✨)
その点、Laravelでは機能が充実しているため、実装自体がとても簡単です。

最近感動したのがページネーションの実装です。
ページネーション自体は、かみ砕くとそこまで難しいことはやっていない…ようなのですが、
データを分割したり、2ページ目に表示させるデータが何番目のデータになるのかだったり、
これは工数的にどのくらいかかるんだ…??と冷や汗をかいていました。
しかし、Laravelの優秀な機能のひとつにページネーション作成機能があるため、
ほとんどデータを操作することなく、ほんの少しの時間で実装が完了しました。
これは感動モノだったのですが、裏を返せば
「どのような処理が走っているかはわからないけれど、なんか動いた」 という状態であり、
私のような初心者プログラマが訳も分からずフレームワークの機能で実装していると、
バグが発生したときに対処できない可能性も出てきています。
実装に省略できた時間を処理内容を理解する時間に充てるなどして、
機能に頼りすぎないことも大切かな、と感じました。
f:id:styleedge_tech:20211118091338p:plain

最後に

FuelPHPとLaravelの違いについてまとめてみましたが、いかがだったでしょうか?
今回紹介した内容と私の観点を含めて、FuelPHPとLaravelについて以下の表にまとめてみました。 f:id:styleedge_tech:20211124140518p:plain
なんだかこう見ると「Laravel圧勝!?」という感じなのですが、
プログラミング学習という点においてLaravelは
メソッドが豊富な分処理の内容がブラックボックスになりがちという特徴があると思います。
私のようなプログラミング初心者の場合は、メソッドの内容をよく理解したうえで使用していくのが
今後の知見を増やすという意味でも大切だと感じました。

フレームワークを利用すると素早く簡潔に実装できるという利点があります。
また初心者でもコーディングしやすく、理解もしやすいため、技術力の向上も早くなると思います。

弊社ではプログラミング未経験でも、かなり本格的に実装を経験することができ、
また学びあう風土があるため、エンジニアとしてどんどん成長することできる環境です!

☆スタイル・エッジLABOでは、一緒に働く仲間を募集しています☆
もし興味を持っていただけましたら、採用サイト↓も覗いてみてください!
recruit.styleedge-labo.co.jp