Upgrade to Pro — share decks privately, control downloads, hide ads and more …

LINEのおうむ返しbot作ってみた

 LINEのおうむ返しbot作ってみた

Yuto Takamune

December 11, 2021
Tweet

More Decks by Yuto Takamune

Other Decks in Programming

Transcript

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  7. デモだよ〜

    View Slide

  8. コード解説だよ〜

    View Slide

  9. - メモリまわりで無限にバグる
    - 変数の初期化方法が悪かったせいで、前のリクエストのデータが変数内に残ったままになっているというバグが発生
    した

    - mallocを使って動的メモリ確保をし、最後に明示的にfreeで解放するという処理を書いたが、mallocは定数倍遅
    いらしいのでそのうち高速化したい

    - サンプルが少ない
    - 単純にsocket通信を実装しているサンプルはたくさんあるが、TLS実装しているサンプルがかなり少なくて大変だった

    - 数少ないサンプルやOpenSSLの公式ドキュメント、ライブラリのソースコードをよみながらなんとか実装した

    - 徹夜だめ
    - 別のLTのネタにしようと思って1晩で徹夜して作ったので、バグや汚い実装がかなり多い 

    - ある程度バグフィックスやリファクタリングはしたが、まだ結構やばいコードが残ってるのでどうにかしたい
    苦労した点
    LINEのおうむ返し botを作ってみた

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  13. View Slide