BaaSのBはバックエンドとビジネス。MBaaSからIoT BaaSへビジネスの領域を広げるKii
IoTでもモバイルがひとつのキーになる
Kiiが提供しているIoT BaaSのサービスについて簡単な紹介をお願いします
いわゆるBaaS(Backend as a Service)と呼ばれる、ユーザー管理やデータ管理といったサーバ側の機能をまとめて提供している開発者向けのサービスです。Android/iOS、Unity、HTML5、JavaScript、Cなど幅広いプラットフォームや言語をサポートしています。元々はモバイルアプリ用に開発していたのですが、最近そこからIoTに領域を広げました。IoT向けには、Linuxなどある程度プラットフォームを想定して、CのSDKを提供しています。Cならほとんどの環境で動作するので、通信などの下まわりを切り替えられるような形で作っています。
IoTは非常に多様ですが、いろいろやるとサポートしきれなくなるので、今のところメインはCだろうと思ってやっています。Pythonも欲しいとか、モバイルだけどサーバも少し作りたいのでPHPも欲しいといったケースもありますが、そういう場合は他の人が既に作っているものもあるので、今はそれを活用している感じです。
「IoT」というキーワードを強く押し出していますが、石塚さんがイメージするIoTとはどんなものでしょうか? Kiiのサービスとしての位置付けや今後の市場予測についてもお聞かせください
僕らは、IoTがどんなものかはあまりこだわっていません。元々モバイルからIoTに広がってきたので、僕らにフィットするのは、まずはモバイルアプリと機器、あるいは機器同士が連係するようなサービスかなと思います。ただ、IoT全体で見ると様々なIndustry Verticalがあるのでそれらにも対応できるように機能拡張しているところです。僕らの技術が適用できる範囲はかなり広いと思うので、できるだけ入り口を広げて、ビジネスの領域を拡大したいと思っています。
個人的なIoTのイメージは、今はカオスで、バズワードだと思います。IoTと言われる物にもいろいろな層があって、例えばWeb系の人なら、とりあえず端末があってその中でNode.jsが動いたら、それはIoTデバイスだと言う人もいます。今までAndroidアプリを作っていた人が、Androidがこんなに小さい物にも載るようになったから、これでIoTになるのではないか、とか。ハードウェアと何かしら関係があったらIoTと言える状況なので、非常にごちゃごちゃしています。
元々の概念としては、インターネットが家まで来て、さらに何十センチか先の家電か何かが繋がっているという流れは確かにあります。そういうものがスマートフォンと繋がったり、あるいはスマートシティだったり、個々の概念はありますが、それが本当にIoTなのか。今までM2Mと言っていた物と何が違うのか、という気はします。別に否定するわけではなく、言葉自体にはあまり意味がないかなと。
確かに、M2Mという言葉はあまり聞かなくなりました
昔は「IoT/M2M」でしたが、最近はもうIoTだけですね。M2Mというと、ファクトリー系のことを指すようです。工場内の機械を制御するPLC(プログラマブルロジックコントローラー)などは昔からあって、それはそれで面白い世界ですが、工場内に閉じていました。それが、工場の作業員にアプリを持たせて何かするといった話も出てきていますから、モバイルはひとつインパクトがありそうな気がします。そういう意味では、僕らがモバイルから入ってきたというのは、アドバンテージとしてあり得る。
MBaaSからIoT BaaSにすると、端的に変わる部分はどこでしょうか
バックエンドとしては、実はあまり変わっていません。ただ使用される環境やプラットフォームが一気に広がるので、すごく難しいです。例えば、モバイルならアプリケーションのランタイムが決まっている。アプリケーションがどうインストールされてどう動いてという、ライフサイクルも完全に見える。IoTは、いきなりそこから分からないですよね。だから、ファームウェアアップグレードが可能かどうか、そもそもパーシステントなストレージを使えるのか使えないのか。何を前提とするかがものすごく難しいです。
共通化というか、標準化できないようにも思えるのですが
そうですね。IoTの世界は広すぎるので、誰かが「標準を立ち上げるぞ」と言っても、「でもここは違う」という人たちがいっぱいいる。だから、標準化は盛り上がりにくいと思います。通信方法など一部、標準化が必須の部分はありますが、IoTの開発環境を全部標準化するのは難しいですね。業界ごとにある程度の共通部分はあるでしょうが、特定の業界に絞ってしまうと、マーケットが一気に狭くなります。僕らはできるだけ抽象化して、共通化したものを提供したいと思っています。
マーケットを絞っていくとSaaSに近くなりますが、これは国ごとの文化的な違いもあります。日本人は、あまりSaaSを信じていないように感じます。SaaSは窮屈で、できるだけ自分でいじれる物を欲しがる、だからBaaSが合っています。ヨーロッパは、会社にもよるでしょうが日本に近いようです。逆に中国はSaaSが好きというか、SaaS的なものを期待します。だから弊社では、カスタマイズのプロフェッショナルサービスみたいなチームが中国にいます。米国は、変化や競争が激しすぎてちょっと読めない部分ですね。
日本だと自分たちで開発するよりもSIerが入るイメージがありますが
実際にそうだと思います。ただ、SIerが開発するというとサーバもSIer側でカスタム開発、というイメージを持たれると思いますが、実際は自社開発なりパートナーのプラットフォームを使用することがほとんどです。KiiもDNP(大日本印刷)やKDDIにKii CloudをOEMとして提供しています。彼らのインフラにKiiのコンポーネントを入れて、自社のサービスとして売っている。SIerはいくつもプロジェクトを手がけるので、同じ作業の繰り返しがあります。毎回サーバを作りたくない、開発をモバイル側、UI側だけに集中したいという場合は、BaaSが合います。
他に、IoTでは少ないですがモバイルアプリではユーザー企業でBaaSを使うのは、社内に開発部門があってエンジニアがいる場合もあります。今までモバイルチームとサーバチームがいたけれど、BaaSを導入することでサーバチームをなくせる。なくすまでいかなくても、それほど頑張らなくていい。ほとんどのアプリで同じことをしているならBaaSで共通化して、どうしてもカスタマイズが必要なものだけをサーバチームに頼むという体制にできます。BaaSは基本的な機能の組み合わせなのでカスタマイズし易いし、サーバコード(JavaScriptをアップロードしてAPIで繋ぐ)というオプション機能もあります。
もうひとつ重要なポイントは、サーバの開発をなくすとクライアントの開発だけになる。チームがひとつ減るということは、チームのインタラクションも減ります。サーバ側とUI側の衝突もなくなりますので、開発は早く楽になります。
初めからインフラを持たない企業も増えてきました。ただ、外部サービスを使ってスタートしたけれど、後でやはり社内に戻すというケースもあります。BaaSでもそういう揺り戻しは起きますか
Kii Cloudでは今のところないですが、起きる可能性はあります。ですので、Kii Cloudから出て行く時のサポートもするつもりです。
バックエンドのみでは成り立たない難しさ
BaaS/MBaaSと聞くとFacebookによるParseやGoogleによるFirebaseなどバイアウトのイメージが強いのですが、Kiiとして独立して事業を続けてきたコアコンピタンスはなんでしょうか
まず、Kii はIPOを目指しているのでバイアウトは狙ってないです。僕らが独立してやってきた理由は、独立系でないとプラットフォームとしての中立性を保てないからです。BaaSみたいな製品の場合、技術的な中立性は大事だと思うんですよね。それが、それが、事業会社に買われてしまうと、親会社の色がついてしまうのでプラットフォームとしての価値が減ると思うんです。
そうは言っても、ビジネス的な要請でプライオリティの差し替えのようなことがけっこう起きます。このタイミングでどうしてもこれが必要とか、こういうパートナーシップを組みたいからとか。その時に、これまでやってきた方向とは違うことをやる必要があって、現場としては「あれ、こっちじゃなかったの?」みたいなこともあります。
あえてエンジニア目線でいうと、そういう泥臭いところをエンジニアリング的にサポートしていったということがコアコンピタンスですかね。BaaSというと、とにかくAPIをきれいに作って積み上げればよさそうに見えますが、オペレーションが非常に大事ですし、実際は結構泥臭いです。
また、Kiiは他のBaaSと比べると、コンソーシアムを作ったり、SPACEという流通を含んだエコシステムを作ったりとビジネス領域のパートナーシップをしっかりやっているというのも特徴だと思います。
ビジネス的な要請は、どなたがリサーチするのですか
BD(ビジネスディベロップメント)や米国のプロダクトマネージャから情報が届きます。今こういった取引があってこの人はこういうものをが欲しい、と。優先順位をある程度合意したら、実際のエンジニアリングのリソースをどう割り当てるか、どういう順番でやっていくかを決めるのは私の仕事ですね。
BaaSのBが、バックエンドだけでなくビジネスを含んでいるようですね
ああ、なるほど。そうかもしれないですね。実は、米国ではBaaSという言葉があまり使われなくなりつつあります。バックエンドというのは響きとしてよくないかなと、僕らもいい単語を探しているのですが、まだ見つけられていなくて……。
下から積み上げるテクノロジーは日本人向き
これだけグローバルな展開をされている企業体で、日本に開発拠点を持たれている理由はあるのでしょうか
ぼくらは日本での開発にこだわりを持っています。なので今あえて、何も制約がなく米国に拠点を作るかというと、多分作らない気がします。ひとつはエンジニアのタイプが違っていて、下から積み上げるテクノロジーは日本のエンジニアの方がいいような気がします。手堅く作るのは日本人の方が向いているし、インタフェースをきちんと合わせるようなところも、日本人はできるだけ事前に合意を得ようとしますから。規模が大きくなっても、チームのやり取りの仕組みを頑張って作らなくても対処してくれます。
あとは時差の問題で、日本にヘッドクォーターがあって米国で開発というのは、実はやりにくいんです。時差は、ヨーロッパは逆にやりやすい。スペインにもエンジニアがいますが、こちらの夕方が向こうの朝になって、一日を有効に使ってもらえます。
開発体制の規模感を教えてもらえますか
さきほど話した中国のカスタマイズチームを除くと、開発のオフィスがあるのは東京とスペインで、合計すると40人くらいいます。Kiiは、元はシンクロアという会社で、Servo Softwareという会社を買収したのですが、そのServo Softwareはオフィスを持たない会社でした。なので、昔は海外で自宅から働く開発者もいました。ただ一般的な話として、僕は、自宅開発はあまり賛成ではありません。コミュニケーションがうまくいかずに何日も浪費することがあって、効率はよくないので。
フルスタックという言葉もありますが、IoTだとデバイスからネットワークからアプリまで幅広い知識が必要になりそうです。求めるエンジニア像のようなものがあれば教えてください
フルスタックかひとつのことに尖った知識を持っているか、どちらか片方というのは選べませんね。ただ、ある程度ひとつのことを深く知っていないとダメというのは、絶対にあります。そういう意味では尖っていないといけない。エンジニアは、コアとなる自分の得意分野があって、それについてならたいてい何の話でも分かるというものが必要です。ただ、それ以外はまったく知らないし興味もないというのでは困ります。そこからいかに横に広げていくかだと思います。
ひとつのことだけでは使えるところは少ないし、かといって、広ければ広いほどいいというわけでもない。サーバのエンジニアならネットワークやAPIの知識に加え、ブラウザやJavaScriptあたりのフロントエンドの技術もある程度知っておいた方がいいけれど、UIやレイアウトまでは知らなくてもいい。コアとその隣くらいを知っていればいいかな。隣といっても広いですが。
どこかで読んだのですが、採用の時に「今どこまでできるかという現時点のポイントの高さと、どちらに向かおうとしているかのベクトルの両方を意識した方がいい」と書いてありました。興味の範囲を広げたいという方向性はベクトルとして持っていて欲しい。でも、今できることの深みは、ある程度尖った部分がないと、なかなか実践では大変だと思います。
Think IT読者向けショートムービー
今後求められるエンジニア像についてお聞かせください
連載バックナンバー
Think ITメルマガ会員登録受付中
全文検索エンジンによるおすすめ記事
- 一流のエンジニアが集まるクックパッドで聞いたエンジニアのライフスタイルと求められるスキル
- 企業向け健康管理SaaSのCTOにインタビュー。Google、Amazonに負けないテックカンパニーとは
- GMOインターネット、バックエンドサービス「GMO mBaaS powered by backendless」β版を公開
- SIerの存在意義と抱える悩み
- Observability Conference 2022、TVerによるNew Relic One導入事例を紹介
- テスト自動化のMagicPodのCEO伊藤氏にインタビュー。テスト自動化の未来を語る
- Red Hat Summit 2015、ボストンで開幕- vol.01
- 「Pivotal Labsで作っているのはソフトウェアではなくてチームです」 東京オフィスのダイレクター、ダニー・バークス氏に聞く
- コンテナを導入しないと、どのような未来が待っていたのか?【前編】
- パッケージリポジトリのJFrogが日本法人を設立。日本人社員に聞いたJFrogの勘所