前編に引き続き、生徒の各チームの活動を紹介します。
全部で7チームありました。同じテーマで取り組んだチームもあったので、この記事では一部取りまとめて4つのチームの成果を紹介します。
開発期間は、1ヶ月ほどでしたが、授業時間外を使ったり、Trelloでベネッセの社員にタスクを振って開発を推進するように指示したり、各チーム工夫しながら、なんとか思い描くアプリを作り切ることができました。
またそれと同時に、アプリ開発はこんなに大変なのかと、これまで何も考えず使ってきたアプリに、少し尊敬を覚えるようになったという意見もありました。
チーム1: 雨が降る日なのにカサを忘れてしまう → 家を出る時にカサが必要か否かを通知するLineボット
朝、家を出るときにカサを持っていくべきか否か。高校生のよくある課題を対象に、多くの高校生が使っているLineを組み合わせて、毎朝カサを持っていくべきかどうかを通知してくれるアプリを開発してくれました。
アプリはとてもシンプルで、毎朝指定された時間に、天気予報APIを使って天気予報を取得。通学・帰宅時間に雨が降るかどうかを判断して、通知をするだけです。
プログラムとしては、Lineからpush通知する方法や、指定時刻にアプリを起動する方法などを工夫しながら、実装できました。
使ったのは、Open WeatherMAPのWeather API。無料で3h毎の天気予報を取得することができます。
チーム2: 最近はアイドルが多すぎて誰が誰だかわからない→顔認識アプリ
最近のアイドルの顔と名前が一致しなくなってきたという、今時の高校生らしからぬ?課題に対して、顔認識APIを使って解決しようと挑戦したアプリ。とはいえ、人数の多いアイドルを対象にすると、準備が大変ということで、5人でチームメンバー全員が大好きな嵐をターゲットにアプリ作成を行いました。
嵐の写真では色々問題があるので、筆者を「その嵐はだれ嵐?」アプリにかけた結果。
「松潤」度が26%、「櫻井くん」度が23%だそうです。
こちらのアプリは、ゼロから顔認識システムを作ることは難しいので、Microsoft AzureのFace APIを使って実装しています。アイデアを実装するための話し合いから、使えるAPIを探すように指示して見つけてきました。今回のアプリ程度なら、無料枠で利用できました。
Face APIでは、あらかじめ対象となる人物を登録し、それぞれの顔写真をアップロードすることで顔認識エンジンを作ることができます。作ったエンジンに顔を含む写真をアップすると、各人物の顔認識度が取得できます。
こちらのアプリは、ここに期間限定公開しておきます。興味ある人は試してみてください。
はじめは、嵐メンバーの写真をアップして誰か判別する(本人の場合は90%以上の認識精度がありました)アプリにしていましたが、他チームからのアドバイスで、嵐じゃない別人の「嵐」度を判別するのも面白いことに気づいていました。
チーム3: 学校に来たくない→学校を楽しめるRPG
このチームは、ゲーム好きの男子たち。RPGを使って、何事にも粘り強く取り組む姿勢を身に着けたいと思う人や、学校に来たくないと思う気持ちに対して、学校に楽しく通う気力を与えてくれるアプリを開発してくれました。
内容はRPGですが、学校七不思議をテーマにしていたり、シナリオを工夫したりして、学校生活を楽しめる要素を入れ込んでいます。
マップの設計、キャラクタや音楽のデザイン、全体のシナリオなどチーム内で役割分担して、進めていたのが良かったです。最終的に壮大なRPGができていました。
壮大なプランを出してきたので、これは期間内で完成できないだろうと思って、七不思議ではなく一不思議にしたほうがいいよ、などとアドバイスしていたのですが、想定以上に開発に集中して取り組んでいました。この講座が終わった後も、継続して開発していくとのことで、やる気に火をつけることができたのは良かったです。
チーム4: eスポーツがうまくなりたい→eスポーツ用トレーニングゲーム
eスポーツとして人気でプロリーグもあるLeague of Legendが大好きなメンバーが、もっとLoLをうまくなりたいという課題設定から、LoLの操作をトレーニングするためのアプリを企画して、作りました。
いわば、スポーツにおける筋トレのような位置づけで、eスポーツ人口が増えるなか、eスポーツの基礎として、瞬発力・集中力をトレーニングをするためのアプリになっています。
その名もBronze Escape、ブロンズレベルを抜け出すためのトレーニングを意識しています。
アプリとしては、Phaserというゲーム開発フレームワークのサンプルを改造して、開発を省力化しています。
特定のe-sports向けのトレーニングアプリというのは、まだまだユニークな存在だと思います。今回は瞬発力コース(一定時間敵から逃げ切る)、集中力コース(一定時間で敵をすべて倒す)と分けており、もっと洗練させていくこともできるはず。
まとめ
各チーム、短い開発期間でなんとか開発を完了することができました。
開発の途中でアイデアが発散しそうになった時は、当初考えていた「問題」に立ち戻り、本当に解決したかったことは何だったか?誰を喜ばせたいのか?を検討することで、作るべき方向性を再確認するように指導しています。それでも、やりたいことが発散して、結局作れなかった機能も多くあったようですが、プログラム開発自体の難しさや、チームで役割分担して予定通り進める困難さを体感していたようです。
次は後編で、開発環境や、アプリプラットフォームなどの説明をします。