#えむけーろぐ

間違った事を書いていたらやさしく教えてください

学生チームでアプリを企画・開発してコンテストに出場するまでの記録

はじめに

2018年4月から2019年2月末までの約1年間、苫小牧高専 ソフトウェアテクノロジー部の一員として学生チームでのソフトウェア開発プロジェクトを進めてきた。高専本科時代から趣味やバイトでの開発はやってきたが、いずれもメンターとなる上司の元での開発や、ひとり社内SE的な立場でのぼっち開発を経験したのみだった。

f:id:mktakuyax:20190325135927j:plain

記事には一切関係ない

一方、今回は開発もリーダーシップも同時にこなしていくようなチーム開発のプロジェクトであり、いろいろと学べる事があった。来年度以降の自分や仲間たち、インターネットのどこかの誰かさんのための引き継ぎ資料として、そしてなによりも自分の活動のまとめとして、ここに記録を残しておこうと思う。

なお、この記事は「僕らはこうしたよ」ということを記録するために書いたものである。それぞれのチームや環境に合うもっと良いやり方があるはずなので、ひとつの参考程度にしておいてほしい。

前提条件など

苫小牧高専 ソフトウェアテクノロジー部は、高専プロコンETロボコンに向けた活動を行う部活だ。部内は高専プロコン競技部門班、高専プロコン自由・課題部門班、そしてETロボコン班と大きく3つの部門に分かれている。僕はこのうち高専プロコン自由・課題班の責任者をさせてもらっていた。

高専プロコンの自由部門・課題部門の内容は、雑に言うと「ものづくりプレゼンコンテスト」だ。自由部門は完全自由なテーマで作品を作って良いし、課題部門は隔年で変わるテーマに沿った作品を作る。2018〜19年度のテーマは、「ICTを活用した地域活性化」だ。

今回僕たちが企画・開発したアプリは、「Emoji SANPO」というモバイルアプリケーションだ。コンセプトは、「直感で絵文字を選ぶとお出かけ先を提案してくれるアプリケーション」だった。

f:id:mktakuyax:20190330005942p:plain

Emoij SANPOアイコン

このアプリは、高専プロコンに向けて企画し、予選落ちしたのでU-22プロコンに向けて開発し、それも予選落ちしたので北海道学生アプリコンテストに向けて運用とプレゼンを行った結果受賞、という流れを辿った。一つのアプリを3つのコンテストに向けて企画したり開発したりプレゼンしたりしている*1ため話が複雑になっている気もする。

1年間の流れ

このアプリが辿った1年間の流れはこんな感じだ。

  • 2018年4月 チーム結成・アイデア出し
  • 2018年5月 予選資料(企画書)作り・高専プロコン応募
  • 2018年6月 高専プロコン 予選落ち
  • 2018年7月 U-22プロコンに向けて開発開始
  • 2018年9月 U-22プロコン応募
  • 2018年10月 U-22プロコン 予選落ち
  • 2019年1月 北海道学生アプリコンテスト 応募
  • 2019年2月 北海道学生アプリコンテスト 一次審査通過・プレゼン準備・最終審査会出場

チーム結成

自由・課題部門には、専攻科生2名・本科生7名の9名が在籍していた。(専攻科生は僕と助っ人で来てくれていたとっしー @toshiemon18 である。)

自由・課題部門の出場要件では1チーム2〜5名であることが求められていたので、この9人をTeam A、Bの2チームに分けた。チーム分けの際は、技術力・アイデア力(?)が均等になるようにとか、夜や放課後に作業しやすいように寮生と通生で分けるとか、いろいろ考慮した気がするけど忘れてしまった。

Team AとB、どちらが自由でどちらが課題というのは先に決めてしまわずに、その時出たアイデア次第でそれに合った部門で応募することにした。

アイデア出し

アイデア出しは合同で行った。アイデア出しの方法としてブレインストーミングとKJ法を採用した。ふせんにアイデアを書いていき、議論を膨らませていく。意見を出し切ったと思ったら、これまでに出た意見をグループ分けし、グループに名前をつけていく。

f:id:mktakuyax:20180501153629j:plain

アイデア出しの様子。あぐり王国北海道に10年以上住んでおきながら食に関する感想が「やき弁うまい」って……。

あとは、Google Docsに思ったことをひたすらみんなで書いていくという方法も試してみた。ふせんでやるよりこっちの方が盛り上がったかもしれない。

f:id:mktakuyax:20190303175305p:plain

アイデア出しの際は、ゴミみたいなアイデアを楽しみながら列挙していって、話をどんどん膨らませていって光るものを見つけるということに気をつけた。実際はアイデアが出ないと場の雰囲気が悪くなり、みんなの口数が少なくなる。あの雰囲気はなかなかつらいものだ。

最終的に、Team Aは課題部門で「Emoji SANPO」を、Team Bは自由部門で「つながるくん −普通の家電にIoTを⾜し算するシステム−」を提出することにした。作るものが決まったあとは、各チームに分かれての活動となった。

企画

ここからは、各チームでの活動となったので、僕の所属するTeam Aでの記録を書いていく。

作るものが決まったので、その詳細を決める企画の作業へと進んだ。ふんわりとどんなものを作るかはアイデア出しの段階に決めていたが、それがいったいどんなものなのか、メンバー間で異なるイメージををすり合わせる意味も含んでいる。

企画作業を行う際は、YAPC界隈で有名なゆーすけべーさんという方が書いた『Webサービスのつくり方――「新しい」を生み出すための33のエッセイ』という本を参考にした。

Webサービスのつくり方 ――「新しい」を生み出すための33のエッセイ Software Design plus

Webサービスのつくり方 ――「新しい」を生み出すための33のエッセイ Software Design plus

 

この本の"実装までに作る「企画」のすべて"という項目や、著者のブログ記事「実装までにする7つの企画作業」にも書いてあるとおり、哲学→アイデア→テーマ→コンセプト→名前→デザイン→内部設計という順番で企画を行った。

f:id:mktakuyax:20190307145636p:plain

f:id:mktakuyax:20190307145650p:plain

また、アプリの名付けには本科時代の先輩であるたにったさんが昔書いた、「名前のつけかた(ハードウェア ソフトウェア デザインとか)」という記事を参考にした。

tanitta.hatenablog.com

高専プロコン予選資料作成・応募

企画作業でアイデアの詳細を詰めていったあとは、高専プロコンの予選資料作りへと進んでいった。予選資料は、まぁよくあるパワポ企画書といえばわかりやすいだろうか。壇上に立ってプレゼンするタイプのスライドではなく、会議室で配布して読ませる感じのやつ。

いきなりスライドを作り始めるのではなく、まずGoogle Docsを使ってアウトラインとざっくりの内容を書いていった。

f:id:mktakuyax:20190329123004p:plain

f:id:mktakuyax:20190329123007p:plain
スライドの作成には、Keynoteの共同制作機能を利用した。Google Docsにある下書きをとりあえずスライドに配置し、その後デザインの調整を行った。

f:id:mktakuyax:20190329123135p:plain

このスライドをPDFとして出力し、予選資料の応募フォームから提出した。予選には落ちた。

開発

事前に「高専プロコンで予選落ちしたら、同じアイデアをU-22プロコンに出そうね」 と話していたので、このまま開発を開始した。もともとメンバーは5人いたのだが、高専プロコン予選落ちの段階で他の3人が夏休みの海外研修や他の部活に力を入れたいとの理由で抜けてしまったため、僕と後輩のことみんとの2人での開発となった。

サーバサイドはRails、クライアントサイドはSwiftで書いた。インフラ周りはHerokuに頼ることにした。タスク管理にはGitHub Projectsを使い、rails newから初期設定、認証まわりのいろいろを僕がやったあとは、Issueに要求事項を書いてアサインし、Pull Requestを出すという作業を分担してこなしていく感じであった。ほぼ毎日リモートで作業しつつ、週2で状況のすり合わせ会をオフラインで行った。

f:id:mktakuyax:20190329130156p:plain

Issue

f:id:mktakuyax:20190329130214p:plain

Pull Request

開発期間は、7月頭から9月頭までの2ヶ月位だろうか。途中で夏休みを挟んで進捗をブーストすることが出来た一方で、間に挟んだテスト期間での進捗停止がつらかった部分もあった。その他、週次のKPT振り返り会とか日報(今日の作業、困ったこと、次回の予定を書く)とかやってたけどあんまりうまくまわらなかった気がする。

U-22プロコン応募

結構ギリギリだったけど、アプリが完成したので応募資料を書いて応募した。U-22プロコンでは完成品とソースコードの他に動作の動画を求められたので、iMovieで適当に動画を作って提出した。参考までに、提出動画を貼っておく。

www.youtube.com

U-22プロコンの予選も落ちてしまった。一次審査通過作品を見た感じゲーム系が多かったので、おもしろアプリ系はお呼びじゃなかったのかなぁという感じがある。その一方で、ユーティリティ系のアプリが経済産業大臣賞を受賞しているので、単純にコンセプトやデザインが優れていなかったのかもなぁという気もしている。

北海道学生アプリコンテスト

高専プロコン、U-22プロコンと予選落ちしてきたEmoji SANPOの供養先として選ばれたのが、昨年も出場した北海道学生アプリコンテストだ。高専プロコン Team Bの人たちや、コンテスト未経験の後輩たちも含めた別のチームを作って全4作品を提出したが、予選通過したのはこのEmoji SANPOだけだった。

当日の様子などはだいたい以下のブログに書いたので、そちらを読んでほしい。

blog.m6a.jp

スライドの作り方は、高専プロコンの予選資料を作ったときと大体同じ。アウトラインをGoogle Docsにまとめ、文章を真っ白Keynoteに貼っていき、デザインを当てつつ文章を整えていく。完成したスライドはSpeaker Deckに置いてある。

speakerdeck.com

まとめ

そんなわけで、何だかんだで無事に賞も取れたEmoji SANPOの開発は終了した。

もっとこうすべきだったとかはいろいろあるけれど、とりあえず僕らはこんな感じでやりました、という記録だ。来年度以降僕や一緒に活動した仲間たち、インターネットのどこかの誰かがこういう活動をする時の参考になれば良いなと思っている。

改めて、一緒に活動してくれた皆さんありがとうございました。

*1:各コンテストの応募要件(未発表であること、他のコンテストで受賞していないこと等)は満たしている。