Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Pythonで書かれたマイクロサービスを2to3した
Search
iwamot
PRO
April 14, 2022
Technology
0
870
Pythonで書かれたマイクロサービスを2to3した
2022-04-14
みんなのPython勉強会 #80 懇親会
https://startpython.connpass.com/event/242556/
iwamot
PRO
April 14, 2022
Tweet
Share
More Decks by iwamot
See All by iwamot
8万デプロイ
iwamot
PRO
2
250
AIエージェント・マイクロサービス時代。AWSでの手軽な構築法を考えて試してみた
iwamot
PRO
1
69
これがLambdaレス時代のChatOpsだ!実例で学ぶAmazon Q Developerカスタムアクション活用法
iwamot
PRO
10
2.1k
Developer Certificate of Origin、よさそう
iwamot
PRO
0
55
復号できなくなると怖いので、AWS KMSキーの削除を「面倒」にしてみた CODT 2025 クロージングイベント版
iwamot
PRO
1
150
復号できなくなると怖いので、AWS KMSキーの削除を「面倒」にしてみた
iwamot
PRO
3
120
IPA&AWSダブル全冠が明かす、人生を変えた勉強法のすべて
iwamot
PRO
14
12k
2年でここまで成長!AWSで育てたAI Slack botの軌跡
iwamot
PRO
4
1.3k
名単体テスト 禁断の傀儡(モック)
iwamot
PRO
1
650
Other Decks in Technology
See All in Technology
モブプログラミング再入門 ー 基本から見直す、AI時代のチーム開発の選択肢 ー / A Re-introduction of Mob Programming
takaking22
5
1.5k
Kubernetesにおける推論基盤
ry
1
390
わたしがセキュアにAWSを使えるわけないじゃん、ムリムリ!(※ムリじゃなかった!?)
cmusudakeisuke
1
740
僕、S3 シンプルって名前だけど全然シンプルじゃありません よろしくお願いします
yama3133
1
220
ナレッジワークのご紹介(第88回情報処理学会 )
kworkdev
PRO
0
210
進化するBits AI SREと私と組織
nulabinc
PRO
0
180
情シスのための生成AI実践ガイド2026 / Generative AI Practical Guide for Business Technology 2026
glidenote
0
250
楽しく学ぼう!コミュニティ入門 AWSと人が つむいできたストーリー
hiroramos4
PRO
1
200
Claude Code のコード品質がばらつくので AI に品質保証させる仕組みを作った話 / A story about building a mechanism to have AI ensure quality, because the code quality from Claude Code was inconsistent
nrslib
13
7.9k
猫でもわかるKiro CLI(AI 駆動開発への道編)
kentapapa
0
210
「Blue Team Labs Online」入門 - みんなで挑むログ解析バトル
v_avenger
0
180
オレ達はAWS管理をやりたいんじゃない!開発の生産性を爆アゲしたいんだ!!
wkm2
4
530
Featured
See All Featured
ラッコキーワード サービス紹介資料
rakko
1
2.6M
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
84
Faster Mobile Websites
deanohume
310
31k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.6k
Prompt Engineering for Job Search
mfonobong
0
180
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
150
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
390
Thoughts on Productivity
jonyablonski
75
5.1k
The Curious Case for Waylosing
cassininazir
0
270
Speed Design
sergeychernyshev
33
1.6k
Git: the NoSQL Database
bkeepers
PRO
432
66k
Transcript
Pythonで書かれたマイクロサービスを 2to3した 2022-04-14 みんなのPython勉強会 #80 懇親会 https://startpython.connpass.com/event/242556/ Takashi Iwamoto (@iwamot)
技術的負債を解消したくて転職した 昨夏、AWS Japanを辞めてENECHANGE株式会社に転職した 面接時に「技術的負債の解消に取り組みたい」と明言した 内定をもらえ、負債の解消がミッションのひとつとなった
Python 2のコードがあった Elastic BeanstalkのDockerコンテナで動いているFlaskアプリ Lambdaに移行すればコストを減らせる LambdaではPython2のサポートが終わっている
Python 3に上げることにした 「移行に取り組みたい」と手を挙げ、OKをもらった
テストを走らせたらfailした 9%のテストケースがfailした パフォーマンス向上のためのコード改善が原因だった
passするように直した テストケースとソースコードを修正した カバレッジは80%と高めだった
2to3というツールがあることを知った 2to3 - Python 2 から 3 への自動コード変換 https://docs.python.org/ja/3/library/2to3.html Python
3の公式Dockerイメージにも2to3が含まれている $ docker run -it --rm python:3 2to3 --help | head -1 Usage: 2to3 [options] file|dir ...
2to3を実行したら、色々変換された (1) dict - dict.values() + list(dict.values()) - dict.iteritems() +
dict.items() except - except Exception, e: + except Exception as e:
2to3を実行したら、色々変換された (2) has_key - dict.has_key(key) + key in dict import
- import weather + from . import weather
2to3を実行したら、色々変換された (3) imports - import ConfigParser + import configparser print
- print 'foo' + print('foo')
2to3を実行したら、色々変換された (4) unicode - u'foo' + 'foo' xrange - range(1,
13) + list(range(1, 13))
必要ない変換は元に戻した たとえばdictによる変換は不要だった - list(dict.values()) + dict.values() Python 2では dict.values() はリストを返す
Python 3では dict.values() はビューオブジェクトを返す ビューオブジェクトのまま処理できるなら、そのままでよい
あとは手作業で進めた 依存パッケージのアップグレード テストがfailする部分の修正 Lambda対応
2to3があってよかった 初見から数日で移行できた こういう移行ツールが用意されていると助かる
負債に困ったらご相談ください Spot Resourceという屋号で副業しています https://iwamot.github.io/