U-22 プログラミング・コンテストを通して。
Section: Technology

はじめに

U-22 プログラミング・コンテストに参加したという記事がないように感じたので、自分がこのコンテストを通してしたことや心境を記します。

是非応募を少しでも考えてる方やどのようなコンテストか知りたい方は参考にしてください。

プログラミングコンテスト

各地で様々な内容のプログラミング・コンテストが開催されています。

その中で22歳以下対象の自由な作品を提出する、U-22 プログラミング・コンテスト2021に応募しました。

U-22 プロコン

U-22 プログラミング・コンテストは、「プロダクト」「テクノロジー」「アイデア」の評価基準を持つが、指定されたジャンルや言語等はなく自由に作品を作ることができます。

昔から開催されているようなプログラミングコンテストとなっており、2021年度は374作品1323人が応募したらしいです。

私は2018年には、曲が毎回違って聴こえる音楽投稿サイト「Randamate」という内容で応募しました。その際は事前審査も通らなかったので、リベンジもかねて毎年応募しようと以前から考えていました。

応募に至るまで

ここからは応募に至るまでの経緯を話します。

私は「音楽の可能性を広げたい」という野望があり、大学に入ってから音声フォーマット開発に取り組んでいました。

具体的には、高品質・高機能で聴かせたいありのままの音をいつまでも残せることを目的としたFloaoutを開発しています。

2019、2020年度のどちらも納得のいく作品ができていなかったので、「来年こそは...」ということで応募まではしていませんでした。

2021年も同じ現象が起こる可能性が高かったが、引き延ばすと来年も応募せずに終わってしまうと思いました。そのためどのような状態であっても応募することを、2021年の目標で決めました。

納得のいく作品

出来れば納得のいく状態で応募したいです。

なぜなら本気で広めたいと思っており、プロダクトとして完成している方が関心を持ち使用したいと思ってもらえることと経済産業大臣賞を頂きたいからです。

「納得のいく作品」とは、私が思う作品の完成形です。具体的には以下のようになります。

  • 抽象化されたライブラリ
    • どのようなものを作るにも、使いやすいライブラリにする
  • ユーザが使いやすいソフトウェア
    • 編集・再生などのソフトウェアが揃っている
    • ユーザビリティが高いデザイン
  • 洗練されたフォーマットの仕様
    • 無駄な情報がない

時間がない

今まで以下のような時系列で開発を進めていました。

ただ一人で開発をしており、全てを完成させるには時間が明らかに足りませんでした。

7月まで

仕様変更に伴い何度もパーサを書き直すのが大変であったので、パーサジェネレータを開発していました。

はじめは既存のPEGのパーサジェネレータライブラリを使用するはずでした。

しかしPEGの論文等を読みだして、性格上こだわりたくなってしまって、自ら考案した文法を用いたパーサジェネレータMPLを開発しました。

9月まで

段々締め切り日が近づいてきて焦りを感つつ、エンコードデコードライブラリのリファクタリングをし始めました。

そして期限3日前の時点で、ライブラリは完成しました。逆にいえば、ソフトウェア周りは何もできていませんでした。

期限ぎりぎりで

せめて音の可視化をしないとイメージしてもらいにくく、事前・一次審査は受からないだろうと思い、再生ソフトウェアを作ることにしました。

まずどのGUIがいいか選定しました。2019年からGUIの動向をみており、RustのGUIを使用するか、Qtのような他の言語の物を使用するかまたその中でどれにするかなどかなり悩んでました。

その中でウェブアプリケーションがよいのではという結論に至りました。

  • マルチプラットフォームである
  • 可視化にはWebGLが使える
  • Audio系も揃っている
  • HTMLとCSSで、レイアウトやデザインを細かく設定できる

可視化の構想はまとまっていたので、WebGLについて学び、何とか基本的な部分は実装できました。

その後、自分の作品に対する思いをのせた提出用の資料や動画の準備を完了させました。

応募するにあたって

最終形態として、編集ソフトウェアやIDの情報を取得したり、曲の購入等ができたりするサイトまで作成したかったのですが、それらは間に合いませんでした。

そのため応募した内容は個人的に45%の完成度でした。

2021年の目標で書いたように応募をするか、完璧な状態で確実に賞をいただくために来年出すか、直前まで悩んでいました。

その後の未踏への推薦やその他の支援を得られるチャンスが増えることを考え、今年も応募して、駄目だったら来年も進化させて応募することにしました。

審査の通過

事前審査と一次審査は、応募時に提出した資料や動画から通過作品が決まるため、祈ることしかできませんでした。

結果発表の度に、ドキドキしながら結果を確認しました。どちらも通過できて嬉しかったです。

一次審査も通過したので、最終審査会に出場することになりました。この審査会でプレゼンテーションを行い、各賞が決まります。

そのためプレゼンに向けて準備を始めました。

プレゼンテーション

LTとかでは気軽に一日もかけずにプレゼンを完成させていたのですが、今回はプレゼンを絶対に成功させたかったため、どうしたらいいものになるのか悩み、プレゼンとは何かから考えることにしました。

概念

プレゼンとは「聞き手に新しい商品やアイディアなどを紹介するスピーチや会話」という意味らしいです。

プレゼンテーションで主に必要なものとしては、

  • 口頭
  • 商品や資料
    • 今回は特にパワーポイントのようなスライド資料

が挙げられると思います。

資料がメインで口頭が補助的な役割をするのか、その逆か、両方が重要なのか...

という風に考えていると時間だけが過ぎていったので、「Floaoutのよさを聞き手に伝える」ことを目標にして、概念は置いておくことにしました。

構成

資料を作成する前に、どのような構成にするかなどから考えました。

ベース

話したい内容の構成は2つ考えていました。

  • フォーマットの目的をベースに
    • 音声フォーマットがメインになり、再生ソフトウェアの出番は減る
  • 再生ソフトウェアをベースに
    • プロダクトの内容が中心になり、音声フォーマットの説明は減る

再生ソフトウェアの方はこだわりきれなかったこととフォーマット自体を使ってもらいたいので、フォーマットの目的をベースにプレゼンを進めていくことにしました。

実演

実演するだけのプレゼンにはしたくなかったので、長くても合計2分くらい実演の動画・音声を流したいと思っていました。

  • Bubbleの説明
    • wavで再生
    • bubで正規分布の音の再生
    • Exprの場合の再生
  • Floaoutの説明
    • Future popな感じ
    • 魚影のサビ

見た目

みやすいスライド資料にしたかったが、どのようなデザインにするか悩んでいました。

今までのデザインはカラフルな感じで、ゆるい感じのフォントを使用していました。

フォント

この度事前提出資料で、使用するフォントをすぐに決めなければなりませんでした。ゆるい感じのフォントは標準ではなかったことと、ひらがなでも対応していないものがあったので、とりあえず「游ゴシック」を使用することにしました。

デザイン

デザインをかなり悩んでいたのですが、ふとウェブで最近よく使用されるマテリアルデザインは、パワーポイントでも使用できるのではと思い、マテリアルデザインに決めました。

個人的にマテリアルデザインといえば、四角形で角丸の枠の所で影をつけて若干立体っぽいカードが連想されます。

そのためカードを作成するところから始めることにしました。

パディングが指定できない(?)ことや、全体のレイアウトの値を細かく指定できなくて、微調整に時間を要しました。

曲作り

実演に書いたような曲作りもスライド資料と並行して始めました。

できればちゃんとした曲を作成して、曲も広められたらとも思っていました。しかし曲をちゃんと作ったことがなくて、なかなか作れませんでした。

そのため曲のイントロを、確実に作ることにしました。

このフォーマットの特徴の一つである立体音響を活かした曲にするために、曲の構成を考えるところから始めました。(実際にはオンラインでの発表のため、ステレオで出力することになり、あまり立体感は感じられない...)

曲の概要

  • 時間:20~30秒
    • 限られた時間の中での発表のため、30秒が限界だと考えました。
  • ジャンル:Future bass
    • 近未来感を演出でき、個人的にはまっているジャンルだから
  • 構成
    • イントロのイントロ:1~3秒目
      • ハイハットなどのある程度高い音のみをだす
    • イントロ(サビ):3~20秒目
      • ある程度万人受けする感じ
      • できたら、盛り上がる感じ
      • 低音のsine波
        • 音の重みを出し、それまで低音が出ていないため、音の広がりを期待する
      • メインの音
        • パンをいじって、立体感を演出する

作曲難しい

コードから曲作りを始めることにしました。進行は、自分の好きな曲に近いものにしました。

しかしコードから始めたため、リズム感やメロディーがFuture bassから遠ざかっていきました。

完成

最終的にBGMっぽくなりました。盛り上がりはそこまでなく、8小節をループするような曲です。

資料提出期限に近くなって、今から新しく作成するのも難しいので、この曲で挑むことにしました。

ただ無駄にEDMみたいに盛り上がると審査員の中には驚方もいると思うので、万人受けする感じになってよかったと思います。

スライド資料作り

デザインや曲などの素材ができたので、フォーマットの目的から段々詳しく説明するような流れになるように、作成し始めました。

評価基準を意識して

作っているなかで評価基準も意識しました。

「プロダクト」「テクノロジー」「アイデア」の3つの評価基準を持つが、具体的にそれぞれがどのような観点から評価されるのか分かりませんでした。

公式サイトをみても載っておらず、他に書かれていないか調べていると公式のYouTubeの過去の動画で発見しました。

  • プロダクト
    • 有用性
    • 芸術性
  • テクノロジー
    • アルゴリズム
    • 機能性
  • アイデア
    • 独創性
    • 将来性

以上の観点を意識して、資料や話す内容を決めていきました。

実演の順番

作品を知る上で一番重要な部分は、実演となっています。

実演で少し決めていたが、結局以下のようにしました。

  • はじめに立体感のあるBubbleの紹介
    • どのようなものかわかるように、はじめに完成形をみせる
  • Bubbleの詳しい説明
    • ピアノのコード進行
      • Bubbleの関数について知ってもらう
      • 正規分布っぽい関数を用いる
  • 関数で音源自体も設定できることを知ってもおらう
  • Floaoutの実演

はじめの方に実演をみせることで、全体像や面白さを伝えて、後で詳しい説明をする構成にしました。

印象に残らせたいので、後半部分のまとめの所で、BGMをかけながら話すことにしました。

事前テスト

事前に色々なことを確認する事前テストが、10月27日にありました。

知りたくて聞いた質問として、

  • 全て動画にするは可能か?
    • 質問の前に、ダメであるような趣旨を聞いた
  • 必ず10分プレゼンなのか?
    • 時間は大体の目安で、厳しい感じではない。質問時間も質問する方が多かったりすると長引く可能性もある。
  • 発表順
    • 運営の方が決めるっぽい
  • マイク付きヘッドセット以外も可能か
    • オーディオインターフェースからのマイクでも可能

リハーサル

リハーサルといっても全てを通して行えるわけではなく、作品の実演時の動作確認などのポイントのみを行うらしいです。

しかしリハーサル日に、プレゼンテーション資料などの提出もする必要があり、発表内容は実質確定していなければなりません。

そして資料を完成させるとともにリハーサル日になりました。

リハーサルを軽く行い、当日の流れを確認しました。自分の場合、画面共有の際には音をステレオで入れておくことを、必ず忘れないようにしなければと心に誓いました。

リハーサル後にも資料の改善を行い、なんとか締め切りの1分前に資料の提出ができました。(本当の最終締め切りは、発表日の2日前でした)

本番まで

リハーサルから発表日になるまで、プレゼンの発表に向けて猛練習をしていました。

一人だとテンションが低くなり声に抑揚がなくなりがちなので、なるべく声の抑揚を出すように意識しました。

また特に伝えたいところを強調して話すようにしました。

本番(最終審査会)

最終審査会への参加が決まってから1か月間以上あったが、曲とプレゼン資料の作成や発表の練習をしていると、あっという間に発表当日になりました。

私の発表は最後の方だったので、発表内容を確認しつつ、他の方の発表を聞いて順番を待ちました。

どの作品も魅力的で束の間の発表に感じながら、自分の番になりました。

発表

リハーサルで確認した流れで発表の準備をして、遂に発表が始まりました。

ただ発表の画面しか見れなくなるので、画面に話している感じがして、緊張は少しずつ消えていきました。

そして練習したように発表を進め、無事発表は終了しました。

しかし10分での発表は難しく、皆に内容を伝えきれませんでした。今後広める上では内容を理解してもらうことは大切なので、改善していきたいです。

また後から知ったのですが、配信された音がステレオではなくモノラルだったのは少し残念です。

質問

発表の後は質問の時間で、どのような質問が来るのかという不安感と審査員の状況が見えるようになり緊張が戻ってきつつ、質問に答えていきました。

質問をたくさんしていただき、そこで理解深めていただけた部分もあったので良かったです。

結果発表前

残りの発表やスポンサーのお話を拝見し、結果発表前になりました。

自分は経済産業大臣賞しか狙っていなくて、狙えるとしたら「総合」または「テクノロジー」だと思っていました。

裏話ですが待っている間に、運営の音がミュートになっておらず、少し入賞作品の名前が聞こえました。そこに自分の名前はなく、少し不安になりながら結果発表に挑みました。

また発表前に複数の方が指名されて感想をいう時間があったのですが、時間から考えて入賞者は入賞時に感想を言う時間があるため、ここで指名されなかったら若干入賞する可能性が高まると勝手に思っていました。

自分は指名されなかったので、裏話と合わせてプラマイゼロの期待感で経済産業大臣賞受賞作品の発表が始まりました。

そして「総合」「プロダクト」「テクノロジー」の順で発表され、自分の名前がありませんでした。

正直「テクノロジー」が発表された後、今後どうしようかと不安になって、未来が閉ざされたような感覚に陥りました。

しかしここ数年で一番驚いたことが起こりました。

結果発表後

なんと「アイデア」賞をいただきました。

マジで一瞬びっくりして目を見開きました。その後安心感がじわじわとわいてきました。

ただアイデアだけでは、他の作品もそれぞれ個性があって評価付けがたい内容なので、選出された重みを感じました。

アイデアの「独創性」では関数が他のフォーマットにはないことを強調し、「将来性」では最後の方で今後の展望等の内容のプレゼンをしたことが評価されたのかなと思いました。

夢の達成のために、進んでいきたいです。

終わりに

前記では内容がごちゃごちゃなるため省いていたが、一次審査が通ってから、大勢の人に知られる恐怖や虚無感に襲われており、精神的にきつかったです。

なぜなら、これまでやってきたことは嘘ではないが、個人的にはまだまだ完成形ではなく、「胸を張ってこの作品をプレゼンで薦められるのか」、「偽りの自分で発表してるのではないか」とか余計なことを考えていました。その中で評価されるのはどちらに転んでも、納得がいかないと思っていました。また音楽が好きなのにプログラミングに重点をおいていて、ただ音楽から逃げてるだけでは、とも思いました。

それでも取り敢えず応募したことで、色々なチャンスを得ることができたので、挑戦する第一歩は大切だということを身に染みて感じました。

U-22 プログラミング・コンテストに携わって頂いた方々に感謝いたします。また資料作成時にプレゼンの発表内容を聞き、それについて意見を出してくれた家族の皆もありがとうございます。

これからも音楽の可能性を広げる活動をしていくので、少しでも興味を持っていただければ是非YouTubeのチャンネル登録やGitHubのスターをして、チェックしていただけたらありがたいです。