ららびゅう座談会に参加してなぜ Laravel を使うのか考えてみた（Photocreate Advent Calendar 8日目 ）

エンジニア(業務委託) の @junkitamura です。

この記事は [Photocreate Advent Calendar 2018](https://qiita.com/advent-calendar/2018/photocreate) の 8日目 の記事です。


## はじめに

　2018年11月28日、`フォトクリエイト`さんにて開催された`ららびゅう座談会`に参加させていただきました。

　`Laravel` と `Vue.js` を合わせて`Laravel と Vue.js に関する座談会`でしたが、本投稿は `Laravel` にフォーカスしています。といっても技術的な話はありません。

　座談会の内容は `@imunew` さんによる [Photocreate Advent Calendar 2018](https://qiita.com/advent-calendar/2018/photocreate) の [5日目の記事](https://qiita.com/imunew/items/e3bd371fa4cd38b9e374)にあるスライド等をご覧ください。

　自己紹介させていただきます。
　業務委託のサーバーサイドエンジニアとして1年半ほど`フォトクリエイト`さんのお手伝いをさせていただいております。
　フリーランスとしては高齢で、以前は主にWebシステムの受託開発などをしておりました。言語としては VisualBasic や C、Java、PHP といったものを扱ってきました。
　初めて(おれおれで無い)フレームワークと呼ばれるものを使ってシステム開発をした時のフレームワークが `Laravel 5.2` でした。開発途中で `5.3` にバージョンが上がり大きく変わったので慌てた記憶があります。`フォトクリエイト`さんに来てから`チームによる開発`を初めて経験し、それまではバックアップ目的でしか使っていなかった Git などの`プルリク`なんかも初体験でした。フレームワークは`Symfony2.8`を主に扱っておりました。今は `Go言語`でプログラムを書く事が多いのですが、これはまた別のお話。

　`ららびゅう座談会`で私が最も知りたかった疑問は **`なぜ Laravel を使うのですか？`** でした。

## フォトクリエイトさんの場合

　`フォトクリエイト`さんでは現在、`おれおれフレームワークちっくなナニカ`(便宜上 `レガシーコード群` と呼びます)と `Symfony(2.8系)` が主に使われています。そして今後は `レガシーコード群` を `Laravel+Vue.js` に置き換えていきます。既に決定事項で移行作業も開始されており、開発が終了して運営されている案件もあります。
　`フォトクリエイト`さんで`Laravel + Vue.js`を使う理由は既に `@imunew` さんにより社内向け Qiita にて発表されています。もちろん、`Symfony4系` や他のフレームワークも候補にあがっており、それらの特性や特徴を挙げた上で `Laravel + Vue.js` が選ばれています。
当該記事の Laravel パートを引用させていただきます。  

> ### Laravel
> 個人的には、Laravelを採用したいと考えています。
> #### 採用してもいいと思う理由
> - Webアプリケーションに必要な機能が最初から揃っている印象
> - かゆいところに手がとどく標準ライブラリ
> - いい意味でゆるふわ
> - 使っているデベロッパーが多い（国内的にも世界的にも）
> - vue.jsが標準でバンドルされている（Laravel-mix）
> 
> #### 採用しないほうがいいと思う理由
> - Facadeいろいろ良くない（コードの境界が曖昧になりがち、実際にはstaticではなくてインスタンスを生成してしまう）
> - 悪い意味で重厚

　この内容は座談会でトークしていただいた方々の理由と似ています。(Facade の賛否にはあえて触れない)

## 座談会参加者さんの場合

　こういったイベントの醍醐味は休憩や歓談タイムに識者に直接質問ができ話が聞ける事だと思っています。
　歓談タイムで登壇者さんの方々含め他の方にも `Laravel を選ぶ理由は何ですか？` 的な話を伺うことができました。
　強く感じたのは、`Laravel が好きなんだなぁ`ということ。
　会場にいた方々は経験も豊富で、今まで触れてきた言語やフレームワークと比べて`Laravel + Vue.js`と**相性が良い**と感じたのだと思います。
　設計のなんたるかを(ある程度でも)理解していて、この案件にはあっちのフレームワークが合っていると解っていつつ、あえて`Laravel + Vue.js`を使う。もちろん、無理矢理に強引に、という話では無く`Laravel`の特性を生かしながら。…そんな印象を受けました。

## Laravel + Vue.js を覚えようか、使おうか…

　エンジニアさんのなかには`パソコン`や`OS`、`プログラム言語`、`エディタ`といった仕事道具に対して愛着を持っており、時に異常とも思える信念にもとづいて自分の使っている道具の優位性を叫ぶ方もいます。PHP言語による`フレームワーク`に関しても例外ではなく、○○が良いだの悪いだの、使い易いだの難いだの、速いだの遅いだのと議論されているのを(ネット上では特に)良く見かけます。
　フレームワークの思想に対する好き嫌いはあると思いますが、**優劣はない**と思います。

　どんなシステム開発においても大切なのはバランスです。陰陽、プラスマイナス、善悪、作用反作用、メリットデメリット、といった2つの相反する要素を内包せざるを得ず、どちらか片方だけを得るという事はほぼできません。
　自由度が高い代わりに秩序を保てなかったり、開発速度が速い代わりに実行速度は遅かったり、様々なシーンで何を取って何を捨てるか、バランスを見ながら選んでいかなくてはなりません。

　プログラム言語やフレームワークは学習コストがそれなりに必要です。将来的に、自分が選択したものが否定され、費やしてきた時間も含めアイデンティティを失ってしまう、そんな不安はありませんか？
　Laravel は多くの人が使っているという点では**無難な**フレームワークだといえます。

　また、利用者が多いのでネット上での情報には事欠きません。サンプルとなるソースコードも必然的に多くなるため、よく解っていなくてもそれをコピペしてパラメータを変えたら希望通りに動いてくれた、なんて事もあると思います。

　こんな(Web)サービスがあるといいな、というアイデアを持っていて、**設計だのは良く解らない**けれど、今すぐにでも何かプログラムを書いて**動いているところが見たい**。というケースにも Laravel は対応しやすいです(もちろん、Laravel に限りませんが)。

## まとめ

**`なぜ Laravel を使うのですか？`**

- `数(利用者数)によるパワー`の恩恵を受けられる
- コマンド一つである程度の枠が出来上がるので`始めやすい`
- `始めやすい`はつまり、`捨てやすい`
- 始めてみて**コレ好きだなぁ**と感じたら`続ければ良い`

## 明日は

明日の記事は `@Takuya-Yamaguchi` さんの [50インチモニターにGoogle Dara Studioでダッシュボードを出してみた](https://qiita.com/Takuya-Yamaguchi/items/978a48bcaf46736dc8ad) です。

***

フォトクリエイトでは `Laravel + Vue.js (Nuxt) に愛着を感じる`、`興味があってやってみたい`という意欲のある方からの [ご応募をお待ちしております](https://recruit.photocreate.co.jp/entry/?utm_source=qiita&utm_medium=advc2018&utm_campaign=a0cbf229b3af3b58d4fa)。