[イベントレポート] Battle Conference U30 に参加してきました! #bcu30

2017.03.11

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

おばんです、運動不足のiOSエンジニアのための ⌘R というランニンググループに参加して、なぜか武術の練習をいつものようにしていた田中です。

本日は株式会社サイバーエージェント様主催の、30歳以下の活躍しているエンジニアのためのカンファレンス、Battle Conference U30に参加してきましたので、そのレポートをまとめていきます!

IMG_0286

概要

「Battle Conference U30」は、Under30 エンジニアによる Under30 エンジニアのための技術カンファレンスです。 Talk Battle やAtCoder社によるProgramming Battle (プロコン) といった企画を予定し、若手エンジニアが所属を超え、これまで様々な領域で培ってきた技術的知見の共有や参加者同士のコミュニケーションを促進するとともに、Under30エンジニア達が自身の技術、事業、キャリアにおける挑戦を発表する場と、技術力をより一層向上すべく互いに刺激を受け合うことができる場を提供いたします。また基調講演では、株式会社Gunosy新規事業開発室 執行役員 松本勇気氏に登壇いただくことが決定いたしました。 20代のエンジニアのみなさまぜひご参加くださいませ。

【運営】株式会社サイバーエージェント

Connpassより引用

IMG_7010

基調講演 「U30な僕らの生存戦略」 株式会社Gunosy 新規事業開発室 執行役員 松本勇気さん

スタートアップの立ち上げからGunosyの上場、そして今に至るまで1人のエンジニアとしてなにを意識してきたか、その経験を踏まえてU30のエンジニアとしてこれからいかに戦い生き抜いていくか、エモい話を中心にお話します。

「Gunosyを立ち上げた際ときの話をします。みなさんの参考になる話があれば幸いです。Go言語が好きなのですが、今日はそういう特定の技術に関する話はせず、エモい感じでやっていこうと思います。」

学生時代:「俺たちが次のザッカーバーグになるんだ!!!」 開発者経験はなかったがソーシャルネットワークみたいなノリがあった。ユーザーに使われるものが作りたいというモチベーションでいた。

Gunosy時代ではプロダクト改善で機械学習以外の全てを支える業務を担当。執行役員就任前後からはGo, Dockerなどをやりつつ、技術を引っ張る立ち位置になった。

なぜこういったことをしてきたかといえば、生き残るために、生存戦略としてやってきた。

「目的地に対して最短のスタートラインから始める」。今は昔と比べて低レイヤーを気にしなくてもアプリケーション開発から入れる。今、最新のスタートラインからスタートしていくと良いでしょう。

「どこを目指すのか意識する。」目標はいろいろあってお金・人から認められる・すごいOSSを作るなどありますが、最終的にはどこで誰に評価されるかというものを持ったりだとかが大切。何を目的として、何が評価軸となるのかを考えていくのが良いでしょう。「課題は設定できた時点で7割解決している」

「正しく課題を設定しよう」。「技術Xのスペシャリストになる」という目標を立てるとして、その技術Xが今後の時間経過でどうなっていくのかを見据える必要はある。この先何年使われうるのだろうか。そこから派生する技術Yはどういうものがあるだろうか。

「技術Xのスペシャリストはどういった場所で戦うべきか」。評価される場所はどこか。成長できる場所はどこか。例えば「ビッグデータのスペシャリストになる」といったときに総データ量が1テラしかない組織でそれをやることはどうなのか?といったことなど。

「技術Xのスペシャリストになった末、誰に評価されたいのか、どうありたいのか」。例えば技術Xのスペシャリストになった結果、経営者に認められて経営に携わるエンジニアになりたいのか?、など。

まとめとして、
「目的と現在の環境、その間のマイルストーンを意識すればその方向に最も早く正しく向かえる」
「目的に対して最短距離で走り続け、望む方向で評価されていこう」

参加したセッション

「毎週アップデートを支える技術」 株式会社リクルートマーケティングパートナーズ 金子 直人さん

iOS開発の傍らでKPI設計、施策立案、データ集計まで携わっている経験から、品質を保ちつつ高速に改善を行うための技術について話します。

[スライドは後ほど挿入します]

naoty/Timepiece: Intuitive date handling in Swiftの開発をしています。スター2000弱で、海外の有名ライブラリ30選にも選ばれました(ドヤ」

ゼクシィキッチンの開発に関する話をいただきました。

ゼクシィキッチンでは1月ごろからほぼ毎週アップデートを行っているとのことで、アーキテクチャは以下を条件にレイヤードアーキテクチャで作っていっている。

  • DDD
  • 依存関係が一方行に整理されている

依存関係を一方向に保つことは、各レイヤーにおける依存性を低く保つことができるので変更が容易です。変更が容易なので、これが毎週アップデートを支える部分になる、というお話をいただきました。

「HTTP Live Streaming in iOS」(仮) 株式会社サイバーエージェント 青山 遼 さん

FRESH!や多くの動画サービスで採用されるHLS(HTTP Live Streaming)についての概要とその実装をお話しし、iOS端末をサーバーにしたHLSによるライブ動画の配信、またそのクライアントアプリのデモを行います。

  • HLSについて
  • AVFoundatioについて

HLSというのは、Apple金星のストリーミング動画配信プロトコルのこと。HLSはApple製のため、AVFoundationとの相性が非常に良いとのこと。AVFoundationを使った動画データの扱いや再生をiOSのクラスを使うとどのように実現できるかなどのお話をいただきました。

「AbemaTVでネイティブエンジニアからサーバーエンジニアに挑戦した話」(仮) 株式会社AbemaTV レ ヴァン ギアさん

CyberAgentの新卒2年目の@nghialvです。入社直後はiOSエンジニアとして働きました。半年前にサーバーサイドへ強い興味を持つようになり, AbemaTVのサーバーサイドエンジニアにチャレンジしました。初めてのタスクは「モニタリングシステム導入」というもので,苦労したこと,勉強になったことについて話します。

[スライドは後ほど挿入します]

ネイティブエンジニアからサーバーエンジニアになった挑戦の話。

「AbemaTVサーバーのモニタリングシステムの作成」というのが最初のタスクでした。リポジトリを見てみると、ネイティブでは1リポジトリで開発が行われるが、サーバーサイドには35のレポジトリ存在してびっくり。学習においては本屋プロジェクトの資料などを読んでキャッチアップしていったとのこと。その他AbemaTVで使われているサーバーサイドのアーキテクチャ、技術についてお話いただきました。

「アクセシビリティはじめました」(仮) サイボウズ株式会社 杉山 祐一さん

アクセシビリティ対応は派手な機能追加と比べるとどうしても優先度が低くなりがちです。アクセシビリティ対応を開発チームで継続的に進めていくために、サイボウズで行った啓蒙活動・草の根活動を紹介します。

Webアクセシビリティとは、高齢者・障害者を含む誰もが様々な製品を支障なく使えるかどうかの度合いを表す言葉のこと。Webにおけるアクセシビリティが具体的にどういった要素を指すのか、アクセシビリティが低いとはどういうことを言うのかという解説や、チームでWebアクセシビリティを高めるためにどういった試みをしてきたかなどについて紹介いただきました。

「Webでできるマルチメディア表現」(仮) 株式会社サイバーエージェント 折原 レオナルド 賢さん

Webで表現できるコンテンツは年々リッチ化してきています。一般的なサイトではオーバースペックな機能さえ追加されつつあるWebで、一体どういうことができるのか、デモを交えて紹介したいと思います!(仮)

Webのマルチメディアでできることについて紹介いただきました。

  • Web Audio API
    • Web Audio APIを使ったデモとして、音情報に対してリアルタイムに加工をするサンプルの紹介
  • Web MIDI API
    • Web MIDI APIを使って、音情報に対してリアルタイムに加工をするサンプルの紹介
  • Web GL(three.js)
    • Web GLを使ったスマホ音ゲーのサンプルの紹介

これまではコンテンツのサイズが大きく、リンク一つタップするだけで大容量ファイルのダウンロードが始まるなど困ったことが起こるので、そういったものに対してはWebではなくネイティブで行う風潮があった。しかしService Workerが助け舟になっているとのこと。

MIDIのサンプルでは実際にコントローラーを使ったデモを見ることができて、とても楽しいセッションでした!

「最良の砂場を目指して-プライベート開発を支える技術-」 株式会社トランスリミット 髙橋 誠二さん

業務で扱う技術へのキャッチアップとともに、新しい技術を習得することで好奇心を刺激するような体験を、継続的かつ実践的な範囲で得る方法を、主にサーバーサイドのミドルウェア開発の範囲で試行錯誤した結果について話します。

[スライドは後ほど挿入します]

無限に流行りの技術への入門をして失敗する羽目になる中で有意義なプライベート開発をするにはどうしていくかというエモい話。

  • よりよいプライベート開発は、より良いミドルウェアから。
    • どれだけ長期間やっても個人で開発しているものは大規模な集団で開発しているコア機能には勝つことができないので、どこか特定の分野だけ高速だったり操作が簡素なミドルウェアを作ることで個性を出していく戦略
  • 最初長く続けることを目標に、あとあと高品質なものを短時間で作るのを目標に。
    • まずは持久力を身につけて、試作に余力をさく。
  • タスク管理を業務レベルで行う
    • 個人開発は脇道にそれがち。なので、空き時間を使って「今日はこれをやる」という整理をすることでやることを限定する。
  • 他人も持っている課題にアプローチする。
    • 同世代の友達を持つことで、ある課題が解決されているかどうかを確認していく
  • それなりに大きい会で発表することを前提に
    • 勉強会・カンファレンス駆動開発。承認を得ることが大切。
  • ネット上では多くの人の目に触れるように

登壇者の髙橋さんはこれらに加えて個人開発では以下のことを意識して挑戦をしているとのことでした。

  • 中規模以上の環境を想定したクオリティで
  • コアな機能は保守的に
  • 周辺機能は前衛的に

「車輪の再発明をやろうとしてみた」 Retty株式会社 鈴木 巧さん

今まで、こなしてきたタスクの中で逃避をしたくなったタスクに対し、絶望の中から得られた知見と、新規立ち上げ系のタスクで得られた虚無感と残された希望について話します。

[スライドは後ほど挿入します]

※前職の話です。とのこと。

  • 絶望:オンプレサーバーのCloud移行
    • 構成がわからなくなっているブラックボックスと化したオンプレサーバー
  • 虚無感:3日間サービスCooking
    • 「3日後からサービスリリースするからサーバー構築よろしく」
    • サーバーの構成を考えて構築する余裕がなかった。
    • 開発リソースが無く、インフラ側でアプリの構築も必要だった。

様々な、つらみを、中二病ワードとともにご紹介いただきました。

「オープンソースの最大の長所とは」 楽天株式会社 Tommy Ludwigさん

Javaの Spring frameworkや、分散トレーシングとして利用されるZipkinのコミュニティにさまざまな形で関わり 、学んだことをいくつかご紹介します。

[スライドは後ほど挿入します]

Springなどのコントリビュートを行った経験のあるTommyさんの発表。

OSSとのふれあいの段階は次のような推移があった。憧れ -> 恥・恐怖 -> 達成 -> 共生関係

  • 最初の壁
    • 馬鹿な質問をしたら恥ずかしい。高度に貢献できることがないんじゃないかという思い。
  • 壁を乗り越えるために
    • 自分を無理やり参加させる。レポジトリをWatchし、勉強会やカンファレンスに参加して、発表・教えたりすることで最初の壁を乗り越えてきた。
  • 気持ちよく手伝えるように
    • 壁を乗り換えてからはStackOverflowやGitterで質問に答えられるようになったし、ドキュメンテーションの回線に対しても達成感を得るようになった。
  • 学べたこと
    • 実用的なベストプラクティスを学ぶことができた。solution-drivenではなく、issue-driven
    • オープンソースでは「問題が何か」という
  • よく活躍すると
    • OSSの管理者に気軽に相談できる・相談される。
    • カンファレンスに参加することで効率的に交流できるようになった。
  • 「コミュニティーは機能のうち」
    • 問題があったときにコミュニティに頼ることが大事。
  • オープンソースの最大の長所は参加すればするほどメリットがあるということ!

OSSに対して感じるハードルの高さ、それをどう乗り換えたのかということやOSSに対する精神性などのお話をいただきました。

「自分の足を撃たない技術」 株式会社アクトキャット 桑原 仁雄さん

熟練のプログラマであっても、自分の足をうっかり撃ってしまうことがあります。RubyではRuboCopを使用することでそのような事態を防ぐことが可能です。今回は私がRuboCopで行っている取り組みを紹介します。

自分の足を撃たない = バグを再発させないことのためにLintを導入したというお話。

  • バグを再発させないためにはLintを導入しましょう!
  • バグ改修のためのテストとは違い、Lintの場合テスト対象のコード以外にも他のプロダクトのコードにも適用できるため、オススメ。
  • Lintを使うから作るへ
    • 作ってしまったバグをどんどんLintのルールにしていこう!
  • Lintを整えるのは難しくない
    • 他の言語でもよく使われているものを見てみよう

rubocopについて日本で一番詳しいのは自分!と自負する登壇者の桑原さん。rubocopでお困りの際は@p_ck_まで!

その他

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

セッションの裏ではプログラミングコンテストが同時開催されていました。プロコンには昔から憧れがあるので、見ていて楽しそうでした。

IMG_9951

IMG_5651

RettyさんのNVIDIA Quadro GP100×Ryzen

Rettyさんでは最近機械学習に力を入れているということで、このブース出店でした。カッコいい...(ポプテピ略

IMG_5165

IMG_4402

懇親会

?????

IMG_1224

寿司職人を呼ぶ本気度...!!

IMG_7480

IMG_6649

IMG_4036

IMG_9007

まとめ

Under 30(30歳以下)というくくりのイベントだったため、特定の技術分野に絞られない会でした。普段自分が使用している技術以外の分野について広く知ることのできる良いイベントでした!

僕が今23歳なので、登壇した方々とも歳が近いという親近感もありつつ、数年後に自分が同じように「どこかの分野で活躍するための活動を今していけているだろうか?」ということを考えるよいきっかけとなりました。自分も活躍していくぞ!?というお気持ちです。