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
180
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
390
Other Decks in Technology
See All in Technology
AIソロプレナー時代に2ヶ月で20人増員した事業創造会社の開発組織の話
miyatakoji
0
670
手塩にかけりゃいいってもんじゃない
ming_ayami
0
580
AGENTS.mdとSkillsで始めるAIエージェント活用
sonoda_mj
3
210
現地で盛り上がった WWDC26 Keynote
zozotech
PRO
1
250
Chainlitで作るお手軽チャットUI
ynt0485
0
250
AmazonRoute 53ではじめてのドメイン取得!HTTPS化までの道のりを整理してみた
usanchuu
3
140
エラーバジェットのアラートのタイミングを考える.pdf
kairim0
0
150
SONiCの統計情報を取得したい
sonic
0
170
いまさら聞けない「仕様駆動開発入門」 〜AI活用時代の開発プロセスを考える〜
findy_eventslides
2
120
Snowflakeと仲良くなる第一歩
coco_se
4
480
自律型AIエージェントは何を破壊するのか
kojira
0
160
作って終わりにしない タイミーのセマンティックレイヤー育成の現在地
chanyou0311
4
2.4k
Featured
See All Featured
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.2k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.5k
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
5.9k
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
190
Utilizing Notion as your number one productivity tool
mfonobong
4
320
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
2
580
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
310
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
200
Agile that works and the tools we love
rasmusluckow
331
21k
How to train your dragon (web standard)
notwaldorf
97
6.7k
HDC tutorial
michielstock
2
710
Testing 201, or: Great Expectations
jmmastey
46
8.2k
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)との相性はかなり良さそう
• 開発環境は提供してくれるので、簡単に始められるのは良いなと思います