Laravelのテスト環境をFirebaseで運用する方法

firebase

Laravelで開発するときはphpなのでサーバーに繋がないとデータベースの動きが読めずに実サイトの動きもわからないんですよね。これまでは仮想OSのvagrantでローカル環境を構築していたんですが時間も手間もかかっていました。

かといってDockerを使おうとすると今は色んな言語で作っているので設定を書き換えないといけなくて面倒…ということで近いサービスを探していました。

そこでFirebaseを見つけて使ったみたのですが、控えめにいって最高でした。さっそく2つのWebアプリを公開しました。

公開したWebアプリ
FirebaseとJavascriptでチャットアプリ
Javascriptでタイピングゲームを作りFirebaseにデプロイしてみた振り返り

使い方がつかめてくると30分もあれば導入→公開までいけるようになったのでLaravelも余裕でしょ。と思ったらサーバーサイドの言語はちょっと設定が違うのでメモとして残すことにしました。

Firebaseでプロジェクトを登録

まずはFirebaseでプロジェクトを登録します。

参考サイト:

参考サイト:Firebaseでウェブサイトを公開してみよう ドットインストール

データベースをテストモードで作成

Firebaseの管理画面→Database→Realtime Databaseを作成→ルールとすすみます。

ここでデータベースの権限を変えるのですが、readwritetrueに変更します。

API Keyを作成してhttp/Controllerフォルダにおく

Project Overview→ユーザーと権限権限を管理をクリック

Google Cloud Platformへ移るので、サービスアカウント情報パネルを非表示にして右端の操作鍵を作成(図を参考)

JSONタイプで作成ダウンロードされるのでLaravelhttp/Controllerフォルダにコピー

Laravel側でコントローラーをつくっていく

ComposerKreaitをインストール

laravelのルートディレクトリにcdしてFirebase用のコントローラーを作成します。

$ composer require krait/firebase-php ^4.0

インストールされたcomposer.jsonkrait/firebase-php^4.0requireされているのを確認する。

FirebaseControllerを作成

$ php artisan make:controller FirebaseController

生成されたコントローラーの編集を以下の内容でします。途中の日本語でかかれた部分はそれぞれの環境でデータベース名やjsonファイル名を変更しておきます。

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Kreait\Firebase;
use Kreait\Firebase\Factory;
use Kreait\Firebase\ServiceAccount;
use Kreait\Firebase\Datebase;

class FirebaseController extends Controller
{
    //
    public function index() {
        $serviceAccount = ServiceAccount::fromJsonFile(__DIR__./JSONファイルの名’);
        $firebase = (new Factory)
        ->withServiceAccount($serviceAccount)
        ->withDatabaseUri(‘Firebaseのデータベース名’)
        ->create();
        $database = $firebase->getDatabase();
        $newPost = $database
        ->getReference('参照する投稿フォルダ(例/blog/posts)')
        ->push([
            'title' => '投稿タイトル',
            'body' => '投稿内容',
            'category' => 'カテゴリー'
        ]);
        echo"<pre>";
        print_r($newPost->getvalue());
    }
}
?>

Routeweb.phpでとる

このままではFirebaseドメインを選択してもルートが取れていないので、Routeを取るためにweb.phpに追記します。

$ Route::get(‘firebase’, FirebaseController@index’);

phpを起動する

ここまで終わったらlavavelコマンドでサーバーを起動すればokです。ポート8000番で開くと思います。

$ php artisan serve

表示されたURLにアクセスする。

間違いがあったのでこちらの記事を参考にしてリライトします。
参考サイト:https://qiita.com/konojunya/items/6bc5ff9186bb94b91c60

ここまでで接続は完了です。Laravel環境の構築はドットインストールをつかってはじめるとわかりやすいかもしれません。

ドットインストール:Laravel 5.5 入門

参考サイト

https://www.cloudways.com/blog/firebase-realtime-database-laravel/

https://appdividend.com/2018/04/18/laravel-firebase-tutorial/