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
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
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.5k
セキュリティキャンプ2023 Y3分散合意ゼミ 最終発表
shinbunbun_
0
5k
NixOSでもご自宅k8sがしたい!
shinbunbun_
2
5.1k
カーネルレベルでTwitterを禁止しよう
shinbunbun_
0
310
CRDTで始めるコンフリクトしないデータ同期
shinbunbun_
0
700
Haskell初心者がHaskellの楽しさについて語る
shinbunbun_
0
240
Rustで楕円曲線暗号の署名アルゴリズムをフルスクラッチ実装してみた話
shinbunbun_
0
2.4k
IEEE802.1X認証を導入してみた
shinbunbun_
0
340
Other Decks in Programming
See All in Programming
仕様書を書く前にハーネスを作る - Agent Native開発は「探索を速く、判定を固く」
gotalab555
4
1.6k
170k Jobs a Day on GKE: Scaling Mercari's CI Platform - and What's Next for AI-Native Development
junyaokabe
0
110
yield再入門 #phpcon
o0h
PRO
0
1k
メールのエイリアス機能を履き違えない
isshinfunada
0
230
FDEが実現するAI駆動経営の現在地
gonta
2
280
夏だ!祭りだ!祭りとはドメインモデリングでは?
ryugen04
0
250
変わらないものが、変わるものを決める — 意図駆動開発 × イベントソーシング × イミュータブル | What Doesn't Change Decides What Can — IDD × Event Sourcing × Immutability
tomohisa
0
1.5k
PHP に部分適用が来るぞ!……ところで何それ?おいしいの? #phpcon / phpcon-2026
shogogg
0
630
属人化した知識を、 AIが辿れる地図にする
pkshadeck
PRO
1
170
Laravel Boostに学ぶ、AIにPHPを書かせる技術 〜OSSの実装から蒸留するエージェント制御の王道〜
kentaroutakeda
3
690
進化を続けるGo toolsの現在地 / The Current State of Ever-Evolving Go Tools
hond0413
0
200
AWS DevOps AgentのAzure接続機能を検証して見えた活用法/Use Cases Verified for the AWS DevOps Agent's Azure Connectivity Feature
masakiokuda
1
230
Featured
See All Featured
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
YesSQL, Process and Tooling at Scale
rocio
174
15k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.7k
First, design no harm
axbom
PRO
2
1.2k
Producing Creativity
orderedlist
PRO
348
40k
Mobile First: as difficult as doing things right
swwweet
225
10k
How Software Deployment tools have changed in the past 20 years
geshan
1
34k
The Cost Of JavaScript in 2023
addyosmani
55
10k
Product Roadmaps are Hard
iamctodd
55
12k
The Curse of the Amulet
leimatthew05
2
14k
AI Search: Where Are We & What Can We Do About It?
aleyda
0
7.8k
Navigating Weather and Climate Data
rabernat
0
470
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作ってみた