Slide 1

Slide 1 text

LINEのおうむ返しbotを作ってみた 学部一年 しんぶんぶん(高棟雄斗)

Slide 2

Slide 2 text

- 人間です - 会津大学学部一年 - 中三からプログラミング始めて高一からいろいろおしごとしてます - LINE Developer Communityとかでコミュニティ活動してます - 学生エンジニアコミュニティ「すごくなりたいがくせいぐるーぷ( SGG)」運営 - 会津大学プロダクト開発コミュニティ「 ASCs」代表 - FEもBEもインフラ(クラウドからオンプレまで)もだいたい全部やるけど、主に BE をやってます(器用貧乏) - 最近はずっとGo書いてるけどそろそろRustやりたい - 興味分野は認証/アイデンティティ管理 - 好きな仕様書はDecentralized Identifiers (DIDs) v1.0(W3C) - 最近の悩み: オフラインのインターンに行きたい(夏に行った Yahooはオンライン だった)  自己紹介 LINEのおうむ返し botを作ってみた https://shinbunbun.info @shinbunbun_

Slide 3

Slide 3 text

- 自宅にVPNサーバ立てた話 - 寮のNATを頑張って越えた話 - Gentoo Linuxとたわむれた話 - W3Cの仕様書を読みながら、 Web Authentication APIの認証サーバをフルスクラッチ実装した話 最近キモいLTしすぎでは問題 LINEのおうむ返し botを作ってみた

Slide 4

Slide 4 text

僕がもっとまともな人間であることを伝えたい

Slide 5

Slide 5 text

初心に返ってLINEのおうむ返しbotを作ってみました!!

Slide 6

Slide 6 text

- 言語: C言語 - 大学の授業でせっかく C言語を勉強したので、 C言語で実装してみました! - socket.hを使ってソケット通信を実装 - LINEのWebhookサーバはhttps対応する必要があるので、 OpenSSLのライブラリを使って SSL/TLSの コネクションも実装 - サーバ証明書はLet's Encrypt - サーバはAWSのLightsailを使用 - CodepipelineでCDを組もうと思ったけど、そこまでのシステムじゃなかったので VSCodeの Remote Developmentを使ってSSHで開発した 技術構成 LINEのおうむ返し botを作ってみた

Slide 7

Slide 7 text

デモだよ〜

Slide 8

Slide 8 text

コード解説だよ〜

Slide 9

Slide 9 text

- メモリまわりで無限にバグる - 変数の初期化方法が悪かったせいで、前のリクエストのデータが変数内に残ったままになっているというバグが発生 した
 - mallocを使って動的メモリ確保をし、最後に明示的にfreeで解放するという処理を書いたが、mallocは定数倍遅 いらしいのでそのうち高速化したい
 - サンプルが少ない - 単純にsocket通信を実装しているサンプルはたくさんあるが、TLS実装しているサンプルがかなり少なくて大変だった
 - 数少ないサンプルやOpenSSLの公式ドキュメント、ライブラリのソースコードをよみながらなんとか実装した
 - 徹夜だめ - 別のLTのネタにしようと思って1晩で徹夜して作ったので、バグや汚い実装がかなり多い 
 - ある程度バグフィックスやリファクタリングはしたが、まだ結構やばいコードが残ってるのでどうにかしたい 苦労した点 LINEのおうむ返し botを作ってみた

Slide 10

Slide 10 text

Qiitaで記事書きました LINEのおうむ返し botを作ってみた

Slide 11

Slide 11 text

GitHubあります LINEのおうむ返し botを作ってみた shinbunbun/linebot-c-sample

Slide 12

Slide 12 text

- ASCs(Aizu Student Creators)は2021/09に発足した会津大学のプロダクト開発コミュニティ - みんなでチーム開発したりハッカソンにでたりすることで開発技術を向上させることが目的 - 1月か2月に部内(or 学内)ハッカソンを開催する予定 - 協賛(協賛賞、懇親会スポンサーなど)募集中なので、協力してくださる企業様がいらっしゃいましたら是 非ご連絡ください! ASCsについて LINEのおうむ返し botを作ってみた

Slide 13

Slide 13 text

No content