自己紹介
じゅんじゅんというニックネームで、関西を拠点に活動しているフロントエンドエンジニアです。
HAL大阪の2回生です👍 (2016.12.18現在)
よくstart up系イベントに行くので、大阪らへんの方は会いましょう!
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の説明を軽く。
データを保存して NoSQL クラウド データベースと同期できます。データはすべてのクライアントにわたってリアルタイムで同期され、アプリがオフラインになっても、利用可能な状態を保ちます。
最強ですね(?)
今回はこのRealtime DatabaseをPHPから触るにはどうするかを手順を追って説明していきます。
PHPでRealtime Database(Firebase)
準備
まずはコンソール(https://console.firebase.google.com/)へ行きます。
新規プロジェクトを作成を押します。
すると、プロジェクト名と国を入力するように促されるので入力しましょう!
入力したら、プロジェクトを作成を押して少し待ちましょう。
すると、新しくプロジェクトができていると思うのでプロジェクトをクリックします。
ここで、このプロジェクトで何を使うのかやKeyの取得などができます。
まずはKeyをメモっておきましょう。
Overviewの横の歯車を押して、プロジェクトの設定を開きます。
タブが並んでいますが、一番右にあるサービス アカウントを選択します。
この中の、Node.js
の中にdatabaseURL
というのがあると思います。今回の場合はhttps://test-78613.firebaseio.com
になります。
このURLをメモしておきましょう。
続いて、データベースのシークレットというタブが出ていると思います。
このタブを開くとシークレットキーがあるので表示するを押して保存しておきましょう。
実装
では、上記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
をつくりましょう。
<?php
require_once "vendor/autoload.php";
define("DEFAULT_URL","https://<- project ->.firebaseio.com/");
define("DEFAULT_TOKEN","<- secret ->");
上の2つは先ほど保存しておいたものをいれてください。
では、続きを書いていきます。
<?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;
これでログを確認してみましょう。
{"age":19,"name":"konojunya"}
となったでしょうか。
データのセットとゲットを同時にやってみました。
いまの段階でfirebaseのコンソールページはどうなってるんでしょうか。
/users
へ送るとこんな風にデータがはいっています。
感のいい人はお気づきの用にFirebaseではjson
のような形式でデータを貯めることができます。
先程のデータを消して、少し使い方を変えてみます。
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;
すると、
また違った形式でデータがかえってきました。
/users
を取得しているので配下のhogeko
とkonojunya
というユーザー名をKeyとしてもったObjectを返してきています。
{
"hogeko": {
"age": 19,
"name": "hoge子"
},
"konojunya": {
"age": 19,
"name": "konojunya"
}
}
きれいにするとこんな感じですね。
Firebaseをみると
このようにきれいに並んでいると思います。
PHPからでも簡単にFirebaseのデータベースを使うことができました。
これからも僕も活用していきたいと思っています。
あとがき
今回の記事は、Firebaseをプログラムから触る部分よりその準備の画面がたどり着くまでめんどくさかったのでかきました。(PHPからFirebaseを使ってる記事もすくない。)
誰かの困りを解決できたらいいなとおもいます。
Twitterやっています!ここ間違えてるよ!とかあればコメント欄や編集リクエスト、Twitterで報告をしていただけると自分もミスに気づけるのでよろしくお願いします!
Twitter -> @konojunya