アプリケーションでAPIを活用してみよう:基礎編

技術コラム

Teruko Takahashi

アプリケーションでAPIを活用してみよう:基礎編

Teruko Takahashi

アプリケーション開発において、外部サービスのAPIを利用することは、現在では一般的な実装方法となっています。

本記事では、Javaアプリケーションで、Google Calendar APIを使用する場合のする基本的な手順を紹介します。

Google Calendar APIを利用することで、カレンダーイベントの取得や作成などの機能を、アプリケーションに統合することができます。

基礎を理解することで、さまざまなAPIを容易に利用できるようになりますので、本記事を参考にしてみてください。

APIを利用する意義と重要性

APIは、異なるシステムやサービス間で、情報や機能を共有するための仕組みです。アプリケーションでAPIを利用することで、他のサービスの機能を簡単に組み込むことができます。では、なぜAPIを利用するのでしょうか?

  • 機能の拡張と強化
    • APIを利用することで、アプリケーションに新しい機能を追加したり、既存の機能を強化したりすることができます。例えば、地図機能や支払機能などを追加することが可能です。

 

  • データの活用と統合:
    • 外部サービスのAPIを利用することで、そのサービスが持つデータをアプリケーション内で活用することができます。例えば、天気情報やニュース記事などをアプリ内で表示することができます。

 

  • 開発の効率化:
    • APIを利用することで、アプリケーションの開発時間を短縮することができます。自分で機能を開発する必要がなく、既存のサービスの機能を利用することができるためです。

 

  • ユーザーエクスペリエンスの向上
    • APIを利用することで、ユーザーエクスペリエンスを向上させることができます。例えば、外部サービスの高度な機能を利用することで、ユーザーにより便利で魅力的なアプリケーションを提供することが可能です。

 

以上のように、APIを利用することでアプリケーションの機能性や柔軟性を向上させることができます。次に、具体的なAPIの導入手順を紹介していきます。

Google Calendar API導入の手順

Step1.まず最初に、Google Cloud Platform(GCP)で新しいプロジェクトを作成します。

  • Google Cloud Console(https://console.cloud.google.com/)にアクセスし、新しいプロジェクトを作成します。
  • プロジェクト名を選択し、作成します。

 

Step2.Google Calendar APIを有効にします。

  • 作成したプロジェクトを選択し、APIとサービスのダッシュボードからGoogle Calendar APIを検索し、有効にします。

 

Step3.OAuth認証情報を作成します。

  • APIを有効にした後、認証情報を設定し、認証情報を作成します。

 

Step4.認証情報のjsonをダウンロードします。

  • ファイル名:credentials.json

 

Step5.アプリケーションにGoogle APIクライアントライブラリを追加します。

  • Javaアプリケーションに、Google APIを使用するためのクライアントライブラリを追加します。
  • Mavenを使用している場合は、pom.xmlに依存関係を追加します。
<!-- https://mvnrepository.com/artifact/com.google.api-client/google-api-client -->
<dependency>
    <groupId>com.google.api-client</groupId>
    <artifactId>google-api-client</artifactId>
    <version>2.0.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.google.oauth-client/google-oauth-client-jetty -->
<dependency>
    <groupId>com.google.oauth-client</groupId>
    <artifactId>google-oauth-client-jetty</artifactId>
    <version>1.34.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.google.apis/google-api-services-calendar -->
<dependency>
    <groupId>com.google.apis</groupId>
    <artifactId>google-api-services-calendar</artifactId>
    <version>v3-rev411-1.25.0</version>
</dependency>

Step6.JavaコードでGoogle Calendar APIを利用します。

  • 以下は、JavaでGoogle Calendar APIを使用して、カレンダーイベントを作成する例です。
import com.google.api.client.auth.oauth2.Credential;
import com.google.api.client.extensions.java6.auth.oauth2.AuthorizationCodeInstalledApp;
import com.google.api.client.extensions.jetty.auth.oauth2.LocalServerReceiver;
import com.google.api.client.googleapis.auth.oauth2.GoogleAuthorizationCodeFlow;
import com.google.api.client.googleapis.auth.oauth2.GoogleClientSecrets;
import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport;
import com.google.api.client.http.javanet.NetHttpTransport;
import com.google.api.client.json.JsonFactory;
import com.google.api.client.json.gson.GsonFactory;
import com.google.api.client.util.DateTime;
import com.google.api.client.util.store.FileDataStoreFactory;
import com.google.api.services.calendar.Calendar;
import com.google.api.services.calendar.CalendarScopes;
import com.google.api.services.calendar.model.Event;
import com.google.api.services.calendar.model.Events;

import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.security.GeneralSecurityException;
import java.util.Collections;
import java.util.List;

public class CalendarTest {
  private static final String APPLICATION_NAME = "Google Calendar API Java CalendarTest";
  private static final JsonFactory JSON_FACTORY = GsonFactory.getDefaultInstance();
  private static final String TOKENS_DIRECTORY_PATH = "tokens";
  private static final List<String> SCOPES =
      Collections.singletonList(CalendarScopes.CALENDAR_READONLY);
  private static final String CREDENTIALS_FILE_PATH = "/credentials.json";

  private static Credential getCredentials(final NetHttpTransport HTTP_TRANSPORT)
      throws IOException {
    // 認証情報json読込
    InputStream in = CalendarQuickstart.class.getResourceAsStream(CREDENTIALS_FILE_PATH);
    if (in == null) {
      throw new FileNotFoundException("認証情報jsonなし: " + CREDENTIALS_FILE_PATH);
    }
    GoogleClientSecrets clientSecrets =
        GoogleClientSecrets.load(JSON_FACTORY, new InputStreamReader(in));

    GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow.Builder(
        HTTP_TRANSPORT, JSON_FACTORY, clientSecrets, SCOPES)
        .setDataStoreFactory(new FileDataStoreFactory(new java.io.File(TOKENS_DIRECTORY_PATH)))
        .setAccessType("offline")
        .build();
    LocalServerReceiver receiver = new LocalServerReceiver.Builder().setPort(8888).build();
    Credential credential = new AuthorizationCodeInstalledApp(flow, receiver).authorize("user");
    return credential;
  }

  public static void main(String... args) throws IOException, GeneralSecurityException {
    final NetHttpTransport HTTP_TRANSPORT = GoogleNetHttpTransport.newTrustedTransport();
    Calendar service =
        new Calendar.Builder(HTTP_TRANSPORT, JSON_FACTORY, getCredentials(HTTP_TRANSPORT))
            .setApplicationName(APPLICATION_NAME)
            .build();

    Event event = new Event();
    event.setSummary("test Summary");
    event.setDescription("test Description");
    LocalDateTime now = LocalDateTime.now();
    event.setStart(new EventDateTime().setDateTime(new DateTime(now.toEpochSecond(java.time.ZoneOffset.UTC))));
event.setEnd(new EventDateTime().setDateTime(new DateTime(now.plusHours(1).toEpochSecond(java.time.ZoneOffset.UTC))));

Event result = service.events().insert("googleaccount@example.com", event).setConferenceDataVersion(1).execute();
}
}

以上で、Google Calendar APIを利用するアプリケーションを構築できます。
Google Calendar APIに関わらず、APIには、固有の機能や要件があるため、ドキュメントを参照することが重要です。

APIを利用する際の注意点

APIを利用する場合には、以下のような注意すべきポイントがあります。

  • 適切な認証方法を選択し、セキュリティを確保すること
  • APIの利用制限や料金体系についても事前に確認しておくこと
  • APIを利用する際にはドキュメントやサポートを活用すること
  • APIの利用にあたっては常に最新の情報を把握し、アップデートや変更に迅速に対応すること
  • APIを提供するサービスが一時的にダウンする可能性を考慮すること

 

まとめ

本記事では、Javaアプリケーションで、Google Calendar APIを利用する基本的な手順を紹介しました。

APIを使用して、てさまざまな外部サービスを統合することで、アプリケーションの機能性や柔軟性を向上させることができます。

今後の開発プロジェクトで、API連携を積極的に活用してみてください。

本記事が皆様のアプリケーション開発の参考になれば幸いです。

Salesforce導入・活用支援のご案内

サンブリッジが提供するSalesforce導入・活用支援サービスは、お客様の現状の業務用件や目指すゴールをヒアリングし、システム設計から実装までを行います。
導入後のトレーニングまでを含むきめ細やかなサービスを一貫して実施することにより、Salesforceの活用向上と導入の効果を最大化します。

関連記事