鶏口牛後な日々

魔法使い(なんでも作れるエンジニア)を目指してます。ブログは発散中

今後を見据えて知っておきたい新しい技術[初級者の個人的勉強メモ](2019)

Firebase

よく聞くが、いまいちわかっていなかったこと。 BaaS らしい。つまり、 backend as a service 。 特に、モバイルのバックエンドを代替するために使われるのが多い気がする。 というのも、ネイティブアプリを作っている人たちが、よく話題にしているから。

バックエンドのサーバ構築というと、DBアクセスするためのAPIサーバの構築や認証といったところがネックになりがちなのだとか。 モバイルアプリの開発者からすると、この部分だけサーバ関連がわかる人を投入しなくちゃ、ということがこれまでは多かったのだと思う。 webサービスほどサーバを必要としない場合に、BaaSを使うのは時短になるのだろう。 BaaSはGoogleの提供しているこのFirebase以外にもたくさんある。 Firebaseは元は独立していたが、2014年にGoogleが買収してGCP入りとなったそうだ。 サーバレスアーキテクチャを導入しようとする際に、有効な手段とされているようで、webアプリを作っているものとしても、とても便利そう・・・今更ながら基本の直上(※バレーボールの用語で、ボールを自分の頭の上で垂直上向きにトスし続けるという練習方法)ばかりやっていないで、実践あるのみでこういうものを使って何か作ってみるのが良いのではないかな。。。

Firebaseのできることをざっくり以下に記載する。

  • Realtime Database

オブジェクト型のデータベースで、クライアントをリアルタイム同期させることができる。オフラインではキャッシュしておいてオンラインになった時点で同期する。

  • Cloud Firestore

オブジェクト型のデータベースだが、Realtime Databaseよりも高速でスケールアウトに適するため、Realtime Databaseに取って代わる可能性が高いとのこと。

  • Cloud Storage for Database

画像、動画等をバイナリデータで保存できるストレージ。FirebaseとGoogle Cloudの双方からアクセスができる。スケールアウト機能も完備。

  • Firebase Authentication

認証機能を提供。電話番号、パスワード認証もできる上、FacebookTwitterGithub等の認証情報を連携してログインができる機能もある。

  • Firebase Cloud Messaging

プッシュ通知みたいなものを送ることができる! 以前は、GCM(Google Cloud Messaging)を使っていたものがこれで代替できるようになる。

これこれ! よく言われているやつですよね。PWA(progressive web application)もこれのおかげでプッシュ通知が送れるようになったのですよ。

  • Google Cloud Functions for Firebase

これでイベントドリブンなアプリケーションの作成が可能になる。例えば、サインアップしたらメールを送る、といったようなときに便利ですね。

  • Firebase Hosting

スタティックなwebページはもちろん、HTML、CSSJavaScript等でできているwebページのようなアプリケーションを作ったら、ここで公開できます。

上記のRealtime DatabaseやCloud Firestore、Firebase Hosting等を簡単に扱えるSDK(Software Development Kit)が用意されている。サポートされているプラットフォームは、C++android、Unity、iOS、Web、Flutterなど。

  • Firebase UI

UIの構築をサポートする様々なキットが提供される。ログイン画面など。

  • Firebase Admin SDK

管理者権限の付与等ができる

  • ML Kit

Firebaseからテキスト抽出や、顔認識、バーコード読み取り等の画像認識機能を実践することができる。

参考にしたサイト:

【第1回】 Google の mBaaS 「 Firebase 」とは?【はじめてみよう Firebase】 | 株式会社トップゲート


クロスプラットフォームについて

基本的にこれは、モバイルアプリ(ネイティブアプリ)をiOSandroid同時に開発できる、という意味で使われていることが多いようだ。 「クロスプラットフォーム」というと、webエンジニアとしては、webとネイティブアプリ(iOSとかandroidとか)の クロス を思い描いてしまうのですが、世の中ではどちらかというと上記のような意図で使われているケースが多そうです。

ここにいくつも紹介されているのですが、7つ紹介されているものも、いくつかに分類できそうだと思いました。 どういう分類かというと、その人のいま現在の立ち位置(持っている技術)か、作りたいものによるものです。

まずは、ゲームを作りたい人向けのクロスプラットフォーム開発ツール。

  • Unity これはゲームアプリを作るツールと理解しています。

  • 中国で開発された、 Cocos2d-x というツールも、2Dのゲーム開発ツールだそうです。

次は、web畑でやってきた人向けのクロスプラットフォーム開発ツール。

  • Cordova 、これはHTMLやJavaScriptを使ってクロスプラットフォームモバイルアプリを作ることができる。

  • TitanumMobile 、これはJavaScriptを使ってネイティブアプリ実装ができるものだそうです。

  • 他にも、 ionic というのを聞いたことがあります。

ただ、昨今は、webアプリのまま使う、というのも増えてきているようですね。 FCMを使ったプッシュ通知もできるようになったし、サポートするブラウザも増えてきているようです。 私は使うとすると、今がweb系のエンジニアなので、ここになりそうだなと思いました。

その次、 VisualStudio や、これをベースにした Monaca は、VisualStudio使い手の人には良さそうですね。

最後に、 Xamarin 、これはiOSandroidを同時に作ることができるというやつですね。C++とか.Netを使うようです。 ずっとネイティブアプリ開発をしてきた友人にすると、Flutterやるのが最適。Xamarinも一応聞いたことがあるよ、という感触でした。

こちらのページには、2018年の時点での well-known cross-platform development tools が紹介されています。

  • Xamarin
  • Phone Gap
  • Sencha
  • Appcelarator
  • iFactr
  • Kony
  • AlphaAnywhere
  • RedHat

Xamarinはさっきも挙げました。

  • Phone GapAdobeが出しているもので、おそらくBETAが終われば課金されるやつ。

  • Sencha は、JS5でHTML5アプリを作ってPhoneGapを利用してネイティブアプリを作るということらしい。GoogleSamsungなどの大企業を顧客に持つが、1年あたり開発者5人まで30万程度、開発者20人まで120万程度という課金が必要になるぽい。(たけえな) `

  • AppCelarator は、企業向けらしい。値段も連絡しないとわからない。JSを使って開発できるらしい。

  • iFactr も企業向け。値段もわからない。めっちゃ簡単で勉強には3日間しかかからない豪語しているらしい。ネイティブアプリの生成には、XamarinやPhoneGapを使う。

  • Kony は、JavaScriptと、シンプルなドラッグアンドドロップを使って開発ができるらしい。月額15ドル。

やっぱ最近のプラットフォーム開発ツールは、道幅でとってくるサブスクリプションタイプの有料のが多いですね〜

  • AlphaAnywhere は、有料で1年20万〜。JavaScriptHTML5で作れる。

  • RedHat は、前は FeedHenry という名前のものだったらしいが買収されたのだとか。AWSとも組んでいる。企業向け。

うーむ。一通り見ると、いっぱいあるなぁ、クロスプラットフォーム開発ツール。 ただ、少なくとも企業向けのがっつり作り込んだツールは、私個人としては使えなさそうなので、やっぱりCordovaとかかなぁ。


いろいろ探していたら、Conpassで、HTML5 app conference 2018というイベントを発見!

近ければ行きたい! と思ったが、よく考えたら1年前だったw 日本Cordova普及会と、Ionic Japan Users Groupが開催しているぽかった。

Ionicは、Angularベースなんだって。

これでは、Monaca/Cordovaが紹介されてましたね。 HTML5アプリ もしくは、 HTML5ハイブリッドアプリという言葉が、 PWA(progressive web application) と同じくらい使われているぽい? まだこれは収束してないってことなのかな。もしくは、一応少しずつ違った概念を説明している言葉である可能性。

Capacitor とか、 ReactNative Dom というのも出てきているみたい。


そもそもネイティブアプリに遅れを取っているのってどのへん?

こちらを参照した。

  • レスポンシブ対応

  • Service Worker(オフライン対応とプッシュ通知)

  • Web App Manifest(ホーム画面に追加)

この辺ができていればPWAと言っていいそうな。 一個めはもはやできている。二個目もかなりできるようになっている。三つ目は・・・できるよね。んじゃぁだいたいのHTML5アプリはもはやPWAとして十分満たしているのでは。 あ、さっきの記事は、google chromeのみならず、Safariがこれについて実装終わったので、一気にwebアプリに流れがくるんじゃないか、って記事だったみたい。

Firebase + Vue がPWA開発にはオススメらしいぜ! うちもFirebaseに乗り換えようかなぁ(今更)

============-

なんかこれからきそうだぜ、と優秀そうなエンジニアさんが言っていた言語のメモ(便乗甚だしいw)

  • WebAssembly

略して、 wasm ともいうらしい。 JavaScriptみたいなブラウザで動くクライアントサイドスクリプトなんだけど、構文解析と実行が高速になるよ、ってやつっぽい(だんだん疲れてきて適当)

  • TensorFlow.js

これ、ブラウザで機械学習ができるよってJSらしい。何やらすごくなってきたなー

  • gRPC

RPCってのがイマイチまだわかってない・・・継続勉強です。HTTP経由でRest APIとかが通信すると思うんですが、RPCはHTTP/2を使うと書かれていた。あと、オープンソースだって。

今日はそんなところにしておきますー。 勉強進んだら書き足します!