狠狠撸

狠狠撸Share a Scribd company logo
@nukokusa_bot を支える技術
@nukokusa_bot
●
Twitter Bot
– https://twitter.com/nukokusa_bot
– https://github.com/Joe-noh/nukokusa_bot
●
@sogoru_straybot に次ぐ二代目
●
機能
– ジャンプ買ってこい
– Twitter してないで働け など
言語
●
Scala
– OOP + FP
– Ver. 2.10.0
●
Java → Ruby → JRuby( 実運用せず ) → Scala
– 大学プロキシ越え & Streaming API
– 試してて最初にできたのがジャバだった
– 次があるなら Elixir
ビルド
●
sbt
– http://www.scala-sbt.org
– 依存性解決とか起動とかしてくれる
– Simple Build Tool
●
Simple であるかは甚だ疑問
( 再 ) 起動
●
launch.sh
#!/bin/bash
pid=`ps x | grep -v grep | grep sbt | awk '{ print $1 }'`
kill $pid
sleep 10
nohup sbt run &
お住まい
●
某 VPS
– Ubuntu 64bit
– HDD 50GB
– メモリ 1GB
●
変遷
– 研究室個人 PC → 研究室サーバ → VPS
お世話になっているライブラリ
●
twitter4j
– 鉄板
●
scalatest
– ウニットテスト
●
Holidays
– https://github.com/t2v/holidays
– 祝日判定
お世話になっている API
●
Amazon Product Ads
– 「〇〇が欲しい」→ Amazon 検索
●
今日は何の日
– http://www.mizunotomoaki.com/wikipedia_daytopic_api.html
お世話になっているライブラリ
●
twitter4j
– 鉄板
●
scalatest
– ウニットテスト
●
Holidays
– https://github.com/t2v/holidays
– 祝日判定
スケジューラ
val s1 = new Schedule {
def task = try { ... } catch { ... }
}
s1.wdayRange = Calendar.MONDAY to Calendar.FRIDAY
s1.hourRange = 6 to 6
s1.minRange = 0 to 0
new Scheduler(List[Schedule](s1, s2, ...))
// 1 分間隔で s.isMatch(calendar) == true なヤツを実行
レスポンス
val r1 = new ResponseRule {
def isMatch(status: Status): Boolean = { ... }
def respondTo(status: Status): Unit = { ... }
}
List[ResponseRule](r1, r2, ... )
new UserStreamListener {
def onStatus(status: Status) = { ... }
}
所感
●
改めてソース読むとへたくそ
– あの頃はキレイにできたと思っていた
– s.hourRange = 6 to 6 ふざけすぎ
– 命名シッチャカメッチャカ
●
respondTo ってなんだ
●
己の英語力に見合った名前を付けろ
– WeeklyJUMP とかの責任範囲が微妙
– FP 的な所はどこがへたくそか分かんないくらいへたくそ
所感
●
これホントに自分で書いたのかって印象
– 「あー、こうやって書いたんだっけ」
●
もう一度書くことは不可能
– Scala 忘れた
– まじで
●
設定ファイル3つが全部フォーマット違っててウケた
– Properties, XML, conf
まとめ
●
こんな感じで @nukokusa_bot はできています
●
ライブラリ、 API 提供者に感謝
●
復習とっても大事
– 日々の精進と記憶力の衰えの戦い
– 我々は確実に老化している

More Related Content

What's hot (20)

PDF
Ruby関西76 gr citrusの使い方#2
三七男 山本
?
PDF
ET2016 小さなRubyボード 骋搁-颁滨罢搁鲍厂の绍介
三七男 山本
?
PPTX
jupyter notebook (jupyterhub) で ruby とグラフ
Koichi Shimozono
?
PDF
Building Static Website With Github And Jekyll
Yoji Shidara
?
PDF
Mrubyについて 第16回 岡山ruby, ruby on rails勉強会
Masaya Konishi
?
PDF
骋颈迟を使った搁辞耻迟别53の管理
Sugawara Genki
?
PDF
搁耻产测颁辞苍蹿の话の続きのおはなし
yamanekko
?
PPTX
齿肠辞诲别で尘谤耻产测をステップ実行してみた
firewood
?
PPTX
贵笔骋础で尘谤耻产测を动かす
Shuta Kimura
?
PPTX
ロボットシステム学2015年第13回
Ryuichi Ueda
?
PDF
ルネサスナイト10発表資料 Rubyで作るラムネシュータ
三七男 山本
?
PPTX
第32回信号処理シンポジウム「Raspberry PiとROSを 使ったロボットシステム」
Ryuichi Ueda
?
PPTX
ロボットシステム学2015年第7回
Ryuichi Ueda
?
PPTX
この実装には问题がある!
GOMI NINGEN
?
PDF
Goodby Hatena, hello Sphinx
Kouhei Maeda
?
PPTX
ラジコンを搁翱厂で制御してみた
shohaga
?
PDF
楽しく使おう?始めよう!Raspberry Pi入門?基礎編~
Hideki Aoshima
?
PPTX
Rosjp37 live ros
Tatsuya Fukuta
?
PDF
RpgツクールVX ace勉強会「はじめての操作編」 20151003
りんね ぐりっど
?
PDF
ロボット用マイコンボードを 設計してみた
Bizan Nishimura
?
Ruby関西76 gr citrusの使い方#2
三七男 山本
?
ET2016 小さなRubyボード 骋搁-颁滨罢搁鲍厂の绍介
三七男 山本
?
jupyter notebook (jupyterhub) で ruby とグラフ
Koichi Shimozono
?
Building Static Website With Github And Jekyll
Yoji Shidara
?
Mrubyについて 第16回 岡山ruby, ruby on rails勉強会
Masaya Konishi
?
骋颈迟を使った搁辞耻迟别53の管理
Sugawara Genki
?
搁耻产测颁辞苍蹿の话の続きのおはなし
yamanekko
?
齿肠辞诲别で尘谤耻产测をステップ実行してみた
firewood
?
贵笔骋础で尘谤耻产测を动かす
Shuta Kimura
?
ロボットシステム学2015年第13回
Ryuichi Ueda
?
ルネサスナイト10発表資料 Rubyで作るラムネシュータ
三七男 山本
?
第32回信号処理シンポジウム「Raspberry PiとROSを 使ったロボットシステム」
Ryuichi Ueda
?
ロボットシステム学2015年第7回
Ryuichi Ueda
?
この実装には问题がある!
GOMI NINGEN
?
Goodby Hatena, hello Sphinx
Kouhei Maeda
?
ラジコンを搁翱厂で制御してみた
shohaga
?
楽しく使おう?始めよう!Raspberry Pi入門?基礎編~
Hideki Aoshima
?
Rosjp37 live ros
Tatsuya Fukuta
?
RpgツクールVX ace勉強会「はじめての操作編」 20151003
りんね ぐりっど
?
ロボット用マイコンボードを 設計してみた
Bizan Nishimura
?

Viewers also liked (20)

PDF
working
Joe_noh
?
PDF
狈鲍罢ハッカソン2014成果报告
Joe_noh
?
PDF
孤独の驳别尘开発
Joe_noh
?
PDF
リーンキャンバス
Joe_noh
?
PDF
Elixirだ 第6回
Joe_noh
?
PDF
もっと驳颈迟
Joe_noh
?
PDF
Elixirだ 第1回強化版 前半
Joe_noh
?
PDF
Elixirだ 第5回
Joe_noh
?
PPTX
できないことは笔辞谤迟で外注
Joe_noh
?
ODP
いつかどこかで使えそうな英语
Joe_noh
?
PDF
顿狈厂キャッシュポイゾニングについての话
Joe_noh
?
PDF
顿叠に蝉别别诲するライブラリつくった
Joe_noh
?
PDF
Elixirだ 第1回強化版 後半
Joe_noh
?
PDF
Elixirだ 第4回
Joe_noh
?
PDF
Elixirだ 第3回
Joe_noh
?
PDF
Scaling software with akka
scalaconfjp
?
PDF
Elixirだ 第2回
Joe_noh
?
PDF
Elixirだ 第1回 - 基礎だ -
Joe_noh
?
PDF
やってみた -URL外形監視-
Joe_noh
?
PDF
奥别产アプリ开発者のための贬罢惭尝5セキュリティ入门
Muneaki Nishimura
?
working
Joe_noh
?
狈鲍罢ハッカソン2014成果报告
Joe_noh
?
孤独の驳别尘开発
Joe_noh
?
リーンキャンバス
Joe_noh
?
Elixirだ 第6回
Joe_noh
?
もっと驳颈迟
Joe_noh
?
Elixirだ 第1回強化版 前半
Joe_noh
?
Elixirだ 第5回
Joe_noh
?
できないことは笔辞谤迟で外注
Joe_noh
?
いつかどこかで使えそうな英语
Joe_noh
?
顿狈厂キャッシュポイゾニングについての话
Joe_noh
?
顿叠に蝉别别诲するライブラリつくった
Joe_noh
?
Elixirだ 第1回強化版 後半
Joe_noh
?
Elixirだ 第4回
Joe_noh
?
Elixirだ 第3回
Joe_noh
?
Scaling software with akka
scalaconfjp
?
Elixirだ 第2回
Joe_noh
?
Elixirだ 第1回 - 基礎だ -
Joe_noh
?
やってみた -URL外形監視-
Joe_noh
?
奥别产アプリ开発者のための贬罢惭尝5セキュリティ入门
Muneaki Nishimura
?
Ad

More from Joe_noh (12)

PDF
パフォーマンス改善のためにやったこと?やらなかったこと
Joe_noh
?
PDF
痴耻别.箩蝉のユニットテスト
Joe_noh
?
PDF
痴耻别虫と入力フォーム
Joe_noh
?
PDF
カラーミー础笔滨ドキュメントの今后
Joe_noh
?
PDF
サイクル翱闯罢イントロダクション
Joe_noh
?
PDF
お产ウィークイントロダクション
Joe_noh
?
PDF
モバイルアプリ研修イントロダクション
Joe_noh
?
PDF
奥别产オペレーション研修イントロダクション
Joe_noh
?
PDF
奥别产开発研修イントロダクション
Joe_noh
?
PDF
顿别肠濒补颈尘别谤っていうやつつくった(つくってる)
Joe_noh
?
ODP
Password security 2
Joe_noh
?
ODP
CSS Framework
Joe_noh
?
パフォーマンス改善のためにやったこと?やらなかったこと
Joe_noh
?
痴耻别.箩蝉のユニットテスト
Joe_noh
?
痴耻别虫と入力フォーム
Joe_noh
?
カラーミー础笔滨ドキュメントの今后
Joe_noh
?
サイクル翱闯罢イントロダクション
Joe_noh
?
お产ウィークイントロダクション
Joe_noh
?
モバイルアプリ研修イントロダクション
Joe_noh
?
奥别产オペレーション研修イントロダクション
Joe_noh
?
奥别产开発研修イントロダクション
Joe_noh
?
顿别肠濒补颈尘别谤っていうやつつくった(つくってる)
Joe_noh
?
Password security 2
Joe_noh
?
CSS Framework
Joe_noh
?
Ad

Recently uploaded (13)

PDF
SIG-AUDIO 2025 Vol.02 オンラインセミナー 「GDC2025 オーディオ報告会」SIG-Audio_GDC2025_報告会資料_渡辺さ...
IGDA Japan SIG-Audio
?
PPTX
オープンソース界隈の利用者や技術者から見たオープンソースEDAとは? What is open source EDA from the perspecti...
Industrial Technology Research Institute (ITRI)(工業技術研究院, 工研院)
?
PDF
第3回デジタル理学疗法研究会学术大会シンポジウム「デジタル理学疗法の组织活用:教育?管理?研究を繋ぐ新たな地平」の讲演资料.
Matsushita Laboratory
?
PDF
安尾 萌, 森野 穣, 松下 光範. 災害情報収集におけるSNSのメディア特性に関する一検討, 人工知能学会第30回インタラクティブ情報アクセスと可視化マ...
Matsushita Laboratory
?
PDF
SIG-AUDIO 2025 Vol.02 オンラインセミナー 「GDC2025 オーディオ報告会」SIG-Audio_GDC2024_報告会資料_増野さ...
IGDA Japan SIG-Audio
?
PDF
渔船に搭载されている电子装备と渔法について冲痴搁颁海洋学研究会冲海の尝罢会発表资料
Yuuitirou528 default
?
PPTX
新卒?中途採用者向け採用ピッチ资料2025年7月版(20250702).辫辫迟虫
Official74
?
PDF
AIツールを使った研究の効率化 Improving Research Efficiency with AI Tools
Tohoku University
?
PDF
go tool と Minimal Version Selection アルコ?リス?ム
Keisuke Ishigami
?
PDF
マルチAIエージェントの産業界での実践に向けたオープンソース活動の展望 - Japan Regional User Group (RUG) Meet-Up
Kosaku Kimura
?
PDF
API認可を支えるKeycloakの基本と設計の考え方 ~ OAuth/OIDCによるAPI保護のベストプラクティス ~
Hitachi, Ltd. OSS Solution Center.
?
PDF
安尾 萌, 松下 光範. 環境馴致を計量可能にするための試み,人工知能学会第4回仕掛学研究会, 2018.
Matsushita Laboratory
?
PDF
第3回テ?シ?タル理学疗法学会のシンポジウム「デジタル理学疗法の组织活用:教育?管理?研究を繋ぐ新たな地平」での话题提供
Matsushita Laboratory
?
SIG-AUDIO 2025 Vol.02 オンラインセミナー 「GDC2025 オーディオ報告会」SIG-Audio_GDC2025_報告会資料_渡辺さ...
IGDA Japan SIG-Audio
?
オープンソース界隈の利用者や技術者から見たオープンソースEDAとは? What is open source EDA from the perspecti...
Industrial Technology Research Institute (ITRI)(工業技術研究院, 工研院)
?
第3回デジタル理学疗法研究会学术大会シンポジウム「デジタル理学疗法の组织活用:教育?管理?研究を繋ぐ新たな地平」の讲演资料.
Matsushita Laboratory
?
安尾 萌, 森野 穣, 松下 光範. 災害情報収集におけるSNSのメディア特性に関する一検討, 人工知能学会第30回インタラクティブ情報アクセスと可視化マ...
Matsushita Laboratory
?
SIG-AUDIO 2025 Vol.02 オンラインセミナー 「GDC2025 オーディオ報告会」SIG-Audio_GDC2024_報告会資料_増野さ...
IGDA Japan SIG-Audio
?
渔船に搭载されている电子装备と渔法について冲痴搁颁海洋学研究会冲海の尝罢会発表资料
Yuuitirou528 default
?
新卒?中途採用者向け採用ピッチ资料2025年7月版(20250702).辫辫迟虫
Official74
?
AIツールを使った研究の効率化 Improving Research Efficiency with AI Tools
Tohoku University
?
go tool と Minimal Version Selection アルコ?リス?ム
Keisuke Ishigami
?
マルチAIエージェントの産業界での実践に向けたオープンソース活動の展望 - Japan Regional User Group (RUG) Meet-Up
Kosaku Kimura
?
API認可を支えるKeycloakの基本と設計の考え方 ~ OAuth/OIDCによるAPI保護のベストプラクティス ~
Hitachi, Ltd. OSS Solution Center.
?
安尾 萌, 松下 光範. 環境馴致を計量可能にするための試み,人工知能学会第4回仕掛学研究会, 2018.
Matsushita Laboratory
?
第3回テ?シ?タル理学疗法学会のシンポジウム「デジタル理学疗法の组织活用:教育?管理?研究を繋ぐ新たな地平」での话题提供
Matsushita Laboratory
?

蔼苍耻办辞办耻蝉补冲产辞迟を支える技术