ららびゅう座談会を開催してみて （Photocreate Advent Calendar 16日目 ）

## はじめに
`フォトクリエイト`さんでチーフエンジニアをしている @imunew です。
この記事は [Photocreate Advent Calendar 2018](https://qiita.com/advent-calendar/2018/photocreate) の 16日目 の記事です。

`Photocreate Advent Calendar 2018`には他にも記事を書いていますので、読んでいただけますと幸いです。

- [リモートワークの業務委託だけどチーフエンジニアになりましたという話（Photocreate Advent Calendar 1日目 ）](https://qiita.com/imunew/items/257c943cb92661629b96)
- [ららびゅう座談会を開催しました （Photocreate Advent Calendar 5日目 ）](https://qiita.com/imunew/items/e3bd371fa4cd38b9e374)

本記事では、先日`フォトクリエイト`さんで開催した`ららびゅう座談会`のトークと座談会の内容の中から印象に残ったところ注目したところなどをピックアップしていきます。

## `SCOUTERとLaravue` `@kotamat`
`SCOUTER`社 CTO `@kotamat`こと`松本 宏太`さんのトークからピックアップしていきます。
スライドは[こちら](https://slides.com/kotamatsumoto/scouter-laravue)です。

### `Nuxt`を`SPA`モードで使う
`Nuxt`には`SPA（Single Page Application）`モードと`Universal`モードがあり、`Universal`モードには、[Vue Server Renderer](https://ssr.vuejs.org/ja/)による`SSR（Server Side Rendering）`機能がありますが、`SPA`モードにはありません。

`@kotamat`さんのトークによると、`SCOUTER`さんではどうやら可用性重視ということで、`SPA`モードを選択しているようです。

![SCOUTERとLaravue_3_1.png](https://qiita-image-store.s3.amazonaws.com/0/26422/7491fa12-bf24-9c7e-9610-5023aa3cb0fa.png)

その理由については、`@kotamat`さんの『[で、NuxtのSSRっていつ使うの？](https://slides.com/kotamatsumoto/nuxt-ssr#/)』あたりがヒントになりそうです。

![SCOUTERとLaravue_SSRしない.png](https://qiita-image-store.s3.amazonaws.com/0/26422/53c0e08f-6fa9-fbc9-2418-7142290f4055.png)

`Vue SSR ガイド`の「[どうして SSR なのか?](https://ssr.vuejs.org/ja/#%E3%81%A9%E3%81%86%E3%81%97%E3%81%A6-ssr-%E3%81%AA%E3%81%AE%E3%81%8B)」も参考にして、私なりに`SSR`のメリット・デメリット（≒ `SPA`モードを採用する理由）をまとめると以下のようになります。

#### `SSR`のメリット
- `SEO`の向上
- ネット環境が遅い、端末のパフォーマンスが低い場合にページの表示が（`SPA`と比較して）速くなる

#### `SSR`のデメリット
- 開発上の制約を受ける（ブラウザ固有のコードは動かない、`SSR`用の実装が必要になる、など）
- 環境構築、運用（死活監視など含む）が複雑になる
- サーバーの負荷（CPUなど）が増える

### `Laravel`は最後のフルスタックフレームワーク
`Laravue`の今後という部分で、`Laravel`を`最後のフルスタックフレームワーク`と称していたのが印象的でした。

![SCOUTERとLaravue_最後のフルスタックフレームワーク.png](https://qiita-image-store.s3.amazonaws.com/0/26422/682da89c-ddc4-85a4-28a7-cdb0f43c4e2f.png)

「最後の」という部分に込められた思いを私なりに解釈してみるとこうなりました。

- 次に流行るフレームワークは、フルスタックではない
- マイクロサービス化が加速すると一つ一つのサービスは小さくなる
- 全部入りのフレームワークはしだいに不要になっていく

それを踏まえて、下記の「インフラ＋フロント＋サーバーと技術横断的にみて設計ができるようになるか？」という部分を読み返すと、妙に説得力あるなと思ってしまいます。

![SCOUTERとLaravue_全体を見れるか.png](https://qiita-image-store.s3.amazonaws.com/0/26422/d6dc4254-6946-3a99-ee64-0dd9fa64a2c3.png)

## `Laravel本とコミュニティの話` `@kurikazu`
『PHPフレームワーク Laravel Webアプリケーション開発』の著者の一人、`@kurikazu`さんこと`栗生 和明`さんのトークからピックアップしていきます。
スライドは[こちら](https://www.slideshare.net/kurikazu/laravel-124348137)です。

### Laravel答えるタイム
Laravel答えるタイムとは、`@kurikazu`さんが`ディップ`さん社内の共有スペースにて、`Laravel`についての質問に答える時間のことだそうです。

『PHPフレームワーク Laravel Webアプリケーション開発』の著者に直接質問できるなんて羨ましいと思うと同時にそれだけで`connpass`でイベントできそうだなと思いました。

![Laravel本とコミュニティの話_Laravel答えるタイム.png](https://qiita-image-store.s3.amazonaws.com/0/26422/03b001f0-9a95-5ef9-433a-c6d420274071.png)

### Laravel Meetup Tokyoに`@freekmurze`さんが参戦した件
スライドではさらっと「Freekさんのトーク」となっているんですが、なんでも`Laracon EU`という大きなイベントで登壇するようなベルギーのエンジニア`@freekmurze`さんから、下記のようなメッセージが届き、`Laravel Meetup Tokyo`に参加したというすごい話でした。

```
旅行で9月は東京にいるんだけど、よかったら Meetup できないかな? 
Laracon EU で採択された内容を話したい。ただ、僕は日本語が話せないので英語で話すことになると思うけど
```

![Laravel本とコミュニティの話_Laravel_meetup_tokyo.png](https://qiita-image-store.s3.amazonaws.com/0/26422/b6a6b95c-3224-cd13-94b2-6bf3df6d24c2.png)

ちょっとググったら、`@localdisk`さんの[Laravel Meetup Tokyo Vol.8 にいってきました - Innovator Japan Engineers’ Blog](https://tech.innovator.jp.net/entry/2016/10/20/123527)が見つかりました。
こちらに詳しい経緯や当日の様子などが書かれています。

### `Laravel`本のこぼれ話
スライドにはありませんが、`幻の10章`の話は大変面白かったです。
`幻の10章`が何であるかは下記の記事で分かります。

[「PHPフレームワーク Laravel Webアプリケーション開発」を読みました - Qiita](https://qiita.com/DecoratedKnight/items/839d98807b7dc5bbfe8b)

## `A startup meets Laravel + Vue.js` `@nunulk`
`QiitaのLaravelタグ`ユーザーランキング1位の`@nunulk`さんこと`松本 弘嗣`さんのトークからピックアップしていきます。
スライドは[こちら](https://speakerdeck.com/nunulk/a-startup-meets-laravel-plus-vue-dot-js)です。

### 水平方向（フロントエンド/バックエンド）の分担より、垂直方向（機能）の分担の方が効率がいい
これは、「スタートアップとの相性」の中にあるスライドです。
「水平方向（フロントエンド/バックエンド）の分担より、垂直方向（機能）の分担の方が効率がいい」という部分がはじめはどうして？と思いました。

![A startup meets Laravel   Vue js   Speaker Deck_分業の話.png](https://qiita-image-store.s3.amazonaws.com/0/26422/4c437b71-03bb-7a3f-7867-c295bcdf6a53.png)

しかし、これは単能工より多能工がいいという話なのかと視点を変えたら妙に腑に落ちました。
多能工については、下記の記事などが分かりやすかったです。

- [多能工化の意味とは？メリット・デメリットと進め方 | BizHint（ビズヒント）- 事業の課題にヒントを届けるビジネスメディア](https://bizhint.jp/keyword/27850)

### （`Laravel` + `Vue.js`の）代替案
`@kotamat`さんの「最後のフルスタックフレームワーク」の話とも合致すると思うんですが、`Nuxt.js`のような`SPA`を採用すると、クライアントとサーバーが分離して、サーバーサイドは軽量なマイクロフレームワークに代替可能であるという部分が興味深かったのと、`@nunulk`さんが座談会でも、「Laravelは遅い」とおっしゃっていたのが印象的でした。

![A startup meets Laravel   Vue js   Speaker Deck_代替案.png](https://qiita-image-store.s3.amazonaws.com/0/26422/b364aab9-c13e-4564-516f-0a27bdee25e9.png)

## 座談会
座談会では参加者から以下のような質問があがっていました。

### CIにおけるテストと静的解析の話
- テストを実行させると、API ドキュメントが自動生成されるようにしている
  - たぶん、この話。「[SwaggerでAPI仕様書に消耗しているなら.restを使うといい。特にLaravelなら - SCOUTER開発者ブログ](https://techblog.scouter.co.jp/entry/swagger-to-rest)」
- `SCOUTER`社では自動テストはCIで実行していない（20分とか時間がかかるから）
- `ディップ`さんは割とE2Eテストを書いている
- `SCOUTER`さんは`larastan`からあがってきた指摘事項を`reviewdog`を使って、プルリクのコメントにするようにしている
  - [Larastan](https://github.com/nunomaduro/larastan)
  - [reviewdog](http://haya14busa.com/reviewdog/)

### `Laravel` + `DDD` の話
- 詳しくは`Laravue`勉強会の資料を参照
  - たぶん、これ。「[Implementing deep and eloquent models with Laravel 5.4 - Speaker Deck](https://speakerdeck.com/nunulk/implementing-deep-and-eloquent-models-with-laravel-5-dot-4)」
- ディップさんでよく使うのはリポジトリパターン
- `Laravel`は`DDD`に実は向いていない？
  - クラス階層が深くなると遅くなる

### 監視ツールの話
- [Rollbar](https://rollbar.com/)と[Sentry](https://sentry.io/welcome/)をよく使う
- とりあえずツールを導入して、JS側のエラーも捕捉する

### `Laravel`と`GrahpQL`の話聞きたい
- まだ、`SCOUTER`社では使っていない（`@kotamat`さん個人で試している状態）
- [Laravel Lighthouse](https://github.com/nuwave/lighthouse)が出てきてだいぶいい感じ
- N+1問題など課題はありそうだなという印象

### インフラの話
- ディップさんはオンプレ中心
  - クラウドへの移行を考えてはいるが、全面移行は難しそう
  - ユーザーと運用するエンジニア双方にとって（クラウド移行して）メリットのあるサービスを優先的に移行したい
- SCOUTER社は、AWS、構成管理はTerraform使っている
  - ステージング環境と本番環境が乖離しているので、構成を見直している
  - `Nuxt`はSPAモード中心で極力`SSR`しない主義なので、`Node.js`サーバーは運用しない

### 工数の見積りが大きくずれたことはあるか
- 今までやったことないことやるとずれる 
- `@nunulk`さんの経験では、スタートアップでは正確に見積をしないことが多い

## おわりに
フォトクリエイトさんの某サービスを`Nuxt.js`と`Laravel`でリニューアルするぞというタイミングで、この座談会を開催できたのは、かなり良かったと思ってます。
登壇していただいた`@kotamat`さん、`@kurikazu`さん、`@nunulk`さん、参加していただいたみなさま、本当にありがとうございました。
実は、もうすでに次の企画が動いていまして、そろそろ`connpass`で募集開始しますので楽しみにしていてください。

<!--
## 明日は

明日の記事は @%{@アカウント} さんが %{テーマ／タイトル} について です。
（次の人が更新したらあとで記事を更新してリンクを自分で張る）

-->

フォトクリエイトさんでは`Laravel`や`Vue.js`を使ったアプリケーション開発に興味のある方からの [ご応募をお待ちしております](https://recruit.photocreate.co.jp/entry/?utm_source=qiita&utm_medium=advc2018&utm_campaign=2da138c770b2f384e6e5)とのことですので、よろしくお願いします。

ではでは。