Pro Yearly is on sale from $80 to $50! »

会計 freee SDK の 開発プロセスとアーキテクチャ /freee biztechfrontier2020 miyake

Ff7f1f76468f46a1c5c84b9238a4b162?s=47 miyake
February 05, 2020

会計 freee SDK の 開発プロセスとアーキテクチャ /freee biztechfrontier2020 miyake

Biz Tech Frontier 2020 のセッション資料です

Ff7f1f76468f46a1c5c84b9238a4b162?s=128

miyake

February 05, 2020
Tweet

Transcript

  1. 会計 freee SDK の 開発プロセスとアーキテクチャ Biz Tech Frontier 2020 Kazuyuki

    Miyake 1
  2. About Me 三宅 和之 @kazuyukimiyake 株式会社ゼンアーキテクツ CTO Community Microsoft MVP(for

    Microsoft Azure) Vue.js-JP コアスタッフ TypeScript-jp コアスタッフ OSS freee SDK OSS メンテナー Smart Store OSS メンテナー 2
  3. Agenda 1. 会計freee SDKについて 2. 会計freee SDK のアーキテクチャ 3. 会計freee

    SDK の開発プロセス ※ 以降のページでは 「freee SDK」 と表現させていただきます 3
  4. 会計freee SDK について 4

  5. 日本初の会計システム開発用SDK API エコノミーの推進、オープンプラットフォーム構想の一環として開発 公式発表資料 5

  6. SDK リリース状況 2019年11月に正式リリース C#, Java, PHP 用をラインナップ V2 がまもなくリリース予定(OpenAPI 3.0

    対応バージョン) 上記以外に、 JavaScript SDK が Beta 版として存在 6
  7. SDK の位置づけ 公開されている freee API スキーマ を 使いやすく する 好みの開発環境

    から 直接 freee API を操作できる 7
  8. SDK の利用シーンとメリット 社内アプリ と統合し、独自機能から freee API を呼ぶことができる freee の アプリストア

    にアプリケーションを公開しやすくする 8
  9. SDK を利用すると SDK を利用しない場合 REST API の呼び出すコードを書く必要がある curl -X GET

    "https://api.freee.co.jp/api/1/reports/trial_pl?company_id=3316&fiscal_year=2019" -H "accept: application/json" -H "Authorization: Bearer abcdefghijklmnopqrstuvwxyz01234567890xxxxxxxxxxxxxxxxxxxxx" SDK を利用した場合(C#のケース) SDK のメソッドを実行するだけ(例: 試算表取得 GetTrialPlAsync ) var trialPl = await accountingClient.TrialBalance.GetTrialPlAsync(companyId, 2019); 9
  10. SDK の使い方 基本的な使い方 1. 言語別のパッケージマネージャから「公式 freee accounting SDK」を導入する 2. 認証情報を取得しアプリに設定する

    3. 利用したい API に対応するメソッドをライブラリから選択して実装するだけ ライブラリの導入 $ composer require freee/freee-accounting-sdk $ dotnet add package Freee.Accounting.Sdk --version 1.0.0 10
  11. SDK の詳しい使い方は? GitHub に詳細な導入手順書とサンプルがあります! C#: https://github.com/freee/freee-accounting-sdk-csharp Java: https://github.com/freee/freee-accounting-sdk-java PHP: https://github.com/freee/freee-accounting-sdk-php

    11
  12. Version 2.x を絶賛開発中! Open API 3.0 に完全準拠 Swagger 2.0 ベースのスキーマメンテナンスが不要に

    ソースコード生成を OpenAPI Generator に統一 言語ごとの生成検証やカスタマイズが不要に SDK リリースのリードタイム短縮化 CI/CD 導入による自動化により、API 更新からのリードタイムが短縮 v2.0.0-alpha としてプレリリース済み 12
  13. freee SDK のアーキテクチャ 13

  14. freee SDK の全体構成 14

  15. SDK のアーキテクチャ基本方針 1. freee API スキーマに準拠 2. 各言語の流儀にしたがう 3. SDK

    は OSS として GitHub に公開する 4. SDK は公式パッケージマネージャから配布する 5. 課題やノウハウは企業やコミュニティにフィードバックする 15
  16. freee API スキーマに準拠 free API スキーマ: https://github.com/freee/freee-api-schema API と SDK

    で仕様に差異がない 16
  17. 各言語の流儀に従う メソッドのシグニチャ(例: 事業所一覧の取得 GET: /api/1/companies ) C#: CompaniesIndexResponse GetCompanies ()

    Java: Observable<CompaniesIndexResponse> getCompanies() PHP: getCompanies() サンプル Web アプリの利用フレームワーク C#: ASP.NET Core MVC/WebAPI Java: Spring Boot PHP: Laravel 17
  18. SDK は OSS として GitHub にて公開 SDK ソース、サンプルコード、Issues、Pull Request、ガイドライン 特に

    PHP 版は活発にコントリビューターとのやりとりが行われている 18
  19. SDK は公式パッケージマネージャから配布 freee SDK を開発ライブラリとしてスムーズに導入可能 各言語別のパッケージマネージャに対応 C#: NuGet Java: MVN

    Repository PHP: Composer 19
  20. freee SDK の開発プロセス 20

  21. SDK リリースまでの道のり freee 社からSDK開発基本方針とベースとなる API スキーマを受領 GitHub 上に リポジトリを作成し、OSS として開発開始

    SDK ソースコードの生成方法検証(多くのトライ & エラーあり) Issue の明確化とフィードバック 関連するコミュニティへのコントリビュート v1.0 リリース v2.0 開発 ← イマココ 21
  22. SDK の開発フロー 22

  23. OSS としての開発スタイルを徹底 各言語別のスペシャリストがコミッターとしてリード 言語間の全体整合性や freee 社との調整はメンテナーがとりまとめ ある言語で先行実装し、他の言語にフィードバックして効率化 1.0: C# を先行させ、Java

    と PHP に展開 2.0: Java を先行させ、他言語に展開 基本は Issue や PR でコミュニケーション 検証段階は Slack も併用 打ち合わせはほぼ不要(月1のテレカン程度) 23
  24. スペシャルチームの結成 各言語のスペシャリストとOSS開発経験者をコミッターとしてアサイン 24

  25. freee 社へのフィードバック freee 社 API スキーマへの Issue 登録 SDK 開発を通じて、人間の目では分かりにくい

    API の細かい仕様を調整 型に厳しい言語で SDK を開発したため、API 側の精度向上に貢献できた 25
  26. 外部へのコントリビュート Open API Generator への PR 発行 開発が遅れていた C# の

    OpenAPI Generator に多くの PR を発行し貢献 C# メンテナの shibayan が technical committee に招待された! 26
  27. OpenAPI Generator のサイトにロゴが掲載! 27

  28. freee SDK 開発で得られたこと API スキーマから複数言語のソースコードを生成するノウハウ 会計以外のアプリと freee の機能を融合できる可能性 企業 x

    エンジニア x コミュニティ の融合プロジェクト形式が とても良く機能すること freee の機能が豊富であることを API 仕様からあらためて実感! 28
  29. ご清聴ありがとうございました 29