# Entaku.rb#0
# Docker
21:05まで
## DockerのYouTube講座
* 概要を説明して課題が3つ
* RubyTutorialの方針そのまま
https://www.youtube.com/watch?v=M4wXwx8qQOs
```
## Task1
3h
AWS
VPC, EC2, IAM
15分以内に適切な権限でEC2立てて、自宅からsshでログイン
VPC
サブネット、ルートテーブル、インターネットゲートウェイ、ネットワークACL
CIDR、アベイラビリティーゾーン
EC2
セキュリティグループ
IAM
ロール、ポリシー(管理ポシリー、カスタムポシリー)
余裕があれば、クロスアカウント
## Task2
5h
Docker
AWSでEC2にDockerをインストールし、Nginxのコンテナをデプロイして、自宅のインターネットからhttpアクセスできるように
基本コマンド、ブリッジネットワーク、ボリュームを理解できること
## Task3
4h
k8s
AWSでEC2にminikubeをインストールし、サービス、デプロイメント、レプリカセット、ポッドのコンセプトが理解でき、Nginxのコンテナをデプロイして、自宅のインターネットからhttpアクセスできること
```
## Dockerなんもわからんから進歩したい
* 自分で立てることはあまりない?
* `Dockerfile`とか`docker-compose.yml`を一から書くことある?
* 仮想環境でデバッグがつらい
* gemにコードを埋め込むのが大変
* Vagrantではあった
* 学習リソース
* https://www.amazon.co.jp/Docker%E5%AE%9F%E8%B7%B5%E3%82%AC%E3%82%A4%E3%83%89-%E7%AC%AC2%E7%89%88-impress-top-gear%E3%82%B7%E3%83%AA%E3%83%BC%E3%82%BA-ebook/dp/B07NDT526Q/ref=sr_1_2?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&dchild=1&keywords=Docker&qid=1588421248&sr=8-2
* https://twitter.com/tdakak/status/1256431883690184705?s=20
* http://docs.docker.jp/
* https://docs.docker.com/
## RailsとDocker
* Dockerってmicroservice Architecture向けでは?
* https://evilmartians.com/chronicles/ruby-on-whales-docker-for-ruby-rails-development
* https://techracho.bpsinc.jp/hachi8833/2019_09_06/79035
* https://techracho.bpsinc.jp/hachi8833/2019_11_20/83450
## Docker遅くて重くてつらいon macOS
* Macやめる
* ツール類変わるのつらい…
* LinuxにOfficeないじゃん…
* Ubuntu別につらくない
* 以前他のコミュニティでも聞いた話だと、Linux系は資産の共有の問題もある
* サポートの問題はありそう
* VagrantでUbuntu入れてその上でDocker
* https://qiita.com/yuki_ycino/items/cb21cf91a39ddd61f484
## コメント蘭
- 損益分岐点、Dockerにもある
# TracePoint
21:40まで
## リンク集
* るりま:https://docs.ruby-lang.org/ja/latest/class/TracePoint.html
* https://speakerdeck.com/igaiga/road-to-white-mages
* https://speakerdeck.com/joker1007/rubyhei-mo-shu-jing-dian?slide=12
## メソッドの引数を分析して型ファイルを自動生成
* https://sorbet.org/ のやっていること?
* ActiveRecord::Base#findみたいに複数の型を受け付けるメソッドだと生成した型ファイルがじゃまになるのでは?
```ruby
def convert_to_int(arg)
arg.to_i
end
def test_convert_to_int
assert_equal 1, convert_to_int('1') # => String -> Integer
end
# => 型ファイル生成
```
```ruby
target :method_name, :method_name2
def test_method_name
# いつもどおりのテスト
assert method_name
end
```
```ruby
# このシグネチャはどうする?
def plus(a, b, c)
a + b + c
end
```
多分、YARDのコメントに想定する型を書きたくなりそう
```ruby
@params a [A]
@params b [B]
@params c [C]
def plus(a, b, c)
a + b + c
end
```
## 型ファイルを生成する流れ
1. TracePoint を有効にする
2. テストを実行する
3. テストが終わったら『テストで呼び出されたメソッド情報を元にして』型ファイルを自動生成する
## 前に TracePoint を使った例(osyo)
* Rails のアプリケーションで任意のクラスが定義されたときに処理をフックしたかった
```ruby
# こんな感じ?
TracePoint.trace(:class) do |tp|
if tp.self.to_s == "Hoge"
binding.irb
end
end
```
# entaku.rb へのフィードバック
## 流れ(osyo)
1. 自己紹介 + 話したいネタを 2 ~ 3個上げる
2. 話したいネタをまとめて参加者が何を話したいのか集計する
3. 話したいネタの上位2〜3個?で話したいネタを決める
4. ネタごとに部屋を分けて各々で話す?
* 話しながら hackmd に記述する
5. 話したネタをまとめる
* hackmd に書いたものがそのまままとめになる?
## ツール的にどう?
- @sanfrecce_osaka: ドキュメント共有ツールはほしい
- 今回のHackMDは良かった
- ログイン不要なのは知らない人をたくさんウェルカムしたいときに有利
- esa は?
- ビデオチャットツールは?
- remo は?
- 高い
- 5000円くらい
- zoom の Pro で 2000円くらい
- とりあえず zoom が良さそう
## テーマの数
- 2テーマ、各30分
- ちょうどよい
- 【参考】今思い出したのは Kyoto.rb がこんな感じのやり方をしているのを思い出した
- Kyoto.rb では
- 最初に気になっている話題を皆で出す
- その後、希望の多いテーマを選出する
- だいたい3セッション2部構成
- 各セッションには担当の司会役がいる
- Nicotama.rbでも似た構成
- 喋れることと聞きたいことを最初に言ってもらう
-
- 喋りたい人が必要だが、人数比が偏ると独演会になってしまう
## 部屋割
- 何を優先して部屋割をするのか
- ネタ優先(ネタ決めしてから部屋をわける)
- メンバー優先(話したことないメンバーを同じ部屋にする、かつ人数を揃える)
- 両方やってみて感想を聞くのは?
- やります💪
## 実際に話した内容についての感想・評価
- 知らないことを知れる
- まんべんなく話していた
- どうやって使っているか、何が辛いか、どういうところが引っかかりやすいところなのかが共有されてよかった
- オンラインなので、書きながら・調べながら話せるのはよい
- 興味がある人が参加していたので話が盛り上がった
- 同時編集なので人が話している間に編集もできる
- HackMDはアウトプットというより補助ツールとしての使用を目的にする
- HackMDの公開は事前に周知して同意を取りたい
- セッション分ける場合は議事録どうする?
- Kyoto.rb では scrapbox でセッション毎にページつくっていた
- 参加者多い場合にテーマ決めるときの挙手どうする?
- HackMDと調整さんのコンボでなんとかならないか
- 部屋割どうする?
## その他
- トイレタイムがほしかった
- 「勉強法」みたいなテーマも出せるので初学者も参加しやすい
最後マイク壊れましたすみませんm(_ _)m
おつかれさまでした(osyo)