サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
大谷翔平
www.rhoboro.com
10月15日-16日でPyCon JP 2021が開催されました。 いち参加者として楽しみつつ、スピーカーとして「実装で知るasyncio -イベントループの正体とは-」という発表をしてきたので、それについての補足と振り返りです。 --- 2022/05/02 追記[ここから] --- 後日談ですが、参加者アンケートの集計結果が公開されて、この発表がPyCon JP 2021 でのベストトークになっていました。 聴講してくださった参加者の方、スタッフおよび関係者の方々、改めて貴重な場を設けていただきありがとうございました。 --- 2022/05/02 追記[ここまで] --- 今年のPyCon JPはオンサイトとオンラインのハイブリッド開催でした。 まだまだコロナ禍ではありますが、近頃は少し落ち着いてきたためタイミング的に良かったと思います。 ギリギリまで決断を遅らせたスタッフの方々の努
少し前にSQLAlchemy 1.4がリリースされました。 このSQLAlchemy 1.4には大きな特徴として次の2点があります。 SQLAlchemy ORMでこれまでの記法(1.x Style)に加えて、2.0 Styleと呼ばれる新しい記法に対応 CoreとORMの両方でイベントループを使った非同期処理に対応 今後のロードマップでは、SQLAlchemy 2.0では2.0 Styleのみがサポートされます。 また、イベントループを使った非同期処理もこの数年で一気に広まってきました。 SQLAlchemyが対応したこともこの流れをさらに加速させると思います。 そこで最近よく利用しているFastAPIと組み合わせて、SQLAlchemy 2.0 Styleを使った非同期Web APIのサンプルプロジェクトを用意しました。 コードはrhoboro/async-fastapi-sqlalc
FastAPIでSQLAlchemyを利用するサンプルコードが公式ドキュメントにあります。 サンプルコードのmain.pyの重要な部分を抜粋するとこんな感じです。 app = FastAPI() # Dependency def get_db(): db = SessionLocal() try: yield db finally: db.close() @app.get("/users/", response_model=List[schemas.User]) def read_users(skip: int = 0, limit: int = 100, db: Session = Depends(get_db)): users = crud.get_users(db, skip=skip, limit=limit) return users SessionLocal()で作成したセッシ
古い記事ですがGistでGemを公開という記事を見かけたので、これはPython(pip)でもできるはずと思い実際に試してみました。 試しにやってみましたが、実際に利用するかどうかはわかりません(笑) 個人的かつ1ファイルで済む場合は役立つシーンがあるかも? Gistに置くファイル 最小構成だとこんな感じです。 ここではgistpyという名前のパッケージにしました。 setup.py from setuptools import setup, find_packages def main(): setup( name="gistpy", version="1.0.0", license="Apache License 2.0", author="...", author_email="...", description="gistpy is a sample module for tryi
2020年01月24日発売の「Python実践入門 ── 言語の力を引き出し、開発効率を高める」を執筆しました。 お話をいただいたのが2017年の終わり頃1で、そこから2年をかけてじっくりと書きあげました。 その間、レビュアーの方々には何度も何度もレビューをしていただき、自分でも納得のいく書籍となりました。 そこで、ここで著者として本書を紹介しておこうと思います。 対象読者と本書の紹介 Python実践入門は、主な対象読者に次のような方々を想定して書いています。 Pythonの入門書をやりきった方 入門書は一通りやったけどまだ自信を持てない Pythonを業務利用するのはまだ不安 他言語でのプログラミング経験者でこれからPythonを始める方 業務利用の経験はないが転職先やこの先の案件でPythonが必要になる 普段は別の言語を書いてるけどPythonを始めたい すでにPythonを書いて
Dockerを本番環境で利用する場合、ユニットテストとイメージの関係は次のようにいくつか考えられます。 ユニットテストをパスしたコードで本番用イメージを作成する テストコードを含むイメージを作成しユニットテストを実行。通ったものを本番で利用する。 テストコードを除いたコードでイメージを作成し、そのイメージをテストをする。通ったものを本番で利用する。 今回は下記の理由から3.の方法をやってみました。 テストをパスしたイメージをそのまま本番環境で利用したい テストコード自体は本番環境では不要 イメージは小さければ小さいほどPullやPushなどの取り回しが楽になる テスト対象のコードとテストコードの用意 テストコードを含むパッケージを用意します。 今回用意したパッケージ構成はこちらです。 $ tree . ├── Dockerfile └── pkg ├── __init__.py ├── m
コルーチンの基本的なアイディアを正確さより雰囲気重視で解説してみました。 一応コルーチンやイベントループによる非同期処理に関しては概念はPythonに限った話ではないのでNode.jsなどでも同じ理解でいいはず。。。 下記のサンプルを全部動かすにはPython 3.6以降を使ってください。(ローカルにない場合はdocker run --rm -it python:3.7とかでもOK) コルーチンとは サブルーチンの上位(?)概念です。 サブルーチン(いわゆる関数)はエントリポイントが一つで、一度呼び出したら値が返されるまで一気に動きます。 これに対しコルーチンはエントリポイントが複数箇所あるため、一度呼び出されても中断でき、その場所からまた再開できるというものです。 async/awaitとネイティブコルーチン Python 3.5でasync/await構文とともに導入されたネイティブコ
先日、GCPからGCEインスタンスに付与した外部IPを有料化するという連絡がきました。 現在はGCEの料金表にも次の記載があります。 月額300円程度ですが、月々かかってくる費用なので少しでも安いほうが嬉しいです。 そこで、外部IPを持たないGCEインスタンスでWEBサービスの開発を行う方法を試してみました。 GCEインスタンスの作成 まずは、外部IPを持たないGCEインスタンス instance-1 を作成します。 ここでは80番ポートで開発用webサーバを起動するために、「Allow HTTP traffic」にチェックをつけました。 もし他のポートを利用する場合は、そのポートで通信できるようにFirewallルールを設定してください。 少し待つとインスタンスが作成され、外部IP(External IP)が付与されていないことが確認できます。 SSHによる接続とwebサーバの起動 作成
先日、後輩がAndroidアプリのデバッグをしていたのですが、Android StudioのEvaluate Expression機能を知らなかったようで原因調査に予想以上に時間がかかっていました。 その姿を見ながら、私自身はGDBを触った経験が「デバッガーでできること」を理解するのにとても役立っているなと感じたので記事にしてみました。 ということで、今回はCUIのデバッガーであるLLDBの基本的なコマンドを紹介します。 GDBじゃなくてLLDBを取り上げた理由は、「XCodeでもそのまま使えるから」です。 キーマップが違うコマンドもありますが、 基本的なコマンドはGDBかLLDBかを意識しなくても同じように使えると思います。 準備 まずは、デバッグの対象がないと始まらないので、次のようなhello.cを用意しました。 #include <stdio.h> void sayHello(in
--- 2018/01/30 追記[ここから] --- pip の constraints の正しい用途で@methaneさんより「Constraints(pipの-cオプション)を使わずに、-rオプションだけで十分」との指摘をいただいたのでリポジトリを更新しています。 また、上記に伴い、リポジトリ上ではmake constraintsを削除し、make lockfileとmake update-dependenciesを追加しました。 こちらのQiitaの記事はとても良い記事ですので、コメント欄まで含めてご確認いただければと思います。 --- 2018/01/30 追記[ここまで] --- --- 2021/01/16 追記[ここから] --- 最近は下記のテンプレートを利用しています。 rhoboro/pythonapp_skeleton rhoboro/webapp_skeleton
「そんな広島 Advent Calendar 2017」の17日目の記事です。 東京の荻窪から広島の尾道に引っ越してきてもうすぐ5ヶ月。 そろそろ慣れてきた尾道の暮らしを振り返ります。ちなみに住んでるのは尾道駅の真正面に見える向島です。 バイクを買った 引っ越してきた最初は自転車だったけど、バイクを買った。 8/26納車でいま4000km弱くらい。 エストレヤ 2017 スペシャルエディション。最高である。 かっこよさとかわいさを兼ね備えている。 足つきが良い。 エストレヤ乗ってる勢は良い人ばかり。 ちなみに自転車の時よく利用していた尾道駅前から向島へのフェリーは22時くらいに終わる。 もちろん広島市内から終電に合わせて帰ってきたらすでにアウト。 市内からフェリーに間に合うように帰るなら20時過ぎの電車に乗らないとアウト。 お酒飲む人にはつらいかも。わたしは全く飲まないから常にバイクで問題
前回の続きです。 前回はネットワーク周りの設定を何もせずにKVM仮想マシンを作成しました。 この状態だと、ゲストOSはネットワーク的に孤立した状態となっていて外部と通信できません。 そこで今回はこのマシンからホストOSを通して外部に通信できるようにしていきます。 現在の設定内容の確認 まずはホストマシン、ゲストマシンそれぞれ現在どのようになっているかを確認しておきましょう。 ほぼろの環境では下記のようになっていました。 $ ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_
3/11(土)に広島で開催していたPython Boot Camp in 広島にTAとして参加して来ました。 Python Boot Camp とは Python Boot Campは、全国各地で行われている初心者向けPythonチュートリアルです。 簡単に言うと、やる気のある現地スタッフの方に日程と場所を決めていただいて、PyCon JPからPython講師を派遣して講習会をしますという企画です。 詳しくはこちら。 ちなみに講師アシスタントのTAは自由応募になっていますので、Python経験者であれば誰でも応募できます! 今回TAをした動機 学生時代を広島で過ごした身としては、今回広島で開催されると聞いて何らかの形で関わりたいなーと思っていました。 また、広島の尾道が好きで住んでみたいという気持ちを持っているため、今のうちから広島の方々と仲良くなって人脈を作っておきたかったのが動機です。
前回はPyCharmで単体のDockerfileを使う内容の記事でしたが、実際の開発だとDocker Composeを使うことが多いかなと思います。 そこで、今回はDocker Composeを使ってDjangoアプリを動かしてみました。 ちなみにサンプルコードよりも実践的な内容にしたかったので、PyCon JP 2016のWebサイトを動かしていきます。 手順 ざっくりした手順は下記。 Docker環境の準備(前回と同じ) ソースコード一式をcloneして、PyCharmで開く PyCharmでInterpreterの設定 Run Configurationの設定 Djangoアプリの初期設定を行い、実行する Docker環境の準備 まず、前回同様Dockerインストール済みの環境を用意します。 さくっとdocker-machineでやりました。 [alpaca]~/github/pyc
気づいたら新年一発目をまだ書いてなかった(笑) 昨日、Python mini hack-a-thon 雪山合宿 2017で@shimizukawaさんがPyCharmでDockerを使っているという話をしていたので、自分でも試してみました。 手順 ざっくりした手順は下記。 Docker環境の準備 Interpreterとして、実行するPythonが入ったImageを指定 Run時にそのInterpreterを指定する Docker環境の準備 まず、Dockerインストール済みの環境を用意します。 ここで、Macの方はDocker for Macではなく、docker-machineなどでVMを作成し起動しておいてください。 [alpaca]~/github/blog % docker-machine start Starting "default"... (default) Check n
先日GitHubで嬉しいアップデートが行われ、 masterリポジトリの/docs以下をGitHub Pagesで公開できるようになりました。 これまでGitHub Pagesを利用するにはgh-pagesブランチを作成する必要がありましたが、プロジェクトのソースコードと一緒にドキュメントを管理できようになったのはかなり嬉しいです! そこで今回は、以前書いたAndroidアプリをDockerでビルドする記事をもとに ドキュメント生成ツールであるSphinxのビルドをDockerでやってみました。 これでプロジェクト用のドキュメントを作ってじゃんじゃん公開していきましょう。 Sphinxとは SphinxはPython製のドキュメント生成ツールです。 ドキュメント生成ツールとしてはかなり有名でして、Pythonの公式ドキュメントでも利用されています。 基本的なドキュメント作成の流れとしては、
先週開催されたPyCon JP 2016にスタッフとして参加してきました。 スタッフとしての参加は今年が初めてでしたが、スタッフになったきっかけやスタッフをする中で感じたことを書いておこうと思います。 Pythonと私とPyCon JP 2015 Pythonは、学生時代のプログラミングを勉強し始めた頃に触っていました。(もう6年前とか...) 当時は3系対応してるライブラリほとんどなかったけど、Python入門というPython3対応をうたっていた入門書を購入しました。 (この時期は「みんなのPython」とオライリーのねずみ本と購入したPython入門しか日本語書籍の選択肢がなかった。でも当時からWebの日本語ドキュメントはすごく充実してた) Python入門を読んだ後にやったことは大体こんな感じです。 PyQtでTwitterクライアント作った XMLすら知らない状態から初めてWeb
このページを最初にブックマークしてみませんか?
『Minimum Viable Programmer』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く