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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Yuto Takamune
December 04, 2021
Programming
210
0
Share
LINEのおうむ返しbotを徹夜で作ろうとしてギリギリ間に合ったと思ったらやっぱり間に合ってなかった話
Yuto Takamune
December 04, 2021
More Decks by Yuto Takamune
See All by Yuto Takamune
GPT-3.5 Turbo をファインチューニングして自分のクローンを作った話
shinbunbun_
1
380
RustのLINEBot SDKを自作した話
shinbunbun_
0
2.4k
セキュリティキャンプ2023 Y3分散合意ゼミ 最終発表
shinbunbun_
0
4.8k
NixOSでもご自宅k8sがしたい!
shinbunbun_
2
4.9k
カーネルレベルでTwitterを禁止しよう
shinbunbun_
0
300
CRDTで始めるコンフリクトしないデータ同期
shinbunbun_
0
650
Haskell初心者がHaskellの楽しさについて語る
shinbunbun_
0
230
Rustで楕円曲線暗号の署名アルゴリズムをフルスクラッチ実装してみた話
shinbunbun_
0
2.3k
IEEE802.1X認証を導入してみた
shinbunbun_
0
330
Other Decks in Programming
See All in Programming
ビジネスモデルから紐解く、AI+型駆動開発
hirokiomote
2
4.7k
Make SRE Operations Easier with Azure SRE Agent
kkamegawa
0
2.3k
脅威をエンジニアリングの糧にして――現場編 / Turning Threats into Engineering Fuel — Field Edition
nrslib
0
220
[2026年度第1回ORセミナー] 計画最適化ベンチャーと競技プログラミング人材
terryu16
0
210
Transactional Change Stream Processing With Debezium and Apache Flink
gunnarmorling
1
140
JavaDoc 再入門
nagise
0
220
柔軟なPDFレイアウトエディタを支える型システム設計 — Discriminated UnionとConditional Typeの実践
minako__ph
4
1.2k
Old Dog, New Tricks: The Java 25 Reinvention - JNation
bazlur_rahman
0
140
AIエージェントと協働するCLI開発 — BunとOpenClawで学んだこと
yoshikouki
1
230
関係性から理解する"同一性"の型用語たち
pvcresin
2
620
DynamoDBには集計系のクエリがないけどなんとかしたい
musan
1
110
1人1案件のプロダクトエンジニア時代に、"プロセス監督"としてチャレンジしたこと
non0113
0
360
Featured
See All Featured
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
55k
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
200
Docker and Python
trallard
47
3.9k
The untapped power of vector embeddings
frankvandijk
2
1.7k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2k
GraphQLとの向き合い方2022年版
quramy
50
15k
エンジニアに許された特別な時間の終わり
watany
107
240k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.5k
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
120
Principles of Awesome APIs and How to Build Them.
keavy
128
17k
AI: The stuff that nobody shows you
jnunemaker
PRO
7
670
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.2k
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作ってみた