IM@S Engineer Talks 2019 クール編

# イベント概要
- https://imas.connpass.com/event/134735/
- 2019/07/06(土) 12:00 〜 18:00
- 会場：株式会社Speee（東京都港区六本木4-1-4 黒崎ビル4F）
- ハッシュタグ：[#imastudy](https://twitter.com/search?q=%23imastudy)
- togetter: https://togetter.com/li/1373719
- [本日のアイマス的飲み物](https://esa-pages.io/p/sharing/10836/posts/216/f5fee5222b8b32c51777.html)
- [動画](https://www.youtube.com/watch?v=8oB-JudUejE)

# 発表
## データサイエンスアイドル「小日向美穂」と考える「つながり」
[スライド資料](https://www.slideshare.net/takemikami/ss-154046027)
[動画 4:48~](https://youtu.be/8oB-JudUejE?t=288)

- 小日向美穂と言えば、**データサイエンスアイドル**
  - 「何つながりなのかな？」
  - もしかして：機械学習
- 機械学習でアイドルの共通の特徴を探る方法
 - 教師あり学習と教師なし学習
 - 線形回帰による回帰・ロジステック回帰による分類・単純パーセプトロン
 - [im@sparql](https://sparql.crssnky.xyz/imas/))からアイドルを観測事象とする整然データを作成
     - 名義尺度を定量データに変換、正規化、欠損値補完
 - 教師データの作成。学習、回帰係数
 - 例えばこんな予測ができる：MillionStarsメンバーのU149所属確率
     - 馬場このみは39人中12位
- 小日向美穂と言えば、**自然言語処理アイドル**
  - 自然言語（熊本弁&標準語に詳しい）
- 自然言語処理で「何つながりなのかな？」を探る
  - TF-IDF重み付け
   - TF：Term Frequency＝テキストにおける単語の出現頻度
   - IDF：Inverted Document Frequency：語句がどのくらいのテキストに出現しているかの度合い 
  - TF-IDFの例：「放課後クライマックスガールズ」を題材にTF-IDFを計算
    - アイドルを説明するテキストを用意 → テキストを語句に分かち書き → TFを計算 → TF-IDFを計算
- 単語の分散表現
  - 単語の意味をベクトルで表現したもの
  - 単語同士の数値的な比較・加減算が可能になる
  - 1-of-N と bag-of-words表現
  - スライド窓による単語列の分割
  - skip-gram表現
  - 分散表現によるTF-IDFの次元削減、分散表現による回帰係数
  - 分析の例：「七尾百合子と誰かの『何つながりなのかな？』」を[WordCloud](http://amueller.github.io/word_cloud/index.html)で表示する
- アイドル同士がどんなテーマで話してそうかを機械学習である程度探ることができる

##  Ut Video Codec Suite 高速化の11年
[スライド資料](https://speakerdeck.com/umezawatakeshi/imas-engineer-talks-2019-11-year-optimization-of-ut-video-codec-suite)
[動画40:05~](https://youtu.be/8oB-JudUejE?t=2405)

- 作者による発表。
- [Ut Video Codec Suite](https://www.gigafree.net/media/codec/utvideocodecsuite.html)とは
 - 映像キャプチャ向け可逆圧縮コーデック。
 - ニコマス方面・MMD方面などいろんなところで使われている。
 - ニコニコ動画で「**神画質**」と言われているものはこのソフトが使われている。
- 作り始めたきっかけ
 - エースコンバット6をキャプりたかった  
- 高速化の歴史
 - 圧縮手法（ハフマン符号・フレーム内予測・planer変換）
 - マルチスレッド化、SIMD
 - ハフマン符号化でループ間のMOV命令を1個削減
 - 部分レジスタトール回避
 - predict gradient フレーム内予測の追加
 - ... etc
 - 結果的に**60倍高速化**

## 小鳥さんとKotlinを勉強できるサイトを100%Kotlinで作る 
[スライド資料](https://speakerdeck.com/subroh0508/xiao-niao-santokotlinwomian-qiang-dekirusaitowo-100-percent-kotlindezuo-ru)
[自作コミュ 1:46:20~](https://youtu.be/8oB-JudUejE?t=6380)
[動画 1:52:57~](https://youtu.be/8oB-JudUejE?t=6777)


- スライドでの発表前に小鳥さんの自作コミュ再生（発表者による生フルボイス付き）
- Kotlinはいいぞ
 - SAM変換（インターフェース定義をラムダで書ける） 
 - Null許容・非許容を「？」で明示。null許容型の場合、直接アクセスするとコンパイルエラーになるので安全。
- 小鳥さんとKotlinを学べるサイト [小鳥さんの自習室](https://github.com/subroh0508/otonashi-kotlin.dev) を作った。
 - Kotlinの基礎的な文法解説
 - **Web上で小鳥さんとペアプログラミングしながらKotlinを勉強できる！**
 - **Kotlinを勉強したい小鳥さんとのコミュを楽しめる！**
- Ktor + Kotlin + React
 - Kotlin/JS: KotlinをJavaScriptに変換するトランスパイラ
 - ＠JsModuleアノテーションを使って、JSをKotlinにインポート
  - この仕組みにはdynamic型が使われており、JSオブジェクトをそのまま扱える
  - `js()` メソッド：Kotlin中に生のJSをそのまま書ける
  - JSに近い文法でそのまま操作できる＝気づいたらJSを書いている罠
- Kotlin/JS はKotlinに慣れてから触るとたくさんの発見がある

# LT第一部
## iOSDCの技術パッション枠でiOS関係なくIM@Studyの話がしたい！
[スライド資料](https://speakerdeck.com/banjun/lets-talk-im-at-study-case-study-in-tech-passion-slot-of-iosdc-plan-and-current-status)
[動画 2:53:13~](https://youtu.be/8oB-JudUejE?t=10393)

- [きのこるFM](https://anchor.fm/kinokoru)
- iOSエンジニアとアイマスのつながりと言えばリンゴ。
- [LoveLiver](https://github.com/mzp/LoveLiver)：デレステMV→ライブフォト切り出し生成。GUIで操作できるものは[こちら](https://github.com/mzp/LoveLiver/releases/tag/1.2.0)。
- ライブ＋心拍数。iOS13 + watchOS 6で騒音レベルのデータもグラフ化できそう
- ライトニングキャプチャー&クロマキー：PhotoStudioPlayer

## 音無小鳥は無能なの！？765プロの経営管理をハックしてみた
[スライド資料](https://www.slideshare.net/DaisukeInagaki3/20190706-kotori)
[動画 2:59:40~](https://youtu.be/8oB-JudUejE?t=10780)

- 765プロの経営管理の現状、アイドルの契約体系といった生々しい話から経営管理をGSuiteを使って効率化する話。
- プロデューサーや事務員は雇用契約。アイドルは委任契約。
- 小鳥さん仕事多すぎ。
- 解決のための手段
  - 基幹システムとしてGoogleDriveを採用することによる情報集約
  - 一部手動オペレーションについてはGoogle App Scriptによる業務の自動化で省略可
     - Gmailから添付ファイルを取得してSlackに自動通知
     - 会計ソフトから情報を自動取得して経営分析を自動で行う
     - 取引を販売管理ソフトから集計して会計ソフトに記録する
     - 経費申請リマインド など
  - クラウド系SaaSを活用して遠方の士業に情報共有
  - GSuite×freeeで無限の効率化
- クラウド化は情報共有の始まり

## 続・Pのための名刺管理サービス
[動画 3:12:25~](https://youtu.be/8oB-JudUejE?t=11545)

- [THE NAMECARDM@STER](https://ncm.fvhp.net/)
- アイマスP向けの名刺管理・交換サービス
- AWS EC2 t3.microでつつがなくサービス中

# じじいにゃつらいよ デレステ フォトスタジオ-ポーズ検索を作った話
[スライド資料](https://speakerdeck.com/osaru/deresute-huotosutazio-pozujian-suo-wozuo-tutahua)
[動画 3:18:47~](https://youtu.be/8oB-JudUejE?t=11927)

- [デレステ フォトスタジオ ポーズ検索](https://y-osaru.github.io/dere-pose-search/search.html)
- フォトスタジオに「○○ちゃんっぽく！」機能が追加。
 - 似ているポーズもあり、どれがどのアイドルのポーズか探すのが困難
- どこかにまとめサイトあるっしょ… → ない
- 仕方ないので作った。
- 画像をまとめるのが大変だるかった。


# im@sparqlでプレイリストを作る 
[スライド資料](https://speakerdeck.com/wakuwakup/im-at-sparqltonaswoxi-gu)
[動画 3:24:04~](https://youtu.be/8oB-JudUejE?t=12244)

- 曲が多い。聴く曲が偏っている。
- プレイリストを自動生成したい
- Node-RED + [Audio Station](https://www.synology.com/ja-jp/dsm/feature/audio_station) + Docker
- しんどいポイント：Audio Station APIリファレンスがない
- 詳細は「週刊 iM@Study」誌面で。

# プロデューサーさん、わたし、Metalデビューしたいですっ！
[動画 3:29:50~](https://youtu.be/8oB-JudUejE?t=12590)

- うづコイン
- Metal: iOSデバイスなどのGPUにほぼ直接アクセスできるグラフィックスAPI


# LT第二部
## IM@Study at 尾張だよ～(o・∇・o)
[スライド資料](https://speakerdeck.com/crssnky/im-at-study-at-wei-zhang-dayo-o-o)
[動画 3:36:13~](https://youtu.be/8oB-JudUejE?t=12973)

- 4月に行われたハンズオン・ハッカソンの活動報告
 - [アイマスハッカソン2019 in 名古屋](https://imas.connpass.com/event/123253/) 
 - [im@sparqlハンズオン](https://imas.connpass.com/event/123762/)
-  「SPARQLを広めていきたいんですね～」「せっかくim@sparkqlあるし、愛知でハンズオンやっていきましょ！」→「LODチャレンジで一緒だった、名工大の白松研に協力いただきました！」
- アイマスハッカソン in 名古屋
  - よかったこと 
     - 大学内の宣伝ポスター。いつもとは違う層への宣伝効果◎
     - デジタルサイネージ「メイ&タクミ」：正門前で「アイマス」と聞くだけでハッカソンの詳細を教えてくれる
  - 改善点
     - 大学内なので飲酒できない → LT大会などは2次会に併設
     - LT大会を2次会で → お店の中なので配信できない

## ナターリアとAkashic Engine
[動画 3:45:21~](https://youtu.be/8oB-JudUejE?t=13521)

- [Akashic Engine](https://akashic-games.github.io/)を用いたダイマ方法。[リポジトリ](https://github.com/akashic-games/akashic-engine)
- ゲームを作って担当アイドルをダイマできる。

1. Akashic Engineをインストール
2. ダイマしたいアイドルのゲームを作る（[公式チュートリアル](https://akashic-games.github.io/tutorial/v2/)参照）
3. [RPGアツマール](https://game.nicovideo.jp/atsumaru/)にアップロード
4. ハッシュタグ付きでゲームのURLツイート

- [akashic-contents](https://github.com/akashic-contents) にオープンソースのゲームがいくつかある。
- それをダウンロードして画像を差し替えることで、手軽に改造できる。もちろんソースコード自体の編集も可能。
- アップロードすれば簡単にダイマ可能。


## 「MVが3人な曲の一覧」って取得できます? (デレステ・ミリシタ・Mステ)

[スライド資料](https://www.slideshare.net/maraigue/mv3-153914414)
[動画 4:00:43~](https://youtu.be/8oB-JudUejE?t=14443)

- [一覧表](https://docs.google.com/spreadsheets/d/1wpZ48F2LbJPauo_cTjAQTVI5SmB6wwSfCmqJsw5fF7s/edit#gid=1154901668) - Googleスプレッドシート
- デレステやミリシタのMVで楽しむ
- 編成を決めてから、それに合うMVを探す
  - 例えば3人編成 → そもそも3人だけ登場するMVって何があるんだっけ？
- 手作業で確認
  - ミリシタ・デレステ：編成画面でわかる（例外あり）
  - Mステ：MVを実際に再生するまでわからない（歌唱3人 MV5人、歌唱3人 MV3人）
- とりあえず一覧表を作った。
  - 今後は歌唱メンバー、難易度・ノーツ数などを追加したい。
  - 更新頻度が高い情報（月数回）のため、自分一人だと多分気力が持たない。他人が編集できる形にしていきたい。

# アイドルと幼馴染になるにはどの県に生まれるべきか。
[動画 4:07:13~](https://youtu.be/8oB-JudUejE?t=14833)

- 統計資料（平成17年人口統計）とアイドルの出身地情報を基に指標を作成し、地図に表示
 - 約15年前の国勢調査資料を基に、アイドルの幼少時代の日本の都道府県人口を調査。
 - 海外及び**ウサミン星は除外** 
- 各都道府県別の出身アイドル数・アイドル密度・アイドル率を地図表示
- アイドル密度・アイドル率の地図を重ねることで、アイドル密度アイドル数相関を表示。
- 結論：東京がおすすめ（身も蓋もないが）
- 地方だと石川県、香川県、京都府、長崎県がおすすめ

# デレマス呼称表から見えるアイドルの関係 
[スライド資料](https://speakerdeck.com/nagomiso/deremasuhu-cheng-biao-karajian-eru-aidorufalseguan-xi)
[動画 4:15:01](https://youtu.be/8oB-JudUejE?t=15301)

- 呼称表からアイドルの関係性を見てみる
 - [アイドルマスターシンデレラガールズ呼称表](https://cgcall.negipo.cc/)
- 呼称データがあるアイドルは交流があると考える
 - 「頂点＝アイドル」「辺＝呼称」のネットワークを分析 
- 分析に使ったもの：[NetworkX](https://networkx.github.io/)
 - 最短経路検索
 - グラフ同士の類似度算出：グラフ同士がどれだけ似ているか
 - 中心性算出：各点を特徴づける指標を算出
- 中心人物は誰か？
 - ネットワークから中心性を算出
 - デレマスコミュニティのコア人物を見つける
- 中心性：次数中心性、近接中心性、媒介中心性
- 結果：本田未央ぶっちぎり…だったが、元データを見てみると、未央から他アイドルへの呼称がほぼ全員分あることが判明。
- 調整後：諸星きらり、川島瑞樹、堀裕子、大槻唯が浮上
- 辻野あかりが夢見りあむと他メンバーの橋渡しになっている
- 結果を見ると、コミュ力が高そうなアイドルが上位に来ていた

# ジェバンニの佐久間まゆ講座
[動画 4:26:11~](https://youtu.be/8oB-JudUejE?t=15971)

- 佐久間まゆはヤンデレではない
- 周りとのコミュニケーションを重んじている
- 編み物や料理が得意＝普通の女の子と同じ
- 我々に深い愛情を伝えてくれる健気な女の子である
- 発表中に言及している小説のリンクは[こちら](https://www.pixiv.net/novel/show.php?id=8189478)

# サーバーレスアプリケーションでサクッと始めたいアイマスbot 
[スライド資料](https://speakerdeck.com/k1style/sabaresuakitekutiyadesakututozuo-ruaimasubot)
[動画 4:32:46~](https://youtu.be/8oB-JudUejE?t=16366)

- [AWS SAM](https://aws.amazon.com/jp/serverless/sam/)
 - AWSのサーバレスアプリケーション構築用フレームワーク 
 - 利用するAWS環境を定義するテンプレートとメインロジックとなるプログラムを開発者が用意
 - SAMで用意されたCLIでテスト・ビルド・デプロイを実施
- AWS Toolkit
 - AWS SAMの機能をIDE上で実行可能にするプラグイン
 - [AWS Toolkit for IntelliJ](https://aws.amazon.com/jp/intellij/)
 - [AWS Toolkit for Eclipse](https://aws.amazon.com/jp/eclipse/)
 - [AWS Toolkit for Visual Studio](https://aws.amazon.com/jp/visualstudio/)
- [いおりんbot](https://github.com/K1-Style/imas-slack-iorin-bot)

1. SlackでBotを用意する
2. AWS Toolkit導入済みのIntelliJでAWS Serverless Applicationのプロジェクト作成
3. Botのエンドポイント等AWS環境の定義をtemplate.yamlに記述
4. Botで動かすプログラムとユニットテストを書く
5. AWS Toolkitを使ってデプロイ

# 未来ちゃんでもわかる?デザインパターン入門 memento pattern ~望月杏奈を再現してみたい~
[スライド資料](https://speakerdeck.com/akira9146/wei-lai-tiyandemowakaru-dezainpatanru-men-memento-pattern-wang-yue-xing-nai-wozai-xian-sitemitai)
[動画 4:39:01~](https://youtu.be/8oB-JudUejE?t=16741)

- 望月杏奈
 - ONモード / OFFモード で性格が切り替わる
     - アイドルの姿：元気いっぱいで活発
     - 普段の姿：引っ込み思案で大人しめ
 - 望月杏奈を再現したい！
- ランダムに切り替える？
 - テンションを記憶させたい
- どうやるか？ 
 - Memento Pattern
 - Mement: 形見
 - Mement Moment：この瞬間を忘れない
- データ構造に対する状態を記憶しておき、以前の状態への復帰を行えるようにする
 - Originator（作成者）：作成・状態を表す
 - Memento（形見）：内部情報を保持する
 - Caretaker（世話人）：作成者に指示を出す・履歴を保持する

# idol2vec アイドル紹介記事の分散表現によりキャラクター性を定量的に扱う試み
[スライド資料](https://speakerdeck.com/shuukeiimascg/idol2vec)
[動画 4:48:54~](https://youtu.be/8oB-JudUejE?t=17334)

- [idol2vec](https://github.com/shuukei-imas-cg/idol2vec) - サンプルコード&モデル
 - Python3.7環境
 - WordVec2モデル添付 
- アイドルのキャラクター性を定量的に扱いたい
 - アイドルの性格・位置づけをグラフ上に表したい
 - 「島村卯月とキャラクター性が近いのは誰？」
 - 「『クール属性の佐久間まゆ』は誰に相当する？」
 - 「卯月と凛を足して2で割ると誰に近い？」
 - これらの疑問に主観的でなく定量的に回答したい
- 文書の分散表現で実現できる？
 - アイドルの人となりについて記述された文書があれば、それを分散表現化（ベクトル化）することで定量的に扱える（仮説）
 - ソース候補はピクシブ百科事典やニコニコ大百科
   - 前処理：タグ、数字の桁区切り、余白、固有名詞（姓名、愛称やユニット名）の除去
 - 単語の分散表現モデル：シンデレラガールズSSコーパスから作成
 - アルゴリズム：SWEM-aver
 - ベクトルの類似度計算：[NGT(Yahoo Japan)](https://github.com/yahoojapan/NGT)を使用
- ベクトル化減算の例
 - 佐久間まゆ－島村卯月＋渋谷凛 → 三船美優
 - 島村卯月－水本ゆかり＋北条花蓮 → 双葉杏
 - 諸星きらり－野々村そら＋渋谷凛 → 神崎蘭子
 - （島村卯月＋渋谷凛）/ 2 → 多田李衣菜
- [TensorBoard](https://www.tensorflow.org/guide/summaries_and_tensorboard)による可視化
- まとめ
 - 結果の解釈は主観的にならざるを得なかった
 - 文書の前処理・文書の分散表現手法の選択によって、結果が大きく変わる
 - メタな位置づけ、記事執筆の癖にも影響されている可能性がある
 - 「任意の評価軸」を設定することは難しい
 - 改善案：ニコニコ大百科とPixiv百科事典の結合、前処理の強化、別の分散表現手法の採用、大規模なコーパスから取得したW2Vモデルの使用 

# 関連
- [im@sparql](https://sparql.crssnky.xyz/imas/)
- [IM@S Engineer Talks 2019 パッション編](https://qiita.com/yama-t/items/47ff3294e8c1dbfabb29)