DevelopersIO 2023に途中から参加したら最初から参加すればよかったと後悔した話

クラスメソッド主催のカンファレンスイベント、[DevelopersIO 2023](https://event.classmethod.jp/developers-io/2023)に行ってきました。  
Twitterでワイワイしているのを見て行きたくなったので、当日券を買って2日目の途中から参加！  
やっぱりリアル開催っていいですね。周りのエンジニアさんに親近感を感じたり、セッション中の反応で「そこやっぱり気になるよね！」ってなったり。  
1日目から参加して色々な話を聞けばよかったなあ、と後悔しました。  

自分はセッション3つと懇親会に参加させてもらいました。  
以下、
<font color="blue">自分の理解が怪しいところは青色</font>
<font color="red">感想は赤色</font>
で記載します。

## セッション：生成AIのことちゃんと理解してますか？

### 感想

正直、途中から分からなくなった！…んですけど、自分はどこが分からないかというのがちょっと分かったので、結果的によかったです。  
Attentionという概念を自分はあんまり理解していないんだな、みたいな。タイトルの問いかけの通りですね…  
ここで聞いたことが自分にとって直接役に立つということはないんですが、生成AIの特性をよく理解したエンジニアになるための道筋や障害がうっすらと見えたかなあ、と思いました。

### 前半

- 深層学習とTransformerの簡単な解説
  - Transformerのポイントは：これまでのトークンから一番もっともらしい次のトークンを予測する！
  - Transformerもベースはこれまでの機械学習と大きく変わらない
![session1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2917580/d7d629ae-90fa-5a3e-6ccc-258c3e5b1d5c.jpeg)
- 特徴量と表現学習
  - CNNでは浅い層でエッジを抽出、層が深くなるごとに複合的なパーツを認識していく
  - 中間層は転移学習に利用できる
  - 特徴量を低次元に圧縮する：Autoencoder、<font color="blue">内部表現によるEmbedding</blue>
- 自然言語も階層構造
  - 例：「頭が赤い魚を食べる猫」
  - 一意に決まるわけではない<font color="red">(自分の中での常識ではこれの正解が分からない…)</font>
<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">こんばんは。「頭が赤い魚を食べる猫」の考案者です。最近「頭が赤い魚を食べる猫」を再びツイッター上で話題で話題にしていただけているようなので、再掲しておきますね。 <a href="https://t.co/hZLOBMOtW3">pic.twitter.com/hZLOBMOtW3</a></p>&mdash; 中村明裕 (@nakamurakihiro) <a href="https://twitter.com/nakamurakihiro/status/1230798247989366784?ref_src=twsrc%5Etfw">February 21, 2020</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

- Self-Attention
  - Attention(Q,V,C)の3つのパラメータにすべて同じ文章を入れる
  - <font color="red">ここから加速度的に分からなくなった</font>
  - [【Transformerの基礎】Multi-Head Attentionの仕組み](https://agirobots.com/multi-head-attention/)の話を解説してくれていた

- 文献
  - ["ニューラルネットワークの万能近似定理"](https://arxiv.org/pdf/2102.10993.pdf)
  - ["深層学習の統計理論"](https://www.jstage.jst.go.jp/article/jjssj/50/2/50_229/_pdf)
  - ["深層学習の原理に迫る"](https://www.amazon.co.jp/dp/4000297031)
  - ["AI技術の最前線"](https://www.amazon.co.jp/dp/4296112910)
  - ["ディープラーニングを支える技術〈2〉"](https://www.amazon.co.jp/dp/B09XQ9H1KJ)
  - ["大規模言語モデルは新たな知能か"](https://www.amazon.co.jp/dp/4000297198)

### 後半

- LLMを使いこなしていくためのポイント
  - End to Endだけでものごとを考えない
    - AI(に限らずあらゆるツール)はそれ単体ですべてをやってくれるわけではない
  - 業務フローを考える
    - AIをどこにどのように組み込むのが一番いいのか？を考える！
    - ここがアイディアの見せどころ！
  - インターフェースとしての自然言語と制御
    - 特に入力について、すべての情報を制御できないことに注意
      - 入力フォームのように必須の入力項目や選択式の入力項目を設けられない

## セッション：「コードでデータ分析に関わる指標を管理できる"Semantic Layer"、dbtとLookerで何が違うの？」あなたのこの疑問、解消します

### 感想

このセッションは難しかった！「攻めたタイトルだけどきっとSemantic Layerの初歩的な解説が中心になるんだろうなー」と舐めた考えで参加したら、初歩的な解説のスライドはすごい勢いで進んでいったので死ぬかと思いました。  
とはいえ説明の端々からSemantic Layerの重要性が伝わってきて、Lookerを使っているチームは既にこういう世界で仕事しているんだな、と感心しました。  
dbtとLookerでそれぞれの立ち位置に起因する違いがあるというのもちょっとだけ分かった気がする！  
ツールの完成度の面ではまだまだ発展途上なのかな。今のうちに、これからはSemantic Layerが重要！という共通認識を社内で広めていきたい…そのためにはまず自分がもっと理解せねば。  

自分に前提知識が不足していてその場では何が何やらという感じでしたが、自宅に帰ってから以下の記事を読んだら、Semantic Layerという概念はかなり理解できました。多分。  
- [What is a Semantic Layer](https://glossary.airbyte.com/term/semantic-layer/)
- [The Rise of the Semantic Layer: Metrics On-The-Fly](https://airbyte.com/blog/the-rise-of-the-semantic-layer-metrics-on-the-fly)


### Semantic Layerとは

- Semantic Layerとは
  - ビジネス指標の定義を統制できる
    - 例えば…30歳以上ってAGE>=30？AGE>30？
  - YAMLベースのコードで定義するのがスタンダード。コードは製品ごとに固有
![session2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2917580/6104e270-ac4f-a17c-f52e-e290e219a12c.jpeg)
- Lookerでは…
  - LookerはBIツール
  - LookMLというコードで定義することでSemantic Layerを扱える
- dbtとは
  - データ変換に特化したサービス。自動テストやドキュメント化もできる
  - dbt Semantic Layerという機能がリリースされた！
  - さらにOSSのSemantic LayerであるMetricFlowを買収して、現在は統合中
    - 統合前のものをこの記事では旧バージョンと記載
- 比較の前提
  - Looker：23.10
  - dbt：2023年6月時点のドキュメント

### 各観点での比較

- Semantic Layerに関する用語
  - Looker
    - Dimension：分析の軸
    - Measure：集計指標
    - View：DimensionとMeasureをまとめたもの
    - Explore：単一View、あるいはJOINする複数View
    - Model：Exploreの上位オブジェクト
  - dbt
    - dimension：分析の軸
    - measure：集計指標
    - semantic_models：LookerにおけるView
    - entities：semantic_modelsを結合するときに使うキー
    - metrics：エンドユーザが参照する指標
- 指標の参照方法
  - Looker
    - 事前に定義済みのmetricsとdimenisionsを参照する
  - dbt
    - 事前に定義済みのmetricsとdimenisionsを参照する
  - オプショナルな参照方法もあるがどちらも同じ
- クエリの最適化
  - Looker
    - Symmetric Aggregates：fan-outを防ぐためにクエリを都度書き換えてくれる<font color="red">(すごい)</font>
    - Aggregate Awareness：参照するテーブルを動的に切り替えてくれる<font color="red">(すごい)</font>
  - dbt
    - 最低限のsemantic_modelsを結合する
    - 組合せがある場合は結合しない
- キャッシュ
  - Looker
    - キャッシュがある。キャッシュの制御もLookMLで！
  - dbt
    - 今後開発予定
- WINDOW関数
  - Looker
    - Derived Tableを使う必要がある
    - 対象となるデータを動的に変更したいときはテンプレートフィルター
  - dbt
    - 旧バージョンに存在したSecondary calculationsが再導入される予定
- 連携可能なBIツール
  - Looker
    - Power BIやGoogle Spreadsheetで対応
    - Tableau、ThoughtSpotが対応予定
    - ウェブサイト埋め込みで社外に公開できるのが強み！
  - dbt
    - 未定。今年の後半に情報公開予定！
    - 旧バージョンではLightdash、Preset、…
    - Tableauから接続できるがカスタムクエリが必須
- データカタログ
  - Looker
    - Atlan、Secoda、OpenMetadata、…などの第三世代データカタログがそれぞれ対応
  - dbt
    - ネイティブ接続できるものはまだない
    - 旧バージョンではSecoda
      - <font color="blue">metricsがどのように導出されるのかがそのまま登録されていた</font><font color="red">(強い)</font>
- その他
  - Looker
    - 行レベルセキュリティ
    - 列レベルセキュリティ
  - dbt
    - 変換からSemantic Layerまでを一貫して開発できる<font color="red">(超重要)</font>
      - 例えば、metricがどのように導出されるのかを変換まで遡ってリネージとして表示できる<font color="red">(超すごい)</font>

### どう選定するか？

- 既存のデータ基盤との相性
  - 例えばdbt以外でデータモデリングしているのにdbtを導入するのは二度手間
  - BIツール観点では、連携手順、クエリパフォーマンス、開発ブランチをテストできるか
- 未来のデータ基盤との相性(と期待)
  - データカタログ：データカタログでSemantic Layerと連携して何をしたいのか？
  - アプリのアーキテクチャを大きく変えなくても参照できるか？
  - 生成AIとの関係性：定義した指標を学習させることでより的確な情報を得られるようになるんじゃないか？
- 焦らない！
  - Semantic Layerは導入して終わりではない。適切な定義とユーザへの浸透が必要

## セッション：ITエンジニアこそ筋トレをやるべき理由を徹底解説！！（たまにGoogle Cloud）

### このセッションの感想

ほぼ筋トレの話しかしていない。参加者からの質問も次々に出ていてすごい活発なセッションでした！  
この肉体、説得力がすごい！自分も筋トレしようと思いました。  
![session3.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2917580/9c4ad1b4-4348-9cb5-9ed9-52fd70c9ac6e.jpeg)

### 筋トレについて

- エンジニアと筋トレの関係性
  - 知識も筋肉もやればつく、継続が大事！
  - 知識も筋肉も効率的につけるためには根拠ある事実が必要
  - 筋トレを通じて体力がつく、筋肉を鍛えればポンプ効果で脳に血流を回せる！
- ["筋トレが最強のソリューションである"](https://www.amazon.co.jp/dp/4426608376)
- 適度な運動による認知能力向上。実験では中強度で効果あり
  - その理由：BDNF
  - BDNFとは…脳にいい影響を与えるタンパク質
    - 神経細胞の成長を調整
    - 筋肉を動かす→カタプシン(マイオカインの一種)が分泌される→カタプシンがBDNFの放出を促す
    - 注意：BDNFが放出されるタイミングは個人差がある！
  - 運動強度ごとに「適度な運動」となる時間的な目安が存在する
    - 筋トレなら休みながら1時間、など
- 心の強さ
  - 運動によりセロトニンとβエンドルフィンが分泌される
  - セロトニンが分泌されるにはその前駆体のトリプトファンを接種している必要があるので、食事も大事
    - アミノ酸スコア100のものを食べればいい。卵、チーズ、魚、牛肉、鶏肉、豚肉
- 結論
  - まずは早歩き、あるいはスクワットからやろう！
  - やればやっただけ得になる

### Google Cloudについて(一部抜粋)

- 一つのグローバルIPで複数のリージョンにロードバランスできる<font color="blue">(プレミアムティアのみ？)</font>
- 組織階層を理解しよう
  - ポリシーを組織階層内のどれかに割り当てる(組織ポリシー)
- クラスメソッドのリセールを使うと3%オフ、さらにサポートが付いてくる！
- <font color="red">筋トレとGoogle Cloudの関係性はハイコンテクスト過ぎてわかりませんでした</font>

### QA

- 食事が夜遅くなった場合は何を食べればいい？
  - 胃に食べ物があると睡眠の質に影響があるので、消化がいいものがいい。就寝2時間前までが望ましい
  - 例えばプロテインとうどん
  - 消化がいいものが必ずしも家にないと思う。そういうときは栄養を考えてタンパク質を含むものを
- 腕や胸を大きくしたいんだけど
  - 腕立て伏せがオススメ！
  - 上腕二頭筋は二関節筋なのでこれを鍛えることで肩と腕の両方が大きくなる
- 自重トレーニングはやっているけどジムは行くべき？
  - 無理に行かなくてもいい。行く目的はマシンを使うことなので安いところからでいい
  - 自重トレーニングは狙ったところに効かせるのが難しいが、マシンを使うとそれが簡単

## その他

ログインボーナスです。ごちそうさまでした。  
![lunch.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2917580/48b6ccc0-751c-8c22-946f-57c40b0b61f9.jpeg)

クラスメソッドさんのオフィス、いいところですね！  
![office.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2917580/34c317ae-535c-626c-4ffa-03bfc93b2468.jpeg)

リアル開催の醍醐味、交流会！  
なんとなくで参加したテーブルが楽しすぎてごくごく一部の人にしかご挨拶できませんでしたが、それはそれでよし！  
社内チャットに誰も反応してくれない問題について盛り上がりました。いまふりかえってみると、なんて後ろ向きな話題だ…  
![banquet.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2917580/9107201f-40ff-9198-cf39-6fa740119af1.jpeg)