去年のブログの答え合わせとかServerlessconf LondonでのAWS IoTの話とか雑記

セクションナイン吉田真吾@yoshidashingo)です。

この記事はSORACOM1周年記念リレーブログの10/17分です。 blog.soracom.jp

昨日からServerlessconf Londonに来ています。

朝日が昇る時間が遅いので朝7時のラッシュアワーでもまだ幻想的な感じです。

気になっていたFabricですが人気がまったくなくてすっかりサビれた感じでこりゃ復活はないなといった印象。

さて、去年、こんなエントリーを書きました。 今年は残念ながら SORACOM Air がつながる場所にいないので、こちらの答え合わせといくつかよもやま話をしたいと思います。最初に言っておくとあまりオチはないです。

yoshidashingo.hatenablog.com

答え合わせ

海外から日本への渡航者向けプリペイドSIM

私が予想するなんかより早く事業として着手していたんでしょう、SORACOMのリリース後ほどなくリリースされたeConnect JapanさんのJapan Prepaid SIM、30日間から使え、独自のアプリでサービスの開始や停止などコントロールできて非常に便利なSIMです。

www.econnectjapan.com

音楽ストリーミングサービス専用SIM

SORACOMとは関係ないですが、LINEモバイルが月額500円でLINEのトラフィックをノーカウントにするという話が上がりましたがLINEミュージックは対象外ということで、インターネットの中立性の話や、そもそもストリーミングをカウントしないというのはなかなか事業として成立しないという背景があるかもしれません。

https://mobile.line.me/pdf/linemobile_countfree.pdf

DJプレイのリアルタイム共有サービス

これはまだIoT的な分野で出てきてませんが、SpotifyなどでDJプレイできるターンテーブルがすでに販売されてるので、セットトップボックスを設置してプレイリストをシンクロさせることで、音声を拾わなくてもDJプレイをお茶の間でリアルタイムに再現するラジオチャンネルみたいなのはできそうですが、ないですね。この際ちょっと作ってみようかな。

ソーシャル自爆ボタン

これはネタなのでアレですが、そもそも大手SNSにおいては本人死亡時に家族の申し立てで設定変更ができる追悼アカウントというのもあるそうです。ただ、自分の知り合いでもいくつかすでに訃報に触れてはいますが、特に追悼アカウントが運用されている感じはないですね。今後に期待です。

https://nanapi.com/ja/128783nanapi.com

今後

さて、先日こんな記事が出ていました。

jp.techcrunch.com

SORACOM vConnec CoreをKDDIに開放し、KDDIが事業主体となってSORACOM Airと同様のサービスを提供するというものです。 すでにKDDIは自社が回線プラットフォームとしてMVNE/MVNOに提供していることから、vConnec Coreを使う意味を考えると、Beam以降のサービスを提供(するんじゃないかという仮定に基いて書きますが)することこそが価値だと思いますし、でなければ回線プラットフォームがSORACOMと組んだメリットが見いだせません。

SIMを組み込んだデバイスからKDDI網の内側を通してセキュアな環境でデータ収集やデバイスへの通信が行えるというのがひとつの売りになっていくんじゃないかと思います。

Building better IoT Applications without Servers

ゆうべたまたまスピーカーディナーの前にAWSのテクニカルエバンジェリストのIanとTrek10のJaredと居合わせたのでちょっと呑んで、今日も午前中からServerlessconf LondonのセッションでIanがIoTの話をしていたのでその話をリポートして締めたいと思います。

IoTのデバイスについての雑感

  • CPUパワーが弱い、バッテリーをたくさん積めない。

IoTの課題

  • デバイスへのアプリケーションのデプロイ
  • セキュリティ
  • デバイスとの接続は低電力で行わなければいけないし使われる場所の電波がよいとは限らず、実際不安定であることがよくある。
  • デバイスの認証/認可
  • デバイスの登録
  • 予測的な分析、可視化

AWS IoTでの解決方法

上記のすべての課題を解決するためにAWSが展開しているのがAWS IoTです。

  • レジストリにデバイスのメタデータを格納することでデバイスの登録管理ができます。
  • デバイスのアプリケーションにSDKを埋め込むことでTLSで暗号化されたデータ通信が可能です。
  • サーバー側から端末にアップデートのトリガを送るときなどもDevice Shadowを使うことでデバイスの電源状態を気にせず非同期にコマンドを送信することができます。

ということで、IoTプラットフォームはAWS IoTのようなプラットフォームに乗ると便利ということで、あとは回線事業者だからこそ提供できる網の内部を通してインターネットを経由しないでデバイスとサービス側のアプリケーションをつなげる仕組み、まさにSORACOMが提供している部分を活用していくことが重要なアプローチですね(一例でいえば端末で暗号化せずにMQTTでSORACOMに投げて暗号化した状態でSORACOMからサーバーアプリケーションに投げるというのは上手い例だと思います。)

AWS IoTボタンを使ったちょっと面白いプロジェクト

セッションの最後にAWS IoTボタンを使った実例がいくつか紹介されたので掲載しておきます。

  • Ping Pong Showdown

www.hackster.io

  • A Slack-powered doorbell

www.andrewmcgill.me

  • Emergency Sweet Green Ordering

www.andrewmcgill.me

  • Nerding Out With the Amazon IoT Button

medium.com

www.slideshare.net

3分ではじめるWebtask

セクションナイン吉田真吾@yoshidashingo)です。

各社FaaSプラットフォームを提供していますが、Auth0という認証SaaSの別プロダクトであるWebtaskの話をServerlessconf Londonで聞いているところなので聞きながら試してみてます。

Getting Started

  • Webtaskのサイトにアクセスします。

https://webtask.iowebtask.io

  • GithubやFacebookなどでログイン(アカウント作成)します。

  • wtクライアントをインストールします

$ npm install wt-cli -g

ちなみにこのクライアントはオープンソースで開発されています。

github.com

  • 環境の初期化をします
$ wt init <作成したアカウントのメールアドレス(https://webtask.io/cliにあらかじめ表示されています)>

Please enter the verification code we sent to <メールアドレス> below.
Verification code:

メールアドレスに6桁の確認コードが届いているので入力して環境の初期化をします。

  • サンプルコードを試す
$ echo "module.exports = function (cb) {cb(null, 'Hello');}" > hello.js
$ wt create hello.js

Webtask created

You can access your webtask at the following url:

https://xxxxxxxxxxxxxxxxxxxx.run.webtask.io/hello?webtask_no_cache=1

こんな表示が出るのでURLにアクセスすると、コードが実行されて画面に表示されますね。

f:id:yoshidashingo:20161027215119p:plain

  • ちょっとコードを編集してみましょう。
$ wt edit hello

と入力するとブラウザ上がエディタが起動してコードが編集可能になります。

f:id:yoshidashingo:20161027215525p:plain

コードを以下のように編集して実行すると、

var view = (function view() {/*
    <html>
    <head>
      <title>Welcome to Webtasks</title>
    </head>
    <body>
      <h1>Hello, <%= name %></h1>
    </body>
    </html>
*/}).toString().match(/[^]*\/\*([^]*)\*\/\s*\}$/)[1];

module.exports = function (context, req, res) {
  console.log('hoge');
  res.writeHead(200, { 'Content-Type': 'text/html' });
  res.end(require('ejs').render(view, {
      name: context.data.name || 'Anonymous'
  }));
}

HTMLをレスポンスして f:id:yoshidashingo:20161027221115p:plain

ログ出力されるコードが簡単に実行できました。 f:id:yoshidashingo:20161027220957p:plain

実行環境について

Webtaskの実行環境も他のFaaSと同様にコンテナベースでできており、Dockerをベースにしているそうです。(かつ常に実行環境が裏で事前にプロビジョニングされておりウォーミングされている)

その他のアクション

セッション内ではデモとしてSlackを使ったChatOpsが披露されていました。

それ以外にもGitHubのリポジトリにサンプルがたくさん入っており、Webtaskにホストしているコードをスケジュール実行する方法や、認証後のJWTの内容を自分でカスタマイズする方法などがあり、結構有用かもしれないと思っているところです。