神情協「学生ITコンテスト 2019」に参加してきた話
初めまして
今年度から専門学校に入学して IT の何たるかを学んできた(はず)の salami です。
サークルの活動や、これから話すコンテストの内容上、web プログラミングを中心に学んでいます。
この記事が初投稿になるので、温かい目で見てもらえると助かります。
そもそも学生 IT コンテストとは
- 大学・大学院・専門学校などの学生
- 18歳以上28歳以下
作品を提出する形式のコンテストで、各々が考えた世の中を良くするサービスを形にし、提出します。書類審査に通れば、ファイナル最終選考会で企業の皆さんの前で発表をすることができる、といったように進められていきます。
募集されている部門には「ビジネス部門」と「IT プロダクツ部門」があり、私は 3 人のチームメンバーと共に IT プロダクツ部門に応募させて頂きました。
作品は何を提出したの?
私達のチームは、ゴミ箱を探索する web アプリケーション「PoiMap」を開発し、提出しました。
このアプリはゴミを捨てたいときにゴミを捨てる場所、つまりゴミ箱を見つけることができないときに使用するアプリケーションです。
機能としては
- マップに現在地の表示
- 投稿されているゴミ箱の場所にピンを立てる形でマップに表示
- ゴミ箱の詳細情報(名前、何ゴミが捨てれるかなど)を表示
- ゴミ箱を「燃えるゴミ」「燃えないゴミ」などで区別し、ゴミ箱のピンを絞り込みしてマップ上に表示
- ゴミ箱の投稿
- 現在地からゴミ箱までの道案内ルートを表示
- 日本語、英語、中国語、韓国語対応
- 何ゴミかわかりにくいゴミのために、ゴミの種類を表示するゴミ捨てマニュアル
の8つの機能を持っています。
自分の中では「画期的だな」と感じていました。
そしてこの案が見事に書類選考を通過し、ファイナル最終選考会へと進むことができました。
ファイナル最終選考会
とうとう本番
本番とも言えるファイナル最終選考会へ向かいます。
このようなコンテスト会場というのは出演するのも見るのも初めてだったので、会場についてからしばらくは新鮮さを楽しんでいました。
観戦
ですが、まさに「隣の芝生は青く見える」というのでしょうか。
参加チーム一覧を見たときの絶望ははかり知れませんでした。
出場していたチームの約半分の作品が 「AI」や「ビックデータ」をテーマとして扱っていたのです。その時に流行りに乗ることの大事さに気が付きました。
発表したときのインパクトとしては、圧倒的に不利でした。
(だって、どうやってもwebサイトとAIを比べるなんて、文字の字面でも負けてるじゃん)
ただ、私のチームはあきらめずに優勝を一直線に見てました。
そして私自身は、メンバーが強豪たちと戦う姿を観戦していました。
私は文字も感情を入れすぎるため原稿すらまともに読めない足手まといなので、チームのメンバーに任せるしかなかったのです。(一応チームリーダーです)
チームメンバーの皆さん、本当にありがとうございました!
プレゼン戦争
私たちのチームの発表順番はプロダクツ部門では最初だったのですが、その前にビジネス部門の発表があったため、しばらくは発表を見ることに。
どのチームの発表も素晴らしかったです。
頭の弱い私にとっては「よく思いつくなあ」と思ったものばかりでした。
そして事件が起こったのが、ビジネス部門最後の発表でした。
事件
ビジネス部門、最後の発表は「ゴミの写真を撮り、そのゴミが燃えるゴミか燃えないゴミか、などを判別するAI」というものでした。
……まさか、ゴミ関係で被るとは思っていませんでした。
さらに、実現した際の実用性は、私たちのチームの作品より高かったのです。
チームの発表
ゴミ判別AIの次、それが私たちの発表です。
メンバーの彼らはとても頑張って、PoiMapの魅力を伝えてくれました。
本当にありがとうございます。
発表中のミスも何とか立て直し、私のチームのプレゼンが終了しました。
そして質疑応答。前日まで予想を固めていたはずでしたが、実際に質問されたのは予想できていなかった質問ばかりでした。
今考えると「どうしてそのような質問が来ることを予想していなかったのか」と思ってしまいます。
そのあとのITプロダクツ部門
私達のチームが終わった後もプロダクツ部門では、そのあとも素晴らしい作品のオンパレードでした。
色々な作品を見て「そういう考え方もあるのか」とずっと思っていました。
冒頭でも言ったようなAIやビックデータの多くがこのITプロダクツ部門でプレゼンされ、私はそれに圧倒されていました。
どのプレゼンも作品に込めた気持ちがひしひしと伝わってきて、コンテストの空気というものを肌で感じた気がします。
結果発表
残念ながらPoiMapは優勝することはできませんでした。
敗因
敗因として考えられるのは、前述した「質疑応答に対応しきれていなかった」というもののほかに、「要件定義がしっかりしていなかった」「制作期間の半分以上はgithubを使っていなかった」「コミュニケーションがままならなかった」「プロジェクトを軽視していた」「コードが未完成」「プレゼンテーションの練習不足」の6つがあげられました。
要件定義の不確定
当初、フロントエンドエンジニアは私一人、バックエンドエンジニアは二人、デザイナー一人というチーム構成のもとプロジェクトが始まりました。
その際、特に要件定義のようなものはしておらず、自分たちが欲しい機能をただあげているだけだったのです。
アンケ―トは当たり前のように行わず、話し合いにより決まった機能をメッセージアプリで箇条書きにして送りあっていただけで、振り返ると要件定義と呼べるものを作った覚えがありませんでした。
githubの不使用
プロジェクトが進み、フロントエンドは自分ひとりでは間に合わないということを理解したときに初めてチーム開発をすることにしました。
バックエンドエンジニアをしていたメンバーの一人を呼び、フロントエンドの仕事を一緒にすることにしました。そして、その時にコード共有に使っていたのはgithubではなく、discordというSNSアプリでした。
学校内で行われたgithubの説明会などに参加していても、何をしているのかいまいち理解ができておらず、そのことを軽く考えていた愚かな私は「コード共有だけならファイルを渡すだけで大丈夫だろ」と思い、SNSアプリを使っていました。
それにより、お互いに何をどこまで進めているかがわからず、気が付いたときにgithubを使い始めたらコンフリクト200件という大惨事を招いてしまいました。
コミュニケーションが少ない
チーム開発において、一番重要なのはコミュニケーションだということを今回のことで自覚しました。
当時の私は「チーム開発は個人で作業をして、最後に合わせるのだから、コミュニケーションは必要ない」と、今考えるとよくわからない考えのもと作業をしていたので、時々集まって進捗の報告をするくらいのコミュニケーションしか行っていなかったので、他人のことは何もわかっていませんでした。
私がチームメンバーのことが分からないということは、チームメンバーも私のことが分かっていないことと同じ意味であるため、私の作業の進みの悪さもみんなには伝わっているわけがなかったのです。
プロジェクトの軽視
こんなこと書きたくないですが、私は途中までプロジェクトを軽視していました。
未経験だったこともありましたが、物を作るということの大変さも知らず、最後にはどうにかなるだろうというバカで愚かな考えをもとに動いていたのです。
私がリーダーなのですから、最初から物を作る大変さが分かっていればよかったのですが、それが分かったのはある程度の言語の知識を手に入れて工数を理解し始めたときでした。
コードが未完成
初期バージョンは、まだwebプログラミングが何なのかを理解していないうちから始めたものであり、要件定義もまともにきめていなかったため、コードがうまく実行できず、それを解消するためには根本からコードを書き直さなくてはいけないほどコード同士の依存関係が強くなっていました。
「ならいっそ最初から書き直せばいい」という結論に至ったのが、ファイナル最終選考会まであと約3週間の時でした。
今でもwebプログラミングができるとは言えない私です。友人からのアシストを受けてもその期間でバージョン2が完成させることができず、本番は動画やデモではなく、静止画での発表となってしまいました。
プレゼンテーションの練習不足
上記のように、コードをずっと書いていたためにプレゼンテーション自体がおろそかになってしまっており、プレゼン資料が本当の意味で完成したのも、台本を読む人が決まったのも、本番まであと数時間と迫っているときでした。
そのため、本番に備えたプレゼンテーションの練習は全くと言っていいほどできていませんでした。
まとめ
私はチームリーダーであるにもかかわらず、チーム開発が何なのかを全く理解しておらずにこのプロジェクトに取り組んでしまいました。
これは大きな失敗です。
とはいえ、コンテストが楽しくなかったわけではありません。
作品のどれもが作りこまれており、そのような色々な作品を見ることができて、とても刺激を受けた内容でしたし、懇親会でも、滅多に会うことのできない様々な企業の社長の方々からの興味深いお話を聞くことができました。
失敗は失敗ですが、その失敗を無駄にせず、勉強に取り組んでいければなと思っています。