Help us understand the problem. What is going on with this article?

PHPでFirebaseを使ってみよう!

More than 3 years have passed since last update.

自己紹介

じゅんじゅんというニックネームで、関西を拠点に活動しているフロントエンドエンジニアです。

HAL大阪の2回生です👍 (2016.12.18現在)

よくstart up系イベントに行くので、大阪らへんの方は会いましょう!

Firebaseとは

firebase

FirebaseとはGoogleの提供するいろんな機能を持ったサービスです。(BaaSと言われるものの一種だと思ってましたが、いつの間にかすごい多機能になっていました)

公式には

Firebase は、すばやく高品質のアプリを開発し、ユーザー層を拡大し、収益を増やすために役立つモバイル プラットフォームです。Firebase はニーズに応じて組み合わせて使用できる、さまざまな補完的機能で構成されています。

らしいです。

どんな機能があるの?

  • アナリティクス

    • Analytics
  • 開発

    • Cloud Messaging
    • 認証
    • Realtime Database
    • Storage
    • Hosting
    • Remote Config
    • Test Lab
    • Crash Reporting
  • 拡大

    • Notifications
    • App Indexing
    • Dynamic Links
    • Invites
    • AdWords
  • 収益

    • AdMob

ざっとこのぐらいあります。

今回はRealtime Databaseをやっていきたいと思います。

Realtime Database

Realtime Database

Realtime Databaseの説明を軽く。

データを保存して NoSQL クラウド データベースと同期できます。データはすべてのクライアントにわたってリアルタイムで同期され、アプリがオフラインになっても、利用可能な状態を保ちます。

最強ですね(?)

今回はこのRealtime DatabaseをPHPから触るにはどうするかを手順を追って説明していきます。

PHPでRealtime Database(Firebase)

準備

まずはコンソール(https://console.firebase.google.com/)へ行きます。

スクリーンショット 2016-12-18 3.14.29.png

新規プロジェクトを作成を押します。

すると、プロジェクト名と国を入力するように促されるので入力しましょう!

スクリーンショット 2016-12-18 3.16.04.png

入力したら、プロジェクトを作成を押して少し待ちましょう。

すると、新しくプロジェクトができていると思うのでプロジェクトをクリックします。

ここで、このプロジェクトで何を使うのかやKeyの取得などができます。

スクリーンショット 2016-12-18 3.17.42.png

まずはKeyをメモっておきましょう。

Overviewの横の歯車を押して、プロジェクトの設定を開きます。

タブが並んでいますが、一番右にあるサービス アカウントを選択します。

スクリーンショット 2016-12-18 3.22.21.png

この中の、Node.jsの中にdatabaseURLというのがあると思います。今回の場合はhttps://test-78613.firebaseio.comになります。

このURLをメモしておきましょう。

続いて、データベースのシークレットというタブが出ていると思います。

スクリーンショット 2016-12-18 3.24.45.png

このタブを開くとシークレットキーがあるので表示するを押して保存しておきましょう。

実装

では、上記2つのものを使ってPHPでコードを書いていきたいと思います。

PHPの環境をまとめておきます。

PHP version => 7.0.13
composer version => 1.2.0

composerのインストールは以下の記事を参考にしてください。

今回はktamas77/firebase-phpというライブラリで実装してしまおうと思います。

まずプロジェクトフォルダを作ります。

mkdir <project name>
cd <project name>

続いてComposerを使ってライブラリを入れていきたいと思います。

composer require ktamas77/firebase-php dev-master

すると、

/
|- vendor/
|- composer.json
|- composer.lock

の3つができていると思います。

これで準備は整ったので、さっそくコードを書いていきます。

db.phpをつくりましょう。

db.php
<?php
require_once "vendor/autoload.php";

define("DEFAULT_URL","https://<- project ->.firebaseio.com/");
define("DEFAULT_TOKEN","<- secret ->");

上の2つは先ほど保存しておいたものをいれてください。

では、続きを書いていきます。

db.php
<?php
require_once "vendor/autoload.php";

define("DEFAULT_URL","https://<- project ->.firebaseio.com/");
define("DEFAULT_TOKEN","<- secret ->");

$test = array(
  "name" => "konojunya",
  "age" => 19
);

$firebase = new \Firebase\FirebaseLib(DEFAULT_URL,DEFAULT_TOKEN);

// set
$firebase->set("/users",$test);

// get
$user = $firebase->get("/users");

echo $user;

これでログを確認してみましょう。

スクリーンショット 2016-12-18 3.43.33.png

{"age":19,"name":"konojunya"}となったでしょうか。

データのセットとゲットを同時にやってみました。

いまの段階でfirebaseのコンソールページはどうなってるんでしょうか。

スクリーンショット 2016-12-18 3.45.22.png

/usersへ送るとこんな風にデータがはいっています。

感のいい人はお気づきの用にFirebaseではjsonのような形式でデータを貯めることができます。

先程のデータを消して、少し使い方を変えてみます。

PHPのファイルをこのように変更してみましょう。

db.php
<?php
require_once "vendor/autoload.php";

define("DEFAULT_URL","https://<- project ->.firebaseio.com/");
define("DEFAULT_TOKEN","<- secret ->");

$test = array(
    "name" => "konojunya",
    "age" => 19
);
$test1 = array(
    "name" => "hoge子",
    "age" => 19
);

$firebase = new \Firebase\FirebaseLib(DEFAULT_URL, DEFAULT_TOKEN);
$firebase->set("/users/konojunya",$test);
$firebase->set("/users/hogeko",$test1);
$user = $firebase->get("/users");
echo $user;

すると、

スクリーンショット 2016-12-18 3.50.59.png

また違った形式でデータがかえってきました。

/usersを取得しているので配下のhogekokonojunyaというユーザー名をKeyとしてもったObjectを返してきています。

{
  "hogeko": {
    "age": 19,
    "name": "hoge子"
  },
  "konojunya": {
    "age": 19,
    "name": "konojunya"
  }
}

きれいにするとこんな感じですね。

Firebaseをみると

スクリーンショット 2016-12-18 3.49.38.png

このようにきれいに並んでいると思います。

PHPからでも簡単にFirebaseのデータベースを使うことができました。

これからも僕も活用していきたいと思っています。

あとがき

今回の記事は、Firebaseをプログラムから触る部分よりその準備の画面がたどり着くまでめんどくさかったのでかきました。(PHPからFirebaseを使ってる記事もすくない。)

誰かの困りを解決できたらいいなとおもいます。

Twitterやっています!ここ間違えてるよ!とかあればコメント欄や編集リクエスト、Twitterで報告をしていただけると自分もミスに気づけるのでよろしくお願いします!

Twitter -> @konojunya

iotlt
IoT縛りの勉強会です。 毎月イベントを実施しているので是非遊びに来てください! 登壇者を中心にQiitaでも情報発信していきます。 https://iotlt.connpass.com
https://iotlt.connpass.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした