Bluemix Challengeで競われたのは、IBMが提供するPaaS環境「IBM Bluemix」(以下、Bluemix)を利用して開発されたアプリケーションやサービス。応募総数259件から、第1次審査(書類と動作の確認)、第2次審査(審査員によるディスカッション)を経て、最優秀賞1名、優秀賞2チームが選ばれました。
授賞式やパネルディスカッションが行われた後、CodeZineでは、受賞者にお集まりいただいて座談会を実施。受賞アプリの開発やその過程で感じたBluemixの魅力などについて話をうかがいました(聞き手は、CodeZine編集部 市古 明典)。
Bluemix Challengeの受賞者と受賞アプリ
最優秀賞、優秀賞を受賞されたのは、以下の皆さんです。
最優秀賞
アプリ名
「BLUECOUPON」
受賞者
猪谷 貴姿子氏
BLUECOUPONは、iOS 7のiBeaconという近距離無線通信機能を使ったクーポンの発行システムです。iPadアプリにiBeaconのサーバとクライアントの両方の機能を実装し、クーポンの発行から利用までを1つのアプリで実現します。
iPadを2台以上用意し、1台をサーバ、それ以外をクライアントとして起動します。クライアントは約50メートル内にサーバを発見すると、クーポンをダウンロードできます。サーバは、クーポンの作成、Bluemix上へのアップロードに加え、実際にダウンロードされて使用されたクーポン数のグラフ表示機能、Salesforceとの連携によるリード(見込み客)管理、Twilioとの連携による電話会議といった機能をサポートしています。
猪谷氏は、Javaやオブジェクト指向を使ったシステムの開発を経験し、現在はインベントリ管理システムの開発・運用に携わっています。最近、iOSでの開発も始めたそうです。
優秀賞(1組目)
アプリ名
「chirpbox」
受賞チーム
Pセ21G(株式会社日立ソリューションズ カーセム・ユーセフ・カマール氏、岸田 博幸氏、長堀 哲氏)
chirpboxは、翻訳機能を備えたチャットアプリです。相手のチャットの言語を自動認識し、選択した言語で翻訳して表示します。9カ国語に対応しています。開発期間は約1ヵ月。
カマール氏はレバノン出身で来日4年目。東京大学大学院を卒業後、株式会社日立ソリューションズに入社し、現在はC/C++/C#のアプリ開発に従事しています。同僚である岸田氏(座談会は欠席)は同じくC/C++/C#のアプリ開発、長堀氏はJavaのライブラリ開発を行っています。
優秀賞(2組目)
アプリ名
「Sleeff」
受賞チーム
aclab team a(筑波大学 小木曽 里樹氏、川岸 卓司氏、青木 拓也氏、古川 聖也氏)
Sleeffは、蓄積した睡眠量や活動量および予定から、最適な睡眠を提案するアプリです。直近3日分の予定に合わせて、取るべき睡眠の長さや期間、提案された睡眠を取った場合の体力推移予想を表示します。開発期間は約1週間。
小木曽氏、川岸氏、青木氏、古川氏は筑波大学の音響システム研究室に所属。なんと全員、Webアプリ開発は初めてだったそうです。
受賞された皆さんにBluemixでの開発について感想を聞いてみると、従来のWebアプリ開発と大きく異なる体験であったことが浮き彫りになりました。初めてWebアプリ開発に挑んだaclab team aの皆さんも、戸惑う部分はありながら、BluemixとIBMの提供する開発環境のサポートがあって完成までこぎつけることができたようです(次ページから、座談会のトークです)。
アプリのアイデアはどこから?
CodeZine ► Bluemix Challengeに応募した理由を聞かせてください。
猪谷 ► IBM developerWorksの記事を読んでBluemixに興味を持ち、コンテストが開催されることを知って応募しました。
カマール ► 新人研修の一環としてWebアプリを開発することになったことがきっかけです。クラウドでの開発に興味があったのですが、PaaSのBluemixの存在を知って、応募することにしました。
小木曽 ► 大学でBluemixを紹介する授業があり、Bluemixのコンテストを知りました。これまでWebアプリ開発の経験がなかったので、これを機会に学んでみようと思い、応募を決めました。
川岸 ► 言い出したのは私で、小木曽がアイデアを出しました。その後、青木と古川を巻き込んだ形です。
CodeZine ► Bluemix Challengeでは、アプリのアイデアが審査のポイントになりました。アプリのアイデアをどこから得ましたか?
猪谷 ► まず、BluemixとiOS 7のiBeaconを使って何かを作ってみたいと思いました。クラウドを使うこと自体が初めてだったので、いろいろなサービスがどのように連携できるかを考え、最終的に仕組みとして一番わかりやすいクーポンを選びました。そのため、同じようなビジネスモデルであれば、クーポン以外のものでもカスタマイズ可能な仕組みになっていると思います。
カマール ► 毎日のようにチャットを使っているので、チャットアプリを開発しようと考えました。せっかくなら、楽しくて便利なものを作りたいと思い、個人の経験から何を作りたいかを考えました。会社では、私は英語が得意ですが、他の社員は当然日本語が得意なので、コミュニケーションを取るのが大変な場合があります。日本人の友人も多いのですが、友人に日本語でうまく言えないことがあるし、逆に友人も英語でうまく言えないことがあります。そこで、自分の言葉を翻訳できる機能を付けようと思いました。
小木曽 ► 研究などで徹夜が続くと、どこで睡眠を取れば授業を乗り切れるだろうか、と思うことがあります。そんなときに便利そうなスマホなどの睡眠アプリは、睡眠の質や量を計測してくれますが、計測するだけでどこでどのように睡眠を取ればよいかは教えてくれません。そのため、睡眠を提案する部分を自分たちで作っていこうと考えました。実際に睡眠に関するデータを蓄積していたので、それを何とか使いたかったという理由もあります。
川岸 ► 睡眠データとGoogleカレンダーの予定から睡眠を提案するためのアルゴリズムは、みんなで討議して決定しました。その他にもいろいろとやりたいことがあったのですが、今回は間に合いませんでした。
ポイントはいかに手を動かさずに実装するか
CodeZine ► アプリの開発ではどのような機能や言語を使いましたか?
猪谷 ► サーバにはNode.jsとJavaScriptを使いました。Twilioとの連携ではPHP、iOSで動く部分ではObjective-Cを使っています。インターフェイスには、Webアプリ開発のフレームワークであるjQuery Mobileを利用しました。
カマール ► サーバでNode.jsとJavaScriptを使いました。また、チャットアプリのインスタンス管理にRedisを使っています。いろいろなデータベースがありますが、Redisのキーバリューストアが高速であることから、選択しました。言語の自動認識と翻訳には外部のAPIを使用しています。
小木曽 ► 私たちが使ったのもNode.jsとJavaScriptです。睡眠や活動のデータはJawbone UP(運動や睡眠などのモニターするリストバンド)で蓄積します。また、Googleカレンダーに登録した予定を読み込んで利用しています。
CodeZine ► Bluemix Challengeはアプリケーションコンテストには珍しく、コーディングテクニックを競うものではありませんでした。また、なるべくコードを書かずに済む点が、BluemixをはじめとするPaaSのメリットと言えます。実際に書いたコード量はどれくらいですか?
猪谷 ► 一番多くコードを書いたのはiOSで動く部分です。その他はサービスとの連携部分ですが、それほど多くはありません。今まで経験してきたアプリ開発と比べると、全体的にコード量は少ないです。
今回Node.jsを初めて使ったのですが、結構簡単にコードを書けるんだなと思いました。iOSと他のサービスとの連携はJavaScriptを介してiOSの特定のAPIを利用するというイメージで、こちらも慣れると簡単でした。
カマール ► Node.js、JavaScript、HTML、CSSを合わせて1,000行くらいです。コード量が多かったのは、サーバ管理やRedisのキーバリューストアを扱う部分でした。翻訳APIを呼び出す部分は数行のコードで済みました。
青木 ► WebのUIで200行くらい、それ以外で400~500行くらいです。Bluemixをはじめ、Node.jsやJavaScriptも使うのは初めてだったので、コードを書くことより、その前に使い方を理解するほうが時間がかかりました。
CodeZine ► コードを書くための開発環境には何を使いましたか?
猪谷 ► それほどコード量が多くないのと、1人で開発していることもあって、EmEditorというテキストエディタでコードを書き、cfコマンドでデプロイを行っていました。
カマール ► JazzHubを選択しました。Bluemixでアプリを作ると、ワンクリックでGitリポジトリが作られ、すぐにJazzHubでコーディングできるようになります。他の開発環境を使うと、自分でコードをダウンロードしなければなりません。また、スマホなどどこからでもJazzHubに入ってコードを修正できるので便利です。
小木曽 ► JazzHubを使いました。慣れないうちは、修正したコードがデプロイされず、戸惑ったこともありました。デプロイしたいコードは、自分の場所から共有の場所に移さなければいけないんですね。
BluemixからワンクリックでJazzHubに飛んでいけるのは、私もすごく便利だと思います。
サーバ乗っ取りなどの心配もいらなかった
CodeZine ► Bluemixによるアプリ開発を経験してみて、オンプレミスの開発環境と違う、あるいは魅力的と思ったところを教えてください。
カマール ► これまでクラウドでの開発経験はなかったのですが、Bluemixを利用してみて、アプリをスムーズに開発できる点がすばらしいと思いました。Webアプリを作る場合、普通はサーバやデータベースの管理など面倒な作業が必要になりますが、Bluemixなら使い始めてすぐにコーディングを始めることができます。
猪谷 ► ワンクリックでサービスを追加できるのが新しい感覚だなと思いました。これまで経験してきた開発環境では、使用するサーバやデータベースが決まっていましたが、Bluemixにはいろいろなサービスがあり、ワンクリックで簡単に追加や切り替えができるところに自由度を感じます。すごいなと思ったし、使っているうちに楽しくなりました。
インフラが専門ではない開発者にとっては、実行環境を簡単に準備できるところが魅力的だと思います。
小木曽 ► Webアプリは、サーバを立ち上げて公開しなければなりません。そうすると、サーバの乗っ取りなどセキュリティ上のリスクを考える必要がありますが、そういった心配がなく信頼して利用できるのでありがたいです。
デバッグ用にローカルで実行環境を用意したときに、設定を間違えて動かなくなったことがありました。Bluemix上では面倒な設定なしに実行環境が整えられるので、とても助かります。何か問題があっても、実行環境は動くという前提があるので、原因が自分たちの書いたコードにあることが容易にわかります。
青木 ► 他のPaaSを使ったことがあるんですが、それと比べると、Bluemixは管理画面がわかりやすいと思いました。
Node.jsやJavaScriptを使った開発は手軽です。実行環境も簡単に用意できるので、いろいろなことを試せるし、やりたいことがすぐにできちゃうと感じました。今回は使いませんでしたが、ビルドパックを使ってみると楽しそうと思いました。
CodeZine ► 逆に、Bluemixを使った開発で困ったことはありましたか?
青木 ► ネットワークの制限のためにローカルにデバッグ環境を用意できず、本番環境でデバッグしました。本番環境でのデバッグは大変なので、できればクラウド上に本番環境だけでなくデバッグ環境が用意されているといいなと思います。
古川 ► デプロイの時間です。Node.jsとデータベースを一緒にデプロイすると、数分以上かかるときがありました。先ほどIBMの方に教えてもらったのですが、データ量が多かったり、ネットワークが重かったりすると、デプロイに時間がかかることもあるということでした。
カマール ► クラウドでの開発は初めてだったので、困ったときにはBluemixのコミュニティ[1]に相談しました。Redisも初めてでよくわからなかったので、コミュニティに入ってアドバイスをもらい、APIの使い方を教えてもらったりしました。
猪谷 ► 私もコミュニティ[1]に相談しました。デプロイがときどき失敗することがあったんですけど、相談したらすぐに対応してくれました。
小木曽 ► Webアプリの開発は初めてだったので、Webアプリの作り方を紹介するサイトを参考にしようと思ったのですが、Bluemixを使ったWebアプリ開発を説明するサイトはほとんどありませんでした。Bluemixではワンクリックでさまざまなことを実行できますが、その裏で何が行われているかを解説するドキュメントがあれば参考になると思います。
CodeZine ► Bluemixに今後期待したいことは?
猪谷 ► 具体的なアイデアはまだありませんが、IBM WatsonのQ&Aサービスが提供されたら利用してみたいです。
カマール ► 時間の制限があり実装できませんでしたが、SSO(Single Sign On)機能を使って、チャットアプリをFacebook、Twitter、Googleなどのソーシャルメディアに接続することを考えていました。
Bluemixはまだ新しいプラットフォームなので、今後利用できるサービスが増えていくでしょう。今回はアプリに必要な翻訳APIを自分で探して調べるのに時間がかかりましたが、将来的に翻訳のサービスが利用できるようになればいいなと思います。
小木曽 ► 今回はJavaScriptでコーディングを行いましたが、将来、1行もコードを書かずにアプリを開発できるようになればいいなと思います。
[1] カマール氏、猪谷氏が相談したのは英語のBluemixコミュニティサイト。日本語のBluemixコミュニティサイトはこちら。
スキルが不十分でもアイデアはある人にこそBluemixを使ってほしい
CodeZine ► ここまで、皆さんから「初めて」という言葉が何度も出てきました。Webアプリ開発自体が初めてという方でも受賞レベルのアプリを開発できるBluemixですが、そうは言っても、Webアプリに関する知識はある程度持っていないと、やはり開発は難しいのではないですか?
猪谷 ► 知識がないと使うのが難しいとは言いませんが、Webアプリに関してWebサーバがあって、データベースがあって、……といった最低限の知識があるとよいと思います。
カマール ► Webアプリを開発するときは、ユーザの立場から見た目を考えたり、バックグラウンドで動いているアプリの内容を考えなければいけませんが、プログラミングに関する知識があれば、それを基に勉強してBluemixでWebアプリを作れるようになると思います。
小木曽 ► Webアプリ開発では、アプリ自体より、Webサーバやデータベースなどの環境を作る知識が求められます。Bluemixではそういった実行環境を作ってくれるので、JavaScriptやAPIを利用する知識があればWebアプリを開発できると思います。
CodeZine ► 最後に、Bluemixに興味を持ち、利用してみたいと思っている読者に向けてメッセージをお願いします。
カマール ► 自分の経験から言えることですが、Bluemixではスムーズにアプリを作成できます。アイデアさえあれば何でもできるので、ぜひBluemixを使ってほしいです。
長堀 ► アプリ開発にはスキルが必要ですが、スキルが十分ではなくてもアイデアはあると思います。そういう人たちに、積極的にBluemixを利用してアプリを開発してほしいです。チャレンジしてください。
猪谷 ► 今までWebアプリの開発に携わっていた人でも、サービスを簡単に追加できる感覚は今までにはないものだと思います。一度体験して楽しさを味わっていただきたいです。
川岸 ► まったく経験がなかった私でも、大学の授業でのハンズオンでBluemixを使えばすぐにアプリを開発できることを体感して、やってみようという気持ちになりました。まずはBluemixを体験してみてください。アプリ開発のプロセスを踏むことができるので、開発の経験がなくてもそれをきっかけに勉強していけば、いろいろなことができるようになります。
青木 ► Bluemixでは、ブレッドボードに電子部品を挿していくようなイメージで開発ができたので、おもしろかったです。とても取っ付きやすいし、触っていて楽しいので、ぜひBluemixを使ってみてください。
CodeZine ► ありがとうございました。
IBMはBluemixのフリートライアルを30日間無償で提供しています。Bluemixを利用して、これまでとは異なるクラウド時代のアプリ開発を体験してみましょう。