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
Staiinlessの紹介
Search
karasu
June 01, 2025
Technology
200
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Staiinlessの紹介
karasu
June 01, 2025
More Decks by karasu
See All by karasu
Streamsyncの紹介(streamlitの代替になるのか?)
seiyeah78
0
410
Other Decks in Technology
See All in Technology
事業成長とAI活用を止めないデータ基盤アーキテクチャの設計思想
hiracky16
0
690
インシデント事例と パッケージの全量解析に学ぶ ソフトウェアサプライチェーンの守り方 / supply-chain-attack-defense
flatt_security
0
1k
AIコード生成×サプライチェーン攻撃 — PHPが直面する“二重の信頼問題
shinyasaita
0
480
Claude CodeとAmazon Bedrock AgentCoreでつくる、自分だけのAIアシスタント
ymae
0
110
なぜ、あなたのAPIは使われないのか? AX時代の設計原則、ガードレール、運用体制
yokawasa
1
220
SoccerMaster: A Vision Foundation Model for Soccer Understanding
kzykmyzw
0
180
そのドキュメント、自動化しませんか?
yuksew
1
430
どこまでAIに任せるか 〜確率論と決定論の境界決定〜
shukob
0
510
SRENEXT_2026_Chairs__Talks_in_Tamachi.sre.pdf
srenext
1
160
アップデートで何が変わった?デモで学んで使いこなすIBM Bob2.0
muehara
0
250
AI Agent を本番環境へ―― Microsoft Foundry × Azure Serverless で作る Enterprise-Ready な基盤
shibayan
PRO
1
300
AI x 開発生産性を取り巻く予算戦略と投資対効果
i35_267
7
3.2k
Featured
See All Featured
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
2
430
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
470
The Mindset for Success: Future Career Progression
greggifford
PRO
0
430
Art, The Web, and Tiny UX
lynnandtonic
304
22k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
GraphQLとの向き合い方2022年版
quramy
50
15k
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
490
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
420
A designer walks into a library…
pauljervisheath
211
24k
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
620
Evolving SEO for Evolving Search Engines
ryanjones
0
250
Transcript
AI SDKの開発を楽にしよう Stainlessの紹介 2025.4.3 大内聖也 株式会社ディー・エヌ・エー + GO株式会社
AI 目次 • APIとクライアント開発 ◦ スキーマ駆動開発とOpenAPI • Stainlessについて ◦ 特徴・使い方とか
• Demo(できたら) • 良かった点・惜しいなと思う点 • まとめ
AI API開発: よくある形 • REST API: 4原則を守って開発されたAPI ▪ 統一インターフェース •
統一的に決められたルールに則る(GET, PUT, POST, DELETE) ▪ アドレス可能性 • URIを通してリソースを一意的に表現できること ▪ 接続性 • 別のリソースへの遷移が可能である ▪ ステートレス性 • 状態を保持せず、各APIごとに独立している • 例 ◦ GET example.com/users => usersの一覧を取得する ◦ POST example.com/users => usersのリソースを新規作成する ◦ PUT(PATCH) example.com/users/1 => usersでid = 1のリソースを更新する ◦ DELETE eample.com/users/1 => usersでid=1のリソースを削除する • ユースケース ◦ サーバ・クライアントが密( APIはinternalで公開しない = 利用者側が限定される) ◦ クライアントとAPI開発が同じチーム
AI API開発: よくある形 • GraphQL ◦ APIに対してクエリ言語を提供することで必要なリソースを得ることができる ▪ REST APIと違い(極端に言えば)1つのリソースで1つのURLでOK
• そこにクエリする(usersのidとtitleの一覧ください、みたいな) ◦ 柔軟性がありクライアント側で必要な項目やリソースを選択可能 ◦ 専用のGraphQLサーバ・専用のクライアントを用意する ▪ サーバは同時にアグリゲーションの役割をこれ一つで果たす • BFFやユニバーサルBFFという位置づけとも見れる ◦ REST APIと違いセキュリティをちゃんと考える必要あり • 例 ◦
AI スキーマ駆動開発 • 殆どの場合、APIの定義書を作る = それが正となる ◦ 例: OpenAPI •
定義書をベースにAPIやクライアントの型など、雛形の生成を行いそれを用いてクライアン トやAPIのロジックを作り込んでいく ◦ 雛形が統一的に生成できるので、実装の漏れが発生しにくい ◦ => これをスキーマ駆動開発という • OpenAPIだと専用のジェネレータで、定義書のjsonやyamlからいい感じにやってくれる ◦ openapi-generator(多言語対応) ◦ openapi-ts(TypeScript特化) • 例 ◦ フロントエンド ▪ TypeScriptとfetch(or Axios)でクライアントを生成 ◦ バックエンド ▪ Golangで各エンドポイント、リクエスト・レスポンスの型(struct)を生成 ▪ PythonとFastAPIで...
AI 多言語対応させるのは大変 • 作る以外にもやることは多い ◦ バージョン管理(タグとか) ◦ staging→productionリリース(それ必要??) ▪ CD/CI環境
▪ 配布方法(pythonならpip install ….とか) ◦ 専用の開発環境 ◦ などなど。。。。 • 多言語に対応する場合、それだけ用意・保守していかないといけなくなる ◦ APIとして外部への提供を行っているサービスならなおさら ◦ 注力すべきなのはドメイン、それ以外に開発コストを割くのはもったいない => stainlessを使ってちょっと楽しましょう
AI Stainless • API仕様(OpenAPIなど)を元にして、高品質なSDKを自動生成するサービス ◦ 元Stripe(決済サービス)の方が立ち上げた • 利用企業 ◦ CloudFlare
◦ Open AI : openai-python はこれで作っている ▪ 他、いろんな企業が使っていて実績も多そう • イメージ •
AI 特徴 特徴 内容 自動コード生成 OpenAPI等、複数言語のSDKを自動生成 メンテナンス性 コードがクリーンに保たれ、手動メンテのコストが削減 強力な型サポート 厳格な型定義を自動で生成
CI/CD統合 GitHub ActionsなどのCIと連携して、API更新時に自動で SDKをリリース可能 バージョニング管理 APIバージョン別にSDKを分けて出力可能 手動追加 手動で独自のコードも追加できる
AI WEB IDE • WEB上で統合された開発環境が提供されており、ローカルでの開発環境は基本不要 •
AI 目次 DEMO
AI 良かった点 • 言語独自仕様によるギャップの吸収 ◦ 例: GO言語ではゼロ値という値を与えず初期化するとデフォルト値が入る ▪ bool: false
▪ int: 0 ▪ string: “”(空文字) ◦ boolであれば、falseを実際セットしたのかセットせず初期化されたのか不明 ▪ これを検知できる仕組みが必要 • パッケージ管理システムも対応 ◦ pyplやnpmパッケージのpublishまで行ってくれるのは便利 ◦
AI 惜しいなという点 • 完全にプライベートにするのはできない? ◦ stagingで作成されるSDKのリポジトリがstainless-sdksというorganization ◦ Stainless側に管理されている可能性 ◦ 気になる人や企業は気になってしまうかも
• Open APIのdocだけでできると思ったら、違った ◦ stainless-configという専用の設定ファイル(yaml)が必要 ◦ doc読んで、stainless独自の設定になれる必要あり ▪ 充実してるので読み込んでいけばそこまで難しくなさそう
AI まとめ • SDK開発サービスStainlessの紹介 • クライアント開発の多言語化の難しさ・大変さとその解消 • Open API(REST API)との相性はかなり良さそう
• 開発環境は提供してくれるので、簡単に始められるのは良いなと思います