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 biztechfro...
Search
miyake
February 05, 2020
Technology
0
850
会計 freee SDK の 開発プロセスとアーキテクチャ /freee biztechfrontier2020 miyake
Biz Tech Frontier 2020 のセッション資料です
miyake
February 05, 2020
Tweet
Share
More Decks by miyake
See All by miyake
Cosmos DB で持続可能な RAG を実現しよう!~ AOAI Dev Day ふりかえりを添えて / Sustainable RAG with Cosmos DB with recap AOAI Dev Day
miyake
0
230
Mirroring Azure Cosmos DB in Microsoft Fabric
miyake
2
140
LLM 時代におさえておきたい Azure Serverless ファミリーまとめ / serverlessdaystokyo2023-llm-aoai
miyake
9
2.5k
Nuxt Studio を使ってみた / nuxt-studio-intro
miyake
1
650
Microsoft Build 2023 で発表された Cosmos DB の注目アップデート / Microsoft Build 2023 Cosmos DB update
miyake
1
790
祝 🎉 両方とも正式リリース! GitHub Codespaces と Nuxt3 で次世代開発体験 / codespaces-nuxt3
miyake
0
1.4k
Static Site Generator でサイト構築 / building sites with static site generator
miyake
1
290
Design and implementation of Cosmos DB Change Feed-centric architecture
miyake
0
910
Well-Architected Framework を活用した Azure 設計パターン / azure-well-architected-framework
miyake
2
1.4k
Other Decks in Technology
See All in Technology
kargoの魅力について伝える
magisystem0408
0
210
【re:Invent 2024 アプデ】 Prompt Routing の紹介
champ
0
140
宇宙ベンチャーにおける最近の情シス取り組みについて
axelmizu
0
110
バクラクのドキュメント解析技術と実データにおける課題 / layerx-ccc-winter-2024
shimacos
2
1.1k
マイクロサービスにおける容易なトランザクション管理に向けて
scalar
0
130
Oracle Cloudの生成AIサービスって実際どこまで使えるの? エンジニア目線で試してみた
minorun365
PRO
4
280
社外コミュニティで学び社内に活かす共に学ぶプロジェクトの実践/backlogworld2024
nishiuma
0
260
サーバレスアプリ開発者向けアップデートをキャッチアップしてきた #AWSreInvent #regrowth_fuk
drumnistnakano
0
190
社内イベント管理システムを1週間でAKSからACAに移行した話し
shingo_kawahara
0
180
10個のフィルタをAXI4-Streamでつなげてみた
marsee101
0
170
KnowledgeBaseDocuments APIでベクトルインデックス管理を自動化する
iidaxs
1
260
UI State設計とテスト方針
rmakiyama
2
580
Featured
See All Featured
Designing Experiences People Love
moore
138
23k
Building Adaptive Systems
keathley
38
2.3k
Automating Front-end Workflow
addyosmani
1366
200k
A Tale of Four Properties
chriscoyier
157
23k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
251
21k
Put a Button on it: Removing Barriers to Going Fast.
kastner
59
3.6k
Embracing the Ebb and Flow
colly
84
4.5k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
232
17k
Site-Speed That Sticks
csswizardry
2
190
Bootstrapping a Software Product
garrettdimon
PRO
305
110k
YesSQL, Process and Tooling at Scale
rocio
169
14k
It's Worth the Effort
3n
183
28k
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