よしかわーるど

プログラミングで世界を変える

2018-07-31

laravelでSNSアプリを作成したときに思ったこと

Laravel で SNS アプリを作成したときに思ったこと

はじめに

どうも,よしかわです. 今回は Laravel で SNS(Twitter)アプリを作成しました.
開発期間は 2 ヶ月ほど.開発者は僕一人だけです.

参考文献

Laravel docs

対象読者

Laravel を初めて触る方
CakePHP から Laravel に乗り換えたい方
PHP で Twitter を作成したい方

リポジトリ概要

tsunagu

アプリ内タイムライン

timeline

改善点

自分自身をフォロー出来てしまう.
プロフィールの更新など未実装な部分が多数ある.

Docker で開発環境構築

今回は Docker Compose を用いて開発環境を構築していきます.
Docker Compose は,マルチコンテナ Docker アプリケーションを実行するためのツールです.
上記のとおり, web サーバに NGINX, データベースは MySQL, バックエンドは Laravel, フロントエンドは Vue.js を使います.

実行環境

ツール バージョン
MySQL 5.7.22
composer 1.6.5
Laravel 5.6
Vue.js 2.5.16

なぜ Laravel で開発をしたのか

CakePHP で開発している中で,一つの記事を見つけました.
LaravelRuby on Railsのスター数を抜いたということについてです.
この記事を読んだ僕は,CakePHP ではなく Laravel で開発してみようと思いました.

なぜ MySQL8 ではないのか

MySQL8 から速度が 2 倍近く向上しました.また,便利な関数が使えるなど色々なメリットがあります.
MySQL8 では mysql_native_password が caching_sha2_password に変更になり,caching_sha2_password がデフォルトになっています.
クライアント側も caching_sha2_password に対応していなければならないということになります.
今回は Laravel のマイグレーションツールを使用したいため,MySQL5.7 系を使用します.

CakePHP と Laravel の違い

Laravel は基本的にソースコードを配置する際のディレクトリ構成が自由です.
CakePHP3 はディレクトリ構成が定まっているため,モデルは Model ディレクトリに,コントローラは Controller ディレクトリに配置するのがフレームワークの規則になっています.
そのため,フレームワークに対して自由度を求めるデベロッパーは Laravel を使うと後々困らないと思います.

CakePHP は規約が厳密であるため,規則を覚えて開発していけば開発速度はとても早いと思います.しかしながら,CakePHP は前述どおりレールに定まっていない「変わったことを行う場合」は大変です.
Laravel はディレクトリ構成が複雑であるため,学習コストは高いですが応用が利きます.

フロントエンド技術の違い

CakePHP3 のフロントエンド技術には jQuery が用いられているくらいです.
Laravel のフロントエンド技術にはデフォルトで Vue.js や Bootstrap が使用されています.

開発のしやすさ

また,Laravel では Laradock や Homestead など開発しやすい環境が用意されています. VirtualBox と Vagrant がインストールされていれば,Homestead で開発できます.
Laradock は Docker があれば開発できます.

おわりに

やっぱり Laravel のほうがデベロッパーにとっては優位なことが多いように感じます.
CakePHP と Laravel のそれぞれの良いところを使って開発していくのがベターだと思いました.