80 TECH CAFE初開催! Laravelでの開発の知見やイベントの様子をサマリーで紹介します
はじめに
2023年4月9日(日)、TECH STUDIO KYOTOで「80 TECH CAFE : Laravel LT会 Vol.1」を開催しました。当日はオンライン配信と京都および近郊にお住まいの方々がスタジオに足を運び、ご参加いただきました。このレポートでは、それぞれのLTで発表されたサービス開発の裏側やイベントの様子を紹介いたします。
Laravelを用いたSaaSプロダクト開発
80&Companyで開発責任者をしているCo-CTOの多田がLaravelを用いたSaaSプロダクト開発について発表したものです。
SaaSプロダクト開発においては、仕組みが複雑なためリリースまでに開発コストがかかる、カスタマイズの自由度が低いなどといったデメリットが存在します。これらのデメリット打開策としてSaaSをパッケージ化するという方法があります。80&Companyの自社SaaSプロダクトであるQRGOでも設計ノウハウを活かして、自社およびクライアントのアイディアをカタチにしスピーディーにSaaS化することを目指しています。共通設計を行うことによって、コストの削減や品質の向上の両立を目指しています。
また、SaaSプロダクトにて想定している技術概要につきまして、権限/パーミッションに関してはlaratrustのパッケージを利用します。その上でcomposerにて提供するlaravel用にラップしたライブラリを開発します。
ComposerパッケージとしてのSaaSプロダクト開発はSOLID原則の適用、コードの再利用とモジュール化、依存性注入、イベント駆動アーキテクチャなど拡張性を持たせた設計としての意義があります。設計原則と実践的なアプローチを適切に組み合わせることで、拡張性を持たせたアプリケーションを開発することができます。ただ、すべてを実現するとコストも増大するためバランスが大事です。パッケージに含める要素として、他には管理者やユーザー管理などの共通UIを実装します。
ここまでで説明したComposerパッケージの開発は、効率的でメンテナンスしやすいアプリケーション開発に貢献します。80&Companyでは、上記のような効率が良く、メンテナンスのしやすい開発に向けて、社内プロジェクトでも活発に活動と共有を進めています。
多田 雄策/株式会社80&Company
株式会社80&Companyの開発責任者をしている多田です! もともとゲームや機械に触ることが好きで、趣味が講じてファイナルファンタジーXIVのデータベースサイト「エリオネス」を開設し、月間500万PVまで成長させました。 フルスタックにてプロトタイピングを得意とし、PHPが好きで基本laravelを用いています。 自ら作った運営していたサービスのM&Aなども多数行っており、0→10あたりまでが得意です。
Laravelを用いた単一責務なコード設計
80&Companyでバックエンドエンジニアをしている長井がLaravelを用いた単一責務なコード設計について発表したものです。
最初にLaravelの基本についておさらいしました。ChatGPTにLaravelの概要について聞くと、LaravelはPHP言語で書かれたオープンソースのWebアプリケーションフレームワークであり、MVCアーキテクチャ(ルーティング、ビュー、モデル、コントローラー)に基づいていること、また、データベースマイグレーションや認証、セッション管理など様々な機能が含まれていることを説明しました。
Laravelを用いたプロジェクトで起こりやすい問題点として、Controller内のコードの肥大化を挙げました。このコードの肥大化により起こる事象としては、Controllerに複数のロジックが記載され可読性が下がってしまうこと、 属人的になる恐れがあることが挙げられます。これらの問題点を改善する方法として、 Controllerに記述していたビジネス処理をService層に移動する方法を取りました。そのような方法を取った事によって、Controller内のコードは綺麗になり、また依存注入(DI)することで依存関係を変更することが安易、可読性が向上しました。
その後、また起きた問題点としては、今度はService層でコードの肥大化が起こってしました。このコードの肥大化により起こる事象としては、Service層にDBとのやり取りを記載しすぎてしまう事などにより、可読性が下がることが挙げられます。これらの問題点を改善する方法として、 Service層に記述していたビジネス処理(特にDBとのやりとり)をRepository層に移動する方法を取りました。
上記までで体験した問題点と改善に対する、総合的な対策として単一責務を意識すること・テストコードが書きやすくなることが挙げられます。プロジェクトで単一責務でないコードが多々あると、予期せぬバグが起こり保守性が低くなりやすい状況になります。また可読性が落ちるため、メンテナンスにも時間がかかってしまいます。単一責務を意識することによって単体テストが書きやすくなり、テストコードの修正量が減少し、可読性も向上します。
みなさんもLaravelを用いた開発を行う際は、単一責務なコード設計をぜひ振り返ってみてください。
長井 亮成/株式会社80&Company
2021年10月に学生インターンとして80&Companyに参画し、2022年4月に新卒として入社。 主に、「EC-Subscrum」のプロジェクトでは設計から保守運用まで携わり、実装ではフロントからバックエンドまで担当しています。最近はインフラ周りとSQLの勉強をしております。趣味は音楽フェスとドラクエウォーク。
懇親会
懇親会では、LT発表の質疑応答や現地参加されたエンジニア同士の交流会が行われました。お酒やジュース、ピザやフライドポテトを食べてオフライン参加者同士で仲を深めました。
情報拡散にご協力いただいた団体のご紹介
この度、イベント開催にあたりSNS等での情報拡散にご協力いただいたハックバーさんをご紹介させていただきます。ハックバーさんは兵庫県神戸市中央区に位置し、エンジニアが集まるバーです。プログラミング言語を模様したカクテルやAtCoderContestが催されています。今回は情報拡散にご協力いただき、ありがとうございました。
最後に
今回は開発チームで初開催の自社イベントでした。80&Company開発チームでは、今後も保有している技術ナレッジをこのような社外向け技術イベントを通して、社外に共有・発信していく予定です。
また、80&Company開発チームではデザインとビジネスの力でエンジニアリングの力を最大限に活かすことに共感し、共に働いてくれるエンジニアを募集中です。少しでも気になった方はお気軽にお問い合わせください!
この記事が気に入ったらサポートをしてみませんか?