タグ

2024年2月16日のブックマーク (25件)

  • 【Pydantic】コンストラクタ__init__を使用して、初期処理を実行 - そらたのファンジニアブログ

    環境 Python: 3.11.2 Pydantic: 1.10.4 コンストラクタを使用する方法 super()を使用 __init__を定義し、super()で親クラス(BaseModel) の__init__を呼び出します。 例では、__init__内でtotal_priceにpriceとcountの積を代入する処理を行っています。 from pydantic import BaseModel class Price(BaseModel): price: int count: int total_price: int = 0 def __init__(self, price, count): super().__init__(price=price, count=count) self.total_price = price * count 実際にインスタンスを生成すると、意図した通

    knj2918
    knj2918 2024/02/16
  • FastAPIのアプリをAWS Lambdaで動かすためにMangumでラップする - Qiita

    PythonのWebアプリケーション、DjangoやFlaskなどいろんなフレームワークがありますが、最近だとASGIをサポートしたFastAPIの採用例も増えているんじゃないでしょうか? そんなFastAPIで作ったアプリをサーバレスにデプロイして運用できたら素敵ですよね。 そこで今回はFastAPIで作ったASGIアプリケーションをMangumでラップしてAWS Lambda + API Gatewayで動かしてみようと思います。 WSGIとASGIについて DjangoやFlaskなど従来からあるPythonのWebアプリケーションフレームワークは、WSGI (Web Server Gateway Interface) という同期インターフェースで作られています。 WebサーバーのGunicornやApacheなどで運用されたり、Lambdaで動かすServerless Framew

    FastAPIのアプリをAWS Lambdaで動かすためにMangumでラップする - Qiita
    knj2918
    knj2918 2024/02/16
    “余談: Lambdaで運用したら、せっかく非同期なASGIが同期的に実行されて意味ないのでは?“
  • FastAPI と Mangum で作るサーバーレスAPI

    はじめに こんにちは。hayata-yamamoto です。 唐突ですが、皆さんは「サーバーレス」お好きでしょうか?AWS であれば、Lambda, Fargate, Aurora Serverless あたりを思い浮かべるかもしれません。GCP にも似たようなサーバーレスサービスがありますよね。サーバーを自分たちで用意せず、クラウドベンダーが”いい感じに”設定したサーバーを拝借できることで、エンジニアはアプリケーションの開発に集中できる、そんなサービスです。オートスケールの設定が容易にできたり、リソース使用にかかる費用が従量課金になっており、ワークロードに合わせてコスト最適化を行いやすかったりと、さまざまなメリットがあります。 今回は、弊社でも採用しているサーバーレス構成(ServerlessFramework, FastAPI, Mangum)を紹介しながら、以下の点についてお伝えしま

    FastAPI と Mangum で作るサーバーレスAPI
  • マルチテナントのアプリケーション実装 〜実践編〜

    マルチテナントのアプリケーション実装 〜実践編〜 2022.04.20 SaaS.tech #2

    マルチテナントのアプリケーション実装 〜実践編〜
  • 【ソフトウェア設計】モジュールになぜ分けるのか?

    はじめに 最近、APoSD(A Philosophy of Software Design)を読んで、ソフトウェア設計に関して色々思う事が出来たというか、整理してみたくなったので、記事にまとめてみました。なお、APoSDの言葉を多用はしていますが解説記事という分けでは無く、自分の考え方の言語化にしっくり来たので使わせてもらってるという感じです。 TL;DR モジュールとは関数/クラス/サービスなどの何等かの機能のまとまり 良いモジュールは複雑性を隠蔽する 複雑性を隠蔽しないモジュールの価値は低い モジュールとは? プログラムは正しく動くことがまず何より大事ですが、その次というかほぼ同じくらい大事な事が読みやすく拡張しやすいことですよね? コードは圧倒的に読みものなので、どう読みやすく、つまり理解しやすい状態にしておくかは重要な事です。APoSDでは複雑性が低いコード、という言い方をしていま

    【ソフトウェア設計】モジュールになぜ分けるのか?
  • FastAPI with Lambda + API Gatewayでサーバレスアプリケーションの作成 - Qiita

    はじめに 株式会社マイスター・ギルド新規事業部のヒツジーです。 弊社新規事業部では、新規サービスの立ち上げを目指して 日々、アイディアの検証やプロトタイプの作成などを行っています! 技術の進歩は目覚ましいので、置いてかれないように新しい技術のキャッチアップにもいそしんでいます! 記事では、FastAPI with Lambda + API Gatewayでサーバレスアプリケーションを作成する方法をご紹介します。 サーバレスアプリケーションには サーバーの管理が不要 使った分だけの支払いで済む 柔軟なスケーラビリティ といったメリットがあり、新規サービスのプロトタイプ作成に向いていると思います。 記事の手順通りに手を動かすと、さくっとREST APIを作れるようになりますよ! やりたいこと FastAPIで作成したアプリケーションファイルをLambda関数に登録し、API Gateway

    FastAPI with Lambda + API Gatewayでサーバレスアプリケーションの作成 - Qiita
  • FastAPI (mangum) を AWS Lambda で動かす

    対象 PythonFastAPIAWS Lambdaで動かしたい人 カスタムイメージを使ってビルドしたい人 ローカルでの動作確認方法を知りたい人 AWSのリソース作成の概略を知りたい人 利用するライブラリのバージョン 以下のライブラリを利用します。 fastapiは執筆時点での最新版、mangumは0.11.0より新しいバージョンだとエラーが発生するため、このバージョンとしてます。 pydanticやstarlette, typing-extensionsはfastapiやmangumの依存ライブラリです。 fastapi==0.103.1 pydantic==2.3.0 starlette==0.27.0 mangum==0.11.0 typing-extensions==4.7.1 #カスタムイメージを利用する場合 #awslambdaric==2.0.7 概要 FastAPIはA

    FastAPI (mangum) を AWS Lambda で動かす
  • 追記有)有名配信者と付き合ったことあるけどスパチャはマジでやめたほうがい

    今年に入って別れたので公共の利益のために書くことにした。 配信者に対して、「認知されたい」とか軽微な動機も含めて、ワンチャン狙いで高額なスパチャをするのはマジで勿体ないからやめたほうがいい。 数年付き合ったことでよくわかったので書いていく。 ■「リスナー」が「リスナー」の枠を超えることはない 最初に言っておくと、高額少額問わずスパチャをしてくれるリスナーに対して、感謝してないということは無いよ。 彼女たちは、自分のために金銭を贈与してくれるリスナーにはしっかりと感謝の心を持ってる。これは間違いない。 けど、その感謝の対象が、スパチャを投げている「あなた=個人」になることはほとんどない。もしあっても、「リスナーの中のあなた」という枠組みを出ることは、確実に無い。 例えるのが難しいけど、被災者が寄付に感謝するとかそんな感じに近いかな。(災害を例に出してすみません。他意はありません。) 寄付をし

    追記有)有名配信者と付き合ったことあるけどスパチャはマジでやめたほうがい
  • Pythonで辞書のキーにtupleが指定できた件(+パフォーマンスの話) - Qiita

    強化学習のを読んでいて、とても今更なのですがPythonで辞書のキーにtupleが指定できることを知りました。 普段はPandasでデータフレームで対応することが多いので、そこまで頻繁に使うというものではありませんが、稀に必要になった時のためにメモしておきます。(マイナーなトピックなので、需要は皆無な気がしないでもないですが・・) できること sample_dict = {} sample_dict[(100, 3, 1300)] = 500 print(sample_dict[(100, 3, 1300)])

    Pythonで辞書のキーにtupleが指定できた件(+パフォーマンスの話) - Qiita
    knj2918
    knj2918 2024/02/16
  • 【python再入門】親ディレクトリを経由したimportを行う方法 - Qiita

    pythonで自作モジュールをimportする際の対処方法がよくわからなくなってしまったのでメモ 背景 pythonに限らずプラグラミングをしていると、最初1ファイルで記載していた処理を複数ファイルに分割したくなってきます。 そしてそのうち分割したファイルをディレクトリに分けて管理したくなります。 これらのディレクトリに分けて管理を始めたファイルをimportする際に少し工夫が必要で手間取ったので対応方法を残しておきます。 なお、細かいですが、パターンが以下の2つに別れます。この記事では1の方について記載します。 1.実行ファイル内で親ディレクトリ経由のパスにあるモジュールをimportしたい場合 . ├package1 │ ├__init__.py │ └module1.py # <= 実行ファイル └package2 ├__init__.py └module2.py ↑実行ファイルがm

    【python再入門】親ディレクトリを経由したimportを行う方法 - Qiita
    knj2918
    knj2918 2024/02/16
  • Railsでビジネスロジックをどこに置くのか問題

    発端は Sustainable Web Development with Ruby on Railsの以下の文。(DeepLによる翻訳後) しかし、すべてのアプリの中で、Railsが明確な答え を持っていない部分が1つあります。それは、ビジネスロジックです。 ビジネスロジックとは、アプリのコアロジックを指す用語で、アプ リが必要とする処理に特化したものを指します。例えば、誰かが製品 を購入するたびにメールを送信する必要がある場合、その製品がバー モント州に配送される場合のみメールを送信し、カンザス州に配送され る場合はテキストメッセージを送信します。これはビジネスロジック です。 Railsの開発者がよく抱く最大の疑問は、「この種のロジックのコードは どこに行くのか」ということです。Railsには明確な答えがありません。 ビジネスロジックをActive Recordsに置かないことです。そ

    Railsでビジネスロジックをどこに置くのか問題
  • sys.path.append() を使わないでください - Qiita

    sys.path.append() を使わないでください はじめに まず結論だけ言います。 Poetry を使って sys.path.append() を封印しましょう。 なにがあったのか それは新たな開発チームに配属されて、キャッチアップのためにPJのコードを読んでいたときのことでした。 「ん?このモジュールには sys.path.append("/path/to/src") があるぞ?ってことは……」 「やられた!ありとあらゆるモジュールとテストに sys.path.append("/path/to/src") がいる!!」 なぜ問題か ひとことで言えば、モジュールがパスに依存します。では、一体どういう問題が起きるのか?具体例を見ていきましょう。 ケース1: 別名のユーザで実行できない "/path/to/src" を絶対パスで書いた場合、 "/home/hoge/src" のようにユ

    sys.path.append() を使わないでください - Qiita
    knj2918
    knj2918 2024/02/16
  • ねぇ、本当に歳をとった!!!!(追記)

    追記 えーーー!?バチクソおっさん扱いされててウケるんですけどwww アラサーつったけど30歳ちょうどなんだけどwwww 気の93年生まれ女なんだけどwwww にちゃんならトリ付きで谷間くらい晒すんだけどwwww 【古臭い、埼玉のおっさん】 確かに10代の頃から古いもの好きだが…漫画は父母の蔵書ばかり読んでたが…トレンディドラマも大好きだが…井沢満の同窓会とか、93年の高校教師とか…。 なんでわたしのテキストはおっさんの加齢臭がするのwww 今までも増田、リアルも創作もいっぱい書いてきたけど、こんなにオッサンオッサン言われたのは今回が初めてやわ。 時代が古臭い、バブリーっぽいってのも、なんでやろ?そんな、万札振り回してタクシー捕まえたなんて書いてないのに。 当にすべて実体験です。 でもそんな古臭いわたしの女仕草でも若い頃はイケてたから、男好みの女像って時代を経ても変わんないのかもね!

    ねぇ、本当に歳をとった!!!!(追記)
  • 非デザイナーにも知っていて欲しい「色」と「特性」 - Qiita

    はじめに 数年前から「デザインの民主化」「非デザイナー向けの〇〇」といったワードをよく見るようになりました。それに伴い、デザイナー不在でも制作ができる便利なツールも増えてきましたね。 ReactなどのUI制作に便利なライブラリが広く使われたり、Canvasを使ってのバナー制作を行う人も増えてきた印象があります。 一方で「たくさんあるテンプレートから何を基準に選べば良いのか分からない」「アレンジしたけど、なんだか上手くいかない」という人もいるのではないでしょうか。 「非デザイナー~」シリーズでは「知っているとちょっと得するデザインTIPS」や「話のネタになるデザイン豆知識」をお伝えしていこうと思います。 今回のテーマ「色」と「特性」 今回は色の見え方、なかでも色覚特性について書いていこうと思います。 色覚特性はさまざまな理由から、多数派とは違う色の見え方・感じ方をする状態のことを言います。色

    非デザイナーにも知っていて欲しい「色」と「特性」 - Qiita
  • 追記あり: マッチングアプリで知り合った女と泊まりで旅行に行ったんだが...

    以前に地方から東京に出張に行った際に、マッチングアプリで27歳の女と会った。 見た目はギャル系のイケイケな感じ。海外在住経験もあるという。 その日は事をして、そのあとバーにも行ったが、そこで解散。 その後何度かLINEでやり取りしたら、俺の住んでいる街 (東京からは飛行機移動) に来るという。 それもリモートワークが可能なので、一人旅を兼ねて1週間ぐらいの滞在予定とのこと。 ダメもとで「せっかくだから車で一泊旅行にいでも行く?」と聞いたら「男の人とホテルに泊まるのは...」的な返信が来た。 「気が進まなないなら大丈夫だよ」と送ると「あなたとなら行きたい」と返信が来た。 で、当日彼女を車に乗せて、泊まり旅行に行った。 観光地等を周り、一緒にランチとディナーをして、全部奢って、服も買ってあげた。 しかし、予想外のことが。 良い雰囲気になるどころか、手を繋ごうとすると嫌がる。 「外では恥ずかし

    追記あり: マッチングアプリで知り合った女と泊まりで旅行に行ったんだが...
  • 政治家はどこで酒を飲むのか

    「料亭に行きたい」、初当選直後のインタビューで答え、話題となった新人議員がいた(今はいない)。カツラメーカーのコマーシャルは政治家をモチーフにしているが、やはり料亭の一室での密談のシーンだ。映画テレビドラマの影響で、「政治家が飲むところ=料亭」というのがお決まりとなっている。しかし、実際のところ「料亭に行ったことがありますか」と聞かれれば、「ある。でも、ほとんど無い」という答えになる。理由は三つある。一つ目は、「今の政治家は余裕が無い。特に僕のような陣笠は、ものすごく余裕が無い。」ということだ。二つ目は「料亭自体が潰れて、ほとんど残っていない。」、三つ目は「居酒屋チェーンの流行が個室型になり、充分プライバシーが保たれる上に、とっても安い。回転が良いからビールが新鮮で美味い」からだ。確か料亭には当選直後にお祝いで先輩が連れて行ってくれた記憶があるので答えは「ある。でも、ほとんど無い」という

  • 無料オプション | 紹介したくなる引越しはアップル|その秘密は公式サイトで

    無料オプションサービス お荷物を大切に運ぶための引越し資材を、用途に合わせてご用意しています。 必要な引越し資材をあらかじめお渡しいたしますので、お引越し当日までに荷造り・梱包作業をお済ませください。 大型家具や家電の梱包はおまかせください! 大型家具や家電の梱包は、お引越し当日に弊社スタッフが行います。 キズが付かないよう底面や側面にも細心の注意を払って丁寧に梱包します。 ちょっとめんどうな作業は、まかせて安心。 引越しの際のご負担を少しでも軽く、また、快適な新生活を一日でも早くスタートしていただけるよう、無料のオプションサービスをご用意しております。ご利用の方は、予めお申し付けください。 ※荷造り(小物箱詰め)/荷解き(小物箱開け)は有料オプションになります。

    無料オプション | 紹介したくなる引越しはアップル|その秘密は公式サイトで
    knj2918
    knj2918 2024/02/16
    ダンボール回収は無料
  • Pythonのclassで値をvalidationする方法4選 - Qiita

    はじめに 「良いコード/悪いコードで学ぶ設計入門」を読んでから、値のバリデーションについて意識するようになりました。Pythonで早速クラスのバリデーションについて調べてみると色々と方法があったので、それぞれ動かしてみました。 バリデーションを行う方法 方法1. クラス内にバリデーション用の関数を作る class Gadget: def __init__(self, name, price, brand): self.name = self._validate_name(name) self.price = self._validate_price(price) self.brand = brand def _validate_name(self, name): if len(name) > 15: raise ValueError("name cannot exceed 15 chara

    Pythonのclassで値をvalidationする方法4選 - Qiita
  • FastAPIを使っていなくても、Pydanticは便利です

    AuthorsTwitter@__Attsun__Published onMonday, September 6, 2021 Aboutpydantic 単体でも利用可能な便利な機能についてご紹介します。 pydantic とは公式ドキュメント の冒頭には以下のような記載があります。 Data validation and settings management using python type annotations. python の型アノテーションを使った、データバリデーションと設定管理のライブラリ、ですね。 基的な使い方このあとの話を理解するのに必要な、基となる機能をさらっと紹介します。 モデルの定義pydantic では、クラスを使ってモデルを定義します。 各フィールドには型が必要です。 from datetime import datetime from typing i

  • AWS Lambda(Python)のバリデーションロジックについて - Qiita

    はじめに 皆さんは、AWS Lambdaの開発言語は何を使っていますか? 選択肢はいろいろあるかと思いますが、私はPythonで開発しています。 Lambdaの中で送られてきた値のチェック(バリデーション)をすることも多いかと思いますが、そのロジック自前で実装していませんか? ライブラリを使うと自前で実装せずに実装できるので紹介します。 実装例 ソースコード とにもかくにも、コードを見てもらったほうが早いと思います。 from aws_lambda_powertools.utilities.validation import validate from aws_lambda_powertools.utilities.validation.exceptions import SchemaValidationError BODY_SCHEMA = { "$schema": "http://js

    AWS Lambda(Python)のバリデーションロジックについて - Qiita
  • Pythonスキーマバリデーションライブラリ比較 (pydantic, marshmallow, attrs, cerberus)

    Pythonスキーマバリデーションライブラリ比較 (pydantic, marshmallow, attrs, cerberus) ウェブ API の作成など、外部からやってくるデータを安全に捌く上で、スキーマ定義とバリデーションは非常に重要です。 また、特に Python のような動的型付け言語において、内部でもレイヤをまたぐ場合はきちんと定義されたデータモデルを利用することで、知らない間にデータモデルが変わっていた、というようなケースを防ぐことができます。 Python には標準でスキーマバリデーションライブラリがないため 3rd パーティのものを使うことになりますが、様々なライブラリがあるので比較してみました。 比較対象のライブラリ概要※Python バージョンは 3.9.0 を利用します。 lib                    versionGithub Star (202

    Pythonスキーマバリデーションライブラリ比較 (pydantic, marshmallow, attrs, cerberus)
  • Pydantic 入門 - Qiita

    Pydantic とは Pydantic は、Python の型アノテーションを利用して、実行時における型ヒントを提供したり、データのバリデーション時のエラー設定を簡単に提供してくれるためのライブラリです。 このライブラリは、SQLAlchemyでのデータベースモデルを定義する際に役立ちます。 モデル まず、定義するにあたって、次のように定義します。 from datetime import datetime from typing import List from pydantic import BaseModel class User(BaseModel): id: int name: str # (変数):(型)として、型を宣言する friendIds: List[int] = [] # "=" を利用してデフォルト値を定義することもできます created_at: datetime

    Pydantic 入門 - Qiita
  • FastAPIにおけるPydanticを使ったバリデーションのまとめ - Qiita

    概要 FastAPIではPydanticというライブラリを利用してモデルスキーマとバリデーションを宣言的に実装できるようになっている。 ここではその具体的な方法を記述する。 確認したバージョンは以下の通り。 * FastAPI: 0.68.1 * Pydantic: 1.8.2 使い方 モデルの記述と型チェック モデルの定義 のように書けばHogeモデルが作成される。 Hogeモデルは整数(int)のidが必ず存在し、文字列(str)のnameが必ず存在する。この条件を満たさない場合、バリデーションエラーとなる。 型 型はPythonの型ヒント(type hints)を使って記述する。 一般的なものを以下に示す。 型 説明 JSON schema type

    FastAPIにおけるPydanticを使ったバリデーションのまとめ - Qiita
  • API Gateway経由でのみアクセス可能なAPIをECSで構築する - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? API Gatewayでのみパブリックアクセス可能なAPIをECSで構築する方法です。構成はこの図のようになります。 ECSのロードバランサにはApplication Load Balancer(ALB)の方を使用することも多いと思いますが、この図のNetwork Load Balancer(NLB)をALBに変えることはできません。API GatewayからVPC内のプライベートAPIに接続するにはVPC Linkを介する必要があり、VPC LinkはNLBにしか対応していないためです。 NLBだとALBのように細かい制御はできません

    API Gateway経由でのみアクセス可能なAPIをECSで構築する - Qiita
  • PUT と POST どっち使う?5分で使い分けを確実に覚えよう! - Qiita

    はじめに HTTP API の開発における POST と PUT の使い分けは、言うまでもなくこんがらがりやすいところです。PUT メソッドをそもそも使っていない開発者も多いでしょう。しかし、使い分けをある程度理解することで、より表現力のある API 設計ができるようになります。 ここで POST と PUT の使い分けについて紹介します。 POST と PUT の違い POST と PUT の根的な違いは、リクエストに同封されているデータの 意図 です。POST は、リソースの新規作成、バッチ処理開始、データの削除など幅広く使うことができます。それに対して PUT は、使い方がもっと限定的で、主に既存リソースを「置き換える」ために使われます。 POST POST リクエストを受付したサーバーは、送られたデータで 基的になんでもしていい です。リソースを作成することも 201 (Cre

    PUT と POST どっち使う?5分で使い分けを確実に覚えよう! - Qiita
    knj2918
    knj2918 2024/02/16