SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

「Visionaries Summit 2011」レポート

ビジョサミ2011レポート
mixi Platformを使った実践プログラミング!

  • このエントリーをはてなブックマークに追加

 mixi Platformの登場から3年が経過した。APIも徐々に拡充され、多様な形態のサービスやアプリケーションを開発可能になっている。株式会社ミクシィ 田中洋一郎氏のセッションは、会場でmixi Platformを使ったアプリケーションの開発を実際に行う、実践的なものとなった。

  • このエントリーをはてなブックマークに追加
株式会社ミクシィ プラットフォームサービス開発部 マネージャー 田中洋一郎氏
株式会社ミクシィ プラットフォームサービス開発部 マネージャー 田中洋一郎氏

OAuth2.0の採用で署名計算不要を実現

 mixiを利用してサービスやアプリケーションを提供するための環境、「mixi Platform」の登場から3年。最初に1つのIDで複数のWebサービスを利用可能にする「OpenID」がリリースされ、PC版mixiアプリ開発環境、フィーチャーフォンを対象にしたモバイル版mixiアプリ環境のリリースが続いた。2010年9月にはスマートフォン向けの「mixiアプリ for Touch」(ブラウザ用)、mixiに蓄積されたソーシャルグラフや各種コンテンツを扱うことを可能にする「mixi Graph API」、イイネ!ボタンなどの機能を提供する「mixi Plugin」がリリースされている。そして、2011年5月から、Android用アプリケーションを作成するためのプラットフォーム「mixi API SDK for Android」の提供が開始された。

 mixi Platformの中でもっとも使われているのは、mixi Graph APIだ。その中で田中洋一郎氏が技術的な特徴と挙げたのが、APIのアクセス認可にOAuth2.0プロトコルをいち早く採用したことだ。それまで使っていたOAuth1.0aでは署名をプログラムで組み込む必要があり、その難易度が高かったことから、田中氏の部署に問い合わせが殺到した。同様の現象が世界中で起こったために開発されたのが、署名の計算が必要ないOAuth2.0ということになる。ただ、その正式仕様が中々定まらず、導入事例も少なかったため、田中氏はその採用を「技術的なチャレンジだった」と振り返る。

APIへのアクセス認可を受ける手順を実演

 ここで田中氏は、mixi Graph APIにおいてAPIを叩く手順を実演した。まず、誰でも無償で利用可能なサイト「mixi Developer Center」にアクセスし、作成するアプリケーションを登録したら、Consumer keyとConsumer Secretが発行される。Consumer keyはアプリケーションごとに振られるIDで、誰に見せても構わない。一方、Consumer Secretはミクシィと開発者の共有鍵であり、秘密にする必要がある。

 クライアントプログラムからAPIにアクセスするには、OAuth2.0プロトコルにより規定された認可を得る必要がある。クライアントプログラムはWebブラウザで「https://mixi.jp/connect_authorize.pl」にアクセスし、このURLに続けてパラメーターを指定する。自分が誰であるかを示すために「client_id」というパラメーターの値として先ほどのConsumer keyを入れ、認可されたいAPI、情報などに関するパラメーターとその値を入れてアクセスする。

 パラメーターが正しければ、Webブラウザ上に認可画面が現れ、そこにどのようなAPIアクセスを行い、どのような情報が参照または更新されるのかが提示される。その内容を確認して認可ボタンを押すと、サービス登録時に入力したRedirect URLにリダイレクトされ、APIにアクセスするために必要なAuthorization Codeを得ることができる。この部分、実際のアプリケーションでは、インストールしたユーザーが最初に起動すると画面上に「このアプリケーションは、あなたの個人情報を扱います。同意しますか?」と表示され、ユーザーが同意すると利用できるという仕組みに使われる。

 実際にAPIにアクセスするためには、Authorization Codeを使ってアクセストークンを入手する必要がある。田中氏は、その作業をコマンドラインで実演してみせた。curlコマンドを使い、規定に従ってConsumer key、リダイレクトされるURLに加えてConsumer secret、Authorization Codeなどを指定してリターンキーを押したところ、エラー表示が出てしまった。実はAuthorization Codeの有効期限が3分であり、作業中に時間切れになってしまったのだ。そこで再取得し、コードを貼り替えた結果、無事にアクセストークンを取得することができた。続けて田中氏はcurlコマンドを使い、Authorizationリクエストヘッダでアクセストークンを指定。渡したいAPIのエンドポイントを指定し、登録されている情報を取り出して見せた。「一切プログラミングしないで、全部コマンドだけでAPIを叩きました。これがOAuth2.0の威力です」(田中氏)。

 実際、mixi Graph APIのリリース後、問い合わせは激減しているという。デモではcurlコマンドで実践されたが、実際は各開発者が作成するプログラム内で処理を行うことになる。

Android用mixiアプリを効率的に開発するSDK

 mixi Graph APIの実演に続けて田中氏は、2011年5月にリリースされたmixi API SDK for Androidの紹介とデモを行った。このSDKにより、カメラ機能や位置情報、タッチパネルなど、スマートフォン端末の搭載機能と連携した「mixiアプリ」を効率的に開発可能になった。SDKは誰でもmixi Developer Centerからダウンロードし、使うことができる。実は、セッション前半で田中氏がデモを行った、アクセストークンを取得するOAuth2.0の手続きは、すべてSDK側で行う仕組みとなっている。15分で切れるトークンの有効期限の自動延長もSDKにお任せだ。また、Androidのプログラムはリバースエンジニアリングが比較的容易なJavaで書かれていることから、ソースコードに秘密にする必要があるConsumer Secretを書かなくてもいいように設計されている。

 デモは、既に簡単なAndroidアプリケーションが作成されている状態でスタート。作り込まれている機能は、1つあるボタンを押すと、アラートダイアログが出るというシンプルなものだ。まず、SDKを統合開発環境Eclipseにライブラリプロジェクトとしてインポートする。続いてデモ用アプリケーションを作成したプロジェクトに、インポートしたSDKのライブラリを登録する。SDKではMixiContainerと呼ばれるものを使うので、その定義を行う。SDKを利用するには、MixiContainerインスタンスの init(Activity activity)メソッドをコール。MixiContainerインスタンスを生成するためには、MixiContainerFactory.getContainer(Config config)を利用する。

 さらにログイン処理と、API利用の認可処理を行うにはauthorizeメソッドを使う。認可ダイアログの結果を取得するために onActivityResultを使いauthorizeCallback()を呼び出す。

 田中氏は、以上の手順を使い、機能拡張したAndroidアプリケーションでAPIを叩き、コマンドラインで取得したものと同じ情報を取り出して見せた。確かに難しい処理を書くことなく、基本的な機能を組み込むことが可能な仕様となっている。

 最後に、田中氏はmixi API SDK for Androidはオープンソースで開発されていることから、「より便利に使うためのラッパーの開発や、まったく新しいSDKの出現を歓迎する」と呼びかけ、セッションを閉じた。

mixi API SDK for Androidの処理の流れ
mixi API SDK for Androidの処理の流れ
お問い合わせ

株式会社ミクシィ

http://mixi.co.jp/

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
「Visionaries Summit 2011」レポート連載記事一覧

もっと読む

この記事の著者

CodeZine編集部(コードジンヘンシュウブ)

CodeZineは、株式会社翔泳社が運営するソフトウェア開発者向けのWebメディアです。「デベロッパーの成長と課題解決に貢献するメディア」をコンセプトに、現場で役立つ最新情報を日々お届けします。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/6095 2011/08/19 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング