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
2 週間で Twitter Bot を作ってみた
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Daisuke Garaike
April 23, 2024
Programming
1.3k
0
Share
2 週間で Twitter Bot を作ってみた
"TechBrew in 東京〜業務外で取り組む 個人開発での学び〜" での LT で用いたスライド。
https://findy.connpass.com/event/313271/
Daisuke Garaike
April 23, 2024
More Decks by Daisuke Garaike
See All by Daisuke Garaike
立川で超かぐや姫!について話したい / Talking Cosmic Princess Kaguya! in Tachikawa
contour_gara
1
110
AR グラス + ミニ PC で実現する新しいモバイル環境
contour_gara
0
300
TDD 実践ミニトーク
contour_gara
1
410
Spring Boot と AWS S3 を使ったアプリケーションのテスト
contour_gara
0
130
ノート PC に Linux 入れてみたけど結構良かった
contour_gara
0
3.5k
JUnit5 から Kotest へ
contour_gara
0
200
社外での学びを社内に還元したい
contour_gara
1
540
Database Rider を用いたデータベーステスト
contour_gara
0
470
Other Decks in Programming
See All in Programming
〜バイブコーディングを超えて〜 チームで実験し続けたAI駆動開発
tigertora7571
0
190
ローカルLLMでどこまでコードが書けるか / How much code can be written on a local LLM
kishida
2
300
Agentic Elixir
whatyouhide
0
440
Spec Driven Development | AI Summit Vilnius
danielsogl
PRO
1
140
実用!Hono RPC2026
yodaka
2
300
AI時代のエンジニアリングの原則 / Engineering Principles in the AI Era
haru860
0
1.1k
Symfony AI in Action - SymfonyLive Berlin 2026
chr_hertel
1
110
How We Benchmarked Quarkus: Patterns and anti-patterns
hollycummins
1
180
t *testing.T は どこからやってくるの?
otakakot
1
900
ついに来た!本格的なマルチクラウド時代の Google Cloud
maroon1st
0
370
過去のレビュー知見をSkillsで資産化した話
pkshadeck
PRO
1
1.3k
HTML-Aware ERB: The Path to Reactive Rendering @ RubyKaigi 2026, Hakodate, Japan
marcoroth
0
640
Featured
See All Featured
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
380
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
430
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
540
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.7k
Building Adaptive Systems
keathley
44
3k
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
5.7k
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Ethics towards AI in product and experience design
skipperchong
2
270
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.5k
RailsConf 2023
tenderlove
30
1.4k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
WCS-LA-2024
lcolladotor
0
570
Transcript
2 週間で Twitter Bot を作ってみた 2024-04-23 TechBrew in 東京 Daisuke
Garaike
自己紹介 gara Twitter: @contour_gara GitHub: contour-gara 大学院では大気海洋相互作用の研究 Python, Fortran 23
年に新卒で入社 Java でサーバーサイドの開発 業務外では Kotlin
写真を毎日投稿してくれる Bot 写真が趣味なので、 毎日写真を投稿したい。 投稿時間、文章は毎回同じなのに、 毎回設定するのは面倒。 決まった所に写真を置いておけば 投稿してくれる Bot があると助かる。
https://github.com/contour-gara/ gara-photo-spring-boot
実は...... Python で自動化コードを書いたものが動かなくなった。 https://x.com/XDevelopers/status/1641222782594990080 だらだら書くコーディングスタイルだったため、 リファクタリングできなかった。
技術選定で悩んだ • Kotlin • ライブラリに依存しない設計 • バージョン管理、自動化、テスト • Spring Boot,
Ktor • Mybatis, Expose • Docker, Kubernates 素早い価値提供 (LT) のためにも、 左の慣れている技術を採用した 必ずやりたかったこと 諦めたこと
アーキテクチャ? • 手続き型の書き方でスクリプトを書く • 決められた Path に写真を置いておく • cron で定時にプログラムを実行
これまで これから • オブジェクト指向で保守性の高いアプリケーション開発 • 自宅のサーバーでコンテナを起動 • Dropbox に写真を置いておく • cron で定時に Dropbox のファイルをコピー • cron で定時に API を叩く https://little-hands.hatenablog.com/entry/2 018/12/10/ddd-architecture
2 週間 → 2 日間 土日はサボってしまう。 テストで悩んでしまう。 https://github.com/contour-gara/gara- photo-spring-boot/commits/main/ 動くプロダクトを作るために
LT に申し込んだ。 旅行 検証 モデリング 資料 作成 クライアントの テストどうするん? 開発 開発 申込
Twitter クライアントのテスト Twitter4J と twitter4j-v2 を使用 https://github.com/Twitter4J/Twitter4J https://github.com/takke/twitter4j-v2 適切なリクエストと適切なレスポンスがある以上、 テストすべきではないだろうか?
ライブラリ API End Point Twitter4J: 変更可能 → モック可能 v2: ハードコーディング 既存のドメインに対してのリクエストを テストする方法はあるのだろうか...... リクエスト レスポンス
まとめと今後 2 週間後に LT をするというケツを設定することで、 なんとか作りきることができた。 技術選定で悩み、諦めたことを挑戦していきたい。 ライブラリをフォークして、テストしやすくしたい。 自分というユーザーがいる プロダクトを大切に開発を続けたい