corner imagecorner image
IDEPlatformPluginsDocs & SupportCommunityPartners

NetBeans モジュールでの RESTful サービスクライアントの作成

NetBeans IDE 6.9 より、NetBeans モジュールプロジェクトで REST がネイティブサポートされます。そのため、NetBeans モジュールで RESTful クライアントコードを直接生成できるようになります。また、Jersey RESTful クライアントコードを Java またはアプリケーションに挿入できます。

このチュートリアルでは、Twitter What Are You Doing サービスを使用する NetBeans プラットフォームアプリケーションを作成し、Twitter の友達のステータスメッセージ一覧を表示します。最初に、プラットフォームアプリケーションを作成します。このアプリケーションで必要となるライブラリを選択します。次に、NetBeans モジュールを作成します。最後に、RESTful クライアントといくつかの基本的な表示要素をモジュールに追加します。クライアントは、OAuth 認証を使用します。

目次

このページの内容は NetBeans IDE 6.9-7.1 が対象です

このチュートリアルに従うには、次のソフトウェアとリソースが必要です。

ソフトウェアまたはリソース 必須バージョン
NetBeans IDE Java EE ダウンロードバンドル
Java Development Kit (JDK) version 6 または version 7

プラットフォームアプリケーションの作成

NetBeans プラットフォームアプリケーションには NetBeans IDE ライブラリを追加できます。この節では、プラットフォームアプリケーションを作成し、必要なライブラリを追加します。

 

モジュールスイートを作成するには、次の手順に従います。

  1. 「ファイル」>「新規プロジェクト」(Linux および Windows では Ctrl-Shift-N、MacOS では ⌘-Shift-N) をクリックします。「新規プロジェクト」ウィザードが開きます。
  2. 「NetBeans モジュール」カテゴリを選択します。次に、「NetBeans プラットフォームアプリケーションプロジェクト」を選択します。「次へ」をクリックします。
  3. プロジェクトに「RestfulClientPlatformApp」という名前を付けます。プロジェクトの場所を選択します。その他のデフォルト設定を受け入れ、「完了」をクリックします。「プロジェクト」ウィンドウに RestfulClientPlatformApp プロジェクトが表示されます。
  4. 「プロジェクト」ウィンドウで「RestfulClientPlatformApp」プロジェクトノードを右クリックし、「プロパティー」を選択します。「プロパティー」ダイアログが開きます。
  5. 「プロジェクトプロパティー」ダイアログで「ライブラリ」を選択します。プラットフォームのライブラリだけが表示されます。
  6. 「enterprise」ライブラリを展開します。「RESTful Web サービスライブラリ」の「含む」ボックスを選択します。
    スイートのプロパティーで「RESTful Web サービスライブラリ」の「含む」を選択した状態
  7. 「解決」ボタンが赤色で強調表示されます。これは、RESTful Web サービスライブラリが、このスイートに含まれていないほかのライブラリに依存しているためです。「解決」ボタンをクリックして、それらのライブラリを含めます。
  8. 「了解」をクリックします。プラットフォームアプリケーションで、クライアントモジュールを作成する準備ができました。

クライアントモジュールの作成

Twitter What Are You Doing サービスを使用するためのクライアントとして機能するモジュールは、わずかな手順で作成できます。Twitter サービスは、追加設定なしの状態で NetBeans IDE Web サービスマネージャーに登録されています。別の機能を追加できます。

モジュールを作成してクライアント機能を追加するには、次の手順に従います。

  1. 「プロジェクト」ウィンドウで、「RestfulClientPlatformApp」の「モジュール」サブノードを右クリックして「新規を追加...」を選択します。「新規モジュールプロジェクト」ウィザードが開きます。
  2. モジュールに TwitterClientModule という名前を付けます。その他のフィールドはデフォルトの設定を受け入れ、「次へ」をクリックします。「基本モジュール構成」パネルが開きます。
  3. 「コード名ベース」に、「org.my.twitter.friends」など任意の名前を入力します。その他のフィールドはデフォルトの設定を受け入れ、「完了」をクリックします。「プロジェクト」ウィンドウで、TwitterClientModule がプラットフォームアプリケーションの「モジュール」ノードに表示されます。
  4. 「TwitterClientModule」ノードを右クリックし、「プロジェクトを開く」を選択します。「TwitterClientModule」ノードが、「プロジェクト」ウィンドウのルートレベルに表示されるようになります。
    「TwitterClientModule」ルートノードが表示された「プロジェクト」ウィンドウ
  5. 新しいルートレベルの「TwitterClientModule」ノードを選択します。「新規ファイル」ウィザードを起動します (Ctrl-N/⌘-N、「新規ファイル」アイコン、またはノードのコンテキストメニュー)。
  6. 「新規ファイル」ウィザードで、「カテゴリ」で「Web サービス」を、「ファイルの種類」で「RESTful Java クライアント」を選択します。「次へ」をクリックします。「新規 RESTful Java クライアント」パネルが開きます。
  7. クラスに TwitterClient という名前を付け、パッケージに任意の名前を付けるか、以前に作成したコード名ベースを選択します。
    クラスとパッケージ名が表示された「新規 RESTful Java クライアント」ウィザード
  8. 「REST リソースを選択」で、「IDE 登録済み」を選択します。「参照」をクリックし、「Twitter」>「Twitter OAuth」>「[statuses]」>「[friends_timeline.{format}]」を表示します。このリソースを選択し、「了解」をクリックします。
    「使用可能な REST リソース」ダイアログで friends_timeline の REST リソースを選択したところ

    注: 追加の Web サービスを IDE に登録できます。「サービス」ウィンドウに移動し、「Web サービス」ノードを右クリックし、「Web サービスを追加」を選択します。ローカルファイルまたは RESTful URL を追加できます。
    Web サービスマネージャーでの「Web サービスを追加」オプション、「サービス」ウィンドウ

  9. 認証タイプとして「OAuth」が自動的に選択されます。デフォルトをすべて受け入れ、「完了」をクリックします。
    完了した「新規 RESTful Java クライアント」ウィザード
  10. 警告ダイアログが表示されます。このダイアログで、WADL ファイルの XML スキーマ参照から Java アーティファクトを生成するかどうかを尋ねられます。「はい」をクリックします。
  11. さらに、クラスパスにモジュールを追加することを求める警告が表示されることがあります。「了解」をクリックします。
    依存関係の不足に関する警告ダイアログ
  12. クラスパスにモジュールを追加する必要がある場合は、「TwitterClientModule」ノードを右クリックして「プロジェクトプロパティー」を開きます。「ライブラリ」セクションに移動し、「依存関係を追加」ボタンでモジュールを追加します。このボタンを押すと、モジュールの依存関係を参照できる一覧が開きます。
    TwitterClientModule のプロパティーウィンドウ、「ライブラリ」セクション

TwitterClient クラスが生成され、エディタで開きます。TheTwitterClient クラスは複雑で、次のフィールド、メソッド、および内部クラスを含んでいます。

  • CONSUMER_KEY: Consumer Key 文字列
  • CONSUMER_SECRET: Consumer Secret 文字列
  • initOAuth(): OAuh 初期化のメソッド
  • getFriendsTimeline(): HTTP メソッドに対応するメソッド: getFriendsTimeline (REST リソースから)
  • makeOAuthRequestUnique(): 1 つのセッションでの複数の API 呼び出しに有用
  • login: Twitter アプリケーションへのログインに使用 (認証を強制)。このメソッドは、もう 2 つの生成されたメソッド (getOAuthAccessToken および getOAuthRequestToken) を呼び出します。

次に、Twitter から OAuth キーを取得して TwitterClient に追加します。

Twitter からの OAuth キーの取得

NetBeans プラットフォームアプリケーションが Twitter のデータにアクセスできるようにするには、確認文字列のほかに CUSTOMER および CUSTOMER_SECRET キーを Twitter から取得する必要があります。Twitter は、これらのキーを必要とする OAuth 認証を使用しています。しかし、OAuth はサーバー上の Web アプリケーションによって呼び出される前提で設定されています。認証キーを取得するために、「仮の」Web アプリケーションを登録します。

Twitter から OAuth キーを取得するには:

  1. ブラウザを開きます。「Twitter」>「アプリケーション」ページに移動し、「新しいアプリケーションを追加」をクリックします。Twitter アカウントにログインしている必要があります。複数のアカウントを持っている場合は、正しいアカウントにログインしていることを確認してください。
  2. アプリケーション名」テキストフィールドに「NB Platform Friends Application」と入力します。
  3. アプリケーションの説明」フィールドに説明を入力します。これは必須です。「friends_timeline 操作を呼び出す NetBeans プラットフォームアプリケーション」などのように入力できます。
  4. アプリケーションのウェブサイトURL」フィールドに任意の URL を入力します。
  5. アプリケーションの種類」オプションで「クライアントアプリケーション」ラジオボタンを選択します。
  6. 標準のアクセスタイプ」オプションで、「読み取りおよび書き込み」のラジオボタンを選択します。
  7. ほかのオプションをデフォルトのままにして「保存する」を押します。登録したアプリケーションの詳細が記載されたブラウザページが開きます。重要な詳細情報は Consumer key および Consumer secret です。
  8. ブラウザから Consumer key をコピーします。IDE で、CONSUMER_KEY が設定されている行を見つけます。引用符の間に Consumer key の値をペーストします。
    CONSUMER_KEY および CONSUMER_SECRET の場所を示す TwitterClient
  9. Consumer secret key をブラウザから TwitterClient にコピー&ペーストします。変更を保存します。

ウィンドウのデザイン

プロジェクトを完成させるために、ウィンドウを追加します。このウィンドウに UI コンポーネントを実装し、ボタンをクリックすると友達のステータス一覧が表示されるといったアクションを追加します。

ウィンドウをデザインするには、次の手順に従います。

  1. 「プロジェクト」ウィンドウで、モジュールのノードを右クリックし、「新規」>「ウィンドウ」を選択します。「新規ウィンドウ」ウィザードが開き、「基本設定」パネルが表示されます。
  2. 「基本設定」パネルの「ウィンドウの位置」で「editor」を選択し、「アプリケーションの起動時に開く」を選択して、「次へ」をクリックします。「名前、アイコン、および場所」パネルが開きます。
  3. 「クラス名の接頭辞」フィールドに「twitterFriendsStatus」と入力します。「org.my.twitter.friends」パッケージを選択します。「完了」をクリックします。
    「新規ウィンドウ」ウィザードの「名前、アイコン、および場所」パネルで、クラス名の接頭辞とパッケージ名を表示した状態
  4. twitterFriendsStatusTopComponent ファイルが「デザイン」ビューに開きます。右側に Swing の UI コンポーネントのパレットが表示されます。
    新しいウィンドウの「デザイン」ビューと Swing コンポーネントの「パレット」(コンポーネントはまだ追加されていない状態)
  5. 次の GUI 要素をデザイン領域にドラッグします。
    コンポーネント 表示テキスト 設定
    ボタン Get Friends' Statuses

    変数名を getStatusesButton に変更します。

    「enabled」プロパティーを選択解除します。

    選択解除された「enabled」プロパティー

    ボタン Log in 変数名を loginButton に変更します
    スクロール区画 --  
    テキスト領域 -- スクロール区画にドラッグします

    必要に応じて、テキスト領域とスクロール区画のサイズを変更し、ボタンの位置を調整します。
    「デザイン」ビューで新しいウィンドウが完成した状態

  6. ログインボタンをダブルクリックします。IDE によってボタンのアクションメソッドが生成され、エディタが「ソース」ビューに切り替わってそのアクションメソッドにフォーカスされます。
  7. ログインボタンのアクションメソッドの本体に、次のコードを入力するかコピーします。このコードは、アプリケーションを Twitter にログインさせるメソッドを起動します。getStatuses ボタンが有効になり、ログインボタンが無効になります。アプリケーションがログインする必要があるのは一度だけです。TwitterClient は、その login メソッドを呼び出すためにインスタンス化する必要はありません。
    private void loginButtonActionPerformed(java.awt.event.ActionEvent evt) {                                   
       TwitterClient.login();
       getStatusesButton.setEnabled(true);
       loginButton.setEnabled(false);
    } 
  8. getStatuses ボタンをダブルクリックします。IDE によってボタンのアクションメソッドが生成され、エディタが「ソース」ビューに切り替わってそのアクションメソッドにフォーカスされます。
  9. getStatuses ボタンのアクションメソッドの本体に、次の処理コードをペーストするか入力します。このコードは、login メソッドによって作成されたトークンを使用して、TwitterClient のインスタンス化および OAuth の初期化を行います。そのあとコードは getFriendsTimeline を呼び出し、ステータスの一覧を取得して、各ステータスのユーザー名およびテキストを含む行を String に追加したあと、String をテキスト領域に渡します。
    private void getStatusesButtonActionPerformed(java.awt.event.ActionEvent evt) {                                         
    TwitterClient client = new TwitterClient("xml");
    client.initOAuth();
    Statuses response = client.getFriendsTimeline(Statuses.class, null, null, null, "10");
    response.getStatus().size();
    String text = "";
    for (StatusType st : response.getStatus()) {
    text += st.getUser().getName() + ": " + st.getText() + "\n";
    }
    jTextArea1.setText(text);
    }
  10. クラスが見つからないことを示す警告アイコンがコードに表示されます。Ctrl-Shift-I (Mac の場合は ⌘-Shift-I) を押します。「すべてのインポートを修正」ダイアログが開きます。twitter.twitteroauth.twitterresponse クラスを選択します。「了解」をクリックします。
    インポートする正しいクラスが表示された「すべてのインポートを修正」ダイアログ

これでアプリケーションは完成しました。RestfulClientPlatformApp を実行すると、NetBeans プラットフォームが開き、デザインしたウィンドウが「出力」セクションに表示されます。「Log In」をクリックするとダイアログが開き、アプリケーションによるデータアクセスを認証するためのリンクが表示されます。

アプリケーションにデータを渡すための OAuth 認証ダイアログ

リンクをクリックするとブラウザページが開き、アプリケーションによる Twitter データへのアクセスを許可するかどうかが Twitter によって確認されます。「許可する」をクリックすると、ページが更新されて PIN が表示されます。PIN をコピーし、認証ダイアログのベリファイア文字列フィールドにペーストします。「了解」をクリックします。

「Log In」ボタンが無効になり、「Get Friends' Statuses」ボタンが有効になります。「Get Friends' Statuses」をクリックすると、Twitter の友達の最新のステータスメッセージ一覧が表示されます。

アプリケーションを実行し、ステータスメッセージを表示した状態

その他の課題

有益なアイデアをいくつか紹介します。

  • friends_timeline API のほかのメソッドを使用して、もう 1 つのウィンドウをモジュールに追加します。
  • 別の Twitter リソースを使用して、もう 1 つのモジュールをプロジェクトに追加します。
  • 「新規プロジェクト」>「サンプル」>「NetBeans モジュール」で「Facebook モジュールのサンプル」を開いて学習します。

関連項目

NetBeans IDE を使用した Java EE アプリケーションの開発方法についての詳細は、次のリソースを参照してください。

メーリングリストに登録することによって、NetBeans IDE Java EE 開発機能に関するご意見やご提案を送信したり、サポートを受けたり、最新の開発情報を入手したりできます。

メーリングリストに登録することによって、NetBeans プラットフォームでの RCP アプリケーション開発に関して、ご意見やご提案を送信したり、サポートを受けたり、情報を入手したりできます。