Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
LINEのおうむ返しbotを徹夜で作ろうとしてギリギリ間に合ったと思ったらやっぱり間に合ってな...
Search
Yuto Takamune
December 04, 2021
Programming
0
190
LINEのおうむ返しbotを徹夜で作ろうとしてギリギリ間に合ったと思ったらやっぱり間に合ってなかった話
Yuto Takamune
December 04, 2021
Tweet
Share
More Decks by Yuto Takamune
See All by Yuto Takamune
GPT-3.5 Turbo をファインチューニングして自分のクローンを作った話
shinbunbun_
0
320
RustのLINEBot SDKを自作した話
shinbunbun_
0
1.8k
セキュリティキャンプ2023 Y3分散合意ゼミ 最終発表
shinbunbun_
0
4k
NixOSでもご自宅k8sがしたい!
shinbunbun_
2
3.9k
カーネルレベルでTwitterを禁止しよう
shinbunbun_
0
250
CRDTで始めるコンフリクトしないデータ同期
shinbunbun_
0
510
Haskell初心者がHaskellの楽しさについて語る
shinbunbun_
0
190
Rustで楕円曲線暗号の署名アルゴリズムをフルスクラッチ実装してみた話
shinbunbun_
0
1.7k
IEEE802.1X認証を導入してみた
shinbunbun_
0
270
Other Decks in Programming
See All in Programming
アプリの "かわいい" を支えるアニメーションツールRiveについて
uetyo
0
230
Android 16 × Jetpack Composeで縦書きテキストエディタを作ろう / Vertical Text Editor with Compose on Android 16
cc4966
1
190
知っているようで知らない"rails new"の世界 / The World of "rails new" You Think You Know but Don't
luccafort
PRO
1
110
「手軽で便利」に潜む罠。 Popover API を WCAG 2.2の視点で安全に使うには
taitotnk
0
850
AIを活用し、今後に備えるための技術知識 / Basic Knowledge to Utilize AI
kishida
22
5.7k
ソフトウェアテスト徹底指南書の紹介
goyoki
1
150
FindyにおけるTakumi活用と脆弱性管理のこれから
rvirus0817
0
500
testingを眺める
matumoto
1
140
Oracle Database Technology Night 92 Database Connection control FAN-AC
oracle4engineer
PRO
1
440
Navigating Dependency Injection with Metro
zacsweers
3
250
意外と簡単!?フロントエンドでパスキー認証を実現する WebAuthn
teamlab
PRO
2
740
Deep Dive into Kotlin Flow
jmatsu
1
310
Featured
See All Featured
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
139
34k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
8
920
Speed Design
sergeychernyshev
32
1.1k
Rebuilding a faster, lazier Slack
samanthasiow
83
9.2k
A designer walks into a library…
pauljervisheath
207
24k
Side Projects
sachag
455
43k
Context Engineering - Making Every Token Count
addyosmani
1
37
Embracing the Ebb and Flow
colly
87
4.8k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
126
53k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
9
810
Building Adaptive Systems
keathley
43
2.7k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
131
19k
Transcript
LINEのおうむ返しbotを徹夜で作ろうとして 失敗したギリギリ間に合ったと思ったらやっ ぱり間に合ってなかった話 会津大学 学部一年 しんぶんぶん
自己紹介 - 会津大学学部一年生 - 人間 - 普段はNuxt.jsとかNode.jsとかGoとか - SGG(学生団体)の運営 -
興味分野はアイデンティティ管理・認証系 - チキング先輩と一緒に卒業したい https://shinbunbun.info/ @shinbunbun_
深刻なネタ不足 - 昨日まで期末試験だったのでネタを考えてる時間がなかった - とりあえず徹夜で何か作ろうと思い、LINEのおうむ返しbotに挑戦 してみた - が、大量のバグが発生して失敗した🥺 - と思ったが、LTの順番が遅かったのでギリギリ間に合った(?)
- と思ったけど間に合ってなかった
技術構成 - openssl, socket.hなどのライブラリを使用し、C言語でソケット通信を実 装 - ちょうど授業でC言語を勉強したので... - サーバはAWSのLightsailにデプロイ -
証明書はLet’s Encrypt ※Webhookサーバはhttps対応じゃないといけないという制約がある
最初につまづいた点 - そもそもCでサーバ書いたことない - しかも、TLS対応のサーバを作ってるサンプルがかなり少ない - 色々調べながら、最初は自己署名証明書でとりあえずサーバを 立ててみた
サーバの用意で普通に手間取る - 普段サーバレスで開発しているので、そもそもサーバを立てるの に手間取った - Let’s Encryptの使い方とか普通に覚えてなかった🥺 - なぜか443ポートが開けられなかった
Content-Lengthつけ忘れて3時間くらいハマった - 途中でリクエストが止まってしまって何もエラーが出なかったの で、全く原因がわからなかった - 通りすがりの真っ黒い先輩が指摘してくれた - ありがとうありがとう...
未定義動作踏みすぎ - 主に変数の初期化し忘れ
やっと動いたかと思いきや... - なぜかサーバ立ち上げて1発目のリクエストしか通らない問題が 発生 - グローバル変数とかスコープをミスってせいで、前のリクエストのヘッ ダーがそのまま残ってた - その後もSSL_readで謎のdelayが発生してて、1リクエストごとに 20秒くらい待たないと返信が返って来ない問題が発生
三度目の正直はなかった - 前述2つの問題が解決して一見完成したか のように思えたが、何件かメッセージを送る と返信が来なくなるという問題が発生 - どうやら前のメッセージのreplyTokenとメッ セージが変数に残ってるっぽい - が、原因はわからず未解決
眠すぎ - 昨日の夜から完徹で作ってたので眠すぎて死にかけた - 徹夜よくない
結局どこまで出来たの?
- ⭕TLS対応のサーバを立てる - ⭕Webhookを受け取る - ⭕JSONをパースしてメッセージの中身を取り出す - ⭕リプライAPIを叩く - 🔺リプライに成功する
あと1時間あれば... どこまで出来たの?
今後の展望 - とりあえずバグは全てとりたい - プロトコルやC言語自体への理解が薄いせいでだいぶ苦しんだの で、その辺を勉強したい - おうむ返しだけじゃなくて他の機能も色々実装したい
次回: CのLINEBot SDK作ってみた