Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
会計 freee SDK の 開発プロセスとアーキテクチャ /freee biztechfrontier2020 miyake
Search
miyake
February 05, 2020
Technology
0
760
会計 freee SDK の 開発プロセスとアーキテクチャ /freee biztechfrontier2020 miyake
Biz Tech Frontier 2020 のセッション資料です
miyake
February 05, 2020
Tweet
Share
More Decks by miyake
See All by miyake
Mirroring Azure Cosmos DB in Microsoft Fabric
miyake
1
47
LLM 時代におさえておきたい Azure Serverless ファミリーまとめ / serverlessdaystokyo2023-llm-aoai
miyake
8
2.2k
Nuxt Studio を使ってみた / nuxt-studio-intro
miyake
0
320
Microsoft Build 2023 で発表された Cosmos DB の注目アップデート / Microsoft Build 2023 Cosmos DB update
miyake
1
640
祝 🎉 両方とも正式リリース! GitHub Codespaces と Nuxt3 で次世代開発体験 / codespaces-nuxt3
miyake
0
1.2k
Static Site Generator でサイト構築 / building sites with static site generator
miyake
1
230
Design and implementation of Cosmos DB Change Feed-centric architecture
miyake
0
780
Well-Architected Framework を活用した Azure 設計パターン / azure-well-architected-framework
miyake
2
1.2k
2020 年下半期 Cosmos DB の更新まとめ
miyake
0
560
Other Decks in Technology
See All in Technology
Observabilityジャーニーを実現するためのAWSサービス:CloudWatch編
o11yfes2023
0
130
パスワードを保存しますか?
hanacchi
0
240
動画配信サービスのフロントエンド実装に学ぶ設計原則
yud0uhu
0
110
スクラムに出会って「できた」を実感できるようになってきた話 / Scrum makes me feel like I can do it
yayoi_dd
2
110
使われないものを作るな!出口から作るデータ分析基盤 / Data Platform Development Starting from the User Needs
amaotone
15
3.3k
【リラン】AIの光と闇?失敗しないために知っておきたいAIリスクとその対応 ①政府の動き編
tkhresk
0
130
中年男性がメインフレームから クラウドへキャリアシフトしてみた
uechishingo
1
460
B2C、B2B プロダクトマネジメントの違い(および思考の罠) / B2C, B2B PM and reduction fallacy
ykmc09
5
1.6k
「知的単純作業」を自動化する、地に足の着いた大規模言語モデル (LLM) の活用
nrryuya
8
8k
OPENLOGI Company Profile
hr01
0
45k
OPENLOGI Company Profile for engineer
hr01
1
2.1k
Dungeons and Dragons and Rails
joelq
0
220
Featured
See All Featured
YesSQL, Process and Tooling at Scale
rocio
165
13k
Put a Button on it: Removing Barriers to Going Fast.
kastner
58
3.1k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
22
1.4k
Adopting Sorbet at Scale
ufuk
69
8.6k
Clear Off the Table
cherdarchuk
85
310k
Building Applications with DynamoDB
mza
88
5.7k
Rails Girls Zürich Keynote
gr2m
91
13k
How STYLIGHT went responsive
nonsquared
92
4.8k
For a Future-Friendly Web
brad_frost
172
9k
Stop Working from a Prison Cell
hatefulcrawdad
266
19k
Atom: Resistance is Futile
akmur
260
25k
Testing 201, or: Great Expectations
jmmastey
30
6.4k
Transcript
会計 freee SDK の 開発プロセスとアーキテクチャ Biz Tech Frontier 2020 Kazuyuki
Miyake 1
About Me 三宅 和之 @kazuyukimiyake 株式会社ゼンアーキテクツ CTO Community Microsoft MVP(for
Microsoft Azure) Vue.js-JP コアスタッフ TypeScript-jp コアスタッフ OSS freee SDK OSS メンテナー Smart Store OSS メンテナー 2
Agenda 1. 会計freee SDKについて 2. 会計freee SDK のアーキテクチャ 3. 会計freee
SDK の開発プロセス ※ 以降のページでは 「freee SDK」 と表現させていただきます 3
会計freee SDK について 4
日本初の会計システム開発用SDK API エコノミーの推進、オープンプラットフォーム構想の一環として開発 公式発表資料 5
SDK リリース状況 2019年11月に正式リリース C#, Java, PHP 用をラインナップ V2 がまもなくリリース予定(OpenAPI 3.0
対応バージョン) 上記以外に、 JavaScript SDK が Beta 版として存在 6
SDK の位置づけ 公開されている freee API スキーマ を 使いやすく する 好みの開発環境
から 直接 freee API を操作できる 7
SDK の利用シーンとメリット 社内アプリ と統合し、独自機能から freee API を呼ぶことができる freee の アプリストア
にアプリケーションを公開しやすくする 8
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
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
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
Version 2.x を絶賛開発中! Open API 3.0 に完全準拠 Swagger 2.0 ベースのスキーマメンテナンスが不要に
ソースコード生成を OpenAPI Generator に統一 言語ごとの生成検証やカスタマイズが不要に SDK リリースのリードタイム短縮化 CI/CD 導入による自動化により、API 更新からのリードタイムが短縮 v2.0.0-alpha としてプレリリース済み 12
freee SDK のアーキテクチャ 13
freee SDK の全体構成 14
SDK のアーキテクチャ基本方針 1. freee API スキーマに準拠 2. 各言語の流儀にしたがう 3. SDK
は OSS として GitHub に公開する 4. SDK は公式パッケージマネージャから配布する 5. 課題やノウハウは企業やコミュニティにフィードバックする 15
freee API スキーマに準拠 free API スキーマ: https://github.com/freee/freee-api-schema API と SDK
で仕様に差異がない 16
各言語の流儀に従う メソッドのシグニチャ(例: 事業所一覧の取得 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
SDK は OSS として GitHub にて公開 SDK ソース、サンプルコード、Issues、Pull Request、ガイドライン 特に
PHP 版は活発にコントリビューターとのやりとりが行われている 18
SDK は公式パッケージマネージャから配布 freee SDK を開発ライブラリとしてスムーズに導入可能 各言語別のパッケージマネージャに対応 C#: NuGet Java: MVN
Repository PHP: Composer 19
freee SDK の開発プロセス 20
SDK リリースまでの道のり freee 社からSDK開発基本方針とベースとなる API スキーマを受領 GitHub 上に リポジトリを作成し、OSS として開発開始
SDK ソースコードの生成方法検証(多くのトライ & エラーあり) Issue の明確化とフィードバック 関連するコミュニティへのコントリビュート v1.0 リリース v2.0 開発 ← イマココ 21
SDK の開発フロー 22
OSS としての開発スタイルを徹底 各言語別のスペシャリストがコミッターとしてリード 言語間の全体整合性や freee 社との調整はメンテナーがとりまとめ ある言語で先行実装し、他の言語にフィードバックして効率化 1.0: C# を先行させ、Java
と PHP に展開 2.0: Java を先行させ、他言語に展開 基本は Issue や PR でコミュニケーション 検証段階は Slack も併用 打ち合わせはほぼ不要(月1のテレカン程度) 23
スペシャルチームの結成 各言語のスペシャリストとOSS開発経験者をコミッターとしてアサイン 24
freee 社へのフィードバック freee 社 API スキーマへの Issue 登録 SDK 開発を通じて、人間の目では分かりにくい
API の細かい仕様を調整 型に厳しい言語で SDK を開発したため、API 側の精度向上に貢献できた 25
外部へのコントリビュート Open API Generator への PR 発行 開発が遅れていた C# の
OpenAPI Generator に多くの PR を発行し貢献 C# メンテナの shibayan が technical committee に招待された! 26
OpenAPI Generator のサイトにロゴが掲載! 27
freee SDK 開発で得られたこと API スキーマから複数言語のソースコードを生成するノウハウ 会計以外のアプリと freee の機能を融合できる可能性 企業 x
エンジニア x コミュニティ の融合プロジェクト形式が とても良く機能すること freee の機能が豊富であることを API 仕様からあらためて実感! 28
ご清聴ありがとうございました 29