ららびゅう座談会レポート Vue.js編（Photocreate Advent Calendar 17日目 ）

フロントエンドエンジニア の @kazuyuki_ito です。
この記事は [Photocreate Advent Calendar 2018](https://qiita.com/advent-calendar/2018/photocreate) の 17日目 の記事です。


## はじめに

昨日は `@imunew` が ららびゅう座談会を主催してみて というまとめで書いてますが、今日はフロントエンドエンジニアとして主にVue.js のところで印象に残ったことを書きたいと思います

## @kotamats「SCOUTER社でLaravel+Vue.jsをどのように使っているか」

SCOUTER社のCTOの@kotamats氏からは  `Laravel`+ `Vue.js`を自社の事業でどのように使っているかをお話いただきました。

![KII_7149.jpg](https://qiita-image-store.s3.amazonaws.com/0/125666/3c289696-4826-ed60-9975-018daeb647ab.jpeg)


### 使うメリット

まずは `Laravel`+ `Vue.js`を使っているメリットとして以下を挙げていました。

> - 基本的な概念を理解していれば、複雑な理解は必要ない。
- どちらもゆるいフレームワークなので、設計力は求められるが、ある程度最初に整備しておけばある程度防げる。
- 採用面でも有利

私としては`Vue.js`を始めたばかりなので、複雑な理解は必要ないとは思わないのですが、`Vue.js`は難しいというより、初めて`jQuery`を覚えた時のワクワク感みたいなものを最初に味わったので学習コストは低いのかなと思います。

またゆるいフレームワークだから設計力が求められる部分とあったので、制作初期段階でチーム全体で細かい方針を決めて実装を進めないと終盤で苦しめられるのかなと勝手に想像・・・ここは経験も必要なんだなと思いました。

###2つの勉強会

@kotamats氏は「Laravue勉強会」と「Nuxt.js Meetup」の2つの勉強会を主催しており、開催している理由として以下を挙げていました。

> - 半強制的に外部の登壇する優秀なエンジニアと交流する機会が生まれる。
- 日頃の業務で挑戦していることを発表し、各個人の技術的なプレゼンスが上がる。
- 登壇駆動開発ができる。

この点に関しては4日目に投稿した[こちら](https://qiita.com/kazuyuki_ito/items/44d00429ebcfe0180ce0)の記事で書かせてもらいましたが、日頃インプットしている事を外でアウトプットすることで自身が学んだものの復習につながり、理解が深まるものだと体験を通じて感じています。

「アプリケーションを作る上では双方理解している必要があるので、統合的に勉強する機会が欲しかった」とも語っており、「自分も今後サービスで`Vue.js`を扱ってくには`Laravel`への理解も必要になってくるのか・・・」と身震いしておりますw

### 感想

@kotamats氏は`Laravel`+ `Vue.js`を「最後のフルスタックフレームワーク」で、Webにおける実装するべき機能がほぼ揃っており、「事業に集中できるため」採択しているそうです。

ただし、`Laravel`、`Vue.js`ともにそれほど学習コストがかからなくなるが、その分、プロダクトをどうやって伸ばすかというプロダクト志向をフロント＋サーバーの知識で要件定義できるかが重要と語っており、学習コストが低くなったとしてもフロントエンドエンジニアとしてはまだまだ勉強しなければいけない事が盛りだくさんあると痛感しております。

また印象的だったのは@kotamats氏は`Nuxt.js`でSSR（サーバーサイドレンダリング）をしないスタイルだと語り、公演後にその理由が書かれた[こちら](https://slides.com/kotamatsumoto/nuxt-ssr#/)の資料を読み、個人としてはなかなか興味深い内容でした。

## @nunulk「A Startup meets Laravel + Vue.js」

フリーのアプリケーションエンジニア@nunulk氏からは 「A Startup meets Laravel + Vue.js」と題して初心者・初学者がどこからどうやって教えるかを中心にお話いただきました。

![KII_7224.JPG](https://qiita-image-store.s3.amazonaws.com/0/125666/c72d0540-2b2b-7858-512e-9f80a8b01116.jpeg)


### Vue.jsの特長

`Vue.js`の主な特長として、

> - HTML / CSS との最低限の結合
- 部分適用のしやすさ
- `Vuex`（Flux）によるViewと切り離された状態管理
- 活発なコミュニティ＆巨大なエコシステム
- 公式ドキュメントの日本語訳の存在
- TypeScriptをサポート（`Vue CLI 3`）
- `Nuxt.js`

を挙げていたのですが、特に`Vue.js`のライブラリである`Vuex`で状態管理ができることを一番に説明していました。

さらっと説明していたのですが、私は`Vue.js`を学習し、`Vuex`へとそのまま流れていったのですが、なかなか`Vuex`の[コアコンセプト](https://vuex.vuejs.org/ja/guide/core-concepts.html)の理解に苦しみました。
しかし学習するにつれて、`Vue.js`には`Vuex`の理解が必要不可欠であり、`Nuxt.js`の導入も容易になると思うので納得しながら聞いていました。

### プロダクションに求められるもの

プロダクションに求められるものは「素早く作れること」「ラクに作れること」「少人数で作れること」であり、`Laravel` + `Vue.js`は適していると語っていました。

特に一番印象に残っているのは「経験してきて、複数人で作る場合、水平方向（フロントエンド/バックエンド）で分けるのではなく、垂直方向（機能ごと）で分担すると効率がいい」と話されてたので、今後のリニューアルプロジェクトでもこの方向性を取り入れていければと思いました。

###Laravel + Vue.jsの学習プラン
詳細は割愛しますが、初学者〜中級者のレベルで`Vue.js`を取得したい人、`Laravel`を取得したい人、両方取得したい人向けに細かく勉強方法を指南してくれました。

そして両方共通して必要なのは「オブジェクト指向設計」「関数型プログラミング」の学習の大事さを挙げていました。
オブジェクト指向設計・・・関数型プログラミング・・・分かるけどスピード重視すると疎かになるところなので、意識した実装を心がけていきたいです。

余談ですが、`Vue.js`と`Nuxt.js`学習のオススメ書籍を2冊紹介してくれたのですが、両方とも現在自分が学習している書籍と同じだったのでちょっと嬉しかったですw

【オススメ書籍】
[基礎から学ぶ Vue.js](https://www.amazon.co.jp/dp/4863542453/ref=asc_df_48635424532548949/?tag=jpgo-22&creative=9303&creativeASIN=4863542453&linkCode=df0&hvadid=295706574430&hvpos=1o2&hvnetw=g&hvrand=10202225128087651185&hvpone=&hvptwo=&hvqmt=&hvdev=c&hvdvcmdl=&hvlocint=&hvlocphy=1009303&hvtargid=pla-524581061219&th=1&psc=1)
[Nuxt.jsビギナーズガイド](https://www.amazon.co.jp/Nuxt-js%E3%83%93%E3%82%AE%E3%83%8A%E3%83%BC%E3%82%BA%E3%82%AC%E3%82%A4%E3%83%89%E2%80%95Vue-js-%E3%83%99%E3%83%BC%E3%82%B9%E3%81%AE%E3%83%95%E3%83%AC%E3%83%BC%E3%83%A0%E3%83%AF%E3%83%BC%E3%82%AF%E3%81%AB%E3%82%88%E3%82%8B%E3%82%B7%E3%83%B3%E3%82%B0%E3%83%AB%E3%83%9A%E3%83%BC%E3%82%B8%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E9%96%8B%E7%99%BA-%E8%8A%B1%E8%B0%B7-%E6%8B%93%E7%A3%A8/dp/4863542569/ref=pd_bxgy_14_img_3?_encoding=UTF8&pd_rd_i=4863542569&pd_rd_r=cbf13856-ff50-11e8-a0fa-fb883d6be6da&pd_rd_w=3LnRn&pd_rd_wg=imaVZ&pf_rd_p=a4de75e6-d8f7-4a34-bd69-503ea4866e6c&pf_rd_r=X6HG49B6PWXJ0T3GX7P1&psc=1&refRID=X6HG49B6PWXJ0T3GX7P1)

### 自由から制約へ
@kotamats氏が、`Laravel`+ `Vue.js`はゆるいフレームワークなので、設計力は求められるとおっしゃっていましたが、@nunulk氏は自由な分、様々な状況の変化で制約が必要とおっしゃっていました。

> アプリケーションの複雑化 → 変更にかかるコストの増大を抑える必要性
組織の拡大 → コミュニケーションコストの増大を抑える必要性
ビジネスの拡大 → プロダクト起因のビジネスリスクを減らす必要性

本編では様々なコストを抑えるパターンを紹介していただきましたが、やはりガイドラインや設計ポリシー、コーディングスタイルのドキュメント化の必要性を強く感じました。
私はドキュメント化はとても苦手ですし嫌いなので敬遠しがちなんですが・・・汗
頑張ります・・・

### 感想
`Laravel`+ `Vue.js`でのリニューアルプロジェクトが進んでいるフォトクリエイトのエンジニアとしてはとても分かりやすく、学習方法から経験からくる開発での重要なポイントも織り交ぜながらの充実した内容でした。
講演後に質問させていただく機会があり、「プロダクトの内容関係なく設計でのポイントはありますか？」と聞いてみたところ、やはりパターンは様々あり具体的にこれがいいというものは言えないそうなのですが、一人で考えるものでもないので、最初はチーム全体で方針を決めていった方がいいとアドバイスをいただき少し安心しました。

##まとめ
座談会に参加して、第一回目に相応しい初心者にもわかりやすい内容で、とても有意義な時間を過ごさせていただきました。
第二回の開催を期待しつつ、その際は具体的なプロダクト事例を挙げていただき、その時の設計ポイントや技術的な面などたくさん聴くことができればと思っています。


<!--
## 明日は

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

-->

フォトクリエイトでは一緒にLaravel + Vue.jsでサービスを作っていきたい方からの[ご応募をお待ちしております](https://recruit.photocreate.co.jp/entry/?utm_source=qiita&utm_medium=advc2018&utm_campaign=9f6d561dd2f2715f27ff)。