NAKEDのインターンに参加してきた

8/5~8/15まで約2週間、株式会社ネイキッド(Naked Inc.)の実務インターンに参加させていただきました。

そのインターンで学んだこと、感じたことなどをまとめたいと思います。

 

株式会社ネイキッドとは

NAKEDは、空間全体を演出するクリエイティブカンパニーです。

具体的には、映像による空間演出やインスタレーションプロジェクションマッピングなどを行っています。これらの業界で有名なのは、チームラボとかですね。

元々はドラマのタイトルバックや、ミュージックビデオとかの制作を行っていたそうですが、最近は上記のような空間演出系のこともされているようです。

 

 

インターンに参加したきっかけ

僕は大学に入ってからプログラミングにハマり、色々開発・制作をしていますがVR・AR系の開発を結構しています。VRといえばHMDというのが今の時代だと思いますが、HMDの映像は3DCGです。さらに、ユーザーの行動によって映像が変化するのが普通なため、インタラクティブ3DCGです。僕自身もそういったHMDの映像を作っていました。その後、インタラクティブアートに出会い、自分がやっているVR/ARという分野に近いインタラクティブ3DCGによって、幻想的な空間が作り出せることを知り、いつか現実空間とコンピュータ世界の空間の境界を超えた作品を作ってみたいなと思っていました。

そんな中、テレビCMで興味深いものを目にしました。石原さとみさんが出演している、フレアフレグランスのCMです。

このCMの演出が面白いなと思い調べて見たら、花が舞うのは映像編集ではなくインタラクティブプロジェクションマッピングだったのです!

で、これを作っているのがNAKEDでした。NAKEDについて調べてみるとインターンシップを募集しており、

プロジェクションマッピング、AR(拡張現実)といった既存の表現にとどまらない空間を創造していきます。
映像表現がモニターのフレームを越えてリアルな空間に広がって行くにつれ、多様なデバイスをコントロールしたり、新しい表現の追求のために、それを実現するツールを生み出す技術が必要とされています。 

と記述がありました。僕は「これだ!」と思い、すぐにインターンシップの応募をしました。 

 

 

インターン選考

流れとしては、エントリーシート提出→面接→採用と一般的なものでした。

エントリーシートは、大学などの基本情報に加えなぜNAKEDのインターンに参加したいかを書いたと思います。

面接はSkypeで行っていただけました。NAKEDのインターンになぜ参加したいか、自分の経歴や経験はどんなものか、インターンで何を学びたいかなどありきたりな質問でした。

面接したその日のうちにインターンシップ採用のメールをいただきました。

テクニカルディレクター(メディアアートプログラマー)として参加することになりました。

 

 

業務内容

NAKEDは、大きく分けてblue、green、redの3チームに 別れており、blueが事務や企画(?)など、greenが映像の制作やインタラクティブ機能の作成など、redがNAKEDの核となるシステムの開発を行う、といったように別れているようです。

僕はredチームで働きました。概要としてはgreenチームの人が簡単に制作をできるようにするシミュレーションシステムの開発や、既存映像ツールでは制作困難なものをグラフィックプログラミングによって制作可能にし誰でも簡単に使えるツールにするなどを行いました。

 

 

インターンで学んだこと、感じたこと

  • オブジェクト指向のコーディングをもっと学ぶべき
    • インターフェースやイベントなど、オブジェクト指向の特性や能力をもっと生かしていくべき。そうすることで、クラス間の依存関係を薄めることや、機能拡張性、修正容易性が大幅に向上する!
      オブジェクト指向のコーディングをもっと学ぶには、既存の各クラスやメソッドを積極的に利用すべし。リファレンスを軽く眺めるのも1つの手。既存のものを利用すると、バグも少なくなり(リファレンスなどがあるため)誰にとってもわかりやすい。
    • 汚いコードは読むだけで一苦労と痛感。結局何をしているかが伝わらないこともある
    • クラスを分けることで頭の中も整理できる
      • 各クラスの役割を明確に定めることで、そのクラスで何を担当すべきか、データをどのように扱うが変わってくる。
  • 様々な視点から書いたコードを観察する
    • エンジニアでない人が使うツールの作成を行ったために、どうすれば使いやすいか、人的なミスをなくし自動化できるかを、かなり考えた。
      それにより、将来的に機能拡張をするときにどんなことが考えられるか、必要なデータがない時の処理やエラーハンドリングをどうするかなど、普段とは異なった視点からコードを観察できた
  • コーディングとリファクタリングを短いスパンで回す
    • コーディングをして一段落したら、放置せずに出来るだけ早くリファクタリングをすべき。コードが膨大になってしまうと、理想的な設計にするのは不可能だと思う。できるとしても、ほぼ作り直し
  • 勝手に自分の中のフィルターを作らない
    • グラフィックの動き・綺麗さ、既存アルゴリズムの使用による限界など、「現状の手段では難しい」とか、「こんなものかな」など、現状に満足しないようにすること。何か少しでも気になるところがある場合は、何らかの解決手段を探し検討すべき。
      それが、繊細なところまでこだわりぬく事につながり、素晴らしい作品作りには不可欠である
    • 繊細な調整や、処理負荷を考えられるのはエンジニアのみ。すなわちこだわり抜くことができるのもエンジニアにしかできない醍醐味。
  • グラフィックプログラミング、GPGPUは面白い!
    • パラメータ1つで出てくる絵が大きく変わることもあり、奥が深い
    • GPGPUによって多量並列実行が可能であるため、膨大な量のシミュレーションが可能
      →圧倒的な映像美をプログラミングで魅せれる

 

 

感想

コーディングに関しては、ほぼ自分で考え自分で思ったことばかりを書きましたが、やはり他の人にとって読みやすくするなり、他の人が使いやすいものにするなりと、他人を意識することで、良いコードが身についていくと思いました。

また、グラフィックプログラミング、グラフィックエンジニアリングの面白さを実感しました。想像している通りになるまでこだわり抜くこと、CGに関する知識や様々なツールを利用することで、未知なるものを生み出すことができると感じました。

僕もいつの日か、誰もみたことのない未知なるものを生み出してみたいものです...。