BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース モバイルに向かうNode.js: StrongLoopがオープンソースmBaaSをローンチ

モバイルに向かうNode.js: StrongLoopがオープンソースmBaaSをローンチ

原文(投稿日:2013/09/18)へのリンク

以前にエンタープライズ仕様のNode.jsディストリビューションをローンチしているStrongLoopが,今度はLookBackという,新たなオープンソースのモバイル・バックエンド・アズ・ア・サービス製品をローンチした。

モバイル・バックエンド・アズ・ア・サービスは,完成したバックエンド・ソリューションを既製コンポーネントの形で提供することによって,バックエンド開発の抽象化レベルを向上する。一般的に含まれるサービスは次のようなものだ:

  • ユーザ管理 (登録,ログイン,承認)
  • データストレージ
  • 解析機能

FirebaseParseなど既存のバックエンド・アズ・ア・サービスの多くは,ユーザのデータをサービス側データセンタに保存する,ホスティング形式のソリューションである。これに対してStrongLoopのLoopBackでは,ユーザ自身のインフラストラクチャ (ローンチ時点では6つのクラウド – Amazon, Heroku, Cloud Foundry, Red HatのOpenShift, Rackspace Cloud, Cloud9 IDE) – をサポートする) をホストとして使用することができる。ユーザ独自の変更や機能追加のサポートに加えて,すべてのデータへのアクセスも可能だ。

LoopBackの発表と同時にStrongLoopは,同社がShasta VenturesとIgnition Partnersからベンチャ投資として800万ドルの資金供給を受けたこと,CEOとしてIssac Roth氏が参加することも発表した。

InfoQは新CEOのIssac Roth氏に話を聞いた。

紹介ビデオの中で,Node.jsを使用してモバイルバックエンドを構築した例として,LinkedInなどいくつかの企業を紹介していますね。これらの企業とは直接コラボレートしているのでしょうか,あるいは共通点がある,インスパイアされた,などという意味なのですか?

Issac Roth: StrongLoop Technical Advisory Councilという,私たちの運営するフォーラムを通じてです。大規模で複雑なNodeシステムを運営しているメンバがお互いに学び,アイデアを交換する場であると同時に,私たちも彼らの実装からインスパイアされたり,そこから学んだりしています。StrongNodeの認定モジュールから,LoopBackのアーキテクチャや独自機能に至るまで,私たちの開発した製品の多くがこの会議から生まれました。Node Inspectorと関わりを持つことになったのも,ここでメンバ全員から "出来のいいデバッガが欲しいよね。" という声を聞いたからなのです。実現できていないリクエストもいくつかあります。例えば,npmはバイナリモジュールをコンパイルするのですが,ほとんどの場合,システムの運用マシンにはコンパイラを置きません。そのため,ビルド・アンド・デプロイ的な手続きをスクリプトで実現しなければならないのです。

JavaScript/Node.jsがモバイルのバックエンド開発に適したプラットフォームであるというのは,どのような理由からでしょう? Webアプリであれば,クライアントとサーバで知識やコードを共有できるという明確なメリットがありますが,モバイルの場合,ネイティブなアプリは大部分がJavaあるいはObjective-Cで書かれていますから,その理由は当てはまりません。あるいは,中心的なターゲットはモバイルWebなのでしょうか?

Issac Roth: ご指摘のように,モバイルWebあるいはハイブリッド (PhoneGapなど) なアプリケーションであれば,クライアントとサーバでコードを共有できますし,それはそれで素晴らしいと思います。

しかしJavaScriptならば,ほとんどの開発者が知っています。JavaScriptは優れたスクリプト言語です。動作も高速ですし,マスタするのも容易です。モバイルアプリを書く場合,スピードや帯域幅,バッテリを最適化するためには,ユーザのその時の操作に必要なデータのみをプッシュあるいはプルできるような,きめ細かなAPIがバックエンドになければなりません。顧客レコード全体を引き出してくるようでは,ユーザのモバイル計画は台無しです。そのためには画面上に配置するのはごく少数のフィールドにしておいて,ユーザがスワイプやボタンを押すことで次の画面に移ったときに次のデータをロードすることが望まれます。このレベルの粒度を実現するには,バックエンドAPIの開発やカスタマイズを継続的に行うことになるはずです。計算処理やデータのフェッチ,ソート,メッセージなども,処理効率を考えれば,できる限りバックエンドにまかせた方がよいでしょう。

そのためには効率的で,コード記述が早くできて,実行速度が速く,スケール性能がよく,自分がすでに知っている,そういう言語でプログラムすることが望まれます。ほとんどのモバイル開発者にとって,使っているプログラム言語がAndroid Javaでも,Objective-Cでも,JavaScriptであっても,この説明に一致するのがJavaScriptなのです。バックエンドのコードを速く書ければ,一般的にアプリの評価対象となるフロントエンドのインタラクションに,より多くの時間を使うことができます。Nodeを選択した人たちに聞いても,彼らがNodeを好きな理由として挙げるのは,とにかく早いから (実行速度ももちろんですが,コードを書くことも) なのです。

Nodeが言語あるいはエコシステムとして未熟なのは事実です。ですが急速に変化しています。実際に私たちは,Nodeの成熟を目指してStrongLoopを作りました。対処しようとしている問題はたくさんあります:

  • モジュールのエコシステムを探している時,どれが優秀で信頼できるものか分からない ... モジュールを認定し,それを支援するようにしました。
  • ツーリングの問題 ... Node Inspectorで実行したように,優れたツーリングへの投資を通じて,開発者の生産性やデプロイ,スケーリングなどを向上しています。StrongNodeではクラスタAPIとクラスタ管理を用意しました。この問題に対しては今後もオープンツール開発を継続します。
  • エラー追跡 ... Bartが先週発表したプロトタイプでは,これまでより容易にエラーをトラックダウンできるようにNodeを改善しています。
  • イベントを基本とするフロー制御が難しい ... これまでと違うスタイルのフロー制御のために,Qと非同期を採用しています。BertのTasks提案はこれを,さらに一歩進めるものです。

このようにNodeは,JavaScriptが何百万人というプログラマ人口を持ち,習得の簡単な言語であるという事実を活かして,世界クラスのプログラミング環境を実現しているのです。

mBaaSの原点は,それが本質的に既製コンポーネントで構成されていることにあります。本質的に "完成した" ,理想的にはハックの必要がないソフトウェアであるはずです。それならばLoopBackのユーザにとって,他の技術ではなく,Node.jsを使用して書かれていることのメリットは,どこにあるのでしょうか?

Issac Roth: ご指摘のとおり,通常は既製のAPIです。しかしほとんどのmBaaSは,既製の機能を拡張する方法で作られています。要するに,開発者によるカスタマイズが必要なのが普通なのです (例えばParseはこの"Cloud Code" を利用します)。興味深いことに,ほとんどすべてのmBaaSで,このようなJavaScriptを使用した拡張やJavaScript自体の使用が可能になっています。これはJavaScriptがモバイルバックエンドにおけるデファクト言語であることの,さらなる証拠と言えるでしょう。

LoopBackのクールな部分は,このアイデアを別のレベルで捉えていることです。"完成した"ソフトウェアのエコシステムが手に入ると同時に,コミュニティによるNode用モジュールの40,000という巨大かつ強力なエコシステムを使った拡張も可能なのです。LoopBackは独自実装ではなく,コミュニティの "標準" をベースとしています。データアクセスに新たな認証スキームが必要ならば,Passportを使用していますので,Passport用のプラグインであればどれでもスキーム取得に使用することができます。あるいはExpressプラグインで利用したいものがあれば,LoopBackで問題なく動作するはずです。

開発初期に話をした企業のアーキテクトは,これを "構成性(composable)" と表現していました。彼はコンポーネントを組み合わせてコア機能を拡張したいと考えていました。そうしてできあがったソフトウェアは,単に "完成した" ソフトウェアの部品を積み上げただけの,発展性のないものではありません。

プラスそれは,保障という意味でも優れています。もしベンダ(この場合はStrongLoop)がなくなったり,価格が高くなったような場合,他のmBaaSならばどうしようもありませんが,LoopBackならば自身でコードをハックする,あるいはコンサルタントを探すなどの方法で,自分の望む方向に進むことができます。

オープンソースのLoopBackはWebサイトからダウンロード可能だ。

この記事に星をつける

おすすめ度
スタイル

BT