<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>ryu22eBlog</title><link>https://ryu22e.org/</link><description>Recent content on ryu22eBlog</description><generator>Hugo -- 0.143.1</generator><language>ja</language><copyright>2013-2025 Ryuji Tsutsui</copyright><lastBuildDate>Tue, 03 Mar 2026 10:30:00 +0900</lastBuildDate><atom:link href="https://ryu22e.org/index.xml" rel="self" type="application/rss+xml"/><item><title>【告知】３月16日『Pythonエンジニア育成推進協会監修　Python実践レシピ』第2版が出ます</title><link>https://ryu22e.org/posts/2026/03/03/python-jissen-recipie2/</link><pubDate>Tue, 03 Mar 2026 10:30:00 +0900</pubDate><guid>https://ryu22e.org/posts/2026/03/03/python-jissen-recipie2/</guid><description>&lt;!-- textlint-disable -->
&lt;p>2022年に刊行した『Pythonエンジニア育成推進協会監修　Python実践レシピ』の第2版が出ます。&lt;/p>
&lt;p>2026年３月16日発売予定です。
予約・購入は以下からお願いします。&lt;/p>
&lt;p>&lt;a href="https://gihyo.jp/book/2026/978-4-297-15489-9">改訂新版 Pythonエンジニア育成推進協会監修 Python実践レシピ | 技術評論社&lt;/a>&lt;/p>
&lt;!-- textlint-enable --></description></item><item><title>Django 6.0主な変更点まとめ</title><link>https://ryu22e.org/posts/2025/12/13/django60-new-features/</link><pubDate>Sat, 13 Dec 2025 10:30:00 +0900</pubDate><guid>https://ryu22e.org/posts/2025/12/13/django60-new-features/</guid><description>&lt;!-- textlint-disable -->
&lt;p>この記事は、&lt;a href="https://qiita.com/advent-calendar/2025/sakura">さくらインターネット Advent Calendar 2025&lt;/a> 13日目の記事です。&lt;/p>
&lt;p>2025年12月3日、Django 6.0がリリースされました。&lt;/p>
&lt;p>公式サイトでのリリース情報は以下を参照してください。&lt;/p>
&lt;p>&lt;a href="https://docs.djangoproject.com/en/6.0/releases/6.0/">https://docs.djangoproject.com/en/6.0/releases/6.0/&lt;/a>&lt;/p>
&lt;p>6.0のサポート期限は2027年4月です。5.2 LTSからアップデートするとサポート期限が短くなってしまうことに注意してください（5.2 LTSのサポート期限は2028年4月）。
サポート期限を短くしたくない場合は、2027年4月リリース予定の6.2 LTSまでアップデートしない手もあります（6.2 LTSのサポート期限は2030年4月）。
各バージョンのサポート期限についての詳細は以下公式ドキュメント「Supported Versions」を参照してください。&lt;/p>
&lt;p>&lt;a href="https://www.djangoproject.com/download/">Download Django | Django&lt;/a>&lt;/p></description></item><item><title>PyCon mini 東海 2025で「APIのテストデータを自動生成できるSchemathesisの紹介」というタイトルでトークをしてきました</title><link>https://ryu22e.org/posts/2025/11/19/pycon-mini-tokai-2025/</link><pubDate>Wed, 19 Nov 2025 11:00:00 +0900</pubDate><guid>https://ryu22e.org/posts/2025/11/19/pycon-mini-tokai-2025/</guid><description>&lt;p>11月8日に開催された&lt;a href="https://tokai.pycon.jp/2025/">PyCon mini 東海 2025&lt;/a>で「&lt;a href="https://tokai.pycon.jp/2025/#session-talk-4">APIのテストデータを自動生成できるSchemathesisの紹介&lt;/a>」というタイトルでトークをしてきました。資料は以下に置いてあります。&lt;/p>
&lt;p>&lt;a href="https://introduction-to-schemathesis.ryu22e.dev/#/">APIのテストデータを自動生成できるSchemathesisの紹介&lt;/a>&lt;/p></description></item><item><title>PyCon JP 2025で「Python in Excelをより便利に使える実践プラクティスの紹介」というタイトルでトークをしてきました</title><link>https://ryu22e.org/posts/2025/10/01/pycon-jp-2025-report/</link><pubDate>Wed, 01 Oct 2025 12:00:00 +0900</pubDate><guid>https://ryu22e.org/posts/2025/10/01/pycon-jp-2025-report/</guid><description>&lt;p>2025年9月26日、27日に&lt;a href="https://www.pcf.city.hiroshima.jp/icch/">広島国際会議場&lt;/a>で開催された&lt;a href="https://2025.pycon.jp/ja">PyCon JP 2025&lt;/a>にて、&lt;a href="https://2025.pycon.jp/ja/timetable/talk/J9QQRW">Python in Excelをより便利に使える実践プラクティスの紹介&lt;/a>というトークをしてきました。&lt;/p>
&lt;p>資料は以下に置いてあります。&lt;/p>
&lt;p>&lt;a href="https://python-in-excel-practical-practice.ryu22e.dev/#/">Python in Excelをより便利に使える実践プラクティスの紹介&lt;/a>&lt;/p></description></item><item><title>PyCon JP 2025で「Python in Excelをより便利に使える実践プラクティスの紹介」というタイトルでトークをします</title><link>https://ryu22e.org/posts/2025/09/04/pr-pycon-jp-2025-talk/</link><pubDate>Thu, 04 Sep 2025 12:00:00 +0900</pubDate><guid>https://ryu22e.org/posts/2025/09/04/pr-pycon-jp-2025-talk/</guid><description>&lt;p>2025年9月26日、27日開催の&lt;a href="https://2025.pycon.jp/ja">PyCon JP 2025&lt;/a>で&lt;a href="https://2025.pycon.jp/ja/timetable/talk/J9QQRW">Python in Excelをより便利に使える実践プラクティスの紹介&lt;/a>というトークをします。&lt;/p>
&lt;p>Python in Excelは私が2024年からキャッチアップを続けているExcelの機能です。Pythonの環境を作らず気軽にPythonを使える機能ですので、この機会に使い始めてもらえるとうれしいです。トークタイトルには「実践」と入っていますが、Python in Excelをよく知らない人にも理解できるトークにするつもりです。
また、今回は初の広島開催ということで、どんなイベントになるのか楽しみにしています。&lt;/p>
&lt;p>私の番は26日（1日目）14:15 - 14:45です。
チケット購入は以下のconnpassイベントページからお願いします！&lt;/p>
&lt;p>&lt;a href="https://pyconjp.connpass.com/event/359523/">PyCon JP 2025 - connpass&lt;/a>&lt;/p></description></item><item><title>Django 5.2 LTS主な新機能まとめ</title><link>https://ryu22e.org/posts/2025/04/10/django52-new-feature/</link><pubDate>Thu, 10 Apr 2025 10:30:00 +0900</pubDate><guid>https://ryu22e.org/posts/2025/04/10/django52-new-feature/</guid><description>&lt;p>2025年4月2日、Django 5.2がリリースされました。&lt;/p>
&lt;figure>
&lt;img loading="lazy" src="https://ryu22e.org/media/2025/04/10/django5.1.png"
alt="Django 5.2リリースおめでとう！"/> &lt;figcaption>
&lt;p>Django 5.2リリースおめでとう！&lt;/p>
&lt;/figcaption>
&lt;/figure>
&lt;p>公式サイトでのリリース情報は以下を参照してください。&lt;/p>
&lt;p>&lt;a href="https://docs.djangoproject.com/ja/5.2/releases/5.2/">Django 5.2 release notes | Django documentation | Django&lt;/a>&lt;/p>
&lt;p>Django 5.2はlong-term support（LTS）版です。サポート期限は2028年4月です。
各バージョンのサポート期限についての詳細は以下公式ドキュメント「Supported Versions」を参照してください。&lt;/p>
&lt;p>&lt;a href="https://www.djangoproject.com/download/">Download Django | Django&lt;/a>&lt;/p></description></item><item><title>PyCon mini Shizuoka 2024 continue参加レポート</title><link>https://ryu22e.org/posts/2025/02/10/pycon-mini-shizuoka-2024-continue/</link><pubDate>Mon, 10 Feb 2025 11:00:17 +0900</pubDate><guid>https://ryu22e.org/posts/2025/02/10/pycon-mini-shizuoka-2024-continue/</guid><description>&lt;!-- textlint-disable -->
&lt;p>Pythonカンファレンス「&lt;a href="https://shizuoka.pycon.jp/2024-continue/">PyCon mini Shizuoka 2024 continue&lt;/a>」に参加してきました。&lt;/p>
&lt;p>「Cloudflare WorkersにPythonがやってきた」というタイトルでトークもしてきました。&lt;/p>
&lt;figure>
&lt;img loading="lazy" src="https://ryu22e.org/media/2025/02/10/oden-kun.jpeg"
alt="謎のキャラに迎えられながら会場入り"/> &lt;figcaption>
&lt;p>謎のキャラに迎えられながら会場入り&lt;/p>
&lt;/figcaption>
&lt;/figure></description></item><item><title>GitHub Actionsでリリースを自動化してみた</title><link>https://ryu22e.org/posts/2024/12/18/github-actions-autorelease/</link><pubDate>Wed, 18 Dec 2024 10:30:00 +0900</pubDate><guid>https://ryu22e.org/posts/2024/12/18/github-actions-autorelease/</guid><description>&lt;!-- textlint-disable -->
&lt;p>この記事は&lt;a href="https://qiita.com/advent-calendar/2024/github-actions">GitHub Actions - Qiita Advent Calendar 2024 - Qiita&lt;/a> 6日目の記事です（現在12/18ですが、たまたまネタがあったので空いている日に入れてみました）。&lt;/p>
&lt;p>GitHub Actionsを使ってリリースを自動化してみたので、私が作った設定を紹介します。&lt;/p></description></item><item><title>ローカル環境にKeycloakでユーザー認証するDjangoアプリケーションを作ってみる</title><link>https://ryu22e.org/posts/2024/12/12/allauth-and-keycloak/</link><pubDate>Thu, 12 Dec 2024 10:30:00 +0900</pubDate><guid>https://ryu22e.org/posts/2024/12/12/allauth-and-keycloak/</guid><description>&lt;!-- textlint-disable -->
&lt;p>こんにちは。さくらインターネット株式会社でバックエンドAPIを開発している筒井と申します。
&lt;a href="https://qiita.com/advent-calendar/2024/sakura">さくらインターネット - Qiita Advent Calendar 2024&lt;/a> 12日目の記事は、
ローカル環境にOSSのユーザー認証・認可システム「&lt;a href="https://www.keycloak.org/">Keycloak&lt;/a>」でユーザー認証するDjangoアプリケーションを作る方法について紹介します。&lt;/p>
&lt;p>Keycloak + Djangoの組み合わせは結構ニッチなので日本語の情報が少ないですが、社内向けシステムを構築する際に役立つ場合があるので、
この機会に知見として共有したいと思います。
また、Dockerを使った場合のちょっとした嵌りポイントと解決方法についても紹介します。&lt;/p>
&lt;p>本記事の対象は、Djangoの基本的な知識があって、自分でDjangoアプリケーションを作ったことがある方です。
Keycloakは知らなくても問題ありませんが、OpenID Connect（OIDC）についての基本的な知識があると理解しやすいかもしれません。&lt;/p></description></item><item><title>PyCon mini 東海 2024参加レポート</title><link>https://ryu22e.org/posts/2024/11/18/pycon-mini-tokai-2024/</link><pubDate>Mon, 18 Nov 2024 10:30:00 +0900</pubDate><guid>https://ryu22e.org/posts/2024/11/18/pycon-mini-tokai-2024/</guid><description>&lt;p>&lt;a href="https://tokai.pycon.jp/2024/">PyCon mini 東海 2024&lt;/a>に参加してきました。&lt;/p>
&lt;p>「&lt;a href="https://tokai.pycon.jp/2024/#event-talk-6">asgirefのクラスasgiref.local.Localは何のためにあるのか？&lt;/a>」というタイトル登壇もしてきました。&lt;/p></description></item><item><title>『改訂新版 最短距離でゼロからしっかり学ぶ Python入門』必修編・実践編のレビューをしました</title><link>https://ryu22e.org/posts/2024/10/11/python-crash-course-jp/</link><pubDate>Fri, 11 Oct 2024 10:30:44 +0900</pubDate><guid>https://ryu22e.org/posts/2024/10/11/python-crash-course-jp/</guid><description>&lt;p>以下の2冊の本レビューをしました。&lt;/p>
&lt;ul>
&lt;li>『&lt;a href="https://gihyo.jp/book/2024/978-4-297-14528-6">改訂新版 最短距離でゼロからしっかり学ぶ Python入門 必修編〜プログラミングの基礎からエラー処理、テストコードの書き方まで&lt;/a>』&lt;/li>
&lt;li>『&lt;a href="https://gihyo.jp/book/2024/978-4-297-14526-2">改訂新版 最短距離でゼロからしっかり学ぶ Python 入門 実践編〜ゲーム開発・データ可視化・Web開発&lt;/a>』&lt;/li>
&lt;/ul>
&lt;p>いずれも2024年10月31日発売予定です。&lt;/p></description></item><item><title>PyCon JP 2024参加レポート</title><link>https://ryu22e.org/posts/2024/09/30/pyconjp2024/</link><pubDate>Mon, 30 Sep 2024 21:00:00 +0900</pubDate><guid>https://ryu22e.org/posts/2024/09/30/pyconjp2024/</guid><description>&lt;p>Pythonカンファレンス「&lt;a href="https://2024.pycon.jp/">PyCon JP 2024&lt;/a>」に参加してきました。
トークスピーカー、コミュニティポスターセッションスピーカー、主催メンバー（スタッフ）の3役をこなしました。
昨年は1日1本のレポート記事を書きましたが、今年は終始バタバタしていたので1本が限界でした。
写真もあまり撮れていないのでインパクトが薄いかもしれませんが、なるべく雰囲気が伝わるように書いてみます。&lt;/p></description></item><item><title>PyCon JP 2024に登壇します</title><link>https://ryu22e.org/posts/2024/09/20/pycon-jp-2024-presentation/</link><pubDate>Fri, 20 Sep 2024 10:30:00 +0900</pubDate><guid>https://ryu22e.org/posts/2024/09/20/pycon-jp-2024-presentation/</guid><description>&lt;p>2024年9月27日、28日開催の&lt;a href="https://2024.pycon.jp/">PyCon JP 2024&lt;/a>にて、登壇します。&lt;/p></description></item><item><title>Django 5.1主な新機能まとめ</title><link>https://ryu22e.org/posts/2024/08/12/django51-new-features/</link><pubDate>Mon, 12 Aug 2024 10:00:00 +0900</pubDate><guid>https://ryu22e.org/posts/2024/08/12/django51-new-features/</guid><description>&lt;p>2024年8月7日、Django 5.1がリリースされました。&lt;/p>
&lt;p>&lt;a href="https://x.com/djangoproject/status/1821456229048459605">Django 5.1のコードネームはKaleidoscope（万華鏡）&lt;/a>とのことです。
私は長年Djangoを使っていますが、コードネームというのは初めて見たような気がします。&lt;/p>
&lt;!-- textlint-disable -->
&lt;figure>
&lt;img loading="lazy" src="https://ryu22e.org/media/2024/08/12/django5.1.png"
alt="Django 5.1, code-named Kaleidoscope（Dall-E 3で作成）"/> &lt;figcaption>
&lt;p>Django 5.1, code-named Kaleidoscope（&lt;a href="https://openai.com/index/dall-e-3/">Dall-E 3&lt;/a>で作成）&lt;/p>
&lt;/figcaption>
&lt;/figure>
&lt;!-- textlint-enable -->
&lt;p>公式サイトでのリリース情報は以下を参照してください。&lt;/p>
&lt;p>&lt;a href="https://docs.djangoproject.com/en/5.1/releases/5.1/">Django 5.1 release notes | Django documentation | Django&lt;/a>&lt;/p>
&lt;p>5.1のサポート期限は2025年12月です。4.2 LTSからアップデートするとサポート期限が短くなってしまうことに注意してください（4.2 LTSのサポート期限は2026年4月）。
サポート期限を短くしたくない場合は、2025年4月リリース予定の5.2 LTSまでアップデートしない手もあります（5.2 LTSのサポート期限は2028年4月）。
各バージョンのサポート期限についての詳細は以下公式ドキュメント「Supported Versions」を参照してください。&lt;/p>
&lt;p>&lt;a href="https://www.djangoproject.com/download/">Download Django | Django&lt;/a>&lt;/p></description></item><item><title>PyCon Kyushu 2024 KAGOSHIMAでPython in Excelについて話してきました</title><link>https://ryu22e.org/posts/2024/05/25/pycon-kyushu-2024/</link><pubDate>Sat, 25 May 2024 09:25:53 +0900</pubDate><guid>https://ryu22e.org/posts/2024/05/25/pycon-kyushu-2024/</guid><description>&lt;!-- textlint-disable -->
&lt;p>2024/05/25、鹿児島県鹿児島市で開催された&lt;a href="https://kyushu.pycon.jp/2024/">PyCon Kyushu 2024 KAGOSHIMA&lt;/a>にて、『Excel + Pythonでデータ解析、集計が捗る！「Python in Excel」の紹介』というタイトルで話してきました。&lt;/p>
&lt;!-- textlint-enable --></description></item><item><title>PyCon Kyushu 2024 KAGOSHIMAで登壇します</title><link>https://ryu22e.org/posts/2024/04/08/speaking-at-pycon-kyushu-2024/</link><pubDate>Mon, 08 Apr 2024 10:30:00 +0900</pubDate><guid>https://ryu22e.org/posts/2024/04/08/speaking-at-pycon-kyushu-2024/</guid><description>&lt;!-- textlint-disable -->
&lt;p>2024年5月25日(土)開催の&lt;a href="https://kyushu.pycon.jp/2024/">PyCon Kyushu 2024 KAGOSHIMA&lt;/a>に登壇します。&lt;/p>
&lt;!-- textlint-enable -->
&lt;p>トークのタイトルは『Excel + Pythonでデータ解析、集計が捗る！「Python in Excel」の紹介』です。&lt;/p></description></item><item><title>Django 4.2 LTS主な新機能まとめ</title><link>https://ryu22e.org/posts/2023/04/20/django42-new-features/</link><pubDate>Thu, 20 Apr 2023 11:10:00 +0900</pubDate><guid>https://ryu22e.org/posts/2023/04/20/django42-new-features/</guid><description>&lt;p>2023年4月3日、Django 4.2がリリースされました。&lt;/p>
&lt;!-- textlint-disable -->
&lt;figure>
&lt;img loading="lazy" src="https://ryu22e.org/media/2023/04/20/django4.2-party.jpg"
alt="Django 4.2リリースを祝ってジャンゴ・ラインハルトが演奏しています（DreamStudioで作成）"/> &lt;figcaption>
&lt;p>Django 4.2リリースを祝ってジャンゴ・ラインハルトが演奏しています（&lt;a href="https://beta.dreamstudio.ai/">DreamStudio&lt;/a>で作成）&lt;/p>
&lt;/figcaption>
&lt;/figure>
&lt;!-- textlint-enable -->
&lt;p>公式サイトでのリリース情報は以下を参照してください。&lt;/p>
&lt;p>&lt;a href="https://docs.djangoproject.com/en/4.2/releases/4.2/">Django 4.2 release notes | Django documentation | Django&lt;/a>&lt;/p>
&lt;p>Django 4.2はlong-term support（LTS）版です。サポート期限は2026年4月です。
各バージョンのサポート期限についての詳細は以下公式ドキュメント「Supported Versions」を参照してください。&lt;/p>
&lt;p>&lt;a href="https://www.djangoproject.com/download/">Download Django | Django&lt;/a>&lt;/p></description></item><item><title>「横浜Rust部」を立ち上げました</title><link>https://ryu22e.org/posts/2023/02/03/started-yokohama-rust-bu/</link><pubDate>Fri, 03 Feb 2023 11:20:00 +0900</pubDate><guid>https://ryu22e.org/posts/2023/02/03/started-yokohama-rust-bu/</guid><description>&lt;p>今年はRustを使えるようになりたいと思っていて、学習のモチベーションを維持するために「&lt;a href="https://creativecommons.org/licenses/by/4.0/">横浜Rust部&lt;/a>」というコミュニティを立ち上げました。&lt;/p>
&lt;!-- textlint-disable -->
&lt;figure>
&lt;img loading="lazy" src="https://ryu22e.org/media/2023/02/03/yokohama-rust-bu.png"
alt="横浜Rust部のロゴ（RustのロゴはMozillaが所有しておりクリエティブコモンス表示ライセンス (CC-BY)の下配布されています。）"/> &lt;figcaption>
&lt;p>横浜Rust部のロゴ（&lt;a href="https://prev.rust-lang.org/logos/rust-logo-128x128-blk.png">Rustのロゴ&lt;/a>はMozillaが所有しており&lt;a href="https://creativecommons.org/licenses/by/4.0/">クリエティブコモンス表示ライセンス (CC-BY)&lt;/a>の下配布されています。）&lt;/p>
&lt;/figcaption>
&lt;/figure>
&lt;!-- textlint-enable --></description></item><item><title>DjangoCongress JP 2022に参加しました</title><link>https://ryu22e.org/posts/2022/11/12/djangocongressjp2022/</link><pubDate>Sat, 12 Nov 2022 23:30:00 +0900</pubDate><guid>https://ryu22e.org/posts/2022/11/12/djangocongressjp2022/</guid><description>&lt;p>2022年11月12日開催の&lt;a href="https://django.connpass.com/event/259310/">DjangoCongress JP 2022&lt;/a>に参加しました。&lt;/p>
&lt;p>昨年はオンラインとオフラインのハイブリッド開催でしたが、今回はオフラインのみ。
会場は&lt;a href="https://www.nikkei-hall.com/access/">日経カンファレンスルーム&lt;/a>でした。&lt;/p>
&lt;!-- textlint-disable -->
&lt;figure>
&lt;img loading="lazy" src="https://ryu22e.org/media/2022/11/12/venue.jpeg"
alt="日経カンファレンスルームの様子"/> &lt;figcaption>
&lt;p>日経カンファレンスルームの様子&lt;/p>
&lt;/figcaption>
&lt;/figure>
&lt;!-- textlint-enable --></description></item><item><title>Django 4.1 主な変更点まとめ</title><link>https://ryu22e.org/posts/2022/08/10/django41-new-features/</link><pubDate>Wed, 10 Aug 2022 10:55:00 +0900</pubDate><guid>https://ryu22e.org/posts/2022/08/10/django41-new-features/</guid><description>&lt;p>2022年8月3日、Django 4.1がリリースされました。&lt;/p>
&lt;!-- textlint-disable -->
&lt;figure>
&lt;img loading="lazy" src="https://ryu22e.org/media/2022/08/10/django4.1-party.jpg"
alt="4.1リリースを祝してジャンゴ・ラインハルトと一緒にパーティ！（Midjourneyで作成）"/> &lt;figcaption>
&lt;p>4.1リリースを祝してジャンゴ・ラインハルトと一緒にパーティ！（&lt;a href="https://www.midjourney.com/">Midjourney&lt;/a>で作成）&lt;/p>
&lt;/figcaption>
&lt;/figure>
&lt;!-- textlint-enable -->
&lt;p>公式サイトでのリリース情報は以下を参照してください。&lt;/p>
&lt;p>&lt;a href="https://docs.djangoproject.com/en/4.1/releases/4.1/">Django 4.1 release notes | Django documentation | Django&lt;/a>&lt;/p>
&lt;p>4.1のサポート期限は2023年12月です。3.2 LTSからアップデートするとサポート期限が短くなってしまうことに注意してください（3.2 LTSのサポート期限は2024年4月）。
サポート期限を短くしたくない場合は、2023年4月リリース予定の4.2 LTSまでアップデートしない手もあります（4.2 LTSのサポート期限は2026年4月）。
各バージョンのサポート期限についての詳細は以下公式ドキュメント「Supported Versions」を参照してください。&lt;/p>
&lt;p>&lt;a href="https://www.djangoproject.com/download/">Download Django | Django&lt;/a>&lt;/p></description></item><item><title>chouseisan-pyというPythonライブラリを作りました</title><link>https://ryu22e.org/posts/2022/02/16/chouseisan-py/</link><pubDate>Wed, 16 Feb 2022 10:55:00 +0900</pubDate><guid>https://ryu22e.org/posts/2022/02/16/chouseisan-py/</guid><description>&lt;p>&lt;a href="https://chouseisan.com/">調整さん&lt;/a>のイベント作成をPythonコード上から行えるライブラリ&lt;a href="https://pypi.org/project/chouseisan-py/">chouseisan-py&lt;/a>を作りました。&lt;/p>
&lt;p>以下の方法でインストールできます。&lt;/p>
&lt;!-- textlint-disable -->
&lt;div class="highlight">&lt;div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>$ pip install chouseisan-py&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>
&lt;!-- textlint-enable -->
&lt;p>現在のバージョン0.1.0では、イベントの作成しかサポートしていません。
使い方は以下のとおりです。&lt;/p>
&lt;!-- textlint-disable -->
&lt;div class="highlight">&lt;div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">7
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">8
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">9
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#f92672">from&lt;/span> datetime &lt;span style="color:#f92672">import&lt;/span> datetime
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#f92672">from&lt;/span> chouseisan_py.chouseisan &lt;span style="color:#f92672">import&lt;/span> Auth, Chouseisan
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">&amp;gt;&amp;gt;&amp;gt;&lt;/span> auth &lt;span style="color:#f92672">=&lt;/span> Auth(email&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;test@example.com&amp;#34;&lt;/span>, password&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;&amp;lt;secret&amp;gt;&amp;#34;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">&amp;gt;&amp;gt;&amp;gt;&lt;/span> chouseisan &lt;span style="color:#f92672">=&lt;/span> Chouseisan(auth)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">&amp;gt;&amp;gt;&amp;gt;&lt;/span> chouseisan&lt;span style="color:#f92672">.&lt;/span>create_event(
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">...&lt;/span> title&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;test event&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">...&lt;/span> candidate_days&lt;span style="color:#f92672">=&lt;/span>[datetime(&lt;span style="color:#ae81ff">2021&lt;/span>, &lt;span style="color:#ae81ff">10&lt;/span>, &lt;span style="color:#ae81ff">17&lt;/span>, &lt;span style="color:#ae81ff">19&lt;/span>, &lt;span style="color:#ae81ff">0&lt;/span>), datetime(&lt;span style="color:#ae81ff">2021&lt;/span>, &lt;span style="color:#ae81ff">10&lt;/span>, &lt;span style="color:#ae81ff">18&lt;/span>, &lt;span style="color:#ae81ff">19&lt;/span>, &lt;span style="color:#ae81ff">0&lt;/span>)]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">...&lt;/span> )
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74">&amp;#39;https://chouseisan.com/s?h=f7b7fc11995b441782844bc3fddaf456&amp;#39;&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>
&lt;!-- textlint-enable -->
&lt;p>ソースコードは以下に置いてあります。&lt;/p>
&lt;p>&lt;a href="https://github.com/ryu22e/chouseisan_py">https://github.com/ryu22e/chouseisan_py&lt;/a>&lt;/p></description></item><item><title>【告知】『Pythonエンジニア育成推進協会監修　Python実践レシピ』という本を書きました #Python実践レシピ</title><link>https://ryu22e.org/posts/2022/01/11/pylibbook2/</link><pubDate>Tue, 11 Jan 2022 10:30:00 +0900</pubDate><guid>https://ryu22e.org/posts/2022/01/11/pylibbook2/</guid><description>&lt;p>技術評論社さんから出る&lt;!-- textlint-disable -->
『Pythonエンジニア育成推進協会監修　Python実践レシピ』&lt;!-- textlint-enable -->
という本を書きました。
電子書籍版が1月13日、紙版が2022年1月19日発売予定です。&lt;/p>
&lt;p>購入・予約は以下からお願いします。&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://gihyo.jp/book/2022/978-4-297-12576-9">技術評論社さんのサイト&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.amazon.co.jp/gp/product/4297125765/ref=as_li_tl?ie=UTF8&amp;amp;camp=247&amp;amp;creative=1211&amp;amp;creativeASIN=4297125765&amp;amp;linkCode=as2&amp;amp;tag=ryu22e-22&amp;amp;linkId=043a3243f3cdebcaa8b25a5a8d822df4">Amazon（アフィリエイト付き）&lt;/a>&lt;/li>
&lt;/ul>
&lt;figure>
&lt;img loading="lazy" src="https://ryu22e.org/media/2022/01/11/pylibbook2.jpg"
alt="こんな装丁です"/> &lt;figcaption>
&lt;p>こんな装丁です&lt;/p>
&lt;/figcaption>
&lt;/figure>
&lt;p>共著の本で、私以外は以下のメンバーで書きました。&lt;/p>
&lt;ul>
&lt;li>鈴木　たかのりさん&lt;/li>
&lt;li>寺田　学さん&lt;/li>
&lt;li>杉田　雅子さん&lt;/li>
&lt;li>門脇　諭さん&lt;/li>
&lt;li>福田　隼也さん&lt;/li>
&lt;/ul>
&lt;p>レビュアーは以下のみなさんにお願いしました。ありがとうございました！&lt;/p>
&lt;ul>
&lt;li>辻　真吾さん&lt;/li>
&lt;li>杉山　剛さん&lt;/li>
&lt;li>寺嶋　哲さん&lt;/li>
&lt;li>上條　真哉さん&lt;/li>
&lt;li>阿部　司さん&lt;/li>
&lt;li>杉崎　一明さん&lt;/li>
&lt;li>岡野　真也さん&lt;/li>
&lt;/ul></description></item><item><title>DjangoのSystem check frameworkでCloud Spanner非対応のモデルフィールドを検出してみる</title><link>https://ryu22e.org/posts/2021/12/08/django-system-check-framework-detects-fields-that-are-not-supported-by-cloud-spanner/</link><pubDate>Wed, 08 Dec 2021 23:55:00 +0900</pubDate><guid>https://ryu22e.org/posts/2021/12/08/django-system-check-framework-detects-fields-that-are-not-supported-by-cloud-spanner/</guid><description>&lt;p>&lt;a href="https://qiita.com/advent-calendar/2021/django">Qiita Django Advent Calendar 2021&lt;/a> 8日目は、Djangoの&lt;a href="https://docs.djangoproject.com/ja/3.2/topics/checks/">System check framework&lt;/a>を使ったちょっとしたTipsを紹介します。&lt;/p></description></item><item><title>django-google-spanner==3.0.0でエミュレータを使おうとして挫折した話</title><link>https://ryu22e.org/posts/2021/12/06/failed-to-use-emulator-with-django-google-spanner3.0.0/</link><pubDate>Mon, 06 Dec 2021 23:55:00 +0900</pubDate><guid>https://ryu22e.org/posts/2021/12/06/failed-to-use-emulator-with-django-google-spanner3.0.0/</guid><description>&lt;p>&lt;a href="https://qiita.com/advent-calendar/2021/django">Qiita Django Advent Calendar 2021&lt;/a> 6日目は、Djangoのデータベースバックエンドに&lt;a href="https://cloud.google.com/spanner/?hl=ja">Google Cloud Spanner&lt;/a>を使えるようにする&lt;a href="https://pypi.org/project/django-google-spanner/">django-google-spanner&lt;/a>に関する話を書きます。&lt;/p>
&lt;p>&lt;a href="https://googleapis.dev/python/django-google-spanner/latest/index.html">django-google-spannerの公式ドキュメント&lt;/a>には本物のCloud Spannerインスタンスと接続する使い方しか書かれていませんが、この方法だと&lt;code>migrate&lt;/code>コマンドの実行にかなり時間がかかります（私が試したときは10分ぐらいかかりました）。
ローカルのエミュレータを使うようにすれば、もっと早くなって楽に開発できるのでは？ と考えて、実際にやってみました。&lt;/p>
&lt;p>結論から先に書くと、この試みはうまくいきませんでした…
&lt;code>migrate&lt;/code>コマンドの実行は高速化できるのですが、データの登録に失敗するケースがあります。&lt;/p></description></item><item><title>Django 4.0のtestコマンドに追加された--shuffleオプションが地味に便利</title><link>https://ryu22e.org/posts/2021/12/04/shuffle-option-added-to-django-40-test-command/</link><pubDate>Sat, 04 Dec 2021 10:30:00 +0900</pubDate><guid>https://ryu22e.org/posts/2021/12/04/shuffle-option-added-to-django-40-test-command/</guid><description>&lt;p>&lt;a href="https://qiita.com/advent-calendar/2021/django">Qiita Django Advent Calendar 2021&lt;/a> 4日目は、Django 4.0のtestコマンドに追加された&lt;code>--shuffle&lt;/code>オプションについて紹介します。
&lt;code>--shuffle&lt;/code>オプションについての公式ドキュメントの説明は以下を参照してください。&lt;/p>
&lt;p>&lt;a href="https://docs.djangoproject.com/en/4.0/ref/django-admin/#cmdoption-test-shuffle">django-admin and manage.py | Django documentation | Django&lt;/a>&lt;/p></description></item><item><title>Django 4.0 主な変更点まとめ</title><link>https://ryu22e.org/posts/2021/12/02/django40-new-features/</link><pubDate>Thu, 02 Dec 2021 10:30:00 +0900</pubDate><guid>https://ryu22e.org/posts/2021/12/02/django40-new-features/</guid><description>&lt;p>&lt;a href="https://qiita.com/advent-calendar/2021/django">Qiita Django Advent Calendar 2021&lt;/a> 2日目は、2021年12月リリース予定のDjango 4.0で追加された新機能について解説します。&lt;/p>
&lt;p>【注意】
なお、2021年12月2日時点では、Django 4.0はまだ正式にリリースされてません。この記事はrelease candidate 1版を元に執筆しました。&lt;/p>
&lt;figure>
&lt;img loading="lazy" src="https://ryu22e.org/media/2021/12/02/django4.0.png"
alt="祝・Django 4.0リリース！"/> &lt;figcaption>
&lt;p>祝・Django 4.0リリース！&lt;/p>
&lt;/figcaption>
&lt;/figure>
&lt;p>公式サイトでのリリース情報は以下を参照してください。&lt;/p>
&lt;p>&lt;a href="https://docs.djangoproject.com/en/dev/releases/4.0/">Django 4.0 release notes - UNDER DEVELOPMENT | Django documentation | Django&lt;/a>&lt;/p>
&lt;p>4.0のサポート期限は2023年8月までです。
一方で、一つ前のバージョン3.2 LTS（long-term support）のサポート期限は2024年4月です。
現在3.2 LTSを使っている場合は、4.0にバージョンアップすることでサポート期限が短くなることに注意してください。&lt;/p>
&lt;p>各バージョンがLTSなのか否か、サポート期限がいつまでなのかについては以下公式ドキュメント「Supported Versions」を参照してください。&lt;/p>
&lt;p>&lt;a href="https://www.djangoproject.com/download/">Download Django | Django&lt;/a>&lt;/p></description></item><item><title>PyCon JP 2021で「Python 3.9からの新定番zoneinfoを使いこなそう」というタイトルで登壇しました</title><link>https://ryu22e.org/posts/2021/10/18/pyconjp2021/</link><pubDate>Mon, 18 Oct 2021 10:30:00 +0900</pubDate><guid>https://ryu22e.org/posts/2021/10/18/pyconjp2021/</guid><description>&lt;p>&lt;a href="https://2021.pycon.jp/">PyCon JP 2021&lt;/a>で「&lt;a href="https://2021.pycon.jp/time-table/?id=272565">Python 3.9からの新定番zoneinfoを使いこなそう&lt;/a>」というタイトルで登壇しました。&lt;/p>
&lt;p>私が初めてPyCon JPに参加したのは2012年でしたが、9年目にして初めてCfPが採択されることになり、感慨深い回になりました。&lt;/p></description></item><item><title>【告知】PyCon JP 2021にスピーカーとして登壇します</title><link>https://ryu22e.org/posts/2021/10/07/announcement-about-pyconjp-2021-talk/</link><pubDate>Thu, 07 Oct 2021 10:30:00 +0900</pubDate><guid>https://ryu22e.org/posts/2021/10/07/announcement-about-pyconjp-2021-talk/</guid><description>&lt;p>今年の&lt;a href="https://2021.pycon.jp/">PyCon JP 2021&lt;/a>でスピーカーとして登壇します。&lt;/p></description></item><item><title>Django 3.2 LTS 主な変更点まとめ</title><link>https://ryu22e.org/posts/2021/04/06/django32-new-features/</link><pubDate>Tue, 06 Apr 2021 18:30:00 +0900</pubDate><guid>https://ryu22e.org/posts/2021/04/06/django32-new-features/</guid><description>&lt;p>2021年4月6日、Django 3.2がリリースされました。3系としては初のLTS版です。&lt;/p>
&lt;figure>
&lt;img loading="lazy" src="https://ryu22e.org/media/2021/04/06/django3.2.png"
alt="祝・Django 3.2リリース！"/> &lt;figcaption>
&lt;p>祝・Django 3.2リリース！&lt;/p>
&lt;/figcaption>
&lt;/figure>
&lt;p>公式サイトでのリリース情報は以下を参照してください。&lt;/p>
&lt;p>&lt;a href="https://docs.djangoproject.com/en/3.2/releases/3.2/">Django 3.2 release notes | Django documentation | Django&lt;/a>&lt;/p>
&lt;p>3.2のサポート期限は2024年4月までです。各バージョンのサポート期限についての詳細は以下公式ドキュメント「Supported Versions」を参照してください。&lt;/p>
&lt;p>&lt;a href="https://www.djangoproject.com/download/">Download Django | Django&lt;/a>&lt;/p></description></item><item><title>「Django + Django REST frameworkでできるアレはFastAPIではどうするのか？」について調べた結果のメモ</title><link>https://ryu22e.org/posts/2021/01/12/how-does-fastapi-do-that-thing-you-can-do-with-django-restframework-notes-from-my-research-on/</link><pubDate>Tue, 12 Jan 2021 10:30:00 +0900</pubDate><guid>https://ryu22e.org/posts/2021/01/12/how-does-fastapi-do-that-thing-you-can-do-with-django-restframework-notes-from-my-research-on/</guid><description>&lt;!-- textlint-disable -->
&lt;p>FastAPIの勉強がてら調べてみました。&lt;/p>
&lt;p>Django + Django REST framework（以下、DRF）でAPIサーバーを作るための知識を持っているのが前提の記事です。&lt;/p>
&lt;p>FastAPIについて体系的な知識を求めているなら以下公式ドキュメントを読んでください。&lt;/p>
&lt;p>&lt;a href="https://fastapi.tiangolo.com/ja/">FastAPI&lt;/a>&lt;/p></description></item><item><title>Django adminテンプレートのオーバーライド方法について解説</title><link>https://ryu22e.org/posts/2020/12/10/how-to-override-the-django-admin-templates/</link><pubDate>Thu, 10 Dec 2020 10:30:00 +0900</pubDate><guid>https://ryu22e.org/posts/2020/12/10/how-to-override-the-django-admin-templates/</guid><description>&lt;p>【注意】この記事はDjango2.2を調査対象にして書きました。（ですが、記事の内容は3系でも使えます）&lt;/p>
&lt;p>&lt;a href="https://qiita.com/advent-calendar/2020/django">Django Advent Calendar 2020 - Qiita&lt;/a>の10日目はDjango adminテンプレートをオーバーライドする方法について書きます。&lt;/p>
&lt;p>Django adminを使っていて「もっとオリジナリティがあるUIにしたい」と思ったことはないでしょうか？ Djangoでは標準のadminテンプレートをオーバーライドする方法があります。以下では、その方法について解説します。&lt;/p>
&lt;p>&lt;figure>
&lt;img loading="lazy" src="https://ryu22e.org/media/2020/12/10/django-grappelli.jpg"
alt="adminテンプレートオーバーライドの例"/> &lt;figcaption>
&lt;p>adminテンプレートオーバーライドの例&lt;/p>
&lt;/figcaption>
&lt;/figure>
&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup>&lt;/p></description></item><item><title>Djangoのsettings.pyにDEFAULT_CHARSET="UTF-8"と書いてはいけない</title><link>https://ryu22e.org/posts/2020/11/12/dont-write-uppercase-utf-8-in-djangos-default_charset/</link><pubDate>Thu, 12 Nov 2020 10:30:00 +0900</pubDate><guid>https://ryu22e.org/posts/2020/11/12/dont-write-uppercase-utf-8-in-djangos-default_charset/</guid><description>&lt;p>【注意】この記事は2020年11月12日現在Djangoのサポート対象になっているバージョン（2.2・3.0・3.1）を調査対象にして書きました。&lt;/p>
&lt;p>Djangoでは&lt;a href="https://docs.djangoproject.com/en/2.2/ref/settings/#default-charset">DEFAULT_CHARSET&lt;/a>というContent-Typeのcharsetを指定する設定項目があります。デフォルト値は&lt;code>&amp;quot;utf-8&amp;quot;&lt;/code>ですが、明示的にファイルに書いておこうとして以下のように書くと思わぬトラブルに繋がります。&lt;/p>
&lt;div class="highlight">&lt;div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>DEFAULT_CHARSET &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;UTF-8&amp;#34;&lt;/span> &lt;span style="color:#75715e"># 大文字で書いている&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div></description></item><item><title>モデル定義を変更せず動的コンテンツのi18n対応ができるライブラリdjango-modeltranslationの紹介</title><link>https://ryu22e.org/posts/2020/11/11/introduction-to-django-modeltranslation/</link><pubDate>Wed, 11 Nov 2020 10:30:00 +0900</pubDate><guid>https://ryu22e.org/posts/2020/11/11/introduction-to-django-modeltranslation/</guid><description>&lt;p>最近、&lt;a href="http://mezzanine.jupo.org/docs/index.html">mezzanine&lt;/a>&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup>のソースコードを読んでいて、&lt;a href="https://django-modeltranslation.readthedocs.io/en/latest/">django-modeltranslation&lt;/a>というライブラリの存在を知ったので、紹介したいと思います。&lt;/p>
&lt;figure>
&lt;img loading="lazy" src="https://ryu22e.org/media/2020/11/11/i18n.png"
alt="django-modeltranslatioは動的コンテンツのi18n対応を簡単にできるライブラリです"/> &lt;figcaption>
&lt;p>django-modeltranslatioは動的コンテンツのi18n対応を簡単にできるライブラリです&lt;/p>
&lt;/figcaption>
&lt;/figure>
&lt;p>このライブラリを使うと、モデル定義を変更せずに動的コンテンツのi18n対応ができます。&lt;/p>
&lt;p>どんなものなのか、実際にサンプルアプリケーションを作って体験してみましょう。&lt;/p></description></item><item><title>Djangoの脆弱性CVE-2020-24583・CVE-2020-24584について解説</title><link>https://ryu22e.org/posts/2020/09/28/django-cve-2020-24583-and-cve-2020-24584/</link><pubDate>Mon, 28 Sep 2020 10:30:00 +0900</pubDate><guid>https://ryu22e.org/posts/2020/09/28/django-cve-2020-24583-and-cve-2020-24584/</guid><description>&lt;p>&lt;a href="https://ryu22e.org/en/posts/2020/09/28/django-cve-2020-24583-and-cve-2020-24584/">English edition&lt;/a>&lt;/p>
&lt;p>2020年9月1日に修正されたDjangoの脆弱性CVE-2020-24583・CVE-2020-24584について解説します。&lt;/p>
&lt;figure>
&lt;img loading="lazy" src="https://ryu22e.org/media/2020/09/28/django-cve-2020-24583-and-cve-2020-24584.jpg"
alt="今回の脆弱性はアプリケーションが作成するディレクトリに余分なパーミッションを与えてしまう場合があります"/> &lt;figcaption>
&lt;p>今回の脆弱性はアプリケーションが作成するディレクトリに余分なパーミッションを与えてしまう場合があります&lt;/p>
&lt;/figcaption>
&lt;/figure>
&lt;p>公式サイトでのリリース情報は以下を参照してください。&lt;/p>
&lt;p>&lt;a href="https://www.djangoproject.com/weblog/2020/sep/01/security-releases/">Django security releases issued: 3.1.1, 3.0.10 and 2.2.16 | Weblog | Django&lt;/a>&lt;/p></description></item><item><title>Djangoの脆弱性CVE-2020-13254・CVE-2020-13596ついて解説</title><link>https://ryu22e.org/posts/2020/06/09/django-cve-2020-13254-and-cve-2020-13596/</link><pubDate>Tue, 09 Jun 2020 10:30:00 +0900</pubDate><guid>https://ryu22e.org/posts/2020/06/09/django-cve-2020-13254-and-cve-2020-13596/</guid><description>&lt;p>&lt;a href="https://ryu22e.org/en/posts/2020/06/09/django-cve-2020-13254-and-cve-2020-13596/">English edition&lt;/a>&lt;/p>
&lt;p>2020年6月3日に修正されたDjangoの脆弱性CVE-2020-13254・CVE-2020-13596について解説します。&lt;/p>
&lt;figure>
&lt;img loading="lazy" src="https://ryu22e.org/media/2020/06/09/CVE-2020-1359.png"
alt="CVE-2020-13254はデータ漏洩の可能性があります"/> &lt;figcaption>
&lt;p>CVE-2020-13254はデータ漏洩の可能性があります&lt;/p>
&lt;/figcaption>
&lt;/figure>
&lt;figure>
&lt;img loading="lazy" src="https://ryu22e.org/media/2020/06/09/CVE-2020-13596.png"
alt="CVE-2020-13596はXSSに関する脆弱性です"/> &lt;figcaption>
&lt;p>CVE-2020-13596はXSSに関する脆弱性です&lt;/p>
&lt;/figcaption>
&lt;/figure>
&lt;p>公式サイトでのリリース情報は以下を参照してください。&lt;/p>
&lt;p>&lt;a href="https://www.djangoproject.com/weblog/2020/jun/03/security-releases/">Django security releases issued: 3.0.7 and 2.2.13 | Weblog | Django&lt;/a>&lt;/p></description></item><item><title>Djangoの脆弱性CVE-2020-7471について解説</title><link>https://ryu22e.org/posts/2020/02/06/django-cve-2020-7471/</link><pubDate>Thu, 06 Feb 2020 10:30:00 +0900</pubDate><guid>https://ryu22e.org/posts/2020/02/06/django-cve-2020-7471/</guid><description>&lt;p>&lt;a href="https://ryu22e.org/en/posts/2020/02/06/django-cve-2020-7471/">English edition&lt;/a>&lt;/p>
&lt;p>2020年2月3日に修正されたDjangoの脆弱性CVE-2020-7471について解説します。&lt;/p>
&lt;figure>
&lt;img loading="lazy" src="https://ryu22e.org/media/2020/02/06/sql-injection.png"
alt="今回の脆弱性はSQLインジェクションが可能になるものです"/> &lt;figcaption>
&lt;p>今回の脆弱性はSQLインジェクションが可能になるものです&lt;/p>
&lt;/figcaption>
&lt;/figure>
&lt;p>公式サイトでのリリース情報は以下を参照してください。&lt;/p>
&lt;p>&lt;a href="https://www.djangoproject.com/weblog/2020/feb/03/security-releases/">Django security releases issued: 3.0.3, 2.2.10, and 1.11.28 | Weblog | Django&lt;/a>&lt;/p></description></item><item><title>DjangoでSameSite属性を扱う方法</title><link>https://ryu22e.org/posts/2020/01/27/how-django-handles-samesite/</link><pubDate>Mon, 27 Jan 2020 10:30:00 +0900</pubDate><guid>https://ryu22e.org/posts/2020/01/27/how-django-handles-samesite/</guid><description>&lt;p>2020年2月にリリースされるGoogle Chrome 80から、&lt;code>SameSite&lt;/code>属性がないCookieは&lt;code>SameSite=Lax&lt;/code>として扱われるようになります。&lt;/p>
&lt;p>詳細は以下Google公式サイトを参照してください。&lt;/p>
&lt;p>&lt;a href="https://developers-jp.googleblog.com/2019/11/cookie-samesitenone-secure.html">Google Developers Japan: 新しい Cookie 設定 SameSite=None; Secure の準備を始めましょう&lt;/a>&lt;/p>
&lt;p>今回は、Djangoで&lt;code>SameSite&lt;/code>属性に対応するにはどうすればいいのかについて解説したいと思います。&lt;/p></description></item><item><title>Djangoの脆弱性CVE-2019-19844について解説</title><link>https://ryu22e.org/posts/2019/12/25/django-cve-2019-19844/</link><pubDate>Wed, 25 Dec 2019 10:30:00 +0900</pubDate><guid>https://ryu22e.org/posts/2019/12/25/django-cve-2019-19844/</guid><description>&lt;p>&lt;a href="https://ryu22e.org/en/posts/2019/12/25/django-cve-2019-19844/">English edition&lt;/a>&lt;/p>
&lt;p>2019年12月18日に修正されたDjangoの脆弱性CVE-2019-19844について解説します。&lt;/p>
&lt;figure>
&lt;img loading="lazy" src="https://ryu22e.org/media/2019/12/25/account-hijack.png"
alt="今回の脆弱性はアカウントの乗っ取りが可能になるものです"/> &lt;figcaption>
&lt;p>今回の脆弱性はアカウントの乗っ取りが可能になるものです&lt;/p>
&lt;/figcaption>
&lt;/figure>
&lt;p>公式サイトでのリリース情報は以下を参照してください。&lt;/p>
&lt;p>&lt;a href="https://www.djangoproject.com/weblog/2019/dec/18/security-releases/">Django security releases issued: 3.0.1, 2.2.9, and 1.11.27 | Weblog | Django&lt;/a>&lt;/p></description></item><item><title>Djangoの脆弱性CVE-2019-19118について解説</title><link>https://ryu22e.org/posts/2019/12/23/django-cve-2019-19118/</link><pubDate>Mon, 23 Dec 2019 11:00:00 +0900</pubDate><guid>https://ryu22e.org/posts/2019/12/23/django-cve-2019-19118/</guid><description>&lt;p>2019年12月2日に修正されたDjangoの脆弱性CVE-2019-19118について解説します。&lt;/p>
&lt;figure>
&lt;img loading="lazy" src="https://ryu22e.org/media/2019/12/23/privilege-escalation.png"
alt="今回の脆弱性は権限昇格（Privilege escalation）に関するものです"/> &lt;figcaption>
&lt;p>今回の脆弱性は権限昇格（Privilege escalation）に関するものです&lt;/p>
&lt;/figcaption>
&lt;/figure>
&lt;p>公式サイトでのリリース情報は以下を参照してください。&lt;/p>
&lt;p>&lt;a href="https://www.djangoproject.com/weblog/2019/dec/02/security-releases/">Django security releases issued: 2.2.8 and 2.1.15 | Weblog | Django&lt;/a>&lt;/p></description></item><item><title>Django 3.0主な変更点まとめ</title><link>https://ryu22e.org/posts/2019/12/15/django3-new-features/</link><pubDate>Sun, 08 Dec 2019 10:32:04 +0900</pubDate><guid>https://ryu22e.org/posts/2019/12/15/django3-new-features/</guid><description>&lt;p>&lt;a href="https://qiita.com/advent-calendar/2019/django">Qiita Advent Calendar 2019 Django&lt;/a>15日目は、2019年12月2日にリリースされたDjango 3.0の主な変更点ついて紹介します。&lt;/p>
&lt;figure>
&lt;img loading="lazy" src="https://ryu22e.org/media/2019/12/15/congrats.png"
alt="祝・Django 3.0リリース！"/> &lt;figcaption>
&lt;p>祝・Django 3.0リリース！&lt;/p>
&lt;/figcaption>
&lt;/figure>
&lt;p>公式サイトでのリリース情報は以下を参照してください。&lt;/p>
&lt;p>&lt;a href="https://docs.djangoproject.com/en/3.0/releases/3.0/">Django 3.0 release notes | Django documentation | Django&lt;/a>&lt;/p></description></item><item><title>Google App Engine/Python3.7でResponderアプリを動かしてみる</title><link>https://ryu22e.org/posts/2018/10/27/responder-on-gae/</link><pubDate>Sat, 27 Oct 2018 17:36:51 +0900</pubDate><guid>https://ryu22e.org/posts/2018/10/27/responder-on-gae/</guid><description>&lt;p>この記事は&lt;a href="https://tanemaki-gae.connpass.com/event/102631/">GAE (Go/Python) もくもく勉強会 in 横浜タネマキ vol.58&lt;/a>開催中に書きました。&lt;/p>
&lt;p>最近興味がある&lt;a href="http://python-responder.org/en/latest/index.html">Responder&lt;/a>というPythonのウェブフレームワークをGoogle App Engine/Python3.7で動かしてみました。&lt;/p></description></item><item><title>PyCon JP 2018ポスターセッションでPython Boot Campの宣伝をしてきました #pyconjp</title><link>https://ryu22e.org/posts/2018/10/09/pyconjp2018/</link><pubDate>Tue, 09 Oct 2018 22:14:32 +0900</pubDate><guid>https://ryu22e.org/posts/2018/10/09/pyconjp2018/</guid><description>&lt;p>&lt;a href="https://pycon.jp/2018/ja/">PyCon JP 2018&lt;/a> ポスターセッションで「Python Boot Campで全国にPythonの環を広げよう！（2018年版）」というタイトルで&lt;a href="https://www.pycon.jp/support/bootcamp.html">Python Boot Camp&lt;/a> の宣伝をしてきました。&lt;/p></description></item><item><title>「テスト駆動Python」のレビューをしました #pytest #テスト駆動Python</title><link>https://ryu22e.org/posts/2018/09/03/pytest-book/</link><pubDate>Mon, 03 Sep 2018 21:14:08 +0900</pubDate><guid>https://ryu22e.org/posts/2018/09/03/pytest-book/</guid><description>&lt;p>「&lt;a href="https://www.shoeisha.co.jp/book/detail/9784798157603">テスト駆動Python&lt;/a>」という本のレビューをしました。&lt;/p>
&lt;iframe style="width:120px;height:240px;" marginwidth="0" marginheight="0" scrolling="no" frameborder="0" src="https://rcm-fe.amazon-adsystem.com/e/cm?ref=qf_sp_asin_til&amp;t=ryu22e-22&amp;m=amazon&amp;o=9&amp;p=8&amp;l=as1&amp;IS1=1&amp;detail=1&amp;asins=B07F65PFZN&amp;linkId=b99f1d9a834136be4324c36a9c528e77&amp;bc1=ffffff&amp;lt1=_top&amp;fc1=333333&amp;lc1=0066c0&amp;bg1=ffffff&amp;f=ifr">
&lt;/iframe></description></item><item><title>GCPUG Shonan vol.27 feat.Dataflowを開催しました #gcpug #shonan</title><link>https://ryu22e.org/posts/2018/05/29/gcpug_shonan_vol27/</link><pubDate>Tue, 29 May 2018 21:36:18 +0900</pubDate><guid>https://ryu22e.org/posts/2018/05/29/gcpug_shonan_vol27/</guid><description>&lt;p>湘南のGoogle Cloud Platformユーザーグループ、 &lt;a href="https://gcpug-shonan.connpass.com/event/87314/">GCPUG Shonan vol.27 feat.Dataflow&lt;/a>を開催
しました。&lt;/p>
&lt;p>今回は、今年3月に追加されたCloud Dataflow用テンプレートを使って手軽にDataflowを使えるところを体験してもらう回でした。&lt;/p></description></item><item><title>GCPUG Shonan vol.26 SpeechAPI ハンズオンを開催しました #gcpug #shonan</title><link>https://ryu22e.org/posts/2018/05/22/gcpug-shonan-vol26/</link><pubDate>Tue, 22 May 2018 11:39:17 +0900</pubDate><guid>https://ryu22e.org/posts/2018/05/22/gcpug-shonan-vol26/</guid><description>&lt;p>湘南のGoogle Cloud Platformユーザーグループ、 &lt;a href="https://gcpug-shonan.connpass.com/event/84441/">GCPUG Shonan vol.26 SpeechAPI ハンズオン&lt;/a>を開催
しました。&lt;/p>
&lt;p>今回は、みんなで&lt;a href="https://cloud.google.com/speech/?hl=ja">Cloud Speech API&lt;/a>を使って音声認識をやってみる回でした。&lt;/p></description></item><item><title>DjangoCongress JP 2018に参加しました #djangocongress</title><link>https://ryu22e.org/posts/2018/05/21/django-congress-jp-2018/</link><pubDate>Mon, 21 May 2018 21:34:42 +0900</pubDate><guid>https://ryu22e.org/posts/2018/05/21/django-congress-jp-2018/</guid><description>&lt;p>&lt;a href="https://djangocongress.jp/">DjangoCongress JP 2018&lt;/a>に参加しました。日本では初のDjangoカンファレンスということで、普段Djangoを使っている私としてはぜひ参加したいと思って楽しみにしていました。&lt;/p>
&lt;p>&lt;strong>2018/05/22&lt;/strong>: タイトルに年度が入っていなかったので追記しました。&lt;/p></description></item><item><title>Shonan.py第一回を開催します！#shonan_py</title><link>https://ryu22e.org/posts/2018/04/03/shonan-py-vol1/</link><pubDate>Tue, 03 Apr 2018 22:51:42 +0900</pubDate><guid>https://ryu22e.org/posts/2018/04/03/shonan-py-vol1/</guid><description>&lt;p>4月15日（日）、「Shonan.pyもくもく会」を開催します！ 参加したい人は以下connpassページから参加登録をお願いします。&lt;/p>
&lt;p>&lt;a href="https://shonan-py.connpass.com/event/82607/">Shonan.pyもくもく会 - connpass&lt;/a>&lt;/p></description></item><item><title>GCPUG Shonan vol.25 feat.GAEを開催しました #gcpug #shonan</title><link>https://ryu22e.org/posts/2018/04/03/gcpug_shonan_vol25/</link><pubDate>Tue, 03 Apr 2018 21:01:09 +0900</pubDate><guid>https://ryu22e.org/posts/2018/04/03/gcpug_shonan_vol25/</guid><description>&lt;p>湘南のGoogle Cloud Platformユーザーグループ、 &lt;a href="https://gcpug-shonan.connpass.com/event/81462/">GCPUG Shonan vol.25 feat.GAE&lt;/a>を開催しました。&lt;/p>
&lt;p>今回は&lt;a href="https://gcpug-shonan.connpass.com/event/47256/">vol.10&lt;/a>で好評だったGAEでLINE botを作るハンズオンの再演(+α）でした。&lt;/p></description></item><item><title>GCPUG Shonan vol.23 feat.gcloud道場にスタッフとして参加しました #gcpug #shonan</title><link>https://ryu22e.org/posts/2018/01/22/gcpug_shonan_vol23/</link><pubDate>Mon, 22 Jan 2018 21:15:01 +0900</pubDate><guid>https://ryu22e.org/posts/2018/01/22/gcpug_shonan_vol23/</guid><description>&lt;p>湘南のGoogle Cloud Platformユーザーグループ、 &lt;a href="https://gcpug-shonan.connpass.com/event/75312/">GCPUG Shonan vol.23 feat.gcloud道場&lt;/a>を開催しました。&lt;/p>
&lt;p>今年第一弾はGoogle Cloud SDKの&lt;code>gcloud&lt;/code>コマンドの便利な使い方についてハンズオンを開催しました。&lt;/p></description></item><item><title>GCPUG Shonan vol.22 DataPrepにスタッフとして参加しました #gcpug #shonan</title><link>https://ryu22e.org/posts/2017/12/14/gcpug_shonan_vol22/</link><pubDate>Thu, 14 Dec 2017 21:48:08 +0900</pubDate><guid>https://ryu22e.org/posts/2017/12/14/gcpug_shonan_vol22/</guid><description>&lt;p>湘南のGoogle Cloud Platformユーザーグループ、 &lt;a href="https://gcpug-shonan.connpass.com/event/72921/">GCPUG Shonan vol.22 DataPrep&lt;/a>を開催しました。&lt;/p>
&lt;p>今回はプログラミングレスでデータ加工ができるサービス&lt;a href="https://cloud.google.com/dataprep/?hl=ja">Cloud Dataprep&lt;/a>のハンズオン回でした。&lt;/p></description></item><item><title>GCPUG Shonan vol.21 feat.2周年記念にスタッフとして参加しました #gcpug #shonan</title><link>https://ryu22e.org/posts/2017/11/19/gcpug_shonan_vol21/</link><pubDate>Sun, 19 Nov 2017 22:02:06 +0900</pubDate><guid>https://ryu22e.org/posts/2017/11/19/gcpug_shonan_vol21/</guid><description>&lt;p>湘南のGoogle Cloud Platformユーザーグループ、 &lt;a href="https://gcpug-shonan.connpass.com/event/70233/">GCPUG Shonan vol.21 feat.2周年記念&lt;/a>を開催しました。&lt;/p>
&lt;p>今回はLT大会を開催しました。&lt;/p></description></item><item><title>GCPUG Shonan vol.20 feat.Genomicsにスタッフとして参加しました #gcpug #shonan</title><link>https://ryu22e.org/posts/2017/11/19/gcpug_shonan_vol20/</link><pubDate>Sun, 19 Nov 2017 13:31:03 +0900</pubDate><guid>https://ryu22e.org/posts/2017/11/19/gcpug_shonan_vol20/</guid><description>&lt;p>湘南のGoogle Cloud Platformユーザーグループ、 &lt;a href="https://gcpug-shonan.connpass.com/event/70058/">GCPUG Shonan vol.20 feat.Genomics&lt;/a>を開催しました。&lt;/p>
&lt;p>今回は、日本初（？）のGenomicsがテーマの回でした。&lt;/p></description></item><item><title>GCPUG Shonan vol.19 Cloud Functionsにスタッフとして参加しました #gcpug #shonan</title><link>https://ryu22e.org/posts/2017/11/08/gcpug_shonan_vol19/</link><pubDate>Wed, 08 Nov 2017 21:30:20 +0900</pubDate><guid>https://ryu22e.org/posts/2017/11/08/gcpug_shonan_vol19/</guid><description>&lt;p>湘南のGoogle Cloud Platformユーザーグループ、 &lt;a href="https://gcpug-shonan.connpass.com/event/68373/">GCPUG Shonan vol.19 Cloud Functions&lt;/a>
を開催しました。&lt;/p>
&lt;p>今回は、&lt;a href="https://twitter.com/soundTricker318">@soundTricker318&lt;/a>
さんによる&lt;a href="https://cloud.google.com/functions/?hl=ja">Cloud Functions&lt;/a>ハンズオンの回でした。&lt;/p></description></item><item><title>GCPUG Shonan vol.18 feat.retail-demoにスタッフとして参加しました #gcpug #shonan</title><link>https://ryu22e.org/posts/2017/10/04/gcpug_shonan_vol18/</link><pubDate>Wed, 04 Oct 2017 00:00:00 +0900</pubDate><guid>https://ryu22e.org/posts/2017/10/04/gcpug_shonan_vol18/</guid><description>&lt;p>湘南のGoogle Cloud Platformユーザーグループ、 &lt;a href="https://gcpug-shonan.connpass.com/event/66387/">GCPUG Shonan vol.18
feat.retail-demo&lt;/a>
を開催しました。&lt;/p>
&lt;p>今回は今年の &lt;a href="https://cloudnext.withgoogle.com/tokyo/">Google Cloud Next
Tokyo&lt;/a>
のブースで発表されたDataflowのデモ
&lt;a href="https://github.com/topgate/retail-demo">retail-demo&lt;/a>
について株式会社トップゲートのorfeonさんに解説していただきました。&lt;/p></description></item><item><title>GCPUG Shonan vol.17 GKEにスタッフとして参加しました #gcpug #shonan</title><link>https://ryu22e.org/posts/2017/09/20/gcpug_shonan_vol17/</link><pubDate>Wed, 20 Sep 2017 00:00:00 +0900</pubDate><guid>https://ryu22e.org/posts/2017/09/20/gcpug_shonan_vol17/</guid><description>&lt;p>湘南のGoogle Cloud Platformユーザーグループ、 &lt;a href="https://gcpug-shonan.connpass.com/event/63217/">GCPUG Shonan vol.17
GKE&lt;/a> を開催しました。&lt;/p>
&lt;p>今回は、Google Container
Engine（GKE）初心者のためのハンズオンを開催しました。&lt;/p></description></item><item><title>PyCon JP 2017ポスターセッションでPython Boot Campの宣伝をしてきました #pyconjp</title><link>https://ryu22e.org/posts/2017/09/20/pyconjp2017/</link><pubDate>Wed, 20 Sep 2017 00:00:00 +0900</pubDate><guid>https://ryu22e.org/posts/2017/09/20/pyconjp2017/</guid><description>&lt;p>&lt;a href="https://pycon.jp/2017/ja/">PyCon JP 2017&lt;/a> で「 &lt;a href="https://pycon.jp/2017/ja/schedule/presentation/45/">Python Boot
Campで全国にPythonの環を広げよう！&lt;/a>
」というタイトルで &lt;a href="https://www.pycon.jp/support/bootcamp.html">Python Boot
Camp&lt;/a> の宣伝をしてきました。&lt;/p></description></item><item><title>GCPUG Shonan vol.16 feat.Datastoreにスタッフとして参加しました #gcpug #shonan</title><link>https://ryu22e.org/posts/2017/08/21/gcpug_shonan_vol16/</link><pubDate>Mon, 21 Aug 2017 00:00:00 +0900</pubDate><guid>https://ryu22e.org/posts/2017/08/21/gcpug_shonan_vol16/</guid><description>&lt;p>湘南のGoogle Cloud Platformユーザーグループ、 &lt;a href="https://gcpug-shonan.connpass.com/event/60589/">GCPUG Shonan vol.16
feat.Datastore&lt;/a>
を開催しました。&lt;/p>
&lt;p>今回は、Datastoreを色んな観点から検証してみる回でした。&lt;/p></description></item><item><title>GCPUG Shonan vol.15 MAGELLAN BLOCKSにスタッフとして参加しました #gcpug #shonan</title><link>https://ryu22e.org/posts/2017/06/12/gcpug_shonan_vol15/</link><pubDate>Mon, 12 Jun 2017 00:00:00 +0900</pubDate><guid>https://ryu22e.org/posts/2017/06/12/gcpug_shonan_vol15/</guid><description>&lt;p>湘南のGoogle Cloud Platformユーザーグループ、 &lt;a href="https://gcpug-shonan.connpass.com/event/57271/">GCPUG Shonan vol.15
MAGELLAN BLOCKS&lt;/a>
を開催しました。&lt;/p>
&lt;p>今回は &lt;a href="https://www.magellanic-clouds.com/blocks/">MAGELLAN BLOCKS&lt;/a>
というGUIから簡単に機械学習を体験できるツールのハンズオン回でした。&lt;/p></description></item><item><title>GCPUG Shonan vol.14 feat.Datalabにスタッフとして参加しました #gcpug #shonan</title><link>https://ryu22e.org/posts/2017/05/29/gcpug_shonan_vol14/</link><pubDate>Mon, 29 May 2017 00:00:00 +0900</pubDate><guid>https://ryu22e.org/posts/2017/05/29/gcpug_shonan_vol14/</guid><description>&lt;p>湘南のGoogle Cloud Platformユーザーグループ、 &lt;a href="https://gcpug-shonan.connpass.com/event/55701/">GCPUG Shonan vol.14
feat.Datalab&lt;/a>
を開催しました。&lt;/p>
&lt;p>今回は &lt;a href="https://cloud.google.com/datalab/">Cloud Datalab&lt;/a>
の特集回でした。&lt;/p></description></item><item><title>GCPUG Shonan vol.13 続・移行話にスタッフとして参加しました #gcpug #shonan</title><link>https://ryu22e.org/posts/2017/05/01/gcpug_shonan_vol13/</link><pubDate>Mon, 01 May 2017 00:00:00 +0900</pubDate><guid>https://ryu22e.org/posts/2017/05/01/gcpug_shonan_vol13/</guid><description>&lt;p>湘南のGoogle Cloud Platformユーザーグループ、 &lt;a href="https://gcpug-shonan.connpass.com/event/53854/">GCPUG Shonan vol.13
続・移行話&lt;/a>
を開催しました。&lt;/p>
&lt;p>今回は &lt;a href="https://gcpug-shonan.connpass.com/event/41911/">vol.7&lt;/a>
の移行特集の続編の回でした。&lt;/p></description></item><item><title>GCPUG Shonan vol.12 feat.GAEにスタッフとして参加しました #gcpug #shonan</title><link>https://ryu22e.org/posts/2017/04/04/gcpug_shonan_vol12/</link><pubDate>Tue, 04 Apr 2017 00:00:00 +0900</pubDate><guid>https://ryu22e.org/posts/2017/04/04/gcpug_shonan_vol12/</guid><description>&lt;p>湘南のGoogle Cloud Platformユーザーグループ、 &lt;a href="https://gcpug-shonan.connpass.com/event/52208/">GCPUG Shonan vol.12
feat.GAE&lt;/a>
を開催しました。&lt;/p>
&lt;p>今回はGAEの回ですが、GAE+機械学習みたいな感じでした。&lt;/p></description></item><item><title>GCPUG Shonan vol.11 GCPをテラフォーミングする会にスタッフとして参加しました #gcpug #shonan</title><link>https://ryu22e.org/posts/2017/02/20/gcpug_shonan_vol11/</link><pubDate>Mon, 20 Feb 2017 00:00:00 +0900</pubDate><guid>https://ryu22e.org/posts/2017/02/20/gcpug_shonan_vol11/</guid><description>&lt;p>湘南のGoogle Cloud Platformユーザーグループ、 &lt;a href="https://gcpug-shonan.connpass.com/event/48177/">GCPUG Shonan vol.11
CPをテラフォーミングする会&lt;/a>
を開催しました。&lt;/p>
&lt;p>今回は &lt;a href="https://www.terraform.io/">Terraform&lt;/a>
でGCPの環境構築をやってみるハンズオンの回でした。&lt;/p></description></item><item><title>GCPUG Shonan vol.10 feat.GAEにスタッフとして参加しました #gcpug #shonan</title><link>https://ryu22e.org/posts/2017/01/22/gcpug_shonan_vol10/</link><pubDate>Sun, 22 Jan 2017 00:00:00 +0900</pubDate><guid>https://ryu22e.org/posts/2017/01/22/gcpug_shonan_vol10/</guid><description>&lt;p>湘南のGoogle Cloud Platformユーザーグループ、 &lt;a href="https://gcpug-shonan.connpass.com/event/47256/">GCPUG Shonan vol.10
feat.GAE&lt;/a>
を開催しました。&lt;/p>
&lt;p>今年最初の開催は、GAEでLINE Botを作るハンズオンでした。&lt;/p></description></item><item><title>GCPUG Shonan vol.9 feat.Visualizationにスタッフとして参加しました #gcpug #shonan</title><link>https://ryu22e.org/posts/2016/12/11/gcpug_shonan_vol9/</link><pubDate>Sun, 11 Dec 2016 00:00:00 +0900</pubDate><guid>https://ryu22e.org/posts/2016/12/11/gcpug_shonan_vol9/</guid><description>&lt;p>湘南のGoogle Cloud Platformユーザーグループ、 &lt;a href="https://gcpug-shonan.connpass.com/event/45132/">GCPUG Shonan vol.9
feat.Visualization&lt;/a>
を開催しました。&lt;/p>
&lt;p>今回はBigQueryと &lt;a href="https://redash.io/">Re:Dash&lt;/a> 、
&lt;a href="https://datastudio.google.com/">DataStudio&lt;/a>
を連携させるハンズオンでした。&lt;/p></description></item><item><title>GCPUG Shonan vol.8 feat.1周年記念パーティにスタッフとして参加しました #gcpug #shonan</title><link>https://ryu22e.org/posts/2016/11/13/gcpug_shonan_vol8/</link><pubDate>Sun, 13 Nov 2016 00:00:00 +0900</pubDate><guid>https://ryu22e.org/posts/2016/11/13/gcpug_shonan_vol8/</guid><description>&lt;p>湘南のGoogle Cloud Platformユーザーグループ、 &lt;a href="http://gcpug-shonan.connpass.com/event/43067/">GCPUG Shonan vol.8
feat.1周年記念パーティ&lt;/a>
を開催しました。&lt;/p>
&lt;p>今回は1周年記念特別回ということで、スペシャルゲストをお招きしてのパネルディスカッションを開催しました。&lt;/p></description></item><item><title>GCPUG Shonan vol.7 feat.移行にスタッフとして参加しました #gcpug #shonan</title><link>https://ryu22e.org/posts/2016/10/17/gcpug_shonan_vol7/</link><pubDate>Mon, 17 Oct 2016 00:00:00 +0900</pubDate><guid>https://ryu22e.org/posts/2016/10/17/gcpug_shonan_vol7/</guid><description>&lt;p>湘南のGoogle Cloud Platformユーザーグループ、 &lt;a href="http://gcpug-shonan.connpass.com/event/41911/">GCPUG Shonan vol.7
feat.移行&lt;/a>
を開催しました。&lt;/p>
&lt;p>今回はオンプレor他クラウドからGCPへ移行した人の体験談が中心の回でした。&lt;/p></description></item><item><title>PyCon JP 2016に参加しました #pyconjp</title><link>https://ryu22e.org/posts/2016/10/10/pyconjp2016/</link><pubDate>Mon, 10 Oct 2016 00:00:00 +0900</pubDate><guid>https://ryu22e.org/posts/2016/10/10/pyconjp2016/</guid><description>&lt;p>&lt;a href="http://pyconjp.connpass.com/event/30692/">PyCon JP 2016&lt;/a>
に参加しました。&lt;/p>
&lt;p>初参加のPyCon JP 2012から数えて5回目の参加になります。&lt;/p></description></item><item><title>GCPUG Shonan vol.6 feat.GAEにスタッフとして参加しました #gcpug #shonan</title><link>https://ryu22e.org/posts/2016/09/27/gcpug_shonan_vol6/</link><pubDate>Tue, 27 Sep 2016 00:00:00 +0900</pubDate><guid>https://ryu22e.org/posts/2016/09/27/gcpug_shonan_vol6/</guid><description>&lt;p>湘南のGoogle Cloud Platformユーザーグループ、 &lt;a href="http://gcpug-shonan.connpass.com/event/39802/">GCPUG Shonan vol.6
feat.GAE&lt;/a>
を開催しました。&lt;/p>
&lt;p>(ちなみに前回vol.5のレポートを飛ばしていますが、BBQ会でした。Togetterにツイートはまとまっています→
&lt;a href="http://togetter.com/li/1017803">GCPUG Shonan vol.5 feat.BBQ -
Togetterまとめ&lt;/a> )&lt;/p>
&lt;p>今回はGAEを使ってOAuth連携を行うサービスを作りたい人向けに、技術の概要解説やハンズオンを行う回でした。&lt;/p></description></item><item><title>GCPUG Shonan vol.4 feat.Dockerにスタッフとして参加しました #gcpug</title><link>https://ryu22e.org/posts/2016/07/28/gcpug_shonan_vol4/</link><pubDate>Thu, 28 Jul 2016 00:00:00 +0900</pubDate><guid>https://ryu22e.org/posts/2016/07/28/gcpug_shonan_vol4/</guid><description>&lt;p>湘南のGoogle Cloud Platformユーザーグループ、 &lt;a href="http://gcpug-shonan.connpass.com/event/35147/">GCPUG Shonan vol.4
feat.Docker&lt;/a>
を開催しました。&lt;/p>
&lt;p>今回はDocker回ということで、 hogedigo さん、 ya7_
さんのお二人に、Docker関連のGCPサービスについてお話していただきました。&lt;/p></description></item><item><title>GCPUG Shonan feat.GAE vol.3にスタッフとして参加しました #gcpug</title><link>https://ryu22e.org/posts/2016/06/26/gcpug_shonan_vol3/</link><pubDate>Sun, 26 Jun 2016 00:00:00 +0900</pubDate><guid>https://ryu22e.org/posts/2016/06/26/gcpug_shonan_vol3/</guid><description>&lt;p>湘南のGoogle Cloud Platformユーザーグループ、 &lt;a href="http://gcpug-shonan.connpass.com/event/32995/">GCPUG Shonan feat.GAE
vol.3&lt;/a> を開催しました。&lt;/p>
&lt;p>今回は『湘南 de
GAE「作ってみたもの持ち寄り会」』と題して、参加者がGAEの使ったアイデアを発表する回でした。&lt;/p></description></item><item><title>GCPUG Shonan feat.GAE vol.2にスタッフとして参加しました #gcpug</title><link>https://ryu22e.org/posts/2016/04/19/gcpug_shonan_vol2/</link><pubDate>Tue, 19 Apr 2016 00:00:00 +0900</pubDate><guid>https://ryu22e.org/posts/2016/04/19/gcpug_shonan_vol2/</guid><description>&lt;p>湘南のGoogle Cloud Platformユーザーグループ、 &lt;a href="http://gcpug-shonan.connpass.com/event/29684/">GCPUG Shonan feat.GAE
vol.2&lt;/a> を開催しました。&lt;/p>
&lt;p>今回はGAEを参加者に実際に使ってもらうという趣旨の回でした。&lt;/p></description></item><item><title>GCPUG Shonan vol.1にスタッフとして参加しました #gcpug</title><link>https://ryu22e.org/posts/2016/03/06/gcpug_shonan_vol1/</link><pubDate>Sun, 06 Mar 2016 00:00:00 +0900</pubDate><guid>https://ryu22e.org/posts/2016/03/06/gcpug_shonan_vol1/</guid><description>&lt;p>湘南のGoogle Cloud Platformユーザーグループ、 &lt;a href="http://gcpug-shonan.connpass.com/event/26914/">GCPUG Shonan
vol.1&lt;/a> を開催しました。&lt;/p>
&lt;p>今回はGAE特集ということで、GAEに関する発表が中心でした。&lt;/p></description></item><item><title>GCPUG Shonan vol.0にスタッフとして参加しました #gcpug</title><link>https://ryu22e.org/posts/2015/12/01/gcpug_shonan_vol0/</link><pubDate>Tue, 01 Dec 2015 00:00:00 +0900</pubDate><guid>https://ryu22e.org/posts/2015/12/01/gcpug_shonan_vol0/</guid><description>&lt;p>湘南のGoogle Cloud Platformユーザーグループ、 &lt;a href="http://gcpug-shonan.connpass.com/event/23181/">GCPUG Shonan
vol.0&lt;/a> を開催しました。&lt;/p>
&lt;p>私は湘南在住ではないのですが、スタッフとして参加しました。&lt;/p>
&lt;p>「vol.0」になっているのは、まずはプレ開催ということでこういう名前にしました。&lt;/p></description></item><item><title>PyCon JP 2015に参加しました #pyconjp</title><link>https://ryu22e.org/posts/2015/11/01/pyconjp2015/</link><pubDate>Sun, 01 Nov 2015 00:00:00 +0900</pubDate><guid>https://ryu22e.org/posts/2015/11/01/pyconjp2015/</guid><description>&lt;p>&lt;a href="https://pycon.jp/2015/ja/">PyCon JP 2015&lt;/a> に参加しました。&lt;/p>
&lt;p>去年はスタッフでしたが、今回はスタッフではなくパトロンスポンサーとして参加しました。&lt;/p></description></item><item><title>レガシーコード改善の記録</title><link>https://ryu22e.org/posts/2015/02/12/legacy_kaizen/</link><pubDate>Thu, 12 Feb 2015 00:00:00 +0900</pubDate><guid>https://ryu22e.org/posts/2015/02/12/legacy_kaizen/</guid><description>&lt;p>komagataさんの &lt;a href="http://docs.komagata.org/5239">レガシーPHP改善日記 シーズン2 エピソード1 -
komagata&lt;/a> に触発されて、書いてみました。&lt;/p>
&lt;p>最近のPHP、とても開発しやすくなりましたよね。「理想の環境」を拝見しましたが、誰が見ても魅力的な環境だと思います！&lt;/p></description></item><item><title>PHPのマイクロフレームワークSlimでテストをできるようにしたスケルトンを公開しました</title><link>https://ryu22e.org/posts/2015/02/01/slim_skeleton_phpunit/</link><pubDate>Sun, 01 Feb 2015 00:00:00 +0900</pubDate><guid>https://ryu22e.org/posts/2015/02/01/slim_skeleton_phpunit/</guid><description>&lt;p>あけましておめでとうございます。本年もよろしくお願いします(遅い)。&lt;/p>
&lt;p>今年最初の記事は、PHPのマイクロフレームワーク
&lt;a href="http://www.slimframework.com/">Slim&lt;/a> についてです。&lt;/p></description></item><item><title>PyCon JP 2014 でスタッフやりました #pyconjp</title><link>https://ryu22e.org/posts/2014/10/13/pyconjp2014/</link><pubDate>Mon, 13 Oct 2014 00:00:00 +0900</pubDate><guid>https://ryu22e.org/posts/2014/10/13/pyconjp2014/</guid><description>&lt;p>ちょっと報告が遅くなりましたが、先月9月に &lt;a href="https://pycon.jp/2014/">PyCon JP
2014&lt;/a> のスタッフをやってきました。&lt;/p>
&lt;p>昨年の &lt;a href="http://apac-2013.pycon.jp/ja/">PyCon APAC 2013 in Japan&lt;/a>
では広報担当でしたが、今年から役割ごとにチームを組む体制になって、メディアチーム&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup>
サブリーダーとして活動しました。&lt;/p>
&lt;p>昨年は広報担当は私一人だったのと、スタッフ初参加で右も左も分からない状態だったのもあって、わりとオロオロしながらやっていましたが、今年はチームで協力してやっていくことができたので、ちょっと安心感はありました。&lt;/p>
&lt;p>ただ、サブリーダーとして、メンバーに「任されている感」を持ってもらうようなマネジメントができなかったかなーと反省しています。他チームからの依頼を単発で振っているだけで、もう少し仕事をまとめて任せるようなやり方のほうがよかったかもしれません。&lt;/p>
&lt;p>開発スプリントにも参加して、Python 3.4 + Django 1.7のproject
templateを作っていました。コードはGithubにも公開しています。&lt;/p>
&lt;p>&lt;a href="https://github.com/ryu22e/django_template">https://github.com/ryu22e/django_template&lt;/a>&lt;/p>
&lt;p>また、もうすぐCodeZineさんから「運営レポート」という連載が始まります。全チームの仕事内容はそちらをチェックしてみてください。&lt;/p>
&lt;p>&lt;img loading="lazy" src="https://ryu22e.org/media/2014/10/13/pyconjp2014_staff.jpg" alt="先日のスタッフの反省会で貰ったPyCon JP
2014ノベルティグッズ" />
&lt;/p>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>広報だけでなく、外向けに情報提供・宣伝・渉外を行う役割のチーム&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></description></item><item><title>requirements.txtをPythonコードの中でパースする方法</title><link>https://ryu22e.org/posts/2014/04/12/parse_requirements/</link><pubDate>Sat, 12 Apr 2014 00:00:00 +0900</pubDate><guid>https://ryu22e.org/posts/2014/04/12/parse_requirements/</guid><description>&lt;p>pipにあるparse_requirements関数を使えば簡単にできます。&lt;/p>
&lt;p>試しに、 &lt;a href="https://github.com/rdegges/django-skel">django-skel&lt;/a>
のrequirements.txtをパースしてみます。&lt;/p>
&lt;p>これがサンプルコードです(Python2.7, 3.4で動作確認しています):&lt;/p>
&lt;pre>&lt;code>from pip.req import parse_requirements
install_reqs = parse_requirements('requirements.txt')
for i in install_reqs:
print(i)
&lt;/code>&lt;/pre>
&lt;p>これが出力結果です:&lt;/p>
&lt;pre tabindex="0">&lt;code> Django&amp;gt;=1.5.0,&amp;lt;=1.5.9 (from -r reqs/common.txt (line 1))
django-celery==3.0.21 (from -r reqs/common.txt (line 2))
django-compressor==1.3 (from -r reqs/common.txt (line 3))
Fabric==1.6.1 (from -r reqs/common.txt (line 4))
South==0.8.1 (from -r reqs/common.txt (line 5))
Sphinx==1.1.3 (from -r reqs/common.txt (line 6))
boto==2.9.5 (from -r reqs/prod.txt (line 2))
cssmin==0.1.4 (from -r reqs/prod.txt (line 3))
django-heroku-memcacheify==0.4 (from -r reqs/prod.txt (line 4))
django-heroku-postgresify==0.3 (from -r reqs/prod.txt (line 5))
django-storages==1.1.4 (from -r reqs/prod.txt (line 6))
gevent==0.13.8 (from -r reqs/prod.txt (line 7))
gunicorn==0.14.3 (from -r reqs/prod.txt (line 8))
jsmin==2.0.3 (from -r reqs/prod.txt (line 9))
newrelic==1.12.0.56 (from -r reqs/prod.txt (line 10))
psycopg2==2.5 (from -r reqs/prod.txt (line 11))
pylibmc==1.2.3 (from -r requirements.txt (line 2))
&lt;/code>&lt;/pre>&lt;p>-rで参照している他のファイルの内容も読み取ってくれます。&lt;/p></description></item><item><title>django-model-utilsでmodel設計(Fields編)</title><link>https://ryu22e.org/posts/2014/04/09/django_model_utils__fields/</link><pubDate>Wed, 09 Apr 2014 00:00:00 +0900</pubDate><guid>https://ryu22e.org/posts/2014/04/09/django_model_utils__fields/</guid><description>&lt;p>先日の &lt;a href="http://connpass.com/event/5523/">Django Meet up&lt;/a> で読んだ &lt;a href="http://pydanny.com/announcing-two-scoops-of-django-1.6.html">Tow
Scoops of Django
1.6&lt;/a>
に載っていた
&lt;a href="https://github.com/carljm/django-model-utils/">django-model-utils&lt;/a>
がいい感じだったので、ちょっと調べてみました。&lt;/p>
&lt;p>このエントリーでは、以下の環境で動作確認しています。&lt;/p>
&lt;ul>
&lt;li>Python 3.4&lt;/li>
&lt;li>django-model-utils 2.0.3&lt;/li>
&lt;li>Django 1.6.2&lt;/li>
&lt;/ul></description></item><item><title>Django Meet up でやったことまとめ #djangoja</title><link>https://ryu22e.org/posts/2014/04/05/django_meetup/</link><pubDate>Sat, 05 Apr 2014 00:00:00 +0900</pubDate><guid>https://ryu22e.org/posts/2014/04/05/django_meetup/</guid><description>&lt;p>このエントリーは &lt;a href="http://connpass.com/event/5523/">Django Meet up&lt;/a>
で書きました。&lt;/p>
&lt;blockquote class="twitter-tweet" data-lang="ja">&lt;p lang="ja" dir="ltr">TWO SCOOPS of Django 1.6 げっとー &lt;a href="https://twitter.com/hashtag/djangoja?src=hash">#djangoja&lt;/a>&lt;/p>&amp;mdash; Ryuji TSUTSUI (@ryu22e) &lt;a href="https://twitter.com/ryu22e/status/452282895181545472">2014年4月5日&lt;/a>&lt;/blockquote>
&lt;script async src="//platform.twitter.com/widgets.js" charset="utf-8">&lt;/script>
したので、Django Meet
up中に読みました。読んだところまでで、気になったところをまとめます。</description></item><item><title>Google Places API のオートコンプリートを日本国内限定のWebアプリに組み込む場合の設定</title><link>https://ryu22e.org/posts/2014/03/27/google_places_autocomplete_for_japan/</link><pubDate>Thu, 27 Mar 2014 00:00:00 +0900</pubDate><guid>https://ryu22e.org/posts/2014/03/27/google_places_autocomplete_for_japan/</guid><description>&lt;p>Google Places API を使うと住所の入力欄に
&lt;a href="https://developers.google.com/maps/documentation/javascript/places-autocomplete">オートコンプリート機能&lt;/a>
を追加できますが、日本国内限定のWebアプリに組み込む場合の設定方法についてメモしておきます。&lt;/p>
&lt;p>以下の設定を行います。&lt;/p>
&lt;ol>
&lt;li>候補選択後に住所の先頭の「日本」を表示させない&lt;/li>
&lt;li>表示させる候補を日本国内の住所に限定する&lt;/li>
&lt;/ol>
&lt;p>これがサンプルコードです。&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-html" data-lang="html">&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e">&amp;lt;!DOCTYPE html&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &amp;lt;&lt;span style="color:#f92672">html&lt;/span> &lt;span style="color:#a6e22e">lang&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;ja&amp;#34;&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &amp;lt;&lt;span style="color:#f92672">head&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &amp;lt;&lt;span style="color:#f92672">meta&lt;/span> &lt;span style="color:#a6e22e">charset&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;UTF-8&amp;#34;&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &amp;lt;&lt;span style="color:#f92672">title&lt;/span>&amp;gt;Google Places API のオートコンプリートを日本国内限定のWebアプリに組み込む場合の設定例&amp;lt;/&lt;span style="color:#f92672">title&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e">&amp;lt;!-- 1. region=jpを指定すると、候補選択後の「日本」が表示されなくなる --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &amp;lt;&lt;span style="color:#f92672">script&lt;/span> &lt;span style="color:#a6e22e">type&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;text/javascript&amp;#34;&lt;/span> &lt;span style="color:#a6e22e">src&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;http://maps.googleapis.com/maps/api/js?libraries=places&amp;amp;sensor=false&amp;amp;language=jp&amp;amp;region=jp&amp;#34;&lt;/span>&amp;gt;&amp;lt;/&lt;span style="color:#f92672">script&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &amp;lt;&lt;span style="color:#f92672">script&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> (&lt;span style="color:#66d9ef">function&lt;/span>(window, document)) {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">google&lt;/span>.&lt;span style="color:#a6e22e">maps&lt;/span>.&lt;span style="color:#a6e22e">event&lt;/span>.&lt;span style="color:#a6e22e">addDomListener&lt;/span>(window, &lt;span style="color:#e6db74">&amp;#39;load&amp;#39;&lt;/span>, &lt;span style="color:#66d9ef">function&lt;/span>() {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">var&lt;/span> &lt;span style="color:#a6e22e">input&lt;/span> &lt;span style="color:#f92672">=&lt;/span> document.&lt;span style="color:#a6e22e">getElementById&lt;/span>(&lt;span style="color:#e6db74">&amp;#39;address&amp;#39;&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">var&lt;/span> &lt;span style="color:#a6e22e">options&lt;/span> &lt;span style="color:#f92672">=&lt;/span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">componentRestrictions&lt;/span>&lt;span style="color:#f92672">:&lt;/span> {&lt;span style="color:#a6e22e">country&lt;/span>&lt;span style="color:#f92672">:&lt;/span> &lt;span style="color:#e6db74">&amp;#39;jp&amp;#39;&lt;/span>} &lt;span style="color:#75715e">// 2. これで日本国内の住所しか表示されなくなる
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">&lt;/span> };
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">autocomplete&lt;/span> &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#66d9ef">new&lt;/span> &lt;span style="color:#a6e22e">google&lt;/span>.&lt;span style="color:#a6e22e">maps&lt;/span>.&lt;span style="color:#a6e22e">places&lt;/span>.&lt;span style="color:#a6e22e">Autocomplete&lt;/span>(&lt;span style="color:#a6e22e">input&lt;/span>, &lt;span style="color:#a6e22e">options&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> });
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> })(window, document));
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &amp;lt;/&lt;span style="color:#f92672">script&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &amp;lt;/&lt;span style="color:#f92672">head&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &amp;lt;&lt;span style="color:#f92672">body&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &amp;lt;&lt;span style="color:#f92672">input&lt;/span> &lt;span style="color:#a6e22e">style&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;width: 300px;&amp;#34;&lt;/span> &lt;span style="color:#a6e22e">id&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;address&amp;#34;&lt;/span> &lt;span style="color:#a6e22e">type&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;text&amp;#34;&lt;/span> &lt;span style="color:#a6e22e">placeholder&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;場所を入力&amp;#34;&lt;/span> &lt;span style="color:#a6e22e">autocomplete&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;off&amp;#34;&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &amp;lt;/&lt;span style="color:#f92672">body&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &amp;lt;/&lt;span style="color:#f92672">html&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>「region=jp」の設定は以下のURL「When invoking Google API, specify
attribute &amp;ldquo;region&amp;rdquo;:&amp;hellip;」を参考にしました&lt;/p></description></item><item><title>アジャイルサムライ読書会 新宿道場 2014.2 に参加しました #agilesamurai #新宿道場</title><link>https://ryu22e.org/posts/2014/03/09/agilesamurai_shinjukudojo/</link><pubDate>Sun, 09 Mar 2014 00:00:00 +0900</pubDate><guid>https://ryu22e.org/posts/2014/03/09/agilesamurai_shinjukudojo/</guid><description>&lt;p>&lt;a href="http://connpass.com/event/4913/">アジャイルサムライ読書会 新宿道場
2014.2&lt;/a> に参加しました。&lt;/p>
&lt;p>Togetterまとめはこちら→ &lt;a href="http://togetter.com/li/633314">アジャイルサムライ読書会 新宿道場 2014.2
#agilesamurai #新宿道場 -
Togetterまとめ&lt;/a>&lt;/p></description></item><item><title>Amazon S3に置いたWebフォントがFirefox, IEで表示されない現象の回避方法</title><link>https://ryu22e.org/posts/2014/03/04/ff_ie_crossdomain/</link><pubDate>Tue, 04 Mar 2014 00:00:00 +0900</pubDate><guid>https://ryu22e.org/posts/2014/03/04/ff_ie_crossdomain/</guid><description>&lt;p>今日調べて分かったのでメモ。&lt;/p>
&lt;p>最近のFirefox,
IEでは、クロスドメイン制約があるため、デフォルトでは異なるドメインのWebフォントを読み込めません。&lt;/p>
&lt;p>サーバー側のレスポンスヘッダにAccess-Control-Allow-Originを指定すればいいのですが、Amazon
S3の場合は以下のようにします。&lt;/p>
&lt;p>&lt;a href="https://console.aws.amazon.com/s3/home">S3 Management Console&lt;/a>
をブラウザで開いて、画面右の「CORS Configuration(下の図 赤丸の部分)」を&lt;/p>
&lt;p>&lt;img loading="lazy" src="https://ryu22e.org/static/media/2014/03/04/s3_management_console.png" alt="image" />
&lt;/p>
&lt;p>以下のように編集します:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-xml" data-lang="xml">&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;CORSConfiguration&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;CORSRule&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;AllowedOrigin&amp;gt;&lt;/span>*&lt;span style="color:#f92672">&amp;lt;/AllowedOrigin&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;AllowedMethod&amp;gt;&lt;/span>GET&lt;span style="color:#f92672">&amp;lt;/AllowedMethod&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;MaxAgeSeconds&amp;gt;&lt;/span>3000&lt;span style="color:#f92672">&amp;lt;/MaxAgeSeconds&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;AllowedHeader&amp;gt;&lt;/span>*&lt;span style="color:#f92672">&amp;lt;/AllowedHeader&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;/CORSRule&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;/CORSConfiguration&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>これで、Webフォントが読み込まれるようになります。&lt;/p>
&lt;p>参考: &lt;a href="http://dev.classmethod.jp/cloud/cors-cross-origin-resource-sharing-cross-domain/">CORS(Cross-Origin Resource
Sharing)によるクロスドメイン通信の傾向と対策 ｜
Developers.IO&lt;/a>&lt;/p></description></item><item><title>yamashiroさんのこと #ymsr</title><link>https://ryu22e.org/posts/2014/02/18/rest_in_peace_yamashiro/</link><pubDate>Tue, 18 Feb 2014 00:00:00 +0900</pubDate><guid>https://ryu22e.org/posts/2014/02/18/rest_in_peace_yamashiro/</guid><description>&lt;p>既に色々な人が言及していますが、去年java-jaの @yamashiro
さんが亡くなりました。&lt;/p>
&lt;p>先日、 &lt;a href="http://yamashi.ro/">ymsr送別会&lt;/a> にも参加してきました。&lt;/p></description></item><item><title>ブログへのTwitter Cardsの設置方法について</title><link>https://ryu22e.org/posts/2013/12/27/twitter_cards/</link><pubDate>Fri, 27 Dec 2013 00:00:00 +0900</pubDate><guid>https://ryu22e.org/posts/2013/12/27/twitter_cards/</guid><description>&lt;p>最近のTwitterでは、リンクを貼るとこんな感じで、リンク先の内容が表示されるようになります。&lt;/p>
&lt;p>&lt;img loading="lazy" src="https://ryu22e.org/media/2013/12/27/twitter.png" alt="image" />
&lt;/p>
&lt;p>これは &lt;a href="https://dev.twitter.com/docs/cards">Twitter Cards&lt;/a>
というらしいのですが、自前でドメインを取得してサイトを構築する場合、このような表示にするためには、以下の準備が必要です。&lt;/p>
&lt;p>(1) &lt;a href="https://dev.twitter.com/docs/cards/validation/validator">Card
Validator&lt;/a>
を使って、表示させたい形式に合わせてmetaタグを作成し、サイトに貼り付けます。&lt;/p>
&lt;p>&lt;img loading="lazy" src="https://ryu22e.org/media/2013/12/27/twitter_card_validator_try_cards.png" alt="image" />
&lt;/p>
&lt;p>(2) &lt;a href="https://dev.twitter.com/docs/cards/validation/validator">Card
Validator&lt;/a>
の画面左「Validate &amp;amp; Apply」のタブをクリックして、1.
のmetaタグを貼ったサイトのURLを入力し、「Go」ボタンを押すと、「○○
not approval」というメッセージが表示されます。この状態で「Request
Approval(画像の赤丸の部分)」ボタンで申請します。申請にはTwitterアカウントが必要です。&lt;/p>
&lt;p>&lt;img loading="lazy" src="https://ryu22e.org/media/2013/12/27/twitter_card_validator_validate_and_apply.png" alt="image" />
&lt;/p>
&lt;p>私がryu22e.orgを申請した際は、ほぼ24時間後に通りました。&lt;/p></description></item><item><title>FabricのDjango Integrationが地味に便利そう</title><link>https://ryu22e.org/posts/2013/12/24/fabric_django_integration/</link><pubDate>Tue, 24 Dec 2013 00:00:00 +0900</pubDate><guid>https://ryu22e.org/posts/2013/12/24/fabric_django_integration/</guid><description>&lt;p>Fabricの0.9.2から、 &lt;a href="http://docs.fabfile.org/en/1.8/api/contrib/django.html">Django
Integration&lt;/a>
という機能があるようです。&lt;/p>
&lt;p>これを使うと、FabricからDjangoのコードを呼ぶことができます。&lt;/p>
&lt;p>先日紹介した
&lt;a href="http://ryu22e.org/blog/html/2013/12/14/factory_boy.html">factory_boy&lt;/a>
と組み合わせると:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e"># -*- coding: utf-8 -*-&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">from&lt;/span> fabric.api &lt;span style="color:#f92672">import&lt;/span> task
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">from&lt;/span> fabric.contrib &lt;span style="color:#f92672">import&lt;/span> django
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e"># Djangoのコードのimportの前にこれを書く&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> django&lt;span style="color:#f92672">.&lt;/span>project(&lt;span style="color:#e6db74">&amp;#39;fabric_django&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">from&lt;/span> example.factories &lt;span style="color:#f92672">import&lt;/span> BookFactory
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">@task&lt;/span>()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">def&lt;/span> &lt;span style="color:#a6e22e">generate_books&lt;/span>():
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">for&lt;/span> i &lt;span style="color:#f92672">in&lt;/span> range(&lt;span style="color:#ae81ff">10&lt;/span>):
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> BookFactory()
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>これでWeb上の動作確認をするためのデータを生成することもできます。&lt;/p>
&lt;p>今まで、私はこういったことをやるために、Djangoのコマンドを自作していたのですが、こちらの方が簡単に書けそうでいいですね。&lt;/p></description></item><item><title>デスマーチで気をつけたい4つのこと</title><link>https://ryu22e.org/posts/2013/12/20/how_to_survive_death_march/</link><pubDate>Fri, 20 Dec 2013 00:00:00 +0900</pubDate><guid>https://ryu22e.org/posts/2013/12/20/how_to_survive_death_march/</guid><description>&lt;p>という自分用メモ&lt;/p></description></item><item><title>factory_boyで楽々テストデータ生成</title><link>https://ryu22e.org/posts/2013/12/14/factory_boy/</link><pubDate>Sat, 14 Dec 2013 00:00:00 +0900</pubDate><guid>https://ryu22e.org/posts/2013/12/14/factory_boy/</guid><description>&lt;p>&lt;a href="http://www.adventar.org/calendars/166">Python Advent Calendar 2013&lt;/a>
の14日目です。&lt;/p>
&lt;p>今日は、テストコードを書くときに便利なモジュール
&lt;a href="http://factoryboy.readthedocs.org/en/latest/">factory_boy&lt;/a>
を紹介します。&lt;/p>
&lt;p>なお、この記事のサンプルコードは以下の環境で動作確認しています。&lt;/p>
&lt;ul>
&lt;li>Python 3.3.3(2.7でも動くように書いています)&lt;/li>
&lt;li>factory_boy 2.2.1&lt;/li>
&lt;li>SQLAlchemy 0.8.4&lt;/li>
&lt;li>SQLite3&lt;/li>
&lt;/ul></description></item><item><title>プライバシーポリシー（ryu22eBlogが採用しているGoogle Analyticsについて）</title><link>https://ryu22e.org/privacy-policy/</link><pubDate>Sat, 14 Dec 2013 00:00:00 +0900</pubDate><guid>https://ryu22e.org/privacy-policy/</guid><description>&lt;p>ryu22eBlog（以下、当サイト）では、Google社のサービスGoogle
Analyticsを利用し、ユーザーの情報を取得しています。&lt;/p>
&lt;p>Google Analyticsでは、ファーストパーティCookieにより匿名のトラフィックデータを収集しています。&lt;/p>
&lt;p>ファーストパーティCookieには、以下の情報が保存されます。&lt;/p>
&lt;ul>
&lt;li>現在のセッションの開始時間&lt;/li>
&lt;li>過去に当サイトへアクセスしたことがあるか&lt;/li>
&lt;li>どのサイトからアクセスしたか&lt;/li>
&lt;/ul>
&lt;p>ブラウザは、ドメイン間でファーストパーティCookieを共有しません。&lt;/p>
&lt;p>当サイトでは、Google
Analyticsで取得した情報を以下の利用目的の達成に必要な範囲内で利用致します。&lt;/p>
&lt;ul>
&lt;li>利用者の動向を知りコンテンツに反映させる&lt;/li>
&lt;li>利用者の環境を知り&lt;!-- textlint-disable -->ユーザビリティ&lt;!-- textlint-enable -->を向上させる&lt;/li>
&lt;/ul></description></item><item><title>アジャイルサムライ読書会最終回(仮)　横浜道場　「継続的インテグレーション：リリースに備える」 に参加しました #横浜道場 #agilesamurai</title><link>https://ryu22e.org/posts/2013/09/25/agilesamurai_yokohama_last/</link><pubDate>Wed, 25 Sep 2013 00:00:00 +0900</pubDate><guid>https://ryu22e.org/posts/2013/09/25/agilesamurai_yokohama_last/</guid><description>&lt;p>&lt;a href="http://yokohama-dojo.doorkeeper.jp/events/4835">アジャイルサムライ読書会最終回(仮)　横浜道場　「継続的インテグレーション：リリースに備える」&lt;/a>
に参加しました。&lt;/p></description></item><item><title>PyCon APAC 2013 in Japan にスタッフとして参加しました #pyconapac #pyconjp</title><link>https://ryu22e.org/posts/2013/09/16/pyconapac2013_in_japan/</link><pubDate>Mon, 16 Sep 2013 00:00:00 +0900</pubDate><guid>https://ryu22e.org/posts/2013/09/16/pyconapac2013_in_japan/</guid><description>&lt;p>&lt;a href="http://apac-2013.pycon.jp/">PyCon APAC 2013 in Japan&lt;/a>
にスタッフとして参加しました。&lt;/p></description></item></channel></rss>