私はこれまでPythonのパッケージ管理として pyenv + pipenv を主に使ってきました。が、最近はpipenvは色々あって使いづらさを感じていました。 pipenv lockやpipenv syncが遅い (気がする) pipenv自体の更新が怪しかった (参考、今年に入って4月と6月にリリースされている模様) 乗り換える程の理由でもないのですが、代替となるツールは探しておかないとなあとふんわり思っていた頃、同僚がpoetryを使っていて良さそうでしたので、使い方をまとめながら紹介したいと思います。 poetry インストール プロジェクト作成 仮想環境の構築 仮想環境上での実行 パッケージのインストール まとめ poetry poetryは、主にパッケージ依存関係の解決・インストール・更新と仮想環境の構築を行ってくれるコマンドラインツールです。上の通りpipenvなどが競合す
はじめに メイン機以外で定期実行されるクローラを作りたいと思ったわけですが、その場合ローカル環境に全く依存しない形が取れれば最高だということで、Docker環境の構築に乗り出しました。 全体図 Python実行環境とSeleniumHQ/docker-seleniumはDocker Composeを利用して別のコンテナとして立てます。 そしてSeleniumHQ/docker-seleniumを通じてVNC接続することで、簡単にクローラの挙動をチェックできます。 ちなみに、SeleniumHQ/docker-seleniumがあれば、ChromeやChromeDriverのセットアップは不要です。 環境構築 Docker 最近はWindows10 Homeでも簡単にインストールできるようになったようです。 Dockerのインストーラの指示に従っていれば使える状態になります。 VSCode(
BusterとかStretchという名前が見慣れない方もいるかもしれませんが、これはLinuxディストリビューションとしてシェアの大きなDebianのコードネームです。 Debianバージョンが少し古いStretchの方がちょびっとサイズが小さかったりはしますが、まあ実用的にはサポートが長い方がいいですよね。slimを使ってGCCとかのコンパイラを自前でダウンロードしている記事とかもたまに見かける気がしますが、マルチステージビルドであれば、そんなにケチケチしなくていいのと、パッケージダウンロードは逐次処理なので遅く、処理系が入ったイメージのダウンロードの方が高速です。並列で処理されるし、一度イメージをダウンロードしてしまえば、なんどもビルドして試すときに効率が良いです。また、多くのケースでネイティブのライブラリも最初から入っており、ビルドでトラブルに遭遇することはかなり減るでしょう。 Py
mangum を使うと FastAPI や responder といった ASGI アプリケーションを AWS Lambda + API Gateway 上へ簡単にデプロイすることが出来ます。 今回は FastAPI で書いた ASGI アプリケーションを mangum を使って AWS 上でデプロイする手順をメモしておきます。 mangum init の注意点 最初に mangum init する ハンドラは app/asgi.py に定義する mangum のプロジェクト名は AWS ルールに準拠したものにする mangum cli には削除機能が無い プロジェクトディレクトリを作成する mangum-cli をインストールする AWS CLI をセットアップする AWS S3 上に Bucket を作成する デプロイ用の設定ファイルを作成する requirements.txt を修正
はじめに 最近ハイボールにハマっているSREのたっち(@TatchNicolas)です。 昨日オンライン開催されたJAWS DAYS 2020にて、JX通信社もサーバレスをテーマとして発表をしました。(by 植本さん) 発表でもありましたように、上記プロジェクトにおいて開発当時はスピードを優先してプロジェクトメンバーの手に馴染んでいて分担もしやすいフレームワークとしてFlaskを採用しました。 一方で、JX通信社としてはFlaskよりもFastAPIを使うプロジェクトが増えてきており、今後もその傾向は続く見込みです。 そこで、特設ページ作成やAPI提供など初動としての開発が一段落したのを機に、JAWS DAYSで発表した仕組みを今後のために発展させる検証をしたので紹介します。 TL; DR; JAWSでは Serverless Framework+awsgi+Flaskな構成でスピーディに
clean funciton基本的には bleach.clean 関数の第一引数に対象文字列を与えるとエスケープされた文字列が返却されるだけです。 >>> import bleach >>> text = 'a<div title="test" onclick="alert(0)" style="color:red;">b<script>alert(1)</script>c</div>d' >>> bleach.clean(text) 'a<div onclick="alert(0)" style="color:red;" title="test">b<script>alert(1)</script>c</div>d'
PythonのWeb frameworkで、Flaskのようなマイクロフレームワークにあたります。 パフォーマンスの高さ、書きやすさ、本番運用を強く意識した設計、モダンな機能などが強みです。 FastAPIはStarletteの肩に乗る形で書かれており、非同期処理が扱いやすいです。 特に、以下の様な特徴があります。 ASGI websocketのサポート GraphQLのサポート バックグラウンドプロセスが扱いやすい python type hintによる自動ドキュメント生成 (Swagger UI) pydanticをベースとしたdata validation 率直に言って、responderに非常に似ています。(でた時期も近いですし、responderもStarletteがベースなので) ですが、下の2つはFastAPIの方がよっぽど使いやすく設計されています。 以下の観点から総合的に
こんにちは。データアナリティクス事業本部の松村です。 シーケンス(シーケンス型でなく、要素の列という意味で使っています。以下も同様です。)に対する処理を行う高階関数の代表格であるmap、filter、reduce(言語によってはfoldという名前だったりします)ですが、Pythonでは内包表記やジェネレータ式を使って同等のことができます。 mapやfilterについては内包表記/ジェネレータ式との性能差を検証した記事がたくさん見つかりますが、reduceについて言及したものは見当たりません。というわけで比べてみました。 内包表記/ジェネレータ式でreduceする reduceと比較するにあたって、そもそも同等の処理をどうやって内包表記やジェネレータ式で書くのか、という疑問があるかもしれませんので、まずはそこから紹介します。 sumと組み合わせる reduceの使い方として一番多いのは、シー
Python のパッケージ管理ツールの Poetry の tips です。 ライブラリ: Poetry Poetry はアプリケーション開発とパッケージ開発のどちらの用途にも利用できますが、私はアプリケーション開発でしか Poetry を使ったことがありません。そのため、以下にあげる tips はすべてアプリケーション開発に Poetry を利用するときの tips です。 本記事では Poetry のバージョン 1.0.0 を対象としています。 Poetry は仕様が比較的安定していますが、バージョンが上がると参考にならない場合もあるのでご注意ください。 目次 venv のファイルをプロジェクトディレクトリの下に置きたい venv を作らずグローバルにパッケージをインストールしたい アップデート可能なパッケージをチェックしたい Poetry 自体をアップデートしたい Docker コンテ
はじめに 頑張れば、何かがあるって、信じてる。nikkieです。 新年明けましておめでとうございます🎍🐮 ブログの書き初めは、冬の休暇に手を動かした、PythonでClean Architecture本についてです。 この1年Clean Architectureについて学ぶ機会が多かったのですが、Pythonで独力で書ける気が全然しませんでした。 よく作りたいけどCAで具体的にどうすればいいか分からず結局いつもの作り方。。 そこでキャッチアップが重要と考えEuroPythonで知った https://t.co/8Fmen5sDOh を写経開始— nikkie (@ftnext) 2020年12月30日 目次 はじめに 目次 Clean Architectureと私 『Clean Architectures in Python』(1st edition) Part 2 - Chapter
「ここで改行するほうがキレイで良いと思います」 『いや、私はこちらのほうがキレイ良いと思います』 コードレビューでこういう議論をしたことはありませんか? 大切なことだとは思いますが、生産性にはあまり直結しません。議論を避けるために書き方を決めるほうが良いでしょう (個々の問題について逐次議論するのがエネルギーを無駄にしてしまいます。一度決めて、再利用するようにしたいものです)。 今日はそのために使える black というツールを紹介します (「私はflake8を使ってるから結構です」と思われるかもしれませんが、少し違う話なので読んでみてください)。 blackを使おう Pythonのコードを自動でフォーマットしてくれる black を紹介します。 github.com blackはPythonのコードフォーマッターで、自動的にPythonプログラムの書き方を修正してくれます。 PEP8 と
始めに music21はMITが作ったpythonの音楽情報処理ライブラリです。 musicology(音響学・音楽理論)の研究への利用を目的に作られたそうで、 結構いろいろできるらしいので、勉強がてら触ってみました。 難しいアルゴリズム等の話はほとんどしないので、プログラマでない方も出力結果だけ見て「こんなことができるんだ」と思ってもらえるような記事になればいいな、と思っています。 ちなみに、21というのはMITでの音楽コースに割り当てられた講義番号に由来するそうです。留学したい。 基本的に公式のドキュメントを順に追ってくだけです。ここの内容を実行しながら感想を書く、という記事です。 環境 macOS(10.15.7) python3.8.5 jupyter-notebook Musescore version-3.4.2.25137 Musescoreというのはフリーの楽譜作成ソフトで
#stapy https://speakerdeck.com/yamitzky/mastering-type-safety-in-python-3-dot-9-era の内容を加筆して削ったものです
Playwright が昨年1年間で大幅パワーアップしていたので、使い方を確認したときの記録のまとめです。 ブラウザを自動操作できるということは、簡単なスクレイピングやブラウザ側のテスト自動化が簡単にできるようになります。 特に、Python での解説がまだまだ少なかったので、自分の学習を含めてまとめました。 今回は入門編ということで全体像をつかみつつ使用方法の流れを確認していただければありがたいです。 Selenium や Puppeteer を使っている方も、一度試す価値ありと思っています。 選定した理由 ブラウザのテストを Python で自動化したかったんです。 私なりの要件がありまして、非常にわがままな要件でしたが余裕ですべてクリアしました。 Python で書けること。社内で Python を使える方が多いので。pytest と連携してくれるとなおうれしい。 Docker コン
Python には with 文というシンタックスがあって、これを使うと前処理と後処理が書きやすくなっている。 その際、with 文にはコンテキストマネージャという種類のオブジェクトを渡すことが取り決めになっている。 そのコンテキストマネージャは標準ライブラリの contextlib.contextmanager を使うと楽に作ることができる。 しかし、それを使うにはちょっとした注意点があるというのが今回の本題になる。 コンテキストマネージャのおさらい まずはコンテキストマネージャとは何か、というおさらいから。 コンテキストマネージャは、__enter__() と __exit__() というふたつの特殊メソッドを実装したクラス (またはそのインスタンス) を指している。 以下は最も単純と思われるコンテキストマネージャを実装したサンプルコード。 MyManager クラスがコンテキストマネ
Pythonのコンテキストマネージャって何?って言われると、「withを使ってるあれ」みたいな答え方はできるんですが、以下のような質問は答えられませんでした。というわけで、調べたことでも書きます。 コンテキストマネージャって、なんのためにあるの? コンテキストマネージャって、どうやって実装するの? コンテキストマネージャって、何が必要なの? コンテキストマネージャって何? 公式ドキュメントを見ると以下のように書いています。 3. データモデル — Python 3.6.5 ドキュメント コンテキストマネージャ(context manager) とは、 with 文の実行時にランタイムコンテキストを定義するオブジェクトです。 なるほど、よくわかりません。with 文の実行時にランタイムコンテキストってなんなの?と思います。 with文ってそもそも何? with文についてもう少し調べます。 公
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く