概要
Laravel SparkというサービスをLaravelユーザーの方はご存知でしょうか?
名前は聞いた事ありましたが具体的にどんなものか知らなかったのでLaravelユーザーとしては使ってみようという事でインストールしてみました。
公式ドキュメント通りに環境構築しても、色々とハマったりしたので今後試す人の参考になればと。
Laravel Sparkとは?
Laravel SparkとはLaravel + Vue.jsで作成されたWebアプリケーションテンプレート。
有料ライセンスでありソフトウェアをインストールすると次のような機能がすでに実装されている。
- 認証
 - 顧客の請求書ダウンロード
 - サブスクリプション
 - チームでのユーザー作成、招待
 - 二段階認証
 - ユーザー向けAPIトークンの作成
 - ユーザー偽装してのデバッグ機能 etc...
 
上記のような機能はすでに提供されるのでよりサービスに近い部分に開発を注力できるというのが特徴です。
このような機能や画面をLaravel + Vue.jsで作成できるというのもメリットですね。
Laravel Sparkをインストールする前に...
公式ドキュメントによるとLaravel Sparkは次のコンポーネントで構成されていると記載があります。
- Composer
 - Laravel Framework 5.6+
 - Laravel Mix
 - Bootstrap 4 (SASS)
 - Node.js & NPM
 
Vue.jsはもちろん使えますが、他のJSフレームワークを使用するのも自由なようです。
ライセンス
Laravel Sparkは有料ライセンスになっています。
公式サイトによると次のような料金体系になっています。
- 1つのWebサイトで使用する場合: $99
 - 無制限に使用する場合: $299
 
環境構築
以下の環境でインストールしました。
- MacOSX Sierra
 - Composer1.6.3
 - PHP7.2.3
 - MYSQL5.7.19
 - npm5.6.0
 
インストール
まずはLaravel Sparkに登録が必要です。公式サイトのRegisterからアカウント登録しましょう。
lisenceを購入してないとインストールできないようです。試す方はクレジットカード登録し$99のライセンスを購入します。
ライセンス購入後、公式のLaravel SparkサイトにログインしGithubのリポジトリへJoinしましょう。Laravel Sparkの公式サイトにログインしていればSettings -> GithubからJoinできます。Joinをしておかないとパッケージをインストールする際に403で弾かれます。
Laravel Sparkをインストールするにはいくつか方法があります。
spark installerとlaravel installerがありますが、どうも上手くできなかったのでcomposerコマンドからインストールしました。
まずはlaravelプロジェクトを作成します。
※composerとnpmが事前に必要なため、事前にインストールしておいて下さい
$ composer create-project --prefer-dist laravel/laravel spark-sandbox
composer経由でインストールする場合はLaravel SparkのSatisリポジトリを登録する必要があるようです。composer.jsonに追記します。
"repositories": [
    {
        "type": "composer",
        "url": "https://spark-satis.laravel.com"
    }
],
続いてcomposer.jsonのrequireに"laravel/spark-aurelius": "~6.0",を追加します。
$ composer require laravel/spark-aurelius:~6.0
決済サービスをStripeかBraintreeを使う場合で使用するパッケージは変わるようです。とりあえずインストールしたい場合は不要な気がしますが、僕はlaravel/cachierを選択してrequireに追加しました。
$ composer require laravel/cashier:~7.0
composer.jsonに必要パッケージを追加したらcomposer updateします。
$ composer update
これで依存ライブラリがインストールされます。vendorディレクトリにもろもろインストールされたらapp.phpにServiceProviderを登録します。
Laravel\Spark\Providers\SparkServiceProvider::class,
Laravel\Cashier\CashierServiceProvider::class,
登録したら次のコマンドを実行します。
$ php artisan spark:install --force
再度、app.phpにServiceProviderを登録します。 
App\Providers\SparkServiceProvider::class,
最後にnpm install、npm run devを実行します。
npm run devの時にcross-env not found errorが僕の環境では発生しました。package.jsonを見てみるとscripts のdevセクションでcross-envコマンドを使用していたので、npm i -g cross-envでglobalインストールして解決しました。
{
  "private": true,
  "scripts": {
    "dev": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
// 以下、省略
最後にphp artisan migrateを実行するため、.envに任意のデータベースの設定をします。
DB_DATABASE=spark_sandbox
データベースにアクセスできる状態になったらmigrateして必要なテーブルを作成します。
$ php artisan migrate
公式ドキュメントによるとstorageディレクトリへのSymlinkが必要との事なので以下のコマンドを実行します。
$ php artisan storage:link
ここまで出来たらビルドインサーバを起動してアクセスしてみます。
$ php artisan serve
結果
所感
公式ドキュメント通りに試しましたがインストールするのに結構ハマりました...。
Laracastでも同じ箇所でハマっている人がいたので、あるあるなのかも知れません。
インストール後、2段階認証を試してみたのですが一行追加するだけで組み込めました。そちらは別のポストで記載できればと。
