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

今年の目標と注目技術

39e1d81d40b7106bfe88bb263abc4da9?s=47 Tonoyama
January 15, 2021

 今年の目標と注目技術

はんなりPython、2021はこれをやる!! LT会

39e1d81d40b7106bfe88bb263abc4da9?s=128

Tonoyama

January 15, 2021
Tweet

Transcript

  1. 今年の目標と注目技術 @Tonoyama

  2. 自己紹介 @Tonoyama Twitter: @yudaitonoyama 関西の情報工学科1年。 京都のWeb系自社開発企業で主に JavaScriptを使い開発のアルバイトを しています。 趣味は、美味しい料理を食べる。作る

  3. 目次 今年の目標  ・状況を説明する能力を上げる  ・プログラミング能力を向上  ・ITリテラシーを向上 注目している技術  ・Fast API + Serverlessで便利に

     ・Type Hintsで型安全性を向上したい 3
  4. 目次 今年の目標  ・状況を説明する能力を上げる  ・プログラミング能力を向上  ・ITリテラシーを向上 注目している技術  ・Fast API + Serverlessで便利に

     ・Type Hintsで型安全性を向上したい 4
  5. 今年の目標①:状況を説明する能力を上げる 物事を要約して、 正確に伝えるって大変だ ・経験を積む ・ブログとハッカソンを継続する 学外のハッカソンも参加したい ブログ: https://blog.tonoyama-yudai.com/

  6. 今年の目標②:プログラミング能力を向上 競プロはじめてみようかな 言語やフレームワークの仕様は すぐに覚えられる しかし、 論理的思考力を問うプログラムは すぐには上達できない

  7. 今年の目標③:ITリテラシーを向上 勉強会に参加・企画する 右図は学内で開催する勉強会のタイトル スライド: https://speakerdeck.com/tonoyama 情報資格を取る 今年は、 情報セキュリティマネジメント 基本情報

  8. 目次 今年の目標  ・状況を説明する能力を上げる  ・プログラミング能力を向上  ・ITリテラシーを向上 注目している技術  ・Fast API + Serverlessで便利に

     ・Type Hintsで型安全性を向上したい 8
  9. 目次 今年の目標  ・状況を説明する能力を上げる  ・プログラミング能力を向上  ・ITリテラシーを向上 注目している技術  ・Fast API + Serverlessで便利に

     ・Type Hintsで型安全性を向上したい 9
  10. FastAPI + Serverless AWSですぐにAPIサーバを立てたい PythonのAPIサーバをてっとり早く AWS Lambdaにデプロイできたらいいな 10

  11. FastAPI [1] とは 2018年後半に登場したPythonフレームワーク Django, Flask, NestJS(Angular) から構想を得ている[2] OpenAPIを標準搭載 Flaskのようにシンプルに書ける

    軽量なASGIフレームワーク「Starlette」 ・WebSocket ・GraphQL ・実行中のバックグラウンドタスク FastAPIのWebのコアとなっている 11
  12. Serverless Pythonといえば「Zappa」も Zappa とは Amazon API Gateway AWS Lambda でWebアプリを簡単に構築、デプロイできる

    Pythonのサーバーレスフレームワーク Zappaは、ASGI(非同期サーバゲートウェイ インターフェース)が実装されていないため FastAPI+Zappaは現在、使えない[3] そのため、API Gateway・Lambdaと ASGIアプリをつなぐ「Mangum[4] 」を使う
  13. チュートリアル [4] を体験してみる $ git clone https://github.com/iwpnd/fastapi-aws-lambda-example $ cd fastapi-aws-lambda-example

    $ pip install -e . $ pip install uvicorn # or anything else that can handle ASGI $ pytest . -v $ uvicorn example_app.main:app --host 0.0.0.0 --port 8080 --reload http:/localhost:8080/docs でSwaggerUIからAPIをテストできる 参照ページ: [5]https://iwpnd.pw/articles/2020-01/deploy-fastapi-to-aws-lambda 13
  14. チュートリアルを体験してみる template.ymlが有効かどうか $ sam validate デプロイするパッケージをビルドする $ sam build --use-container

    --debug アプリケーションをパッケージ化してS3にアップロード(事前にバケット作成済み) $ sam package --s3-bucket my-travis-deployment-bucket --output-template-file out.yml --region eu-west-1 デプロイ $ sam deploy --template-file out.yml --stack-name example-stack-name --region eu-west-1 --no-fail-on-empty-changeset --capabilities CAPABILITY_IAM 14
  15. チュートリアルを体験してみる curl -X GET  "https://xxxxxxxx.execute-api.eu-west-1.amazonaws.com/prod/api /v1/example" -H "accept: application/json" https://xxxxxxxx.execute-api.eu-west-1.amazonaws.com/prod

    にAPIがデプロイ されている FastAPI + Serverlessで 素早くAPIサーバをデプロイ出来る 15
  16. 目次 今年の目標  ・状況を説明する能力を上げる  ・プログラミング能力を向上  ・ITリテラシーを向上 注目している技術  ・Fast API + Serverlessで便利に

     ・Type Hintsで型安全性を向上したい 16
  17. Type Hintsとは 型注釈ともいう。 以前から存在するが、最近、再燃してきた様子 型を明示的に指定するPythonの文法。 バグを発生させにくいコーディングができる FastAPIも型注釈に基づいて設計されている しかし注意点も... 17

  18. 型注釈の注意点 Any型はできるだけ使わない Anyで定義した変数を別の変数に 代入する際、関数の引数として 利用する場合などの 型チェックが無視される 「実践!!Python型入門(Type Hints)」より [6]https://qiita.com/papi_tokei/items/2a 309d313bc6fc5661c3

    18
  19. まとめ ・FastAPI+Serverless構成はモダンで手軽 ・Type Hintsは、mypyといった静的型検査ツールを使う ことでコードの信頼性を高くすることが出来る これらの注目の技術を使って面白い物を作ってみたい 19

  20. 参考文献 FastAPIドキュメント [1] https://fastapi.tiangolo.com/ 代替ツールから受けたインスピレーションと比較 [2] https://fastapi.tiangolo.com/ja/alternatives/ Zappa + FastApi?

    [3] https://github.com/tiangolo/fastapi/issues/1020 Mangum [4] https://mangum.io/ How to continuously deploy a fastAPI to AWS Lambda with AWS SAM [5] https://iwpnd.pw/articles/2020-01/deploy-fastapi-to-aws-lambda 実践!!Python型入門(Type Hints) [6] https://qiita.com/papi_tokei/items/2a309d313bc6fc5661c3 20