潜伏バグからのロングフリーズ

Javaっぽいエンジニアの徒然草

デブサミ2017いってきた

f:id:monokurotamago:20170222221542p:plain

f:id:monokurotamago:20170216143921j:plain

 

先週、デブサミ2017に参加してきました。

一部公演について、メモした内容を記載しておきます。

メモの内容に誤りがあったらごめんなさい(> <)

 

codezineさんがまとめ作っているので、詳しくはこちらを参照すると間違いないよ!

http://codezine.jp/article/detail/9999

 

 

----------ここからメモ------------ 

1日目15:15~16:00
【16-B-5】
AI礼賛時代にエンジニアはいかにしてサバイブすべきか

f:id:monokurotamago:20170216151534j:plain


資料
https://speakerdeck.com/rindai87/how-should-engineers-survive-during-ai-era

 

ここ1年でいっきに人工知能ブームがきた。

人工知能やりたまえという謎のプレッシャー。


人工知能機械学習の手法を知りたい
ブラックボックスのままAPIのコールすればOK → つまらない
チートシートを活用して適切なアルゴリズムを選択すればOK → つまらない
WEB上で色々なアルゴリズムをシミュレート playground.tensorflow.org
機械学習っぽくなったけど難易度高いよ・・・

 

ある程度機械学習やりたいなら数学の知識は必要
特に線形代数微分は必要。

機械学習のポイント抑えたいなら「ゼロから作るDeep Learning」という本オススメ。

 

・実際にキャリアにどんな風に関わるの?
話の前提
 ・人工的なものをプロジェクトとして考える
 ・なんでもできるスーパーマンがいない状態
 ・事業会社に中で完結していないケース

人工知能に取り組む目的
 ・コスト削減
 ・品質の均一化
 ・既存サービスの強化
 ・新規事業の創出

 

人工知能は過度な期待が寄せられがち
→ 経験がないなら計画は小さく

 

人工知能的なアプローチはやってみなければわからないので、実証実験から始めることが多い。

「このデータを使うと、何ができるか」を最初に見る
手持ちのデータややりたいことから、何ができるかを実証実験。

入口「データ」 → 人工知能 → 出口「アプリケーション」

データサイエンティストとエンジニアの両方と会話ができる取りまとめ役がいないとプロジェクト進行に難あり。
→作るものがブレてしまう。

 

人工知能機械学習は、一度作ったらしばらく使えるというものではない。
得られるデータが変わっていくため、定期的なモデルのメンテナンスが必要。

今の人工知能は、最初の設計から逸脱したものを追随できるほど汎用的なものではない。

分析モデルが目に見えないものであるため、お客様との信頼関係が超重要。


新しい論文や理論が次々出るので、ツールやライブラリで提供されるのをまっていてはおいつけない。
自分で環境構築してできる人が必要。

ビジネスとしてやりたいこと、AIでできること、それをプロダクトとして提供できる人。

機械学習はCPUではなくGPUで処理するとすごく早い。

 

 

1日目16:20~17:05

【16-B-6】
ユーザ事例と開発手法の二本立て!毎月3万チケットが登録されるRedmine運用と今どきのRubyによるアジャイル開発手法

 

前半戦

REDMINEつかったことあるひとー? 大半挙手
全社的にREDMINEいれてるところー? ちらほら

 

REDMINE導入前はエクセル使ってました。

プロジェクト管理の標準ツールとしてREDMINEを2015年4月に導入しました。

導入の狙いは・・・
プロジェクト状況の見える化

ヒアリングして改善のためプラグイン作りましたーという話。
具体的な話がなかった・・・


後半戦

Lychee Redmine

 → ぱっと見凄く使いやすそう。

   全部JS制御でドラッグドロップでポチポチできる。

 

専任テスターを設けて、テストコードのわかりやすさで実装コードの質をはかっている。
プラグインのフロントには、backborn.jsやreactを使っているとのこと。
チームプレーで品質を高めて効率を図る、これ大事。

 

 

1日目17:25~18:45
【16-C-7】
「ITエンジニアに読んでほしい!技術書・ビジネス書大賞 2017」プレゼン大会

 

技術書部門

■ゼロから作るDeep Learning
Pythonでライブラリ使わずに自作する本。B-5セッションでオススメされてたやつ。
・作る経験 ・動かす発見 ・分かる喜び
自分で作る〜

■暗号技術入門第3版
難しい数式つかわない、図形も簡略に、内容は最新のものをモットーに作成。
数学やコンピューターの知識が前提になっていないので、誰でも理解できるように書いた。

■達人プログラマ
1999年に書かれた本。ピアソンが技術書撤退したから代わりにオーム社から。
レビュー入っているのでピアソン版とは訳が異なる箇所あって、比較すると面白いかも。
昔に書かれた本なので、今の内容とはマッチしていない箇所があるけど、本質的には良い内容。
→ 古典と思うと良さそう。


ビジネス書部門

■なぜあなたの仕事が終わらないのか
中島さんの時間術がすごいと思ったきっかけ → 技評の記事。
記事の内容を編集者が1ヶ月試した結果、仕事が進んだので執筆のオファーを出した。
仕事に追われる毎日 → 土日に休めるようになる → 半年の休みがとれる
ように編集者さんはなったらしい。

まずは雑務を終わらせる → そしたら大事な仕事に集中できる


■ITエンジニアが覚えておきたい英語動詞30
英語が好きな人ー? → 1人だけ。英語嫌いな人にオススメの本です。
ITエンジニアは、名詞については普段から英語を使っているので、動詞を使えればそれっぽくできる。
アメリカの話。海外からくるエンジニアが多い。そこで会議するときに、どんな英語が使われるか。それをまとめたのがこの本。
海外からくるエンジニアは英語が得意なのではなく、エンジニアリングが得意なだけ。つまり、最低限のコミュニケーションがとれればOK
日本語と違って英語は動詞が大事。
TOEICの高得点ではなく、ミニマムな動詞力が求められている。とのこと。


■最強の働き方
・優先順位の高いことが凝縮されていること
・体系的になっていること
・面白いこと
執筆者が、世界中の上司から怒られた内容をまとめたもの。

 

 

2日目13:05~13:50
【17-A-3】
サーバレスにおける開発プロセス戦略

 

FaaSを使った開発を前提。
開発プロセスづくりの第一歩が目的。

 

サーバレスの開発に使われているツール
一位 Serverless Framework

 

苦労したところ

・Lambdaの導入事例が少なくて、本当に耐えられるか不安があった
・エラーログの解析のUIがわからなくてログ解析に手間取った

 → CloudWatch Logsを開発中はSlackに垂れ流す手がある
・ローカルでテストがしにくい。UTはできるけど通しテストができない。

 

UTどうやってる?
GitHubにプッシュするとUTが走る形でローカルにて実施している。

 S3とか絡むと難しいから、そこは実際にイベント流している。

 ビジネスロジックはLambdaやS3とは分離するように心がけている
・ローカルでUTを実行しているが、CIはできていない。

 関数単位で試験できるようにしておいて、全体はAPIつないで、INPUTとOUTPUTみる形でテストしている。

ステージ環境の管理どうやってる?
・使っていない。環境ごとのデプロイは別で管理させている。
・全環境ごとにプレフィクス使って管理している。数が増えてきたことと、デプロイミスがちょいちょい出てくるので自動化したい。
・使っていない。AWSのアカウントで開発環境と本番環境が分かれている形。
→ 今のところ3人ともステージ環境が必要とは思っていない模様

 

リリース管理どうやってる?
・基本的にはGitHubにプッシュしてCI回すかたち。小さい関数とかはzipに固めてUPしちゃうこともある。
・Gitでソース管理。関連ソースが同じツリーに入っているので、そこからビルドする。Jenkinsからキックしてビルド。
・自動デプロイはしていない。開発環境と本番でVPCが異なるので、環境毎に切り分けしているかたち。

 

サーバレスに向いてるシステムってどんなの?
・単純なサービス、開発体制でいうと少人数のもの
・時間かかるものは不向き。非同期処理は向いている
・イベント駆動で、必要な時にだけ動いて欲しい処理は向いている

 

 

2日目14:10~14:55
【17-A-4】
C#で簡単にモバイルアプリを作ろう!

 

VS 2017 3月7日にリリース。無料。

C#にはこんな機能あるよ
・多値戻り値 タプル
・コレクション操作 LINQ
・非同期処理 async/await
・型引数 ジェネリクス
・匿名関数 ラムダ式 など

 

VS2017によるライブコーディング
WEBからJSON引っ張ろうとしてA会場のWiFi問題

 

いろんなプラットフォームで動く
JavaJVM上で中間コードが実行される
C#は.NET環境があれば、同じように中間コードが実行される。
  Windowsなら .NET Framework
  Linux, Macなら Mono

 

Visual Studio for Mac無料です。

 

Xamarin (ざまりん)
C#だけで動かせるクロスプラットフォーム座間市のマスコットじゃないよ。

f:id:monokurotamago:20170222223647p:plain

iOSアプリもAndroidアプリも一つのもので作りたい → Xamarin
iOSアプリ、Androidアプリ、UWPアプリ 全てつくれます。
 ✴︎UWPアプリ→Windows phoneのやつ

Xamarinによるコード共有化は6割。全て共有できるわけではない。

WindowsiOSアプリ作りたい → XcodeにしかSDKおけないので、ホスト用のMac端末が必要
MacでUWPアプリ作りたい → Windowsないと無理

 

 

 

2日目15:15~16:00
【17-D-5】
エンジニアが起業するとき気を付けること

f:id:monokurotamago:20170217151604j:plain

 

起業=自由
遅刻ない、休日もない
残業がない会社にする自由 → ただし、最初から残業しないと決めておかないと難しい。
アーキテクチャもテクノロジも自分で全て決めれる。

 

一番大事なところ
開発費・運用費を初期費用・システム利用料に書き換える自由

 

ウォーターフォール
 開発費が最初にかかる、運用になると人が減るので後半は費用がかからない
 システムが稼働すると利益が伸び始め、収益が増える。
 大半のエンジニアは開発だけに携わるので、遅いだの高いだの文句言われるだけだが、その後は実はすごかったとなって継続する。

 

増員
優秀な人から採用されるので、人数が増えると追加ひとりあたりの生産性が低くなる。

アジャイルでやるとそういうことがない。

 

主要な顧客の近くにオフィスを構えている。4分以内。
→ 営業が苦手なので、何かあったらすぐ行きますという風に対処してます

 

エンジニアが起業する時に気をつけること
なんでも本当に自由です。
契約も自由です。

開発費 → 初期費用
運用費 → システム利用料

このように書き換えるだけで「働いたからお金をもらう」という考え方から「システムを作って、それが稼働しているから収益の一部をもらっている」という考え方

にシフトできる。

 

 

 

2日目16:20~17:05
【17-A-6】
ニコニコ動画・生放送の配信基盤刷新

f:id:monokurotamago:20170217162144j:plain

 

動画数1420万、生放送数2.9億
最初に作られた(10年前)ころの想定からは規模が大きくなりすぎた

スマホの台頭により利用環境が変化、デームデバイスでも視聴可能。

ブラウザの話では、Flashの時代からHTML5の時代へ。

ニコニコも2016年末〜2017年1月にかけて、フラッシュからHTML5にかわった。

 

新たに配信基盤を作りました。

f:id:monokurotamago:20170222224145p:plain

dwango media cluster (DMC)

本邦初公開!

DMCの利用言語は Erlang, C/C++, Rustの3つです。
使い分けは?

 ・Erlang

  映像の送受信、中継、ストレージ、負荷状況のモニタリング、API応答処理、ようするにほとんど全てこれメイン。ただし、速度ではC, Rustに劣ります。

 ・C/C++

  映像のトランスコードに使ってます。速度大事。

 ・Rust

  分散ファイルシステムに使ってます。別にこれじゃなくても良かったけど、ぶっちゃけ使ってみたかっただけです。

 

動画毎に、高画質、中画質、低画質、高音質、中音質、低音質の組み合わせ9パターン用意していたが、容量食い過ぎ・・・
→ 画質と音質を組み合わせることで、6パターンで再現


性能と上長度を担保しつつ容量効率を満たすため、Rustで独自の分散ファイルシステムを作った。

 

----------ここまでメモ------------

 

 

感想とかとか。

 

東京に住んでた時には特に意識してませんでしたが、地方民となった今では改めて「関東圏はIT関連に恵まれているなぁ」と思わざるを得ません。

電車賃数百円払えば会場に行けるなんて素晴らしいです。

 

前置きはこの辺にしまして、ここ4、5年は毎年デブサミに参加しているのですが、今回初めて「技術書・ビジネス書大賞」を受講しました。

デブサミ講演者はスライドの作り方や話し方が総じて上手だなぁと毎回感じていましたが、このセッションでプレゼンターを務めた6名は一段とレベルが高く、内容はしっかり伝わる中にユーモアがあり、是非本を読んでみたいと思わされました。

 

個人的にタイムリーな話題に関わるお話も聞けたりしましたが、その辺は割愛します。

 

帰り際には、様々なイベントでよくお見かけする "某有名な方" とお話させていただく機会もあり、有意義な時間を過ごすことができました。

 

最後に戦利品をパシャりと。

(注意:林檎マークは戦利品ではなく、ただの背景です)

f:id:monokurotamago:20170222223049j:plain

 

 

・・・・・・だらだら書いたら5000文字こえてました。

なげぇよw というツッコミはナシの方向で検討いただきたく。