Upgrade to Pro — share decks privately, control downloads, hide ads and more …

SmithyでSDKコードを生成していく的なおはなし

 SmithyでSDKコードを生成していく的なおはなし

https://nakanoshima-dev.connpass.com/event/252909/
[Online]nakanoshima.dev #28 改めて学ぶAWS SDKの表と裏
2022/7/27(水) 18:30 〜 22:00

owaranai_dobby

July 27, 2022
Tweet

More Decks by owaranai_dobby

Other Decks in Technology

Transcript

  1. © 2022, Amazon Web Services, Inc. or its affiliates. ©

    2022, Amazon Web Services, Inc. or its affiliates. SmithyでSDKコードを ⽣成していく的なおはなし Takao Mitsuyoshi N A K A N O S H I M A . D E V # 2 8
  2. © 2022, Amazon Web Services, Inc. or its affiliates. 光吉

    隆雄(Mitsuyoshi Takao) アマゾンウェブサービスジャパン合同会社 技術統括本部⻄⽇本ソリューション部 ソリューションアーキテクト 経歴︓ ⼤⼿ゲーム会社基盤開発・DevOps推進 Infrastructure as Code, CI/CD, Container 好きなAWSサービス︓ ⻄⽇本のエンタープライズ企業を担当するソリューションアーキテクトとして、 新たに AWS の導⼊をご検討頂いているお客様/既に AWS をご利⽤頂いてい るお客様の課題解決を技術⾯から⽀援しています。 ⾃⼰紹介 AWS CodeBuild
  3. © 2022, Amazon Web Services, Inc. or its affiliates. アジェンダ

    • AWS SDKの歴史的な話 • Smithyの特徴 • smithy-rubyを触ってみる • まとめ
  4. © 2022, Amazon Web Services, Inc. or its affiliates. ©

    2022, Amazon Web Services, Inc. or its affiliates. AWS SDKの歴史的な話 4
  5. © 2022, Amazon Web Services, Inc. or its affiliates. 増える

    AWS SDK for XXX 5 Rust, Kotlin, Swift Developer Preview Previewを加えると今や AWS SDK は12個の⾔語をサポートしている
  6. © 2022, Amazon Web Services, Inc. or its affiliates. AWS

    の新機能に対する対応 6 機能追加発⽣ 11:00 CodeGen
  7. © 2022, Amazon Web Services, Inc. or its affiliates. ©

    2022, Amazon Web Services, Inc. or its affiliates. Smithyの特徴 11
  8. © 2022, Amazon Web Services, Inc. or its affiliates. Smithyの特徴

    12 • Protocol-agnostic • Designed to evolve • Codify and enforce API governance • Resource based
  9. © 2022, Amazon Web Services, Inc. or its affiliates. Smithyの特徴

    13 • Protocol-agnostic • Designed to evolve • Codify and enforce API governance • Resource based
  10. © 2022, Amazon Web Services, Inc. or its affiliates. 記述の基本

    各オブジェクトにShape(型のようなもの)がある。 各オブジェクトにTraits(特性)を記述してより多くの情報を付与 14 @title("ACME Simple Image Service") service Weather { version: "2006-03-01", resources: [City] } Shape(型) 名前 プロパティ 値 Traits(特性)
  11. © 2022, Amazon Web Services, Inc. or its affiliates. サービスとリソース

    記述しているサービスの全体的な情報をserviceとして記述。 サービスの中で扱われるリソースを記述 15 service Weather { version: "2006-03-01", resources: [City] } resource City { identifiers: { cityId: CityId }, read: GetCity } @pattern("^[A-Za-z0-9 ]+$") string CityId リソース サービス
  12. © 2022, Amazon Web Services, Inc. or its affiliates. オペレーション

    16 @readonly operation GetCity { input: GetCityInput, output: GetCityOutput } @input structure GetCityInput { @required cityId: CityId } @output structure GetCityOutput { @required name: String } オペレーション(操作) 取得時に⼀意の識別⼦ として必須のためtraits 結果に必ずnameが 含まれることの宣⾔
  13. © 2022, Amazon Web Services, Inc. or its affiliates. オペレーション

    17 @readonly operation GetCity { input: GetCityInput, output: GetCityOutput } @input structure GetCityInput { @required cityId: CityId } @output structure GetCityOutput { @required name: String } オペレーション(操作) 取得時に⼀意の識別⼦ として必須のためtraits 結果に必ずnameが 含まれることの宣⾔ これらの定義の中にはプロトコル、シリアライズ形式といった情報は存在しない とはいえ必須でないというだけで、 たとえば @http という traitsがあり、httpプロトコルに関する情報を付与できる。 またOpenAPIにコンバートすることも可能。(完全なサポートではないため不可逆)
  14. © 2022, Amazon Web Services, Inc. or its affiliates. Smithyの特徴

    18 • Protocol-agnostic • Designed to evolve • Codify and enforce API governance • Resource based
  15. © 2022, Amazon Web Services, Inc. or its affiliates. 拡張性

    19 • デフォルトで様々なTraitsが存在 • AWSの機能に関するTraitsも • 既存リソースへの追加などに対しては 下位互換性を持っている
  16. © 2022, Amazon Web Services, Inc. or its affiliates. ©

    2022, Amazon Web Services, Inc. or its affiliates. smithy-rubyを触ってみる 20
  17. © 2022, Amazon Web Services, Inc. or its affiliates. AWS

    SDKと関係ない rubygems の⽣成 21 high_score_servi ce (ruby on rails) high-score- service.smithy high-score- service gem CodeGen request
  18. © 2022, Amazon Web Services, Inc. or its affiliates. ©

    2022, Amazon Web Services, Inc. or its affiliates. デモ 22
  19. © 2022, Amazon Web Services, Inc. or its affiliates. ©

    2022, Amazon Web Services, Inc. or its affiliates. まとめ 23
  20. © 2022, Amazon Web Services, Inc. or its affiliates. まとめ

    24 • AWS SDK はすべての⾔語で同⼀の機能を保証するためにより良い⼿法で改 善を加え続けている • Smithy は AWS のためのものではなくプロトコルやフォーマットにとらわ れないIDL • (開発中の⾔語も多いけど)好きな⾔語で Smithy を触ってみよう!
  21. © 2022, Amazon Web Services, Inc. or its affiliates. 参考

    25 • AWS re:Invent 2021 - Building with the new AWS SDKs for Rust, Kotlin, and Swift • https://www.youtube.com/watch?v=Nhk1K1AjYvg • Smithy • https://awslabs.github.io/smithy/ • Developer Preview: Ruby SDK code generation using Smithy • https://aws.amazon.com/jp/blogs/developer/developer-preview-smithy-code- generated-ruby-sdk/
  22. © 2022, Amazon Web Services, Inc. or its affiliates. Thank

    you! © 2022, Amazon Web Services, Inc. or its affiliates. 26