読者です 読者をやめる 読者になる 読者になる

(5)デプロイ王子のクラウド寺子屋 4時間目(2016/01/25)

順調に4時間目をむかえた、「デプロイ王子のクラウド寺子屋」、本日は Mobile Apps のハンズオンです。

いままで、クラウドという概念について学び、Microsoft Azure の世界について概要を学び、ウェブサーバーを構築して wordpress をインストールし、メディアサービスを構築して、動画配信をしました。

今回は、更に進んで、Mobile サービスをつくってみます。
繰り返しますが、Azure の世界を知り、ウェブサイトをつくり、動画を配信して、Mobile サービスができれば、あれ? なんだか、あっという間にわたしたち、メディア配信を伴う、レスポンシヴなサービスを展開できてしまうのでは……?

さて、Mobile サービス、これは今まで学んできた IaaS、PaaS、SaaS などの概念に沿って、「mBaaS」と呼ばれているそうです。バックエンドサービス、としての「BaaS」、プラスオン Mobile、ということですね。

Mobile サービスを Azure 上で利用するメリットは非常に大きく、下記のようなポイントが挙げられます。

  • 開発費、設計費の削減
  • バックエンド知識がなくてもサーバーと連携したアプリ開発が可能になる
  • 各社の仕様にとらわれることなく、マルチデバイス向け開発が可能になる
  • 迅速なサーバー構築、運用管理の負担とコスト軽減

コストや工数の削減というメリットは、もちろん IT の恩恵の最もたるところかもしれませんが、Azure が目指す世界は、「バックエンドについて無知であっても」「安全に」「簡易に」ITの世界を広げていくことができる、というものだということが、このサービスを 1つとってもよくわかります。

たとえば、API をつかって、いろいろなサービスを連携させたい、という場合に、認証API であれば、Twitter 連携、Facebook 連携、ほかにもGooglePlus、mixiInstagram……いろいろなものでそれぞれの認証仕様があります。自力でプログラムを書いて、いろいろなサービスに連携させようとすると、if文などで、「こういうケースはこう、こういうケースのときはこう……」と、いったいいくつのケースを想定して記述すればいいのか、気が遠くなります。プログラムをかけないわたしにとっては、想定した時点で、「思いついたことを形にするの、やーめた」となりそうです。

ところが、Azure の Mobile Apps サービスを利用すれば、主だった連携も、すでにテンプレート化されて用意されており、ボタンクリックなどによって簡単に設定できます。わたしのような、プログラムと聞いただけで目眩がしそうなほどの、なにひとつ「書けない」わたしにも、SNS連携認証ができてしまうのです。

ということで、今回は Azure が持っている html5JavaScript のサンプルを使って、TODOリストのウェブページを、ローカル環境で動作確認します。

MobileApps から新規作成で、新しいサービスを構築して、html サンプルを入手。クリックをして画面が進むと、いつのまにか自分の端末のなかに、ローカル用のIIS(ウェブサーバーサービス)がインストールされて、ウェブサンプルのTODOリストを見ることができました。

ぽちぽちとサンプルタスクを入力したり削除したりしてから、Azure 側のデータベースサービスを覗いてみると、きちんとそこに、自分が入力したタスクが見えています。ローカル環境で試していたのに、全部通信でAzure側に格納されていたんですね。JavaScriptのコードによって、バックエンドで、ローカル環境とデータベースオン間できちんとデータがやりとりされていたという解説があり、JavaScript がわからなくても、仕組みはなんとなく理解できました。

さて、ここでそもそも、Database、とはなにかといえば、箱のなかにモノ(お財布…お水…ケーキ…など)が入っている状態、その状態を保っている箱、を指します。

箱とひとくちに言っても、いろいろな種類や大きさが有りますよね。たとえば 500ml のペットボトルが 2本入るサイズの箱で、冷たいものが入ってもいいように防水処理がされていて、だとか、定期券の 100枚入る厚み、だとか。

そういう、入るものの定義(数値なのか文字列なのかといった種別や、桁数など)が決められて箱としてある状態がデータベースなわけですが、この定義をこつこつ自分で組み立てるのはとてもたいへんです。

TODOリストのサンプルでやりとりした、タスクデータ。たとえばこれを、
「TO」「DO」「完了チェック」
という3項目で作成していた途中で、「完了日」「達成度」という項目も追加したくなったら、このデータベースの定義からやり直して、箱を作りなおさなくてはいけません。

本来はこの作業は、エンジニアが行います。仕様変更が怖い、という話をよく聞きますが、そういうことなんだと思います。一度名刺がおさまっていた箱を、はがきが同じだけ収まる箱に作りなおしてくれと言われたら……「たかが箱でしょう」とはとても言えないということが、こう考えるとよくわかります。

ところが、Azure で MobileApps を利用してデータベースサービスを連携させると、この「定義のやり直し」も、拡張や縮小もすべて、自動でバックエンド処理されます。仮に、わたしが、

「html も JavaScript もかけるけれど、サーバーのことはわからないし、データベースもわからない」

という状態であっても、データベースにデータを送り込むスクリプトが書ければ、アプリケーションを公開することが可能です。

合間にJavaScriptスクリプトについての解説、開発者モードによるブラウザのソースコードを追っていく機能、前述のようなデータベースの説明を経て、MobileApps のハンズオンは終了しました。

このクラウド寺子屋に参加した10名は、全6回(+0回め)の出席を約束できるという前提で登録・抽選を経たメンバーです。プログラム経験者、インフラ経験者、デザイン経験者もいますが、一方で、インフラ初心者、プログラム初心者も半数ほどいます。この寺子屋で初めてWordPressを知ったひとや触ったひと、初めてコマンドラインを見よう見まねで打ったひと、Node.jsやJSONということばを知ったひと、IISにさわったひと、普段からVisual Studioを触っていろいろな言語で開発をしているひとまで、スキルセットも幅広いメンバーです。

仕組みがすべて理解できた、とまでは言えませんが、それでもわたしたちは今、やろうと思えば、この4時間めまでの授業を経て、サンプル動画を配信し、サンプルTODOリストを配信することができます。誰かが、「こんなアプリをつくったんだけど、サーバーで動かすやり方がわからないんだ」と言うことがあれば、「Azure でできるんじゃないかな?」と考えることができます。「どんなサービスなの? どんなことができるの?」ときかれたら、簡単にだったらアドバイスすることもできるかもしれません。

これが、「知っている」ということで、「学ぶ」ということでした。

「選択肢が増える」ということ。

デプロイ王子、こと廣瀬さんがわたしたちに示している道は、そういうものでした。

  • 開発費、設計費の削減
  • バックエンド知識がなくてもサーバーと連携したアプリ開発が可能になる
  • 各社の仕様にとらわれることなく、マルチデバイス向け開発が可能になる
  • 迅速なサーバー構築、運用管理の負担とコスト軽減

ただ、大切なことは、「正しく知り」「正しく伝える」こと。

ITの、難易度というひとを選ぶ壁は、徐々に下がり始めています。Azure は、たくさんの壁を壊し、ひとにITの世界を与え続けます。わたしたちがそれを、安易に使うことの可能です。その安易さの裏には、たくさんの落とし穴がまだまだあります。ITは完璧ではありません。ITはすべてではありません。ヒトの手が必要な技術を肩代わりするけれど、ITがヒトの代わりに考えたり判断したり創ったりする世界は、まだまだ先の世界です。だからわたしたちが今、すべきことのひとつとして、「正しく知り」「正しく伝える」ことが、たぶんとても大切なのだと、そんなふうに思う、クラウド寺子屋です。

……それにしても、Azure、ほんとに便利。賢いなあ。