この手順の目的
freee会計のPublicAPIを用いて、PHP用のクライアントコード(SDK)を生成することができます。
この手順ではクライアントコードの生成〜その利用方法までを説明します。
手順の実行環境
本手順の実行には Docker Engine, Docker Compose がインストールされた環境が必要です。
インストールはガイダンスページ (https://docs.docker.jp/compose/install/index.html) を参考に行って下さい。
手順
1. クライアントコードを準備する
1.1. コードを生成する
freee APIのOpenAPIスキーマを元にクライアント処理を実装したPHPライブラリを生成します。
任意のディレクトリに移動し、以下コマンドを入力します。
docker run --rm \
-u "$(id -u $USER):$(id -g $USER)" \
-v "${PWD}:/local" \
openapitools/openapi-generator-cli:v5.4.0 generate \
-i https://raw.githubusercontent.com/freee/freee-api-schema/master/v2020_06_15/open-api-3/api-schema.json \
-g php \
-o /local/
1.2. HeaderSelector.phpを編集する (任意*)
* 2022年12月現在、freee APIは1バージョンのみ提供しているため、バージョン指定の処理を追加しなくても問題ありません。
生成コード内に、freee APIのリクエスト時にAPIバージョンを指定するための処理を追加します。lib/HeaderSelector.phpを編集し、以下のようにコードを追加します。
selectHeaders, selectHeadersForMultipartメソッド内の以下の箇所
unset($headers['Content-Type']);
+ $headers = $this->appendFreeApiVersionHeader($headers);
return $headers;
}
ファイル末尾
unset($headers['Content-Type']);
+ $headers = $this->appendFreeApiVersionHeader($headers);
return $headers;
}
2. クライアントコードの動作確認をする
以降は生成したクライアントコードが利用できるか確認する方法を説明します。
Dockerを用いて動作確認用の実行環境を起動し、その環境内で生成したクライアントコードを利用できることを確認します。
2.1. アプリケーションを用意しアクセストークンを取得する
https://developer.freee.co.jp/startguide/tutorials/ を参考にアプリケーションを作成しアクセストークンを取得します。
取得したアクセストークンは動作確認の際に使用するので記録しておきます。
2.2. 動作確認用の実行環境を起動する
2.2.1. Docker設定ファイルの準備
生成コードのトップディレクトリにファイル(Dockerfile, docker-compose.yaml)を以下の内容で配置します。
Dockerfile
FROM php:7.3-cli
RUN apt-get update; \
curl -sL https://deb.nodesource.com/setup_12.x | bash -; \
apt-get install -y --no-install-recommends \
git \
libzip-dev \
nodejs \
unzip \
zlib1g-dev \
; \
rm -rf /var/lib/apt/lists/*
RUN docker-php-ext-install zip
RUN cp $PHP_INI_DIR/php.ini-development $PHP_INI_DIR/php.ini; \
sed -i -e "s/^memory_limit.*$/memory_limit = 2G/g" $PHP_INI_DIR/php.ini
WORKDIR /tmp
RUN curl https://raw.githubusercontent.com/composer/getcomposer.org/76a7060ccb93902cd7576b67264ad91c8a2700e2/web/installer -o - -s | php -- --quiet; \
mv composer.phar /usr/local/bin/composer
WORKDIR /usr/src/app
ENV PATH /root/.composer/vendor/bin:$PATH
docker-compose.yaml
version: "3.7"
services:
console:
build:
context: .
dockerfile: Dockerfile
image: freee-accounting-console
volumes:
- "./:/usr/src/app"
command: /bin/sh -c "while sleep 1000; do :; done"
2.2.2. Dockerコンテナを起動し接続する
Dockerのイメージを作成し、コンテナを起動します。
docker-compose build
docker-compose up -d
コンテナに接続しシェルを実行します。
docker exec -it xxx-console-1 /bin/bash
xxx-console-1はdocker-compose up -dで起動したコンテナ名
2.2.3. 以降は接続したコンテナ内で操作する
PHPライブラリをインストールします。
composer install
2.3. freee APIをリクエストして動作確認する
Get Companies API及びGet Partners APIの実行例です。
PHPインタラクティブシェルを起動します。
php -a
起動したインタラクティブシェルで以下が実行できれば、クライアントコードの動作確認完了です。
※下記コマンドの一行目、r+equireはrequireと書き換えて実行してください。
php > r+equire_once(__DIR__ . '/vendor/autoload.php');
php > $token = '{アクセストークン}';
php > $config = OpenAPI\Client\Configuration::getDefaultConfiguration()->setAccessToken($token);
php > $companiesApiInstance = new OpenAPI\Client\Api\CompaniesApi(null, $config);
php > echo $companiesApiInstance->getCompanies();
php > $cid = {↑で取得できた事業所ID};
php > $partnersApiInstance = new OpenAPI\Client\Api\PartnersApi(null, $config);
php > echo $partnersApiInstance->getPartners($cid);