Slide 1

Slide 1 text

I and Go! 2018/9/23

Slide 2

Slide 2 text

- soeyu - 会津大学 学部3年 - 生体情報学 - 9/23 インターン中 - 趣味: 深夜ラジオ ( 短い睡眠で快眠を得たい) github 2 自己紹介

Slide 3

Slide 3 text

今日話すこと 3 1. Goとの出会い... 2. Goで作ってきたものたち ... 3. Goの何が良いのか... 4. Goを使ってみて... 5. Goと僕のこれから...

Slide 4

Slide 4 text

“ phase1. goとの出会い 4

Slide 5

Slide 5 text

“ 今から約2年前... 5

Slide 6

Slide 6 text

“ 2016年11月 6

Slide 7

Slide 7 text

7 先輩、僕強くなりたいっすけどプロ グラミングの勉強って言っても、何 から始めたら良いかわからないで す... なに、まだやってないの? 今だとgo言語ってのがオススメだよ 一回やってみな! (多分こんなこと言ってたような ...) Y先輩

Slide 8

Slide 8 text

8

Slide 9

Slide 9 text

▹ dotinstall golang (1000yen) ▹ A tour go ▹ Go Web プログラミング などで文法を覚える ... 9

Slide 10

Slide 10 text

10 それから... 12月 ちょこちょこgoの勉強 1月 英語の勉強に走る ... 2月 英語 : Golang = 8:2 3月 NZ留学 (周りの人めっちゃ勉強してる ...) 4月 帰国後... goを教えてくれた先輩と話すことに

Slide 11

Slide 11 text

11 は...はい!!!!! ところで最近どう? コード書いてるの? 何か作った? え?やってない?何してんの?やらないと! 今からやろう Y先輩

Slide 12

Slide 12 text

12 それから先輩に付きっきりで色々と教わり、初めて goで成果物を作成

Slide 13

Slide 13 text

“ phase2. goで作っってきたものたち 13

Slide 14

Slide 14 text

- お天気BOT - LINE BOT SDK を用いて作成した CHAT BOT - github.com/line/line-bot-sdk-go - 概要 - lineの機能にあるマップを開いて、場所を指定する - その場所の天気、気温などの情報が返る 14 初めての成果物

Slide 15

Slide 15 text

15

Slide 16

Slide 16 text

16 あれ、めっちゃ楽しいな...

Slide 17

Slide 17 text

17 ここから僕のgo人生が始まったような...

Slide 18

Slide 18 text

制作物紹介 18 7. url shortener 8. bot generator 1. 天気 bot 2. twicli 3. raspi-go 4. radio-cli 5. stun server 6. editor

Slide 19

Slide 19 text

制作物紹介 19 7. url shortener 8. bot generator 1. 天気 bot 2. twicli 3. raspi-go 4. radio-cli 5. stun server 6. editor

Slide 20

Slide 20 text

“ 2017年5月 20

Slide 21

Slide 21 text

2. twicli cui上でtwitterの機能を扱えるようにしたもの - https://github.com/soeyusuke/twicli - urfave/cli - fzf (画像を添付するとき用に) - gizak/termui (いい感じのui) 21

Slide 22

Slide 22 text

22 2. twicli $ twicli search “バナナマン”

Slide 23

Slide 23 text

23 2. twicli $ twicli pic “bananaman”

Slide 24

Slide 24 text

24 2. twicli $ twicli user “tenntenn”

Slide 25

Slide 25 text

2. twicli - 初学者にとってcli toolは、作成が楽 - cliを作成しやすいlibrary結構ある - そのcli を強化してくれるlibraryもいっぱい 25

Slide 26

Slide 26 text

制作物紹介 26 7. url shortener 8. bot generator 1. 天気 bot 2. twicli 3. raspi-go 4. radio-cli 5. stun server 6. editor

Slide 27

Slide 27 text

制作物紹介 27 7. url shortener 8. bot generator 1. 天気 bot 2. twicli 3. raspi-go 4. radio-cli 5. stun server 6. editor

Slide 28

Slide 28 text

“ 2017年6月 28

Slide 29

Slide 29 text

3. raspi-go Rasberry piでgoを使ってみた - 大学側のバイトで動画再生システムをraspi で作成したい - gobot - 実際やることは単純でgobotの方で 制御してくれている 29

Slide 30

Slide 30 text

制作物紹介 30 7. url shortener 8. bot generator 1. 天気 bot 2. twicli 3. raspi-go 4. radio-cli 5. stun server 6. editor

Slide 31

Slide 31 text

制作物紹介 31 7. url shortener 8. bot generator 1. 天気 bot 2. twicli 3. raspi-go 4. radio-cli 5. stun server 6. editor

Slide 32

Slide 32 text

“ 2017年11月 32

Slide 33

Slide 33 text

深夜ラジオが好きな僕は、自分の趣味をもっと良くしたい - コマンドでradikoのタイムフリー機能から 自分の好きなラジオを選択すると落とせる... - grafov/m3u8 (m3u8ファイルのデコードして、 プレイリストを作成) - github.com/soeyusuke/bananaman 4. radio-cli 33

Slide 34

Slide 34 text

4. radio-cli 1. ログインしてCookieの取得 2. Tokenの取得 3. Tokenの認証 4. HTTPヘッダーにAuthTokenをセットし、m3u8ファイル を取得 5. M3u8ファイルから音声ファイルを取得 6. ffmpegで取得音声ファイルをconcat 34

Slide 35

Slide 35 text

$ bananamoon -id=LFR -s=20180920010000 -file=sample 35

Slide 36

Slide 36 text

制作物紹介 36 7. url shortener 8. bot generator 1. 天気 bot 2. twicli 3. raspi-go 4. radio-cli 5. stun server 6. editor

Slide 37

Slide 37 text

制作物紹介 37 7. url shortener 8. bot generator 1. 天気 bot 2. twicli 3. raspi-go 4. radio-cli 5. stun server 6. editor

Slide 38

Slide 38 text

“ 2018年2.3月 38

Slide 39

Slide 39 text

ふとNetworkの勉強をしたい!って思う またその時ビデオチャットの仕組みが気になりwebrtcを勉強 - stun server (STUNサーバは外部から見た自PCのIPアドレス取得する) - WebRTCで実際に使われる STUNサーバーは Binding-Request - github.com/soeyusuke/gostun - 標準パッケージで頑張る! 5. gostun 39

Slide 40

Slide 40 text

1. rfc文書の読解(https://tools.ietf.org/html/rfc5389) 5. gostun 40

Slide 41

Slide 41 text

2. 実装 (cli tool 化してわかりやすく...たぶん ) - シフト演算、論理演算が多かった... 3. 運用(まだしてない ) 5. gostun 41

Slide 42

Slide 42 text

42 実装が1番辛いと感じたdecodeの1部分

Slide 43

Slide 43 text

制作物紹介 43 7. url shortener 8. bot generator 1. 天気 bot 2. twicli 3. raspi-go 4. radio-cli 5. stun server 6. editor

Slide 44

Slide 44 text

制作物紹介 44 7. url shortener 8. bot generator 1. 天気 bot 2. twicli 3. raspi-go 4. radio-cli 5. stun server 6. editor

Slide 45

Slide 45 text

“ 2018年 6,7月 45

Slide 46

Slide 46 text

6. gse 先輩とバイナリエディタを作ることに...事前にエディタの ロジックを理解するために作成 - rthornton128/goncurses (ncurses api のラッパー) - Raw mode の実装が楽 - github.com/soeyusuke/gse 46

Slide 47

Slide 47 text

6. gse 47 1. 機能 1.1. モードをもつ 1.2. Cui上で 1.3. キーバインドをもつ (vimを真似しました ) 2. 動作 2.1. raw mode で1文字入力待ち 2.2. 入力に対応する関数等の実行 2.3. windowに反映

Slide 48

Slide 48 text

48

Slide 49

Slide 49 text

“ ほぼvim... 49

Slide 50

Slide 50 text

制作物紹介 50 7. url shortener 8. bot generator 1. 天気 bot 2. twicli 3. raspi-go 4. radio-cli 5. stun server 6. editor

Slide 51

Slide 51 text

制作物紹介 51 7. url shortener 8. bot generator 1. 天気 bot 2. twicli 3. raspi-go 4. radio-cli 5. stun server 6. editor

Slide 52

Slide 52 text

“ 2018年 9月 52

Slide 53

Slide 53 text

7. url shortener 8月のインターン先で、短縮urlの実装をしようとしていた - labstack/echo (validation go-playground validator) - graceful shutdown - github.com/soeyusuke/url_shortener 53

Slide 54

Slide 54 text

7. url shortener 3つのhandler - UrlShortenerHandler - post - UrlShortenerStatusHandler - get - RedirectHandler - get 54

Slide 55

Slide 55 text

7. url shortener - base62 encode, decode - 62種類の文字 A‐Z、a‐z、0‐9 - redirect - 1. パラメータを受け取る - 2. decode - 3. url に redirect 55

Slide 56

Slide 56 text

56 Base62 encode 部分

Slide 57

Slide 57 text

“ 現在... 57

Slide 58

Slide 58 text

8. bot generator 現在開発中 - linebot, messanger bot - 一部機能のpackage 分け - linebot sdk go が変わるごとに修正...辛い 58

Slide 59

Slide 59 text

“ このように なんでもできてしまう 59

Slide 60

Slide 60 text

“ phase 3.4. goの何がいいのか... goを使ってみて... 60

Slide 61

Slide 61 text

61 個人的な goの良さ - 初学者向けの教材?サイト?イベント?が周りに多い - 標準パッケージ、標準 go tool, godocが豊富 - testが良き 、cached... 61

Slide 62

Slide 62 text

- 並行 - ロジックを組むのが楽? - 同期、非同期 - goroutineのようなスレッドモデル 62 個人的な goの良さ 62

Slide 63

Slide 63 text

“ phase 5. goと僕のこれから 63

Slide 64

Slide 64 text

64 - やっぱり、書いていて楽しい - go2 の draftを読んで楽しみ - test masterへ 64 これから 64

Slide 65

Slide 65 text

“ ご静聴ありがとうございま した。 65