エンジニアカンファレンスのオープニングムービーを作る技術

こんにちは。iOSDC Advent Calendar一日目の[@motokiee](https://twitter.com/motokiee)です(12/2に公開しています。すみません。すみません。すみません)。

iOSDCは初開催の2016年、2回目の2017年と、どちらもカンファレンスの幕開けを告げるオープニングムービーを用意し、参加者の皆さんを迎えています。

2017年版
[![iOSDC 2016 Opening](http://img.youtube.com/vi/PaQjxXemZ2M/0.jpg)](https://youtu.be/PaQjxXemZ2M)

こちらは2016年版です。
[![iOSDC 2016 Opening](http://img.youtube.com/vi/D9MT-TdVSjo/0.jpg)](https://youtu.be/D9MT-TdVSjo)
※2016年のコンセプトなどについては[こちら](http://wearable44.com/iosdc2016-opening-movie/)に記載しています。

これらのムービーは、**エンジニアのカンファレンスのムービーはエンジニア自らが作るべきである**、というスタッフの強い意志のもと制作されています。

この記事では、iOSDC Japan 2017のオープニングムービーがどのように作られているのかについて解説していきます。

なおiOSやSwiftのコードは一切出てきません。

## ツール

今年のオープニングムービー制作に使ったツールについて説明します。

### After Effects
動画を見ていただけると分かりますが、単純に写真をつなげて文字を載せるだけのものではないので、iMovieで同じような動画を作ることはできません。iMovieだと文字を部分的に動かしたり、位置の調整、マスクなど細かな調整ができません。

後ほど紹介しますが、ビルトインのエフェクトも最低限用意されており、それらを工夫して使うことでクオリティがグッとあがります。

### Photoshop, Illustrator

このあたりはAfter Effectsと一緒に、写真やロゴの加工をする場合に使用します。

## コンセプト

コンセプト以前の話として、オープニングムービーはWWDCのKeynote前に流されるムービーと同じような役目を果たすように作っています。

2017年はこのようなムービーが流されました。開発者たちへのメッセージもさりげなく込められています。
[![WWDC 2017 Opening](http://img.youtube.com/vi/dFsM3iHY3q4/0.jpg)](https://youtu.be/dFsM3iHY3q4)

iOSDC Japan 2017のコンセプトは**「フェス」**でした。このコンセプトを元に、「iOSエンジニアの祭典」、「これから祭りが始まる」ことを伝えられるように作りました。

オープニングムービーもこれに合わせて**フェスっぽさ**を演出することを目指しました。2016年のムービーと比較すると、全く雰囲気の異なるものであることがわかると思います。

その違いは、音楽からも感じることができるかと思います。

### 選曲

曲を選ぶ際は、https://audiojungle.net/ を利用しています。**フェスっぽさ**を出すために百曲以上聞きましたが、最も自分のイメージに合ったのが使用されている曲です。他のスタッフからも好評でした。

ここで選んだ曲を元にイメージを固めていき、簡単なスケッチを書きながら構成を練りました。

## シーン構成
オープニングムービーは簡単に3つのパートに分かれています。

1. ロゴ
2. スタッツ（参加者人数など）
3. 参加者へのメッセージ

全てを解説するととても長くなってしまうため、ロゴのシーンがAfter Effectsでどのように構成されているかを解説していきます。

### ロゴ

<img width="1280" alt="スクリーンショット 2017-12-02 18.34.11.png" src="https://qiita-image-store.s3.amazonaws.com/0/45525/d4548ec5-f860-899a-513e-1d871bc593e2.png">

単純にロゴを流すだけではつまらない（尺も持たない）ので一工夫しています。今年は2017の数字を3Dにしてみました。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/45525/65f1bdd7-1359-2b4f-6952-5f4e7d9a90e1.png)

<img width="1280" alt="スクリーンショット 2017-12-02 18.50.05.png" src="https://qiita-image-store.s3.amazonaws.com/0/45525/7ffb6d43-0bc1-4cd3-ecc9-dd1bef029761.png">

After EffectsにはビルトインでIllustratorから取り込んだパスを押し出す機能があるので、ロゴを元に3D化しています。マテリアルの設定を変更して金属の質感を与えています。

<img width="588" alt="スクリーンショット 2017-12-02 18.51.47.png" src="https://qiita-image-store.s3.amazonaws.com/0/45525/1d98cdc2-41dc-3c0d-da1d-9b625bf9dba1.png">

隣の数字が写り込んでいるのが分かるかと思います。

このような複雑な設定をした場合、レンダリングに結構な時間がかかります（編集しているマシンが非力だったことも原因だが数時間かかっている）。なので、この数字の部分だけを先にレンダリングしてpngの連番などにして、後で使う時はそのpng連番を使って合成できるようにしておきます。

iOSだとCarthageでビルド済みバイナリを使うイメージですね。

ロゴの部分だけを構成するシーンは以下のような構成になっていて、一番下の `3d_2017_{00000-00151}.png`がプリレンダリングしたものになります。

<img width="633" alt="スクリーンショット 2017-12-02 18.59.11.png" src="https://qiita-image-store.s3.amazonaws.com/0/45525/836f055b-df38-178c-1bd0-db35a4a28716.png">

下から2番目に`iosdc_japan_neon`と見えますが、これはiOSC JAPANの部分だけにネオンエフェクトを適用したものを別のシーンとして用意したものです。これはプリレンダリングしたものではありません。

<img width="1280" alt="スクリーンショット 2017-12-02 19.02.23.png" src="https://qiita-image-store.s3.amazonaws.com/0/45525/fe15a712-edc8-2247-f2fb-f3fd6fedf81c.png">

この構成の場合は、プリレンダリングではないためレンダリングに時間がかかってしまいます。

しかし、ネオンの色味を`2017`の金属の質感とうまく合わせるために調整する必要が有ることと、このネオンのエフェクトの処理がそこまで重いものではないので、プリレンダリングではなくこの方法を使っています。

iOS開発で例えると、ContainerViewControllerに複数のViewControllerを入れ子にして一つの画面を構成している、というと分かりやすいでしょうか。


### 終わりに

ロゴの部分だけをgifにしてみました。

![12月-02-2017 19-06-15.gif](https://qiita-image-store.s3.amazonaws.com/0/45525/7337c9ac-5df7-5116-b891-9a99e72a9e2e.gif)

ここまでの解説で、この数秒のシーンのために数時間のレンダリングと、複数のコンポーネントを組み合わせる必要があったことがお分かりいただけたのではないでしょうか。

`2017`の文字を押し出すのにビルトインの機能を使っていると先ほど解説しましたが、後光がさすようなエフェクトもCC Light Burstというビルトインのエフェクトを使っています。

After Effectsは多機能かつ高機能で、使いこなすにはそれなりの時間がかかりますが、有料のプラグインを使わなくてもそれなりのものを作ることができます。


また、エンジニアの皆さんはピンときたのではないでしょうか。CG制作でも設計が必要なことを。

CG制作にもソフトウェアを書いているときと同じように、モジュール化や設計が必要です（それを設計と呼ぶ人は見たことがありませんが）。コンパイル時間を節約するのと同じようにレンダリング時間を節約する必要もあります。

冒頭で**エンジニアのカンファレンスのムービーはエンジニア自らが作るべきである**と述べましたが、**カンファレンスムービーの制作もソフトウェアエンジニアの課題解決の範疇なのではないだろうか？**ということを記し、この記事を締めたいと思います[^1]。
[^1]: 冗談です。エンジニアになる前にCG制作をやっていたのでつくっただけで真剣に思っているわけではありません。