104
96

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

JavaScriptで始めるFirebase入門

Posted at
1 / 21

##アジェンダ

  • Firebaseとは
  • Firebaseの特徴
  • Firebaseの料金
  • Firebaseでウェブチャットを作ってみよう

##Firebaseとは

  • 2011年アメリカで始まったBaaSが、2014年Googleに買収された
  • Firebaseはその他のBaaSと同様、サーバー構築やメンテナスが不要である
  • さらに、リアルタイムでデータを格納したり引き出したりすることができる

##Firebaseの特徴

  • リアルタイムデータベース
  • 静的ウェブサイトホスティング
  • ユーザ認証とデータベースアクセス管理

##Firebaseの特徴
スクリーンショット 2017-03-12 14.57.00.png


##Firebaseの特徴

  • よいアプリを開発するために、いろいろな機能が提供されている
  • Firebaseを利用してユーザ層の拡大や収益の増加もできる

##料金 - 無料範囲

  • リアルタイムデータベース

  • 100の同時接続

  • 1GBの容量

  • 10GBの転送量

  • ストレージ

  • 5GBの容量

  • 1GB/dayの転送量

  • 2万回のUpload

  • 5万回のDownload

  • 静的ページホスティング

  • 1GBの容量

  • 10GBの転送量

  • 独自ドメイン&無料SSL

  • 開発のために、ぜんぜん余裕である


##料金 - 有料

  • 25ドル/月以下
  • 同時接続数が無制限など
  • 25ドル/月以上
  • 従量課金

##Firebaseでウェブチャットを作ってみよう


###新規プロジェクト
スクリーンショット 2017-03-12 18.52.20.png


###新規プロジェクト
スクリーンショット 2017-03-12 18.53.03.png


###開発ツール

  • インストール
$ npm install -g firebase-tools
$ firebase --version
3.5.0

###ログイン

  • CLIコマンド実行
$ firebase login
  • ブラウザでアカウントログイン
    スクリーンショット 2017-03-12 20.08.39.png

  • ログイン成功
    スクリーンショット 2017-03-12 20.09.01.png


###初期化


$ firebase init
  • Hostingを選べる

スクリーンショット 2017-03-12 20.39.54.png

  • プロジェクトを選べる
    スクリーンショット 2017-03-12 20.42.37.png

  • 完成
    スクリーンショット 2017-03-12 21.06.07.png


###リアルタイムデータベース機能の組み込み


<script src="https://www.gstatic.com/firebasejs/3.7.1/firebase.js"></script>
<script>
  // Initialize Firebase
  var config = {
    apiKey: "XXXXXXX",
    authDomain: "webchatdemo-XXXXX.firebaseapp.com",
    databaseURL: "https://webchatdemo-XXXXX.firebaseio.com",
    storageBucket: "webchatdemo-XXXXXx.appspot.com",
    messagingSenderId: "00000000000000"
  };
  firebase.initializeApp(config);
</script>

スクリーンショット 2017-03-12 21.10.36.png


###firebaseのリアルタイムデータベースのルールを設定する
スクリーンショット 2017-03-12 22.08.54.png


###chat機能を追加

<div id='messagesDiv'></div>
<input type='text' id='nameInput' placeholder='Name'>
<input type='text' id='messageInput' placeholder='Message...'>
<script type='text/javascript'>
  var messagesRef = firebase.database().ref('/');

  $('#messageInput').keypress(function (e) {
    if (e.keyCode == 13) {
      var name = $('#nameInput').val();
      var text = $('#messageInput').val();
      messagesRef.push({name:name, text:text});
      $('#messageInput').val('');
    }
  });

  messagesRef.on('child_added', function (snapshot) {
    var message = snapshot.val();
console.log(message.name);
    if (message.name) {
      $('<div/>').text(message.text).prepend($('<em/>').text(message.name+': ')).appendTo($('#messagesDiv'));
      $('#messagesDiv')[0].scrollTop = $('#messagesDiv')[0].scrollHeight;
    }
  });
</script>

###説明 - pushメソッド

  • データのリストに追加する
  • 新しいノードをリストにプッシュするたびに、データベースから /[unique-user-id]/[xxx] のような一意のキーが生成される
スクリーンショット 2017-03-13 8.14.46.png

###説明 - on('child_added')イベント

  • child_added イベントがデータベースからアイテムのリストを取得するために使用する
  • コンテンツ全体を返すvalueメソッドとは異なり、child_addedは既存の子ごとに1回トリガーされる
  • さらに、指定されたパスに新しい子が追加されると、再トリガーされる
  • イベントコールバックには、新しい子のデータを含んでいるスナップショットが渡される

###リリース

firebase deploy

firebase open hosting:site

#ご静聴ありがとうございます

104
96
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
104
96

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?