Ruby on Rails를 활용한 모바일 OpenSocial 애플리케이션 개발

[27M04] Open social application development for cell-phones to begin in Ruby on Rails (ja)

작성자
RubyKaigi
발행일
2025년 10월 05일

핵심 요약

  • 1 모바일 OpenSocial 애플리케이션 개발은 PC 버전에 비해 용이하며, Ruby on Rails는 게임 개발의 CMS적 특성에 적합한 프레임워크입니다.
  • 2 Ruby on Rails의 `link_to` 및 `form_tag` 헬퍼를 OpenSocial 모바일 환경에 맞게 자동 변환하는 `acts_as_opensocial` 플러그인을 개발하여 개발 편의성을 크게 향상시켰습니다.
  • 3 플랫폼별 API 연결 및 인증 처리를 추상화하는 `Platform` 클래스를 도입했으나, 비공개 사양으로 인해 완전한 공통 라이브러리 개발에는 한계가 있었습니다.

도입

본 발표는 Ruby on Rails를 활용한 모바일 OpenSocial 애플리케이션 개발 경험을 공유합니다. OpenSocial은 SNS 플랫폼의 소셜 데이터를 외부 애플리케이션이 이용할 수 있도록 하는 API로, PC용과 모바일용이 존재합니다. 특히 일본에서는 Mixi, GREE, Mobage 등 각 모바일 SNS 플랫폼이 독자적인 모바일 OpenSocial 사양을 가지고 있습니다. 발표자는 OpenSocial 모바일 애플리케이션 개발의 특성과 Ruby on Rails를 선택한 이유, 그리고 개발 과정에서 직면한 문제점과 해결책을 상세히 설명합니다.

OpenSocial PC 버전과 모바일 버전의 차이점

PC OpenSocial 통신 방식

  • 사용자는 플랫폼에 앱 이용 요청 후, 플랫폼이 앱 서버에 gadget.xml을 요청합니다.

  • 앱 서버는 초기 HTML을 반환하고, 사용자는 iframe 내에서 앱을 이용합니다.

  • 데이터 요청은 클라이언트 측 JavaScript HTTP 요청을 통해 플랫폼에 이루어집니다.

  • 특징: 사용자가 앱 서버와 직접 통신하며, 앱이 자체 세션 관리를 해야 합니다. JavaScript 의존성이 높고, 서버 부하는 낮은 편입니다.

모바일 OpenSocial 통신 방식

  • 사용자는 플랫폼에 앱 이용 요청 후, 플랫폼이 앱 서버에 특정 페이지를 요청합니다.

  • 필요시 앱과 플랫폼 간에 데이터 통신(API)이 이루어집니다.

  • 앱은 플랫폼에 일반 HTML을 반환하고, 플랫폼이 이를 사용자에게 보여줍니다.

  • 특징: 사용자가 앱 서버와 직접 통신하지 않고, 모든 연결은 OAuth로 검증됩니다. 사용자 식별은 쿼리 파라미터의 OpenSocial ID를 통해 이루어지며, 서버 간 HTML 통신만 가능하고 JavaScript는 사용할 수 없습니다. API 통신이 서버 간에 이루어져 응답이 느려질 수 있으며, 서버 부하는 높은 편입니다.

PC vs 모바일 OpenSocial 비교

  • 접속 방식: PC는 사용자 직접, 모바일은 플랫폼 대리.

  • 사용자 식별: PC는 자체 세션, 모바일은 파라미터로 OpenSocial ID 전달.

  • 인증: PC는 세션 확립이 어렵고, 모바일은 OAuth로 항상 검증 가능.

  • API 접근: PC는 클라이언트 측 JavaScript, 모바일은 서버 간 RESTful.

  • 결론: 모바일 OpenSocial 개발이 PC 버전에 비해 훨씬 간단합니다.

Ruby on Rails를 선택한 이유

  • 게임은 UI가 불친절한 CMS와 유사하며, CMS 개발에 Rails가 적합하다고 판단했습니다.

  • ActiveRecord, RSpec 등 Rails의 강력한 기능과 JP_Mobile Gem의 존재가 큰 장점입니다.

  • PHP의 객체 지향, 함수 레퍼런스, 문법적 복잡성($, ;)에 대한 불만도 Rails 선택의 배경이 됩니다.

개발 및 개선 사례

## acts_as_opensocial 플러그인

  • 모바일 OpenSocial의 특수한 링크(플랫폼 URL에 앱 URL을 파라미터로 전달) 및 폼 작성 방식을 처리하기 위해 개발되었습니다.

  • Rails의 link_toform_tag 헬퍼를 OpenSocial 환경에 맞게 자동 변환합니다.

  • OPEN_SOCIAL 상수가 정의될 때만 변환을 수행하여 개발 환경(PC 브라우저 테스트)과 운영 환경(모바일)에서 동일한 코드를 사용할 수 있도록 했습니다.

  • 장점: 개발 편의성, 코드 재사용성, 일반 Rails 앱과 유사한 개발 경험 제공.

  • 단점: OPEN_SOCIAL 상수로 인한 환경 관리의 복잡성, API 연결 기능 미포함.

Platform 클래스 도입

  • acts_as_opensocial의 단점을 보완하기 위해 OpenSocialFilterPlatform 클래스를 도입했습니다.

  • Platform 클래스는 API 연결 및 인증 처리를 공통화하며, 개발 환경을 위한 더미 플랫폼도 제공합니다.

  • 한계: 플랫폼별 사양이 미묘하게 다르고 비공개인 경우가 많아 완전한 추상화 및 공통 라이브러리 개발에 어려움이 있었습니다.

기타 개발 도구

  • acts_as_multiconnection: DB를 사용자 수에 따라 분할하기 위한 Active Record 커넥션 관리 플러그인. (현재는 게임 흥행 부진으로 미활용)

  • EC2Tools: 다수의 EC2 서버를 쉽게 관리하기 위한 스크립트 모음.

  • 이 모든 도구는 GitHub에 공개되어 있습니다.

결론

Ruby on Rails를 활용하면 모바일 OpenSocial 애플리케이션을 쉽고 빠르게 개발할 수 있습니다. `acts_as_opensocial` 플러그인과 `Platform` 클래스 등의 개발을 통해 OpenSocial의 복잡한 특성을 Rails의 관습적인 방식으로 해결하려는 노력이 돋보입니다. 그러나 모바일 OpenSocial 개발은 파트너 기업과의 협력이 필수적이며, 특히 우수한 Ruby 엔지니어 확보가 중요한 과제로 남아있습니다. 발표자는 이러한 배경을 바탕으로 Ruby 엔지니어 채용을 적극적으로 요청하며 발표를 마무리했습니다.

댓글 0

댓글 작성

0/1000
정중하고 건설적인 댓글을 작성해 주세요.

아직 댓글이 없습니다

첫 번째 댓글을 작성해보세요!