Ruby를 사용해 트위터(Twitter) 애플리케이션을 만들어 보고 싶으신가요? 그렇다면 잘 찾아오셨습니다!
이 글에서는 Twitter API와 상호작용하는 프로그램을 만드는 방법을 단계별로 소개합니다. 특정 키워드 검색, 자동 답글 전송 같은 기능까지 직접 구현해 볼 수 있습니다.
그럼 바로 시작해 볼까요?
환경 설정
가장 먼저 twitter 젬(gem)을 설치해야 합니다. 설치 방법은 아주 간단합니다.
gem install twitter
설치가 끝나면 https://apps.twitter.com/ 에 접속해 새 애플리케이션을 등록해야 합니다. 오른쪽의 'Create New App' 버튼을 클릭하세요.

그다음 양식을 작성하면 됩니다. 지금 단계에서는 입력 내용이 크게 중요하지 않습니다. 예제에서 사용한 값은 다음과 같습니다.

웹사이트 필드는 신경 쓰지 않아도 괜찮습니다. https://example.com 같은 임시 주소를 입력해도 무방합니다.
'Yes, I agree'에 체크해 트위터 이용약관에 동의한 뒤, 'Create your Twitter application' 버튼을 클릭합니다.
모든 과정이 정상적으로 완료되었다면 다음과 같은 화면을 볼 수 있습니다.

이제 'Keys and Access Tokens' 메뉴로 이동합니다. 이 페이지에는 Twitter API에 연결하는 데 필요한 API 키들이 들어 있습니다. 바로 이 키들을 얻기 위해 지금까지의 설정 과정을 거친 것입니다.
다음은 아래 템플릿에 본인의 정보를 채워 넣는 단계입니다.
require 'twitter' client = Twitter::REST::Client.new do |config| config.consumer_key = "YOUR_CONSUMER_KEY" config.consumer_secret = "YOUR_CONSUMER_SECRET" config.access_token = "YOUR_ACCESS_TOKEN" config.access_token_secret = "YOUR_ACCESS_SECRET" end
마지막 두 개의 값(access token, access token secret)은 'Generate access tokens' 버튼을 클릭해 발급받아야 합니다.
여기까지 완료했다면 이제 API를 자유롭게 사용할 준비가 된 것입니다.
트윗 다루기
client 객체를 통해 Twitter API의 거의 모든 기능에 접근할 수 있습니다. 예제로 @rubyinside 계정의 최근 20개 트윗을 가져와 YAML 파일로 저장한 뒤, 나중에 분석할 수 있도록 만들어 보겠습니다.
특정 사용자의 타임라인을 가져올 때는 user_timeline 메서드를 사용합니다.
예제:
tweets = client.user_timeline('rubyinside', count: 20)
이 메서드는 Tweet 객체 배열을 반환합니다. 그런데 이 객체들은 어떻게 다뤄야 할까요?
공식 문서를 찾아볼 수도 있지만, 더 재미있는 방법은 pry를 활용하는 것입니다. 코드를 pry 안에서 실행하면 ls Twitter::Tweet 명령으로 특정 객체나 클래스의 모든 메서드 목록을 한눈에 확인할 수 있습니다.
실행 결과는 다음과 같습니다.

full_text라는 메서드가 있다는 것을 알 수 있습니다. 이 메서드를 사용해 트윗 내용을 출력해 보겠습니다.
tweets.each { |tweet| puts tweet.full_text }
다른 메서드들도 하나씩 시도해 보면 재미있는 발견이 많을 것입니다 :)
트윗 저장하기
가져온 트윗으로 무엇을 할 수 있을까요? 예를 들어 파일로 저장해 나중에 분석하는 방법이 있습니다. YAML 형식을 활용하면 아주 간단하게 처리할 수 있습니다.
require 'yaml'
# ... 나머지 코드 ...
File.write('tweets.yml', YAML.dump(tweets))
저장된 트윗은 YAML.load_file 메서드로 손쉽게 불러올 수 있습니다.
require 'yaml'
require 'twitter'
tweets = YAML.load_file('tweets.yml')
불러온 트윗은 API에서 새로 요청한 것처럼 원래 형태 그대로 바로 사용할 수 있습니다. 참 편리하지 않나요? :)
트윗 보내기
이 외에도 다양한 작업이 가능합니다. 예를 들어 특정 키워드를 포함한 트윗을 올린 사용자에게 자동으로 메시지를 보내는 기능은 어떨까요?
새 트윗을 게시할 때는 update 메서드를 사용합니다.
client.update("I'm having some fun with the Twitter gem!")
이를 응용하면 다음과 같은 코드를 작성할 수 있습니다.
client.search('#ruby').take(3).each do |tweet|
client.update("@#{tweet.user} Hey I love Ruby too, what are your favorite blogs? :)")
end
또 다른 방법으로는 스트리밍(Streaming) API를 활용하는 것이 있습니다. 스트리밍 API를 사용하면 이벤트가 발생하는 순간 실시간으로 데이터를 받아볼 수 있습니다. 자세한 내용은 공식 문서를 참고하세요.
마무리
Twitter 젬을 사용하면 초기 설정만 마치면 Twitter API 관련 작업이 무척 쉬워집니다. 이제 여러분 차례입니다. 직접 재미있는 프로젝트를 만들어 보세요!
참고: 이 글에서 소개하는 방식은 Twitter API v1.1 기준입니다. 현재 X(구 Twitter)로 서비스명이 변경되면서 API 정책과 인증 방식, 유료 제도 등이 달라졌을 수 있으니 최신 개발자 문서를 함께 확인하시길 권합니다.
이 글이 도움이 되셨다면 공유 부탁드립니다. 더 좋은 글을 계속 쓸 수 있는 큰 동력이 됩니다 :)