はじめに 対象読者 あまり説明しないこと 前提とするバージョン 参考となるレポジトリ 3. アーキテキチャ及びディレクトリ構造 オニオンアーキテクチャを採用 オニオンアーキテクチャとは 誕生の背景 依存関係逆転の原則の活用 採用理由 参考になった記事 ディレクトリ構造 全体の構成 api schema apiとusecaseの間のデータ構造を提供する役割 schemaはパスオペレーション関数のリクエストとレスポンスの構造を提供する役割 usecase domain infrastructure core container_config exception 参考にしたもの まとめ はじめに ラクスルグループのノバセルで新卒2年目のエンジニアをしています田村(tamtam)です。 第1回では、AWS Lambda x FastAPIによるPythonモダンAPI開発を実現する上で役立つであろ
はじめに この記事を読んで得られること 対象読者 あまり説明しないこと 前提とするバージョン 参考となるレポジトリ 1. 開発環境の構築で使用したツール AWS Lambdaのコンテナサポートを採用 Poetry利用時に開発と本番環境の適切な管理でLambdaデプロイ問題を解決 Poetry利用時に起きた問題 Dockerfileを分けてデプロイできない問題を回避 Mutagen Composeを採用 Dockerの同期遅い問題 Mutagen Composeを利用 2. 開発で活用したPythonライブラリ パッケージ管理 Poetry Ryeも検討したものの採用せず ベースのライブラリ FastAPI Mangum Powertools for AWS Lambda リンター・フォーマッター Ruff Mypy 型アノテーション自動生成ツールの活用 Black テスト Pytest p
Pythonでテストをパラメータ化した時の書き方を unittest と pytest を使った場合で紹介し、最後にそれらで使えるparameterizedというライブラリを紹介します。 ちなみに私はpytestよりもunittest派です。 はじめに テストを書いていると値が違うだけのケースを複数確認したくなる時があります。 例えば、1 + 1 = 2, 2 + 3 = 5, 32 + (-32) = 0, …などのようなケースです。 これをすべて別のテストケースとして書き下すのは面倒ですしメンテも大変なことになるので、テストフレームワークは大抵こんなテストが簡単にできる仕組みを提供しています。 今回はPythonでよく使われているunittest(標準ライブラリ)とpytestでこれらのテストの書き方を紹介します。 なんでいまさら?と思われそうですが、pytestはともかくunitte
中学・高校数学で学ぶ、数学×Pythonプログラミングの第一歩:数学×Pythonプログラミング入門 「Pythonの文法は分かったけど、自分では数学や数式をプログラミングコードに起こせない」という人に向けて、中学や高校で学んだ数学を題材に「数学的な考え方×Pythonプログラミング」を習得するための新連載がスタート。連載コンセプトから、前提知識、目標、本格的に始めるための準備までを説明する。 連載目次 この連載では、中学や高校で学んだ数学を題材にして、Pythonによるプログラミングを学びます。といっても、数学の教科書に載っている定理や公式だけに限らず、興味深い数式の例やAI/機械学習の基本となる例を取り上げながら、数学的な考え方を背景としてプログラミングを学ぶお話にしていこうと思います。 今回は、それに先だって、プログラミングを学ぶ上で数学を使うことのメリットや、Pythonでどのよう
In [14]: def append_to(values=[]): ...: values.append("Hoge") ...: return values ...: In [17]: append_to() Out[17]: ['Hoge'] In [18]: append_to() Out[18]: ['Hoge', 'Hoge'] In [23]: def append_to(values=[]): ...: values.append("Hoge") ...: return values ...: In [24]: pinfo append_to Signature: append_to(values=[]) Docstring: <no docstring> File: ~/<ipython-input-23-4530a91351ab> Type: function In [
B! 7 0 0 0 Pythonでのリストのコピーとか、 関数に引数を渡す時に 未だにハマる事になるのでその辺のメモ。 Pythonは参照渡し、だが。。。 通常のコピー時 デフォルト引数の罠 Pythonは参照渡し、だが。。。 Pythonでは関数に値を渡す時にその参照が渡されます。 ですが、渡された関数内で変更されるとき、 渡した値自体が変更されるかどうかは 渡されたオブジェクトのタイプによります。 オブジェクトのタイプはImmutable(変更不可)とMutable(変更可能)に分けられます。 Immutable: int, float, str, tuple 等 Mutable: list, set, dict 等 このうち、Mutableな値が関数に渡された場合、 中で変更すると値の変更が外にも反映されますが、 Immutableなものに関しては変更されません。 ただ、これもちょ
- はじめに - Pythonのパッケージ管理ツールは、長らく乱世にあると言える。 特にpip、pipenv、poetryというツールの登場シーン前後では、多くの変革がもたらされた。 本記事は、Pythonパッケージ管理ツールであるpip、pipenv、poetryの3つに着目し、それぞれのツールに対してフラットな背景、技術的な説明を示しながら、所属企業内にてpoetry移行大臣として1年活動した上での経験、移行の意図について綴り、今後のPythonパッケージ管理の展望について妄想するものである。 注意:本記事はPythonパッケージ管理のベストプラクティスを主張する記事ではありません。背景を理解し自らの開発環境や状態に応じて適切に技術選定できるソフトウェアエンジニアこそ良いソフトウェアエンジニアであると筆者は考えています。 重要なポイントのみ把握したい場合は、各章の最後のまとめを読んで頂
「2020年代のコンテナ時代のPythonアーキテクチャ&デプロイ」というテーマでPyCon.jp 2020で発表してきました 初のオンライン&Python 2サポートが終了したあとのPyCon.jpという節目のイベントで発表してきました。 発表資料はこちらになります。 日英表記にした関係で表現をだいぶシンプルに削ることになったりしたので、口頭での説明のみ行ったこととか、その後のTwitterの感想を見て思ったことなどを軽く補足します。 コンテナの時代コンテナのカバレッジが広がっている事例としてはDensoのMisakiとか戦闘機にKubernetesを載せてみました、とかもあります。 https://www.publickey1.jp/blog/20/kubernetesmisaki.html https://www.publickey1.jp/blog/20/kubernetesf-1
B! 15 0 12 0 Pythonのパッケージ管理といえばpipが一般的ですが、pipでインストールできるパッケージは PyPIで管理されています。 ここには誰でもパッケージを登録することができますが、実際にアップロードするには 色々と体裁を整える必要があります。 特にコマンドラインツールを作ろうと思うと一工夫必要です。 その点、Poetryを使うと設定項目を自分でほとんど書くことなくPyPI用 パッケージを作りアップロードすることができます。 Poetry インストール スクリプトget-poetry.py pip 補完 使い方 雛形作成 install pytest 依存パッケージの追加/削除 コマンドラインツール(CLI)の作成 poetry shell パッケージのビルド パッケージの登録 TestPyPIへの登録 PyPIへの登録 ビルドと登録を同時に行う 設定ファイル pi
BusterとかStretchという名前が見慣れない方もいるかもしれませんが、これはLinuxディストリビューションとしてシェアの大きなDebianのコードネームです。 Debianバージョンが少し古いStretchの方がちょびっとサイズが小さかったりはしますが、まあ実用的にはサポートが長い方がいいですよね。slimを使ってGCCとかのコンパイラを自前でダウンロードしている記事とかもたまに見かける気がしますが、マルチステージビルドであれば、そんなにケチケチしなくていいのと、パッケージダウンロードは逐次処理なので遅く、処理系が入ったイメージのダウンロードの方が高速です。並列で処理されるし、一度イメージをダウンロードしてしまえば、なんどもビルドして試すときに効率が良いです。また、多くのケースでネイティブのライブラリも最初から入っており、ビルドでトラブルに遭遇することはかなり減るでしょう。 Py
物資難の時代、化学者はカップ酒をビーカー代わりに使った・・・らしい(本文とは関係ありません) こんにちは、エムスリー・エンジニアリングG・基盤開発チーム小本です。 SQLAlchemyはPythonのSQLライブラリのデファクトスタンダードで、エムスリーでも使っていますが、意外と導入の障壁が高い。そこで、とりあえずSQLAlchemyを使い始めるのに必要な情報を調べました。 具体的には生の(文字列の)SELECT文を組み立て、クエリする方法を説明します。 なぜこの記事を書いたか SQLAlchemy の入門記事をググると、 SQLAlchemy は ORM です DBに接続しメタデータを取得します ベースモデルを継承し、モデルを定義し、テーブルと関連づけます といった、 「重い」使い方の記事ばかりがヒットします。そのせいか、 「SQLAlchemyは難しい」 「SQLAlchemyはORM
Tutorial Installation Install openpyxl using pip. It is advisable to do this in a Python virtualenv without system packages: Note There is support for the popular lxml library which will be used if it is installed. This is particular useful when creating large files. Warning To be able to include images (jpeg, png, bmp,…) into an openpyxl file, you will also need the “pillow” library that can be
PythonでExcelファイル(BIFF形式、拡張子でいえばxls)を扱う場合には、 pyExcelerator xlrd, xlwt, xlutils Win32OLE(Windows環境のみ) 辺りを使うのが一般的かと思います。他の選択肢は知りません。 今回は開発環境がMac OS X 10.6、デプロイ環境がCentOS 5.4だったので当然Win32OLEの選択肢は除外しました。 pyExceleratorは、罫線やフォントやセルのスタイルなどのデータを細かく指定して書き出せるようですが、読み込み機能が凄くシンプルで、セルの値とその座標のみ抽出できる(罫線やフォントやセルのスタイルなどは読み込めない)ようで、「装飾を施して体裁を整えたExcelファイルを読み込む」→「必要な部分だけ上書きして保存」といういわゆるテンプレート方式のExcelファイルの利用ができません。(まぁ、かなり
import os import numpy as np import openpyxl from openpyxl import Workbook from openpyxl.chart import ScatterChart, Reference, Series dirname = os.path.expanduser("~") filename = "openpyxl_chart.xlsx" xlfile = os.path.join(dirname, "Desktop", filename) #workbook and worksheet wb = Workbook() ws = wb.create_sheet("sheet01", 0) #データ作成 X = np.arange(0, 100, 20) Y1 = X ** 2 len_data = len(X) num_serie
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く