@nukokusa_bot を支える技術
@nukokusa_bot
●
Twitter Bot
– https://twitter.com/nukokusa_bot
– https://github.com/Joe-noh/nukokusa_bot
●
@sogoru_straybo...
言語
●
Scala
– OOP + FP
– Ver. 2.10.0
●
Java → Ruby → JRuby( 実運用せず ) → Scala
– 大学プロキシ越え & Streaming API
– 試してて最初にできたのがジャバだった...
ビルド
●
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 ru...
お住まい
●
某 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.ht...
お世話になっているライブラリ
●
twitter4j
– 鉄板
●
scalatest
– ウニットテスト
●
Holidays
– https://github.com/t2v/holidays
– 祝日判定
スケジューラ
val s1 = new Schedule {
def task = try { ... } catch { ... }
}
s1.wdayRange = Calendar.MONDAY to Calendar.FRIDAY
s1...
レスポンス
val r1 = new ResponseRule {
def isMatch(status: Status): Boolean = { ... }
def respondTo(status: Status): Unit = { ....
所感
●
改めてソース読むとへたくそ
– あの頃はキレイにできたと思っていた
– s.hourRange = 6 to 6 ふざけすぎ
– 命名シッチャカメッチャカ
●
respondTo ってなんだ
●
己の英語力に見合った名前を付けろ
– ...
所感
●
これホントに自分で書いたのかって印象
– 「あー、こうやって書いたんだっけ」
●
もう一度書くことは不可能
– Scala 忘れた
– まじで
●
設定ファイル3つが全部フォーマット違っててウケた
– Properties, XML,...
まとめ
●
こんな感じで @nukokusa_bot はできています
●
ライブラリ、 API 提供者に感謝
●
復習とっても大事
– 日々の精進と記憶力の衰えの戦い
– 我々は確実に老化している
Upcoming SlideShare
Loading in …5
×

@nukokusa_botを支える技術

234 views

Published on

@nukokusa_bot製作につかったものたち

後半は、ほぼ反省文

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
234
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
1
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

@nukokusa_botを支える技術

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

×